/** * Constructor for the IsotopePatternRule object. */ public IsotopePatternRule() { isotopeGe = new IsotopePatternGenerator(0.01); is = new IsotopePatternSimilarity(); is.seTolerance(toleranceMass); }
/** * Validate the isotope pattern of this IMolecularFormula. Important, first * you have to add with the {@link #setParameters(Object[])} a IMolecularFormulaSet * which represents the isotope pattern to compare. * * @param formula Parameter is the IMolecularFormula * @return A double value meaning 1.0 True, 0.0 False */ @Override public double validate(IMolecularFormula formula) throws CDKException { logger.info("Start validation of ", formula); IsotopePatternGenerator isotopeGe = new IsotopePatternGenerator(0.1); IsotopePattern patternIsoPredicted = isotopeGe.getIsotopes(formula); IsotopePattern patternIsoNormalize = IsotopePatternManipulator.normalize(patternIsoPredicted); return is.compare(pattern, patternIsoNormalize); }
/** * A unit test for JUnit. * * @return Description of the Return Value */ @Test public void testIsotopePatternGenerator() { IsotopePatternGenerator isotopeGe = new IsotopePatternGenerator(); Assert.assertNotNull(isotopeGe); }
/** * A unit test for JUnit. * * @return Description of the Return Value */ @Test public void testIsotopePatternGenerator_double() { IsotopePatternGenerator isotopeGe = new IsotopePatternGenerator(); Assert.assertNotNull(isotopeGe); }
@Test public void testMultipleFormulasForAMass() { IMolecularFormula mf = MolecularFormulaManipulator.getMolecularFormula("C6Cl2", builder); IsotopePatternGenerator isogen = new IsotopePatternGenerator(0.1).setMinIntensity(0.01) .setMinResolution(0.01) .setStoreFormulas(true); IsotopePattern pattern = isogen.getIsotopes(mf); List<IsotopeContainer> isotopes = pattern.getIsotopes(); Assert.assertThat(isotopes.get(0).getFormulas().size(), is(1)); Assert.assertThat(isotopes.get(1).getFormulas().size(), is(1)); Assert.assertThat(isotopes.get(2).getFormulas().size(), is(2)); Assert.assertThat(isotopes.get(3).getFormulas().size(), is(2)); Assert.assertThat(isotopes.get(4).getFormulas().size(), is(3)); }
/** * Calculate isotopes for C20H30Fe2P2S4Cl4 (in CDK 1.5.12, this call * sometimes returns 34 and sometimes 35 isotopes, non-deterministically). */ @Ignore("Non-deterministic test value is bad! This likely depends on our current isotope data which is also bad.") public void testCalculateIsotopesC20H30Fe2P2S4Cl4() { IMolecularFormula molFor = MolecularFormulaManipulator.getMajorIsotopeMolecularFormula("C20H30Fe2P2S4Cl4", builder); IsotopePatternGenerator isotopeGe = new IsotopePatternGenerator(.01); IsotopePattern isos = isotopeGe.getIsotopes(molFor); Assert.assertEquals(35, isos.getNumberOfIsotopes()); }
/** * A unit test for JUnit: * * @return Description of the Return Value */ @Test public void testGetIsotopes_IMolecularFormula() { IMolecularFormula molFor = MolecularFormulaManipulator.getMajorIsotopeMolecularFormula("C41H79N8O3P1", builder); IsotopePatternGenerator isotopeGe = new IsotopePatternGenerator(.1); IsotopePattern isos = isotopeGe.getIsotopes(molFor); Assert.assertEquals(2, isos.getNumberOfIsotopes(), 0.001); }
/** * A unit test for JUnit: * * @return Description of the Return Value */ @Test public void testGetIsotopes_IMolecularFormula_withoutONE() { IMolecularFormula molFor = MolecularFormulaManipulator.getMajorIsotopeMolecularFormula("C41H79N8O3P", builder); IsotopePatternGenerator isotopeGe = new IsotopePatternGenerator(.01); IsotopePattern isos = isotopeGe.getIsotopes(molFor); Assert.assertEquals(6, isos.getNumberOfIsotopes(), 0.001); }
/** * @cdk.bug 3273205 */ @Test public void testCalculateIsotopesMn() { IMolecularFormula molFor = new MolecularFormula(); molFor.addIsotope(builder.newInstance(IIsotope.class, "Mn"), 1); IsotopePatternGenerator isotopeGe = new IsotopePatternGenerator(0.001); IsotopePattern isoPattern = isotopeGe.getIsotopes(molFor); Assert.assertEquals(1, isoPattern.getNumberOfIsotopes()); }
@Test public void testGetIsotopes_IMolecularFormula_deprotonate() { IsotopePatternGenerator isogen = new IsotopePatternGenerator(.1); IMolecularFormula mf1 = MolecularFormulaManipulator.getMolecularFormula("C6H12O6", builder); MolecularFormulaManipulator.adjustProtonation(mf1, -1); IsotopePattern ip1 = isogen.getIsotopes(mf1); Assert.assertEquals(1, ip1.getNumberOfIsotopes()); isogen = new IsotopePatternGenerator(.1); IMolecularFormula mf2 = MolecularFormulaManipulator.getMolecularFormula("C6H11O6", builder); IsotopePattern ip2 = isogen.getIsotopes(mf2); Assert.assertEquals(1, ip2.getNumberOfIsotopes()); Assert.assertEquals(ip1.getIsotope(0).getMass(), ip2.getIsotope(0).getMass(), 0.001); }
/** * Calculate isotopes for C10000 (failed in CDK 1.5.12). */ @Test public void testCalculateIsotopesC10000() { IMolecularFormula molFor = MolecularFormulaManipulator.getMajorIsotopeMolecularFormula("C10000", builder); IsotopePatternGenerator isotopeGe = new IsotopePatternGenerator(.1); IsotopePattern isos = isotopeGe.getIsotopes(molFor); Assert.assertEquals(44, isos.getNumberOfIsotopes()); for (int i = 0; i < isos.getNumberOfIsotopes(); i++) Assert.assertTrue(isos.getIsotope(i).getMass() > 120085); }
@Test public void testGetIsotopes_IMolecularFormula_Charged() { IsotopePatternGenerator isogen = new IsotopePatternGenerator(.1); IMolecularFormula mfPositive = MolecularFormulaManipulator.getMolecularFormula("C6H11O6Na", builder); mfPositive.setCharge(1); IsotopePattern ip1 = isogen.getIsotopes(mfPositive); Assert.assertEquals(1, ip1.getNumberOfIsotopes()); isogen = new IsotopePatternGenerator(.1); IMolecularFormula mfNeutral = MolecularFormulaManipulator.getMolecularFormula("C6H12O6Na", builder); mfNeutral.setCharge(0); IsotopePattern ip2 = isogen.getIsotopes(mfNeutral); Assert.assertEquals(1, ip2.getNumberOfIsotopes()); Assert.assertNotEquals(ip1.getIsotope(0).getMass(), ip2.getIsotope(0).getMass()); }
@Test public void testGeneratorSavesState() { IsotopePatternGenerator isogen = new IsotopePatternGenerator(.1); IMolecularFormula mf1 = MolecularFormulaManipulator.getMolecularFormula("C6H12O6", builder); IsotopePattern ip1 = isogen.getIsotopes(mf1); Assert.assertEquals(1, ip1.getNumberOfIsotopes()); IMolecularFormula mf2 = MolecularFormulaManipulator.getMolecularFormula("C6H12O6", builder); IsotopePattern ip2 = isogen.getIsotopes(mf2); Assert.assertEquals(1, ip2.getNumberOfIsotopes()); }
/** * A unit test for JUnit: Isotopes of the Bromine. * * @return Description of the Return Value */ @Test public void testGetIsotopes1() { IMolecularFormula molFor = new MolecularFormula(); molFor.addIsotope(builder.newInstance(IIsotope.class, "Br")); molFor.addIsotope(builder.newInstance(IIsotope.class, "Br")); IsotopePatternGenerator isotopeGe = new IsotopePatternGenerator(.1); IsotopePattern isoPattern = isotopeGe.getIsotopes(molFor); Assert.assertEquals(3, isoPattern.getNumberOfIsotopes()); }
/** * Real example. Lipid PC * * @throws Exception */ @Test public void testExperiment() { IsotopePattern spExp = new IsotopePattern(); spExp.setMonoIsotope(new IsotopeContainer(762.6006, 124118304)); spExp.addIsotope(new IsotopeContainer(763.6033, 57558840)); spExp.addIsotope(new IsotopeContainer(764.6064, 15432262)); spExp.setCharge(1.0); IMolecularFormula formula = MolecularFormulaManipulator.getMajorIsotopeMolecularFormula("C42H85NO8P", SilentChemObjectBuilder.getInstance()); IsotopePatternGenerator isotopeGe = new IsotopePatternGenerator(0.01); IsotopePattern patternIsoPredicted = isotopeGe.getIsotopes(formula); IsotopePatternSimilarity is = new IsotopePatternSimilarity(); double score = is.compare(spExp, patternIsoPredicted); Assert.assertEquals(0.97, score, .01); }
/** * Histidine example * * @throws Exception */ @Test public void testCompare_IsotopePattern_IsotopePattern() { IsotopePatternSimilarity is = new IsotopePatternSimilarity(); IsotopePattern spExp = new IsotopePattern(); spExp.setMonoIsotope(new IsotopeContainer(156.07770, 1)); spExp.addIsotope(new IsotopeContainer(157.07503, 0.0004)); spExp.addIsotope(new IsotopeContainer(157.08059, 0.0003)); spExp.addIsotope(new IsotopeContainer(158.08135, 0.002)); IMolecularFormula formula = MolecularFormulaManipulator.getMajorIsotopeMolecularFormula("C6H10N3O2", builder); IsotopePatternGenerator isotopeGe = new IsotopePatternGenerator(0.1); IsotopePattern patternIsoPredicted = isotopeGe.getIsotopes(formula); IsotopePattern patternIsoNormalize = IsotopePatternManipulator.normalize(patternIsoPredicted); double score = is.compare(spExp, patternIsoNormalize); Assert.assertNotSame(0.0, score); }
/** * Histidine example * * @throws Exception */ @Test public void testSelectingMF() { IsotopePatternSimilarity is = new IsotopePatternSimilarity(); IsotopePattern spExp = new IsotopePattern(); spExp.setCharge(1); spExp.setMonoIsotope(new IsotopeContainer(156.07770, 1)); spExp.addIsotope(new IsotopeContainer(157.07503, 0.0101)); spExp.addIsotope(new IsotopeContainer(157.08059, 0.074)); spExp.addIsotope(new IsotopeContainer(158.08135, 0.0024)); double score = 0; String mfString = ""; String[] listMF = {"C4H8N6O", "C2H12N4O4", "C3H12N2O5", "C6H10N3O2", "CH10N5O4", "C4H14NO5"}; for (int i = 0; i < listMF.length; i++) { IMolecularFormula formula = MolecularFormulaManipulator.getMajorIsotopeMolecularFormula(listMF[i], builder); IsotopePatternGenerator isotopeGe = new IsotopePatternGenerator(0.01); IsotopePattern patternIsoPredicted = isotopeGe.getIsotopes(formula); IsotopePattern patternIsoNormalize = IsotopePatternManipulator.normalize(patternIsoPredicted); double tempScore = is.compare(spExp, patternIsoNormalize); if (score < tempScore) { mfString = MolecularFormulaManipulator.getString(formula); score = tempScore; } } Assert.assertEquals("C6H10N3O2", mfString); }
/** * A unit test for JUnit: Isotopes of the Iodemethylidyne. * * @return Description of the Return Value */ @Test public void testCalculateIsotopesIodemethylidyne() { // RESULTS ACCORDING PAGE: http://www2.sisweb.com/mstools/isotope.htm double[] massResults = {138.904480, 139.907839}; double[] abundResults = {1.00, .011}; IMolecularFormula molFor = new MolecularFormula(); molFor.addIsotope(builder.newInstance(IIsotope.class, "C")); molFor.addIsotope(builder.newInstance(IIsotope.class, "I")); Assert.assertEquals(2, molFor.getIsotopeCount()); IsotopePatternGenerator isotopeGe = new IsotopePatternGenerator(.01); IsotopePattern isoPattern = isotopeGe.getIsotopes(molFor); Assert.assertEquals(2, isoPattern.getNumberOfIsotopes()); Assert.assertEquals(massResults[0], isoPattern.getIsotope(0).getMass(), 0.01); Assert.assertEquals(massResults[1], isoPattern.getIsotope(1).getMass(), 0.01); Assert.assertEquals(abundResults[0], isoPattern.getIsotope(0).getIntensity(), 0.01); Assert.assertEquals(abundResults[1], isoPattern.getIsotope(1).getIntensity(), 0.01); }
/** * A unit test for JUnit: Isotopes of the n-Carbone. * * @return Description of the Return Value */ @Test public void testCalculateIsotopesnCarbono() { // RESULTS ACCORDING PAGE: http://www2.sisweb.com/mstools/isotope.htm double[] massResults = {120.000000, 121.003360, 122.006709}; double[] abundResults = {1.00, .108, 0.005}; IMolecularFormula molFor = new MolecularFormula(); molFor.addIsotope(builder.newInstance(IIsotope.class, "C"), 10); IsotopePatternGenerator isotopeGe = new IsotopePatternGenerator(0.0010); IsotopePattern isoPattern = isotopeGe.getIsotopes(molFor); Assert.assertEquals(3, isoPattern.getNumberOfIsotopes()); Assert.assertEquals(massResults[0], isoPattern.getIsotope(0).getMass(), 0.01); Assert.assertEquals(massResults[1], isoPattern.getIsotope(1).getMass(), 0.01); Assert.assertEquals(massResults[2], isoPattern.getIsotope(2).getMass(), 0.01); Assert.assertEquals(abundResults[0], isoPattern.getIsotope(0).getIntensity(), 0.01); Assert.assertEquals(abundResults[1], isoPattern.getIsotope(1).getIntensity(), 0.01); Assert.assertEquals(abundResults[2], isoPattern.getIsotope(2).getIntensity(), 0.01); }
/** * A unit test for JUnit: Isotopes of the Bromine. * * @return Description of the Return Value */ @Test public void testCalculateIsotopesAllBromine() { // RESULTS ACCORDING PAGE: http://www2.sisweb.com/mstools/isotope.htm double[] massResults = {157.836669, 159.834630, 161.832580}; double[] abundResults = {.512, 1.00, .487}; IMolecularFormula molFor = new MolecularFormula(); molFor.addIsotope(builder.newInstance(IIsotope.class, "Br")); molFor.addIsotope(builder.newInstance(IIsotope.class, "Br")); IsotopePatternGenerator isotopeGe = new IsotopePatternGenerator(.1); IsotopePattern isoPattern = isotopeGe.getIsotopes(molFor); Assert.assertEquals(3, isoPattern.getNumberOfIsotopes()); Assert.assertEquals(massResults[0], isoPattern.getIsotope(0).getMass(), 0.01); Assert.assertEquals(massResults[1], isoPattern.getIsotope(1).getMass(), 0.01); Assert.assertEquals(massResults[2], isoPattern.getIsotope(2).getMass(), 0.01); Assert.assertEquals(abundResults[0], isoPattern.getIsotope(0).getIntensity(), 0.01); Assert.assertEquals(abundResults[1], isoPattern.getIsotope(1).getIntensity(), 0.01); Assert.assertEquals(abundResults[2], isoPattern.getIsotope(2).getIntensity(), 0.01); }