MolecularFormulaManipulator { public static double getDBE(IMolecularFormula formula) throws CDKException { int valencies[] = new int[5]; IAtomContainer ac = getAtomContainer(formula); AtomTypeFactory factory = AtomTypeFactory.getInstance( "org/openscience/cdk/config/data/structgen_atomtypes.xml", ac.getBuilder()); for (int f = 0; f < ac.getAtomCount(); f++) { IAtomType[] types = factory.getAtomTypes(ac.getAtom(f).getSymbol()); if (types.length == 0) throw new CDKException( "Calculation of double bond equivalents not possible due to problems with element " + ac.getAtom(f).getSymbol()); valencies[types[0].getBondOrderSum().intValue()]++; } return 1 + (valencies[4]) + (valencies[3] / 2) - (valencies[1] / 2); }  static int getAtomCount(IMolecularFormula formula); static int getElementCount(IMolecularFormula formula, IElement element); static int getElementCount(IMolecularFormula formula, IIsotope isotope); static int getElementCount(IMolecularFormula formula, String symbol); static List<IIsotope> getIsotopes(IMolecularFormula formula, IElement element); static List<IElement> elements(IMolecularFormula formula); static boolean containsElement(IMolecularFormula formula, IElement element); static IMolecularFormula removeElement(IMolecularFormula formula, IElement element); static String getString(IMolecularFormula formula, String[] orderElements,
                                   boolean setOne); static String getString(IMolecularFormula formula, String[] orderElements,
                                   boolean setOne, boolean setMassNumber); static String getString(IMolecularFormula formula); static String getString(IMolecularFormula formula, boolean setOne); static String getString(IMolecularFormula formula, boolean setOne, boolean setMassNumber); static List<IIsotope> putInOrder(String[] orderElements, IMolecularFormula formula); @Deprecated static String getHillString(IMolecularFormula formula); static String getHTML(IMolecularFormula formula); static String getHTML(IMolecularFormula formula, boolean chargeB, boolean isotopeB); static String getHTML(IMolecularFormula formula, String[] orderElements, boolean showCharge, boolean showIsotopes); static IMolecularFormula getMolecularFormula(String stringMF, IChemObjectBuilder builder); static IMolecularFormula getMajorIsotopeMolecularFormula(String stringMF, IChemObjectBuilder builder); static IMolecularFormula getMolecularFormula(String stringMF, IMolecularFormula formula); @Deprecated static double getTotalExactMass(IMolecularFormula formula); static double getTotalMassNumber(IMolecularFormula formula); static double getMass(IMolecularFormula mf, int flav); static double getMass(IMolecularFormula mf); @Deprecated static double getNaturalExactMass(IMolecularFormula formula); @Deprecated static double getMajorIsotopeMass(IMolecularFormula formula); static double getTotalNaturalAbundance(IMolecularFormula formula); static double getDBE(IMolecularFormula formula); static IMolecularFormula getMolecularFormula(IAtomContainer atomContainer); static IMolecularFormula getMolecularFormula(IAtomContainer atomContainer, IMolecularFormula formula); static IAtomContainer getAtomContainer(IMolecularFormula formula); static IAtomContainer getAtomContainer(IMolecularFormula formula, IAtomContainer atomContainer); static IAtomContainer getAtomContainer(String formulaString, IChemObjectBuilder builder); static String[] generateOrderEle(); static boolean compare(IMolecularFormula formula1, IMolecularFormula formula2); static List<IElement> getHeavyElements(IMolecularFormula formula); static String simplifyMolecularFormula(String formula); static boolean adjustProtonation(IMolecularFormula mf, int hcnt); static IMolecularFormula getMostAbundant(IMolecularFormula mf); static IMolecularFormula getMostAbundant(IAtomContainer mol); static final int MolWeight; static final int MolWeightIgnoreSpecified; static final int MonoIsotopic; static final int MostAbundant; static final Comparator<IIsotope> NAT_ABUN_COMP; }
@Test public void testGetDBE_IMolecularFormula() throws Exception { IMolecularFormula formula = new MolecularFormula(); formula.addIsotope(builder.newInstance(IIsotope.class, "C"), 10); formula.addIsotope(builder.newInstance(IIsotope.class, "H"), 22); Assert.assertEquals(0.0, MolecularFormulaManipulator.getDBE(formula), 0.01); formula = new MolecularFormula(); formula.addIsotope(builder.newInstance(IIsotope.class, "C"), 10); formula.addIsotope(builder.newInstance(IIsotope.class, "H"), 16); Assert.assertEquals(3.0, MolecularFormulaManipulator.getDBE(formula), 0.01); formula = new MolecularFormula(); formula.addIsotope(builder.newInstance(IIsotope.class, "C"), 10); formula.addIsotope(builder.newInstance(IIsotope.class, "H"), 16); formula.addIsotope(builder.newInstance(IIsotope.class, "O")); Assert.assertEquals(3.0, MolecularFormulaManipulator.getDBE(formula), 0.01); formula = new MolecularFormula(); formula.addIsotope(builder.newInstance(IIsotope.class, "C"), 10); formula.addIsotope(builder.newInstance(IIsotope.class, "H"), 19); formula.addIsotope(builder.newInstance(IIsotope.class, "N")); Assert.assertEquals(2.0, MolecularFormulaManipulator.getDBE(formula), 0.01); }