private static IsotopeContainer findExisting(List<IsotopeContainer> containers, double mass, double treshhold) { for (IsotopeContainer container : containers) { if (Math.abs(container.getMass() - mass) <= treshhold) { return container; } } return null; }
/** * Search and find the closest difference in an array in terms of mass and * intensity. Always return the position in this List. * * @param diffValue The difference to look for * @param normMass A List of normalized masses * @return The position in the List */ private int getClosestDataDiff(IsotopeContainer isoContainer, IsotopePattern pattern) { double diff = 100; int posi = -1; for (int i = 0; i < pattern.getNumberOfIsotopes(); i++) { double tempDiff = Math.abs((isoContainer.getMass()) - pattern.getIsotopes().get(i).getMass()); if (tempDiff <= (tolerance_ppm / isoContainer.getMass()) && tempDiff < diff) { diff = tempDiff; posi = i; } } return posi; } }
/** * Gets the parameters attribute of the IsotopePatternRule object. * * @return The parameters value * @see #setParameters */ @Override public Object[] getParameters() { // return the parameters as used for the rule validation Object[] params = new Object[2]; if (pattern == null) params[0] = null; else { List<double[]> params0 = new ArrayList<double[]>(); for (IsotopeContainer isotope : pattern.getIsotopes()) { params0.add(new double[] { isotope.getMass(), isotope.getIntensity() }); } params[0] = params0; } params[1] = toleranceMass; return params; }
/** * Clones this IsotopeContainer object and its content. * * @return The cloned object */ @Override public Object clone() throws CloneNotSupportedException { IsotopeContainer isoClone = new IsotopeContainer(); isoClone.forms.addAll(getFormulas()); isoClone.setIntensity(getIntensity()); isoClone.setMass(getMass()); return isoClone; }
/** * A unit test suite for JUnit. * * @return The test suite */ @Test public void testGetMass() { IsotopeContainer isoC = new IsotopeContainer(); double mass = 130.00; isoC.setMass(mass); Assert.assertEquals(mass, isoC.getMass(), 0.001); }
/** * Junit test * * @throws Exception */ @Test public void testSortAndNormalizedByIntensity_IsotopePattern() { IsotopePattern spExp = new IsotopePattern(); spExp.addIsotope(new IsotopeContainer(157.07503, 0.0002)); spExp.setMonoIsotope(new IsotopeContainer(156.07770, 2)); spExp.addIsotope(new IsotopeContainer(158.08135, 0.004)); spExp.addIsotope(new IsotopeContainer(157.08059, 0.0006)); spExp.setCharge(1); IsotopePattern isoNorma = IsotopePatternManipulator.sortAndNormalizedByIntensity(spExp); List<IsotopeContainer> listISO = isoNorma.getIsotopes(); Assert.assertEquals(156.07770, isoNorma.getMonoIsotope().getMass(), 0.00001); Assert.assertEquals(156.07770, listISO.get(0).getMass(), 0.00001); Assert.assertEquals(158.08135, listISO.get(1).getMass(), 0.00001); Assert.assertEquals(157.08059, listISO.get(2).getMass(), 0.00001); Assert.assertEquals(157.07503, listISO.get(3).getMass(), 0.00001); Assert.assertEquals(1, isoNorma.getMonoIsotope().getIntensity(), 0.00001); Assert.assertEquals(1, listISO.get(0).getIntensity(), 0.00001); Assert.assertEquals(0.002, listISO.get(1).getIntensity(), 0.00001); Assert.assertEquals(0.0003, listISO.get(2).getIntensity(), 0.00001); Assert.assertEquals(0.0001, listISO.get(3).getIntensity(), 0.00001); Assert.assertEquals(1, isoNorma.getCharge(), 0.001); }
/** * Junit test * * @throws Exception */ @Test public void testNormalize_IsotopePattern() { IsotopePattern spExp = new IsotopePattern(); spExp.setMonoIsotope(new IsotopeContainer(156.07770, 2)); spExp.addIsotope(new IsotopeContainer(157.08059, 0.0006)); spExp.addIsotope(new IsotopeContainer(157.07503, 0.0002)); spExp.addIsotope(new IsotopeContainer(158.08135, 0.004)); spExp.setCharge(1); IsotopePattern isoNorma = IsotopePatternManipulator.normalize(spExp); List<IsotopeContainer> listISO = isoNorma.getIsotopes(); Assert.assertEquals(1, isoNorma.getMonoIsotope().getIntensity(), 0.00001); Assert.assertEquals(1, listISO.get(0).getIntensity(), 0.00001); Assert.assertEquals(0.0003, listISO.get(1).getIntensity(), 0.00001); Assert.assertEquals(0.0001, listISO.get(2).getIntensity(), 0.00001); Assert.assertEquals(0.002, listISO.get(3).getIntensity(), 0.00001); Assert.assertEquals(156.07770, isoNorma.getMonoIsotope().getMass(), 0.00001); Assert.assertEquals(156.07770, listISO.get(0).getMass(), 0.00001); Assert.assertEquals(157.08059, listISO.get(1).getMass(), 0.00001); Assert.assertEquals(157.07503, listISO.get(2).getMass(), 0.00001); Assert.assertEquals(158.08135, listISO.get(3).getMass(), 0.00001); Assert.assertEquals(1, isoNorma.getCharge(), 0.00001); }
Assert.assertEquals(156.07770, isoNorma.getMonoIsotope().getMass(), 0.001); Assert.assertEquals(156.07770, listISO.get(0).getMass(), 0.00001); Assert.assertEquals(157.07503, listISO.get(1).getMass(), 0.00001); Assert.assertEquals(157.08059, listISO.get(2).getMass(), 0.00001); Assert.assertEquals(158.08135, listISO.get(3).getMass(), 0.00001);
/** * Junit test * * @throws Exception */ @Test public void testSortByIntensity_IsotopePattern() { IsotopePattern spExp = new IsotopePattern(); spExp.setMonoIsotope(new IsotopeContainer(157.07503, 0.0001)); spExp.addIsotope(new IsotopeContainer(156.07770, 1)); spExp.addIsotope(new IsotopeContainer(157.08059, 0.0003)); spExp.addIsotope(new IsotopeContainer(158.08135, 0.002)); spExp.setCharge(1); IsotopePattern isoNorma = IsotopePatternManipulator.sortByIntensity(spExp); List<IsotopeContainer> listISO = isoNorma.getIsotopes(); Assert.assertEquals(156.07770, isoNorma.getMonoIsotope().getMass(), 0.00001); Assert.assertEquals(156.07770, listISO.get(0).getMass(), 0.00001); Assert.assertEquals(158.08135, listISO.get(1).getMass(), 0.00001); Assert.assertEquals(157.08059, listISO.get(2).getMass(), 0.00001); Assert.assertEquals(157.07503, listISO.get(3).getMass(), 0.00001); Assert.assertEquals(1, isoNorma.getMonoIsotope().getIntensity(), 0.00001); Assert.assertEquals(1, listISO.get(0).getIntensity(), 0.00001); Assert.assertEquals(0.002, listISO.get(1).getIntensity(), 0.00001); Assert.assertEquals(0.0003, listISO.get(2).getIntensity(), 0.001); Assert.assertEquals(0.0001, listISO.get(3).getIntensity(), 0.00001); Assert.assertEquals(1, isoNorma.getCharge(), 0.00001); }
/** * A unit test suite for JUnit. * * @return The test suite */ @Test public void testClone() throws Exception { 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)); spExp.setCharge(1); IsotopePattern clone = (IsotopePattern) spExp.clone(); Assert.assertEquals(156.07770, clone.getMonoIsotope().getMass(), 0.001); Assert.assertEquals(156.07770, clone.getIsotopes().get(0).getMass(), 0.001); Assert.assertEquals(157.07503, clone.getIsotopes().get(1).getMass(), 0.001); Assert.assertEquals(157.08059, clone.getIsotopes().get(2).getMass(), 0.001); Assert.assertEquals(158.08135, clone.getIsotopes().get(3).getMass(), 0.001); Assert.assertEquals(1, clone.getMonoIsotope().getIntensity(), 0.001); Assert.assertEquals(1, clone.getIsotopes().get(0).getIntensity(), 0.001); Assert.assertEquals(0.0004, clone.getIsotopes().get(1).getIntensity(), 0.001); Assert.assertEquals(0.0003, clone.getIsotopes().get(2).getIntensity(), 0.001); Assert.assertEquals(0.002, clone.getIsotopes().get(3).getIntensity(), 0.001); Assert.assertEquals(1, clone.getCharge(), 0.001); }
/** * A unit test suite for JUnit. * * @return The test suite */ @Test public void testIsotopeContainer_double_double() { double mass = 130.00; double intensity = 500000.00; IsotopeContainer isoC = new IsotopeContainer(mass, intensity); Assert.assertNotNull(isoC); Assert.assertEquals(mass, isoC.getMass(), 0.001); Assert.assertEquals(intensity, isoC.getIntensity(), 0.001); }
@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()); }
/** * 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); }
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(massResults[3], isoPattern.getIsotope(3).getMass(), 0.01); Assert.assertEquals(massResults[4], isoPattern.getIsotope(4).getMass(), 0.01); Assert.assertEquals(massResults[5], isoPattern.getIsotope(5).getMass(), 0.01);
/** * A unit test suite for JUnit. * * @return The test suite */ @Test public void testClone() throws Exception { IsotopeContainer isoC = new IsotopeContainer(); IMolecularFormula formula = builder.newInstance(IMolecularFormula.class); isoC.setFormula(formula); double mass = 130.00; isoC.setMass(mass); double intensity = 130.00; isoC.setIntensity(intensity); IsotopeContainer clone = (IsotopeContainer) isoC.clone(); Assert.assertEquals(mass, clone.getMass(), 0.001); Assert.assertEquals(intensity, clone.getIntensity(), 0.001); Assert.assertEquals(formula, clone.getFormula()); }
/** * 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); }