/** * Extract from a set of MolecularFormula the maximum occurrence of each element found and * put the element and occurrence in a new IMolecularFormula. * * @param mfSet The set of molecularFormules to inspect * @return A IMolecularFormula containing the maximum occurrence of the elements * @see #getMinOccurrenceElements(IMolecularFormulaSet) */ public static IMolecularFormula getMaxOccurrenceElements(IMolecularFormulaSet mfSet) { IMolecularFormula molecularFormula = mfSet.getBuilder().newInstance(IMolecularFormula.class); for (IMolecularFormula mf : mfSet.molecularFormulas()) { for (IIsotope isotope : mf.isotopes()) { IElement element = mfSet.getBuilder().newInstance(IElement.class, isotope); int occur_new = MolecularFormulaManipulator.getElementCount(mf, element); if (!MolecularFormulaManipulator.containsElement(molecularFormula, element)) { molecularFormula.addIsotope(mfSet.getBuilder().newInstance(IIsotope.class, element), occur_new); } else { int occur_old = MolecularFormulaManipulator.getElementCount(molecularFormula, element); if (occur_new > occur_old) { MolecularFormulaManipulator.removeElement(molecularFormula, element); molecularFormula.addIsotope(mfSet.getBuilder().newInstance(IIsotope.class, element), occur_new); } } } } return molecularFormula; }
/** * Extract from a set of MolecularFormula the minimal occurrence of each element found and * put the element and occurrence in a new IMolecularFormula. * * @param mfSet The set of molecularFormules to inspect * @return A IMolecularFormula containing the minimal occurrence of the elements * @see #getMaxOccurrenceElements(IMolecularFormulaSet) */ public static IMolecularFormula getMinOccurrenceElements(IMolecularFormulaSet mfSet) { IMolecularFormula molecularFormula = mfSet.getBuilder().newInstance(IMolecularFormula.class); for (IMolecularFormula mf : mfSet.molecularFormulas()) { for (IIsotope isotope : mf.isotopes()) { IElement element = mfSet.getBuilder().newInstance(IElement.class, isotope); int occur_new = MolecularFormulaManipulator.getElementCount(mf, element); if (!MolecularFormulaManipulator.containsElement(molecularFormula, element)) { molecularFormula.addIsotope(mfSet.getBuilder().newInstance(IIsotope.class, element), occur_new); } else { int occur_old = MolecularFormulaManipulator.getElementCount(molecularFormula, element); if (occur_new < occur_old) { MolecularFormulaManipulator.removeElement(molecularFormula, element); molecularFormula.addIsotope(mfSet.getBuilder().newInstance(IIsotope.class, element), occur_new); } } } } return molecularFormula; }
/** test @link {@link MolecularFormulaManipulator#removeElement(IMolecularFormula, IElement)} */ @Test public void testRemoveElement_IMolecularFormula_IElement() { IMolecularFormula formula = new MolecularFormula(); formula.addIsotope(builder.newInstance(IIsotope.class, "C"), 1); IIsotope fl = builder.newInstance(IIsotope.class, "F"); IIsotope hy2 = builder.newInstance(IIsotope.class, "H"); IIsotope hy1 = builder.newInstance(IIsotope.class, "H"); hy2.setExactMass(2.014101778); formula.addIsotope(fl, 1); formula.addIsotope(hy1, 2); formula.addIsotope(hy2, 1); Assert.assertEquals(4, formula.getIsotopeCount()); formula = MolecularFormulaManipulator.removeElement(formula, builder.newInstance(IElement.class, "F")); Assert.assertEquals(3, formula.getIsotopeCount()); Assert.assertEquals(4, MolecularFormulaManipulator.getAtomCount(formula)); formula = MolecularFormulaManipulator.removeElement(formula, builder.newInstance(IElement.class, "H")); Assert.assertEquals(1, MolecularFormulaManipulator.getAtomCount(formula)); Assert.assertEquals(1, formula.getIsotopeCount()); }