Canonicalization requires an input molecule whose double bonds will not give rise to DIME. There should be a function that selects atoms such that the resulting molecule is incapable of DIME.
A thumbnail of the approach:
- Find the set of all atoms (A) having just one double bond.
- From A, build a set of connected subgraphs (S).
- For each subgraph s in S, build a matching based on single/double bond pattern.
- Perform a symmetric difference on s, demoting double bonds to single and promoting single bonds to double. If this operation does not place an atom at the vertex of two double bonds, it passes. Otherwise it fails.
- Select all atoms for each passing subgraph s.
This avoids gratuitous selection in that heteroatoms without double bonds are excluded.
But it also avoids the selection of atoms whose connected subgraph can't possibly undergo DIME. For example, no atom in C1=C(C=CC=C1)1 would be selected using the above approach.
Canonicalization requires an input molecule whose double bonds will not give rise to DIME. There should be a function that selects atoms such that the resulting molecule is incapable of DIME.
A thumbnail of the approach:
This avoids gratuitous selection in that heteroatoms without double bonds are excluded.
But it also avoids the selection of atoms whose connected subgraph can't possibly undergo DIME. For example, no atom in
C1=C(C=CC=C1)1would be selected using the above approach.