Each of molecules uploaded will be standardized through all the following types. Usually, it is suitable
for most cases. But
not every kind of molecule can pass through this Standardization.
| Standardization types:
- Nitro N=O: CN(=O)=O >> C[N+](=O)[O-] and C1=CC=CN(=O)=C1 >> C1=CC=C[N+]([O-])=C1
- Nitro N#O: C-N=N#N >> C-N=[N+]=[N-]
- Perchlorate: Cl(=O)(=O)(=O)[O-] >> [Cl+3]([O-])([O-])([O-])[O-]
- Calculate explicit and implicit valence of all atoms. Fails when atoms have illegal valence.
- Calculate symmetrized SSSR. Slowest step, fails in rare cases.
- Kekulize. Fails if a Kekule form cannot be found or non-ring bonds are marked as aromatic.
- Assign radicals if hydrogens set and bonds+hydrogens+charge < valence.
- Set aromaticity, if none set in input. Go round rings, Huckel rule to set atoms+bonds as aromatic.
- Set conjugated property on bonds where applicable.
- Set hybridisation property on atoms.
- Remove chirality markers from sp and sp2 hybridised centers.
- Remove explicit H count from atoms.
- Break covalent bonds between metals and organic atoms under certain conditions.
- First, disconnect N, O, F from any metal. Then disconnect other non-metals from transition metals.
- For every bond broken, adjust the charges of the begin and end atoms accordingly.
Apply normalization rules
- Uncharge-separate sulfones
- Charge-separate nitro groups
- Charge-separate pyridine oxide
- Charge-separate azide
- Charge-separate diazo and azo groups
- Charge-separate sulfoxides
- Hydrazine-diazonium system
- Reionize acid groups, and keep the strongest acids ionize first.
- Use built-in RDKit functionality to force a clean recalculation of stereochemistry.