MobleyLab / chemper

Repository for Chemical Perception Sampling Tools
MIT License
19 stars 10 forks source link

Do better handling symmetry in indexed atoms in the same way we handle neighbors #36

Closed bannanc closed 5 years ago

bannanc commented 5 years ago

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.

bannanc commented 5 years ago

Initially added in PR #50 with more updated handling in PR #60