/** * Removes all isotopes from a given element in the MolecularFormula. * * @param formula IMolecularFormula molecularFormula * @param element The IElement of the IIsotopes to be removed * @return The molecularFormula with the isotopes removed */ public static IMolecularFormula removeElement(IMolecularFormula formula, IElement element) { for (IIsotope isotope : getIsotopes(formula, element)) { formula.removeIsotope(isotope); } return formula; }
public static List<IIsotope> putInOrder(String[] orderElements, IMolecularFormula formula) { List<IIsotope> isotopesList = new ArrayList<IIsotope>(); for (String orderElement : orderElements) { IElement element = formula.getBuilder().newInstance(IElement.class, orderElement); if (containsElement(formula, element)) { List<IIsotope> isotopes = getIsotopes(formula, element); Collections.sort(isotopes, new Comparator<IIsotope>() { @Override public int compare(IIsotope a, IIsotope b) { Integer aMass = a.getMassNumber(); Integer bMass = b.getMassNumber(); if (aMass == null) return -1; if (bMass == null) return +1; return aMass.compareTo(bMass); } }); isotopesList.addAll(isotopes); } } return isotopesList; }
for (IIsotope isotope : getIsotopes(formula, element)) { Integer massNumber = isotope.getMassNumber(); if (massNumber != null)
/** * Put in order the elements of the molecular formula. * * @param formula The IMolecularFormula to put in order * @return IMolecularFormula object */ private IMolecularFormula putInOrder(IMolecularFormula formula) { IMolecularFormula new_formula = formula.getBuilder().newInstance(IMolecularFormula.class); for (int i = 0; i < orderElements.length; i++) { IElement element = builder.newInstance(IElement.class, orderElements[i]); if (MolecularFormulaManipulator.containsElement(formula, element)) { Iterator<IIsotope> isotopes = MolecularFormulaManipulator.getIsotopes(formula, element).iterator(); while (isotopes.hasNext()) { IIsotope isotope = isotopes.next(); new_formula.addIsotope(isotope, formula.getIsotopeCount(isotope)); } } } // new_mf.setCharge(charge); return new_formula; }
@Test public void testSingleAtom() { String formula = "CH4"; IMolecularFormula mf = MolecularFormulaManipulator.getMolecularFormula(formula, builder); Assert.assertEquals(1, MolecularFormulaManipulator.getIsotopes(mf, mf.getBuilder().newInstance(IElement.class, "C")).size()); }
/** * Test getIsotopes for hydrogen/deuterium. */ @Test public void testGetIsotopes_IMolecularFormula_IElement() { IMolecularFormula formula = new MolecularFormula(); IIsotope carb = builder.newInstance(IIsotope.class, "C"); IIsotope flu = builder.newInstance(IIsotope.class, "F"); IIsotope h1 = builder.newInstance(IIsotope.class, "H"); IIsotope h2 = builder.newInstance(IIsotope.class, "H"); h2.setExactMass(2.014101778); formula.addIsotope(carb, 1); formula.addIsotope(flu); formula.addIsotope(h1, 1); formula.addIsotope(h2, 2); List<IIsotope> isotopes = MolecularFormulaManipulator.getIsotopes(formula, builder.newInstance(IElement.class, "H")); Assert.assertEquals(2, isotopes.size()); }