@Test public void parseMFMass() throws Exception { String str = "C7H3[81]BrBrO3"; IChemObjectBuilder builder = SilentChemObjectBuilder.getInstance(); IMolecularFormula mf = MolecularFormulaManipulator.getMolecularFormula(str, builder); assertThat(MolecularFormulaManipulator.getString(mf, false, true), is("C7H3Br[81]BrO3")); }
/** * Validate the occurrence of this IMolecularFormula. * * @param formula Parameter is the IMolecularFormula * @return An ArrayList containing 9 elements in the order described above */ @Override public double validate(IMolecularFormula formula) throws CDKException { logger.info("Start validation of ", formula); double isValid = 1.0; Iterator<IElement> itElem = MolecularFormulaManipulator.elements(formula).iterator(); while (itElem.hasNext()) { IElement element = itElem.next(); int occur = MolecularFormulaManipulator.getElementCount(formula, element); if (occur > hashMap.get(element.getSymbol())) { isValid = 0.0; break; } } return isValid; }
/** * Constructor of the IsotopeContainer object setting a IMolecularFormula * object and intensity value. * * @param formula The formula of this container * @param intensity The intensity of this container */ public IsotopeContainer(IMolecularFormula formula, double intensity) { forms.add(formula); if (formula != null) masOs = MolecularFormulaManipulator.getTotalExactMass(formula); inte = intensity; }
/** * Converts a formula string (like "C2H4") into an atom container with atoms * but no bonds. * * @param formulaString the formula to convert * @param builder a chem object builder * @return atoms wrapped in an atom container */ public static IAtomContainer getAtomContainer(String formulaString, IChemObjectBuilder builder) { return MolecularFormulaManipulator.getAtomContainer(MolecularFormulaManipulator.getMolecularFormula( formulaString, builder)); }
/** * In the minimal IMolecularFormula must contain all those IElement found in the * minimal IMolecularFormula. * * @param formulaMax A IMolecularFormula which contains the maximal representation of the Elements * @param formulaMin A IMolecularFormula which contains the minimal representation of the Elements * @return True, if the correlation is valid */ private static boolean validCorrelation(IMolecularFormula formulaMin, IMolecularFormula formulamax) { for (IElement element : MolecularFormulaManipulator.elements(formulaMin)) { if (!MolecularFormulaManipulator.containsElement(formulamax, element)) return false; } return true; }
/** * Returns the string representation of the molecule formula. * Based on Hill System. The Hill system is a system of writing * chemical formulas such that the number of carbon atoms in a * molecule is indicated first, the number of hydrogen atoms next, * and then the number of all other chemical elements subsequently, * in alphabetical order. When the formula contains no carbon, all * the elements, including hydrogen, are listed alphabetically. * * @param formula The IMolecularFormula Object * @param setOne True, when must be set the value 1 for elements with * one atom * @return A String containing the molecular formula * * @see #getHTML(IMolecularFormula) */ public static String getString(IMolecularFormula formula, boolean setOne) { if (containsElement(formula, formula.getBuilder().newInstance(IElement.class, "C"))) return getString(formula, generateOrderEle_Hill_WithCarbons(), setOne, false); else return getString(formula, generateOrderEle_Hill_NoCarbons(), setOne, false); }
/** * add in a instance of IMolecularFormula the elements extracts form * molecular formula string. The string is immediately analyzed and a set of Nodes * is built based on this analysis * <p> The hydrogens must be implicit. * * @param stringMF The molecularFormula string * @return The filled IMolecularFormula * @see #getMolecularFormula(String, IChemObjectBuilder) */ public static IMolecularFormula getMolecularFormula(String stringMF, IMolecularFormula formula) { return getMolecularFormula(stringMF, formula, false); }
/** Test if formula-comparison is simplify-independant */ @Test public void test6() { String formula = "(CH3)2"; IMolecularFormula formula1 = new MolecularFormula(); formula1.addIsotope(builder.newInstance(IIsotope.class, "C"), 2); formula1.addIsotope(builder.newInstance(IIsotope.class, "H"), 6); IMolecularFormula ff = MolecularFormulaManipulator.getMolecularFormula(formula, builder); Assert.assertTrue(MolecularFormulaManipulator.compare(formula1, MolecularFormulaManipulator.getMolecularFormula(formula, builder))); Assert.assertEquals("C2H6", MolecularFormulaManipulator.getString(ff)); }
@Test public void deprotonatePhenol() throws Exception { IChemObjectBuilder bldr = SilentChemObjectBuilder.getInstance(); IMolecularFormula mf = MolecularFormulaManipulator.getMolecularFormula("C6H6O", bldr); assertTrue(MolecularFormulaManipulator.adjustProtonation(mf, -1)); assertThat(MolecularFormulaManipulator.getString(mf), is("[C6H5O]-")); assertThat(mf.getCharge(), is(-1)); }
@Test public void testGetMolecularFormula_IAtomContainer() { IAtomContainer ac = builder.newInstance(IAtomContainer.class); ac.addAtom(builder.newInstance(IAtom.class, "C")); ac.addAtom(builder.newInstance(IAtom.class, "C")); ac.addAtom(builder.newInstance(IAtom.class, "H")); ac.addAtom(builder.newInstance(IAtom.class, "H")); ac.addAtom(builder.newInstance(IAtom.class, "H")); ac.addAtom(builder.newInstance(IAtom.class, "H")); IMolecularFormula mf1 = MolecularFormulaManipulator.getMolecularFormula(ac); IMolecularFormula mf2 = new MolecularFormula(); mf2.addIsotope(builder.newInstance(IIsotope.class, "C"), 2); mf2.addIsotope(builder.newInstance(IIsotope.class, "H"), 4); Assert.assertEquals(MolecularFormulaManipulator.getAtomCount(mf2), MolecularFormulaManipulator.getAtomCount(mf1)); Assert.assertEquals(mf2.getIsotopeCount(), mf1.getIsotopeCount()); IElement elemC = builder.newInstance(IElement.class, "C"); IElement elemH = builder.newInstance(IElement.class, "H"); Assert.assertEquals(mf2.getIsotopeCount(builder.newInstance(IIsotope.class, elemC)), mf1.getIsotopeCount(builder.newInstance(IIsotope.class, elemC))); Assert.assertEquals(mf2.getIsotopeCount(builder.newInstance(IIsotope.class, elemH)), mf1.getIsotopeCount(builder.newInstance(IIsotope.class, elemH))); Assert.assertEquals(MolecularFormulaManipulator.getElementCount(mf2, elemC), MolecularFormulaManipulator.getElementCount(mf1, elemC)); Assert.assertEquals(MolecularFormulaManipulator.getElementCount(mf2, elemH), MolecularFormulaManipulator.getElementCount(mf1, elemH)); }
IMolecularFormula formula = MolecularFormulaManipulator.getMolecularFormula(ring); if (MolecularFormulaManipulator.getElementCount(formula, new Element("C")) == 6) { result = DeAromatizationTool.deAromatizeBenzene(ring); } else if (MolecularFormulaManipulator.getElementCount(formula, new Element("C")) == 5 && MolecularFormulaManipulator.getElementCount(formula, new Element("N")) == 1) { result = DeAromatizationTool.deAromatizePyridine(ring); if (MolecularFormulaManipulator.getElementCount(formula, new Element("C")) == 4 && MolecularFormulaManipulator.getElementCount(formula, new Element("N")) == 1) { result = deAromatizePyrolle(ring);
/** * Tests that an atom which has not be configured with isotope information, * provides the correct exact mass. * @cdk.bug 1944604 */ @Test public void testSingleAtomFromSmiles() throws CDKException { IAtomContainer mol = new AtomContainer(); mol.addAtom(new Atom("C")); // previously performed inside SmilesParser AtomContainerManipulator.percieveAtomTypesAndConfigureAtoms(mol); CDKHydrogenAdder.getInstance(DefaultChemObjectBuilder.getInstance()).addImplicitHydrogens(mol); IMolecularFormula mf = MolecularFormulaManipulator.getMolecularFormula(mol); double exactMass = MolecularFormulaManipulator.getTotalExactMass(mf); Assert.assertEquals(16.0313, exactMass, 0.0001); }
@Test public void testGetMolecularFormula_String_IChemObjectBuilder() { IMolecularFormula molecularFormula = MolecularFormulaManipulator.getMolecularFormula("C10H16", builder); Assert.assertEquals(26, MolecularFormulaManipulator.getAtomCount(molecularFormula)); Assert.assertEquals(2, molecularFormula.getIsotopeCount()); }
IMolecularFormula formula = MolecularFormulaManipulator.getMolecularFormula(crystal); List<IElement> asortedElements = MolecularFormulaManipulator.elements(formula); Iterator<IElement> elements = asortedElements.iterator(); while (elements.hasNext()) { String symbol = element.getSymbol(); elemNames += symbol + " ".substring(symbol.length()); String countS = Integer.valueOf(MolecularFormulaManipulator.getElementCount(formula, element)).toString(); elemCounts += countS + " ".substring(countS.length());
@Test public void deprontateChloride() throws Exception { IChemObjectBuilder bldr = SilentChemObjectBuilder.getInstance(); IMolecularFormula mf = MolecularFormulaManipulator.getMolecularFormula("[Cl]-", bldr); assertFalse(MolecularFormulaManipulator.adjustProtonation(mf, -1)); }
/** * Returns the string representation of the molecule formula. * Based on Hill System. The Hill system is a system of writing * chemical formulas such that the number of carbon atoms in a * molecule is indicated first, the number of hydrogen atoms next, * and then the number of all other chemical elements subsequently, * in alphabetical order. When the formula contains no carbon, all * the elements, including hydrogen, are listed alphabetically. * * @param formula The IMolecularFormula Object * @return A String containing the molecular formula * * @see #getHTML(IMolecularFormula) */ public static String getString(IMolecularFormula formula) { return getString(formula, false); }
@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 public void testGetHeavyElements_IMolecularFormula_2() { IMolecularFormula formula = MolecularFormulaManipulator.getMolecularFormula("CH3OH", builder); Assert.assertEquals(2, MolecularFormulaManipulator.getHeavyElements(formula).size()); }
double massMim = MolecularFormulaManipulator.getTotalExactMass(minimalMF) - tolerance; double massMap = MolecularFormulaManipulator.getTotalExactMass(maximalMF) + tolerance; if (massMim > mass || massMap < mass) { logger.error("Proposed mass is out of the range: ", mass); String newMFString = MolecularFormulaManipulator.getString(myMF);
/** * 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; }