@Test public void testBondOrderSum() throws InvalidSmilesException { SmilesParser parser = new SmilesParser(DefaultChemObjectBuilder.getInstance()); IAtomContainer mol = parser.parseSmiles("C=CC"); double bosum = AtomContainerManipulator.getBondOrderSum(mol, mol.getAtom(0)); Assert.assertEquals(2.0, bosum, 0.001); bosum = AtomContainerManipulator.getBondOrderSum(mol, mol.getAtom(1)); Assert.assertEquals(3.0, bosum, 0.001); bosum = AtomContainerManipulator.getBondOrderSum(mol, mol.getAtom(2)); Assert.assertEquals(1.0, bosum, 0.001); }
private int determineValence(IAtomContainer container, IAtom atom) { int explicitValence = (int) AtomContainerManipulator.getBondOrderSum(container, atom); int charge = atom.getFormalCharge() == null ? 0 : atom.getFormalCharge(); Integer element = atom.getAtomicNumber(); int valence = 0; if (element != null) { int implied = MDLValence.implicitValence(element, charge, explicitValence); int actual; if (atom.getImplicitHydrogenCount() != null) actual = explicitValence + atom.getImplicitHydrogenCount(); else if (atom.getValency() != null) actual = atom.getValency(); else return 0; if (implied != actual) { if (actual == 0) return 15; else if (actual > 0 && actual < 15) return actual; } } return valence; }
private int determineValence(IAtomContainer container, IAtom atom) { int explicitValence = (int) AtomContainerManipulator.getBondOrderSum(container, atom); int charge = atom.getFormalCharge() == null ? 0 : atom.getFormalCharge(); Integer element = atom.getAtomicNumber(); int valence = 0; if (element != null) { int implied = MDLValence.implicitValence(element, charge, explicitValence); int actual; if (atom.getImplicitHydrogenCount() != null) { actual = explicitValence + atom.getImplicitHydrogenCount(); } else if (atom.getValency() != null) { actual = atom.getValency(); } else { return 0; } if (implied != actual) { if (actual == 0) { return 15; } else if (actual > 0 && actual < 15) { return actual; } } } return valence; }