I can't find the evidence of it now, but at one point I noticed that right now we take the user specified order for every set of SMIRKS patterns. In the case of symmetric parameters we can see this being a potential problem. For example, what if we want to describe carbon-hydrogen bonds in a cluster. Now imagine that sometimes the user puts the hydrogen at index 1 and other times at 2.
In an ideal world, the program would know when there is potential for symmetry in a SMIRKS, for example
"[#6:1]-[#1:2]" and "[#1:1]-[#6:2]" will match the same bonds.
I think we can handle this by treating symmetry around the center bond the same as assigning layers where the more an atom matches with current atoms the more likely they are to be paired.
This requires working with different types of symmetry.
bonds: symmetric around the center 1 <--> 2
angles: symmetric around center atom 1 <--> 3
proper torsions: symmetric around center bond 1 <--> 4 and 2 <--> 3
improper torsions: circularly symmetric around the center atom 1 <--> 3 <--> 4 <--> 1
This brings up the question of how to handle non-standard SMIRKS that up until this point we have supported as long as indexed atoms are connected.
I can't find the evidence of it now, but at one point I noticed that right now we take the user specified order for every set of SMIRKS patterns. In the case of symmetric parameters we can see this being a potential problem. For example, what if we want to describe carbon-hydrogen bonds in a cluster. Now imagine that sometimes the user puts the hydrogen at index 1 and other times at 2.
In an ideal world, the program would know when there is potential for symmetry in a SMIRKS, for example
"[#6:1]-[#1:2]"
and"[#1:1]-[#6:2]"
will match the same bonds.I think we can handle this by treating symmetry around the center bond the same as assigning layers where the more an atom matches with current atoms the more likely they are to be paired.
This requires working with different types of symmetry.
This brings up the question of how to handle non-standard SMIRKS that up until this point we have supported as long as indexed atoms are connected.