Skip to content

Parsing of hypervalent nitrogen compounds from SMILES/InChI is broken #1301

Description

@mliu49

Before #1206:

  • RMG was able to handle hypervalent N
  • RDKit could not really handle hypervalent N (it tries to sanitize and create a non-hypervalent resonance structure)
  • OpenBabel could handle hypervalent N
  • Parsing of hypervalent SMILES/InChI could be done with OpenBabel

After #1206:

  • RMG no longer has atomtypes for hypervalent nitrogen
  • Parsing of hypervalent SMILES/InChI breaks with OpenBabel; raises AtomTypeError
  • RDKit's treatment of hypervalent N is now similar to RMG's treatment, however RDKit cannot handle all cases.

Examples:

  • O=N(=O)C
    • RDKit converts this to one single bonded O and one double bonded O with charge separation
    • OpenBabel converts this to two double bonded O's (raises AtomTypeError)
  • O=N(C)=N(C)=O
    • RDKit converts this to N-O single bonds with charge separation and N=N double bond
    • OpenBabel converts this to three double bonds (raises AtomTypeError)
  • InChI=1S/C4H10N2O2/c1-3-5(7)6(8)4-2/h3-4H2,1-2H3 (InChI of the prior molecule)
    • RDKit is unable to parse
    • OpenBabel gives the same result

Note: RDKitMol conversion doesn't work properly on current master because of an issue with the order of updateCharge and updateLonePairs. This is a straightforward issue that will be fixed in #1262.

What do we do next?

  • Should we re-add atomtypes for hypervalent N?
  • Should we add a "sanitation" method similar to RDKit to convert hypervalent N to resonance structures with charge separation?
  • Should we prioritize RDKit as a backend? (Currently OpenBabel is tried first for most methods, since it was previously more robust in general.)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type: Errorabandonedabandoned issue/PR as determined by actions botstalestale issue/PR as determined by actions bot

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions