/** * @param set The collection of IAtomContainer objects * @return The summed implicit hydrogens of all atoms in this set. */ public static int getTotalHydrogenCount(IAtomContainerSet set) { int hCount = 0; for (int i = 0; i < set.getAtomContainerCount(); i++) { hCount += AtomContainerManipulator.getTotalHydrogenCount(set.getAtomContainer(i)); } return hCount; }
@Test public void testGetTotalHydrogenCount_ImplicitHydrogens() throws Exception { IAtomContainer mol = new AtomContainer(); Atom carbon = new Atom("C"); carbon.setImplicitHydrogenCount(4); mol.addAtom(carbon); Assert.assertEquals(4, AtomContainerManipulator.getTotalHydrogenCount(mol)); }
@Test public void testNaCl() throws Exception { IAtomContainer mol = new AtomContainer(); Atom cl = new Atom("Cl"); cl.setFormalCharge(-1); mol.addAtom(cl); Atom na = new Atom("Na"); na.setFormalCharge(+1); mol.addAtom(na); findAndConfigureAtomTypesForAllAtoms(mol); adder.addImplicitHydrogens(mol); Assert.assertEquals(2, mol.getAtomCount()); Assert.assertEquals(0, AtomContainerManipulator.getTotalHydrogenCount(mol)); Assert.assertEquals(0, mol.getConnectedBondsCount(cl)); Assert.assertEquals(0, cl.getImplicitHydrogenCount().intValue()); Assert.assertEquals(0, mol.getConnectedBondsCount(na)); Assert.assertEquals(0, na.getImplicitHydrogenCount().intValue()); }
/** * @cdk.bug 1254 */ @Test public void testGetTotalHydrogenCount_IAtomContainer() throws IOException, ClassNotFoundException, CDKException { IAtomContainer mol = new AtomContainer(); // ethene mol.addAtom(new Atom("C")); mol.addAtom(new Atom("C")); mol.addAtom(new Atom("H")); mol.addAtom(new Atom("H")); mol.addAtom(new Atom("H")); mol.addAtom(new Atom("H")); mol.addBond(0, 1, IBond.Order.DOUBLE); mol.addBond(0, 2, IBond.Order.SINGLE); mol.addBond(0, 3, IBond.Order.SINGLE); mol.addBond(1, 4, IBond.Order.SINGLE); mol.addBond(1, 5, IBond.Order.SINGLE); Assert.assertEquals(6, mol.getAtomCount()); Assert.assertEquals(5, mol.getBondCount()); // total includes explicit and implicit (we don't have any implicit to 4 is expected) Assert.assertEquals(4, AtomContainerManipulator.getTotalHydrogenCount(mol)); }
@Test public void testAromaticSaturation() throws Exception { IAtomContainer mol = new AtomContainer(); mol.addAtom(new Atom("C")); // 0 mol.addAtom(new Atom("C")); // 1 mol.addAtom(new Atom("C")); // 2 mol.addAtom(new Atom("C")); // 3 mol.addAtom(new Atom("C")); // 4 mol.addAtom(new Atom("C")); // 5 mol.addAtom(new Atom("C")); // 6 mol.addAtom(new Atom("C")); // 7 mol.addBond(0, 1, IBond.Order.SINGLE); // 1 mol.addBond(1, 2, IBond.Order.SINGLE); // 2 mol.addBond(2, 3, IBond.Order.SINGLE); // 3 mol.addBond(3, 4, IBond.Order.SINGLE); // 4 mol.addBond(4, 5, IBond.Order.SINGLE); // 5 mol.addBond(5, 0, IBond.Order.SINGLE); // 6 mol.addBond(0, 6, IBond.Order.SINGLE); // 7 mol.addBond(6, 7, IBond.Order.TRIPLE); // 8 for (int f = 0; f < 6; f++) { mol.getAtom(f).setFlag(CDKConstants.ISAROMATIC, true); mol.getAtom(f).setHybridization(IAtomType.Hybridization.SP2); mol.getBond(f).setFlag(CDKConstants.ISAROMATIC, true); } findAndConfigureAtomTypesForAllAtoms(mol); adder.addImplicitHydrogens(mol); Assert.assertEquals(6, AtomContainerManipulator.getTotalHydrogenCount(mol)); }
Assert.assertEquals(5, AtomContainerManipulator.getTotalHydrogenCount(mol));