Chemical Standardisation

October 9, 2023 ยท View on GitHub

Background.

When processing molecules it is convenient to ensure that all molecules processed are in the same form. For example all acids should be either all protonated, or all charged. Trying to deal with a mixture will lead to complex, error prone code.

Similarly representational issues, like how to represent a Nitro group, are also made much easier if all molecules adhere to a single representational form.

Tautomers, where a Hydrogen may appear on different atoms, are another problem where standardization can ensure that the Hydrogens are localized on a specific location.

All three cases are handled by what is called chemical standardization in LillyMol, and is implemented via the -g option in almost all tools.

It is important to achknowedge that this is a controversial area, and different people will come to different conclusions about what kinds of representations to use. From a cheminformatics perspective, it matters less what the representation is, than the fact that all instances of a functinal group get treated the same way. So whether one prefers charge separated nitro groups, or neutral forms with a five valent Nitrogen atom, matters less than just the idea of them all being the same - whatever that canonical form is. Same with tautomeric representations. The exact tautomer might be unknown, but if all instances are forced into the same form, even if it is wrong, that should help find patterns in a dataset.

In LillyMol we prefer neutral atoms wherever possible. One of the goals of chemical standardization is to neutralize charged atoms wherever possible. Therefore five valent Nitrogen atoms in Nitro groups.

HOWTO

Entering -g help to most LillyMol tools yields the usage message

  -g nitro       transform nitro groups to N(=O)=O
  -g n+o-        transform charge separated [N+]-[O-] (includes nitro)
  -g n+n-        transform charge separated [N+]-[N-] to N=N
  -g s+c-        transform [S+]-[C-] to S=C
  -g all+-       transform all [X+]-[Y-] to X=Y
  -g xh          remove hydrogens
  -g amine       change all amines
  -g o-          protonate all O- groups
  -g n-          protonate all N- groups
  -g nrmch       remove all hydrogens except those to chiral centres
  -g covm        break covalent bonds between Oxygen and Na,K
  -g isolc       assign formal charges to isolated Na, K, .. and Halogens
  -g guan        convert guanidines to -N-C(=N)-N form
  -g Rguan        convert Ring type guanidines to -N-C(=N)-N form
  -g azid        convert charge separated azids [N-]=[N+]=N to N#N=N
  -g msdur       convert misdrawn ureas, O-C(=N)-N to O=C(-N)-N
  -g msdsa       convert misdrawn sulfonamides, O=S(O)=N to O=S(=O)N
  -g fcor        for converting back from corina mangled structures
  -g ehlast      move all explicit Hydrogen atoms to last in the connection table
  -g fmrk        reverse transformations applied to .mrk files
  -g Rn+n-       transform 5 valent N=N to charge separated form
  -g fwih        fix obviously wrong implicit hydrogen settings
  -g imidazole   convert imidazoles to have nH near cD3
  -g charged_imidazole   convert charged imidazoles to have n+ near cD3
  -g pyrazole    convert pyrazoles to have nH near electron withdrawing
  -g triazole    convert triazoles to have nH near electron withdrawing
  -g tetrazole    convert tetrazoles to have nH near attachment
  -g ltlt        convert lactim to lactam form (non ring)
  -g ltltr       convert lactim to lactam form (ring)
  -g isoxazole       convert Hydroxy isoxazoles to O= forms
  -g arguan       aromatic "gauanidines" - adjacent to =O, better name needed
  -g pirazolone       convert pyrazolone to keto form
  -g aminothazole     convert -N=c1scc[nH]1 to -[NH]c1sccn1
  -g keto_enol     convert enol to keto forms (no adjacent heteroatoms)
  -g all         ALL the above standardistions
  -g rvnitro     convert O=N=O nitro groups to charge separated
  -g rvnv5       convert all 5 valent N atoms to charge separated
  -g APP=<xxx>   append 'xxx' to the name of changed molecules
  -g APP=EACH    append the reason for each change

Discussion

Many of these are straightforward, but some have proven to be extremely difficult. The lactam/lactim transformation can exist in aromatic systems where multiple instances of such groups can coexist. At this stage, the tool converts the simple cases, but gives up in the face of more complex, possibly linked groups.