Class ElectronDonation


  • public abstract class ElectronDonation
    extends Object
    Defines an electron donation model for perceiving aromatic systems. The model defines which atoms are allowed and how many electron it contributes. There are currently several models available.
    • cdk()/cdkAllowingExocyclic() - uses the information form the preset CDK atom types to determine how many electrons each atom should contribute. The model can either allow or exclude contributions from exocyclic pi bonds. This model requires that atom types have be perceived.
    • piBonds() - a simple model only allowing cyclic pi bonds to contribute. This model only requires that bond orders are set.
    • daylight() - a model similar to that used by Daylight for SMILES. This model does not require atom types to be defined but every atom should have it's hydrogen count set.
    To obtain an instance of the model simply invoke the named method.
     ElectronDonation model = ElectronDonation.cdk();
     
    Author:
    John May
    Source code:
    main
    Belongs to CDK module:
    standard
    • Constructor Detail

      • ElectronDonation

        public ElectronDonation()
    • Method Detail

      • cdk

        public static ElectronDonation cdk()
        Use the preset CDK atom types to determine the electron contribution of atoms. If an atom type has not been perceived or hybridisation is unset a runtime exception is thrown. The model accepts cyclic atoms which are IAtomType.Hybridization.SP2 or IAtomType.Hybridization.PLANAR3 hybridised. The CDKConstants.PI_BOND_COUNT and CDKConstants.LONE_PAIR_COUNT to determine how many electrons an atom type can contribute. Generally these values are not automatically configured and so several atom types are cached for lookup:
        • N.planar3: 2 electrons
        • N.minus.planar3: 2 electrons
        • N.amide: 2 electrons
        • S.2: 2 electrons
        • S.planar3: 2 electrons
        • C.minus.planar: 2 electrons
        • O.planar3: 2 electrons
        • N.sp2.3: 1 electron
        • C.sp2: 1 electron
        Exocyclic pi bonds are not allowed to contribute.
        Returns:
        electron donation model to use for aromaticity perception
        See Also:
        IAtomType.getAtomTypeName()
      • cdkAllowingExocyclic

        public static ElectronDonation cdkAllowingExocyclic()
        Use the preset CDK atom types to determine the electron contribution of atoms. If an atom type has not been perceived or hybridisation is unset a runtime exception is thrown. The model accepts cyclic atoms which are IAtomType.Hybridization.SP2 or IAtomType.Hybridization.PLANAR3 hybridised. The CDKConstants.PI_BOND_COUNT and CDKConstants.LONE_PAIR_COUNT to determine how many electrons an atom type can contribute. Generally these values are not automatically configured and so several atom types are cached for lookup:
        • N.planar3: 2 electrons
        • N.minus.planar3: 2 electrons
        • N.amide: 2 electrons
        • S.2: 2 electrons
        • S.planar3: 2 electrons
        • C.minus.planar: 2 electrons
        • O.planar3: 2 electrons
        • N.sp2.3: 1 electron
        • C.sp2: 1 electron
        Exocyclic pi bonds are not allowed to contribute.
        Returns:
        electron donation model to use for aromaticity perception
        See Also:
        IAtomType.getAtomTypeName()
      • piBonds

        public static ElectronDonation piBonds()
        A very simple aromaticity model which only allows atoms adjacent to cyclic pi bonds. Lone pairs are not consider and as such molecules like furan and pyrrole are non-aromatic. The model is useful for storing aromaticity in MDL and Mol2 file formats where aromatic systems involving a lone pair can not be properly represented.
        Returns:
        electron donation model to use for aromaticity perception
      • daylight

        public static ElectronDonation daylight()
        Electron donation model closely mirroring the Daylight model for use in generating SMILES. The model was interpreted from various resources and as such may not match exactly. If you find an inconsistency please add a request for enhancement to the patch tracker. One known limitation is that this model does not currently consider unknown/pseudo atoms '*'. The model makes a couple of assumptions which it will not correct for. Checked assumptions cause the model to throw a runtime exception.
        • there should be no valence errors (unchecked)
        • every atom has a set implicit hydrogen count (checked)
        • every bond has defined order, single, double etc (checked)
        • atomic number of non-pseudo atoms is set (checked)
        The aromaticity model in SMILES was designed to simplify canonicalisation and express symmetry in a molecule. The contributed electrons can be summarised as follows (refer to code for exact specification):
        • carbon, nitrogen, oxygen, phosphorus, sulphur, arsenic and selenium are allow to be aromatic
        • atoms should be Sp2 hybridised - not actually computed
        • atoms adjacent to a single cyclic pi bond contribute 1 electron
        • neutral or negatively charged atoms with a lone pair contribute 2 electrons
        • exocyclic pi bonds are allowed but if the exocyclic atom is more electronegative it consumes an electron. As an example ketone groups contribute '0' electrons.