I realized some time ago that SingleElectron (SE) objects are not created when parsing a SMILES or InChI identifier to a CDK IAtomContainer.

Since this was important for my research I added a section to  InChIToStructure .generateAtomContainerFromInchi(IChemObjectBuilder) and SmilesParser. parseSmiles(String smiles) that added SingleElectron objects (encapsulated in “SingleElectronAdder”).


The number of SE’s added per atom equals the difference between the expected valency of the atom and the sum of implicit hydrogens and BondManipulator.getSingleBondEquivalentSum(IAtomContainer.getConnectedBondsList(IAtom)).

The expected valency would correspond to the number of unpaired valency electrons, e.g. carbon has an expected valency of 4, nitrogen 3, etc…and is stored in a properties file. I agree that “expected valency” is a somewhat dubious number.


Is there another utility in CDK that perceives and creates SE’s from a line identifier which I maybe overlooked?

If not, would you agree with my approach and would you be interested in adding this to CDK?