/** * Test empty molecular formula range * */ @Test(expected = IllegalArgumentException.class) public void testEmptyMFRange() throws Exception { new MolecularFormulaGenerator(builder, 0, 100, new MolecularFormulaRange()); }
/** * Test negative mass */ @Test(expected = IllegalArgumentException.class) public void testNegativeMass() throws Exception { IsotopeFactory ifac = Isotopes.getInstance(); IIsotope c = ifac.getMajorIsotope("C"); MolecularFormulaRange mfRange = new MolecularFormulaRange(); mfRange.addIsotope(c, 0, 100); new MolecularFormulaGenerator(builder, -20, -10, new MolecularFormulaRange()); }
/** * MolecularFormulaGenerator should use full enumeration method when smallest element has large weight */ @Test public void testUseFullEnumerationWhenNoHydrogen() throws Exception { IsotopeFactory ifac = Isotopes.getInstance(); IIsotope c = ifac.getMajorIsotope("C"); IIsotope n = ifac.getMajorIsotope("N"); IIsotope o = ifac.getMajorIsotope("O"); MolecularFormulaRange mfRange = new MolecularFormulaRange(); mfRange.addIsotope(c, 0, 50); mfRange.addIsotope(o, 0, 30); mfRange.addIsotope(n, 0, 10); MolecularFormulaGenerator generator = new MolecularFormulaGenerator(builder, 1023.000, 1023.002, mfRange); Assert.assertTrue("generator implementation should be instance of FullEnumerationFormulaGenerator", generator.formulaGenerator instanceof FullEnumerationFormulaGenerator); }
/** * MolecularFormulaGenerator should use Round Robin when using proper input */ @Test public void testUseRoundRobinWheneverPossible() throws Exception { IsotopeFactory ifac = Isotopes.getInstance(); IIsotope c = ifac.getMajorIsotope("C"); IIsotope h = ifac.getMajorIsotope("H"); IIsotope n = ifac.getMajorIsotope("N"); IIsotope o = ifac.getMajorIsotope("O"); MolecularFormulaRange mfRange = new MolecularFormulaRange(); mfRange.addIsotope(c, 0, 20); mfRange.addIsotope(h, 0, 30); mfRange.addIsotope(o, 0, 15); mfRange.addIsotope(n, 0, 10); MolecularFormulaGenerator generator = new MolecularFormulaGenerator(builder, 230.002, 230.004, mfRange); Assert.assertTrue("generator implementation should be instance of RoundRobinFormulaGenerator", generator.formulaGenerator instanceof RoundRobinFormulaGenerator); }
/** * MolecularFormulaGenerator should use full enumeration method when mass to decompose is too large to encode * it as 32 bit integer with default blowup factor */ @Test public void testUseFullEnumerationWhenExceedIntegerSpace() throws Exception { IsotopeFactory ifac = Isotopes.getInstance(); IIsotope c = ifac.getMajorIsotope("C"); IIsotope h = ifac.getMajorIsotope("H"); IIsotope n = ifac.getMajorIsotope("N"); IIsotope o = ifac.getMajorIsotope("O"); MolecularFormulaRange mfRange = new MolecularFormulaRange(); mfRange.addIsotope(c, 0, 20); mfRange.addIsotope(h, 0, 30); mfRange.addIsotope(o, 0, 15); mfRange.addIsotope(n, 0, 10); MolecularFormulaGenerator generator = new MolecularFormulaGenerator(builder, 1300000, 1300000.1, mfRange); Assert.assertTrue("generator implementation should be instance of FullEnumerationFormulaGenerator", generator.formulaGenerator instanceof FullEnumerationFormulaGenerator); }
/** * Test to find a single carbon. */ @Test public void testSingleCarbon() throws Exception { IsotopeFactory ifac = Isotopes.getInstance(); IIsotope c = ifac.getMajorIsotope("C"); MolecularFormulaRange mfRange = new MolecularFormulaRange(); mfRange.addIsotope(c, 0, 100); double minMass = 5; double maxMass = 15; MolecularFormulaGenerator gen = new MolecularFormulaGenerator(builder, minMass, maxMass, mfRange); IMolecularFormulaSet mfSet = gen.getAllFormulas(); Assert.assertNotNull(mfSet); Assert.assertEquals(1, mfSet.size()); Assert.assertEquals("C", MolecularFormulaManipulator.getString(mfSet .getMolecularFormula(0))); }
/** * Test to find MF=C10000, MW=120000.0 using only carbons. */ @Test public void testCarbons() throws Exception { IsotopeFactory ifac = Isotopes.getInstance(); IIsotope c = ifac.getMajorIsotope("C"); MolecularFormulaRange mfRange = new MolecularFormulaRange(); mfRange.addIsotope(c, 0, 100000); double minMass = 120000.0 - 1; double maxMass = 120000.0 + 1; MolecularFormulaGenerator gen = new MolecularFormulaGenerator(builder, minMass, maxMass, mfRange); IMolecularFormulaSet mfSet = gen.getAllFormulas(); Assert.assertNotNull(mfSet); Assert.assertEquals(1, mfSet.size()); Assert.assertEquals("C10000", MolecularFormulaManipulator .getString(mfSet.getMolecularFormula(0))); }
/** * MolecularFormulaGenerator should use full enumeration method when the mass deviation is very large (i.e. as * large as the smallest weight) */ @Test public void testUseFullEnumerationWhenSuperLargeMassDeviation() throws Exception { IsotopeFactory ifac = Isotopes.getInstance(); IIsotope c = ifac.getMajorIsotope("C"); IIsotope h = ifac.getMajorIsotope("H"); IIsotope n = ifac.getMajorIsotope("N"); IIsotope o = ifac.getMajorIsotope("O"); MolecularFormulaRange mfRange = new MolecularFormulaRange(); mfRange.addIsotope(c, 0, 20); mfRange.addIsotope(h, 0, 30); mfRange.addIsotope(o, 0, 15); mfRange.addIsotope(n, 0, 10); MolecularFormulaGenerator generator = new MolecularFormulaGenerator(builder, 13, 14, mfRange); Assert.assertTrue("generator implementation should be instance of FullEnumerationFormulaGenerator", generator.formulaGenerator instanceof FullEnumerationFormulaGenerator); }
/** * Test the getNextFormula() method */ @Test public void testGetNextFormula() throws Exception { IsotopeFactory ifac = Isotopes.getInstance(); IIsotope c = ifac.getMajorIsotope("C"); IIsotope h = ifac.getMajorIsotope("H"); IIsotope n = ifac.getMajorIsotope("N"); IIsotope o = ifac.getMajorIsotope("O"); MolecularFormulaRange mfRange = new MolecularFormulaRange(); mfRange.addIsotope(c, 0, 10); mfRange.addIsotope(h, 0, 10); mfRange.addIsotope(o, 0, 10); mfRange.addIsotope(n, 0, 10); double minMass = 100.0; double maxMass = 100.05; MolecularFormulaGenerator gen = new MolecularFormulaGenerator(builder, minMass, maxMass, mfRange); IMolecularFormula f = gen.getNextFormula(); Assert.assertNotNull(f); }
/** * Test if zero results are returned in case the target mass range is too * high */ @Test public void testMassRangeTooHigh() throws Exception { IsotopeFactory ifac = Isotopes.getInstance(); IIsotope c = ifac.getMajorIsotope("C"); IIsotope h = ifac.getMajorIsotope("H"); IIsotope n = ifac.getMajorIsotope("N"); IIsotope o = ifac.getMajorIsotope("O"); MolecularFormulaRange mfRange = new MolecularFormulaRange(); mfRange.addIsotope(c, 0, 10); mfRange.addIsotope(h, 0, 10); mfRange.addIsotope(o, 0, 10); mfRange.addIsotope(n, 0, 10); double massMin = 1000d; double massMax = 2000d; MolecularFormulaGenerator gen = new MolecularFormulaGenerator(builder, massMin, massMax, mfRange); IMolecularFormulaSet mfSet = gen.getAllFormulas(); Assert.assertNotNull(mfSet); Assert.assertEquals(0, mfSet.size()); }
/** * Test if zero results are returned in case the target mass range is too * low */ @Test public void testMassRangeTooLow() throws Exception { IsotopeFactory ifac = Isotopes.getInstance(); IIsotope c = ifac.getMajorIsotope("C"); IIsotope h = ifac.getMajorIsotope("H"); IIsotope n = ifac.getMajorIsotope("N"); IIsotope o = ifac.getMajorIsotope("O"); MolecularFormulaRange mfRange = new MolecularFormulaRange(); mfRange.addIsotope(c, 100, 200); mfRange.addIsotope(h, 100, 200); mfRange.addIsotope(o, 100, 200); mfRange.addIsotope(n, 100, 200); double massMin = 50d; double massMax = 100d; MolecularFormulaGenerator gen = new MolecularFormulaGenerator(builder, massMin, massMax, mfRange); IMolecularFormulaSet mfSet = gen.getAllFormulas(); Assert.assertNotNull(mfSet); Assert.assertEquals(0, mfSet.size()); }
/** * Test the getAllFormulas() method */ @Test public void testGetAllFormulas() throws Exception { IsotopeFactory ifac = Isotopes.getInstance(); IIsotope c = ifac.getMajorIsotope("C"); IIsotope h = ifac.getMajorIsotope("H"); IIsotope n = ifac.getMajorIsotope("N"); IIsotope o = ifac.getMajorIsotope("O"); MolecularFormulaRange mfRange = new MolecularFormulaRange(); mfRange.addIsotope(c, 0, 10); mfRange.addIsotope(h, 0, 10); mfRange.addIsotope(o, 0, 10); mfRange.addIsotope(n, 0, 10); double minMass = 100.0; double maxMass = 100.05; MolecularFormulaGenerator gen = new MolecularFormulaGenerator(builder, minMass, maxMass, mfRange); IMolecularFormulaSet mfSet = gen.getAllFormulas(); Assert.assertNotNull(mfSet); Assert.assertNotEquals(0, mfSet.size()); }
double maxMass = 20; MolecularFormulaGenerator gen = new MolecularFormulaGenerator(builder, minMass, maxMass, mfRange); IMolecularFormulaSet mfSet = gen.getAllFormulas();
/** * Test if the generator respects minimal element counts * */ @Test public void testMinCounts() throws Exception { IsotopeFactory ifac = Isotopes.getInstance(); IIsotope c = ifac.getMajorIsotope("C"); IIsotope h = ifac.getMajorIsotope("H"); IIsotope n = ifac.getMajorIsotope("N"); IIsotope o = ifac.getMajorIsotope("O"); MolecularFormulaRange mfRange = new MolecularFormulaRange(); mfRange.addIsotope(c, 5, 20); mfRange.addIsotope(h, 5, 20); mfRange.addIsotope(o, 5, 20); mfRange.addIsotope(n, 5, 20); // The minimal formula MF=C5H5O5N5 MW=215.0290682825 double minMass = 100; double maxMass = 250; MolecularFormulaGenerator gen = new MolecularFormulaGenerator(builder, minMass, maxMass, mfRange); IMolecularFormulaSet mfSet = gen.getAllFormulas(); // Check that all element counts in the formula are >= 5 for (IMolecularFormula f : mfSet.molecularFormulas()) { for (IIsotope i : f.isotopes()) { int count = f.getIsotopeCount(i); Assert.assertTrue(count >= 5); } } }
/** * Test if the generator respects maximal element counts * */ @Test public void testMaxCounts() throws Exception { IsotopeFactory ifac = Isotopes.getInstance(); IIsotope c = ifac.getMajorIsotope("C"); IIsotope h = ifac.getMajorIsotope("H"); IIsotope n = ifac.getMajorIsotope("N"); IIsotope o = ifac.getMajorIsotope("O"); MolecularFormulaRange mfRange = new MolecularFormulaRange(); mfRange.addIsotope(c, 3, 7); mfRange.addIsotope(h, 3, 7); mfRange.addIsotope(o, 3, 7); mfRange.addIsotope(n, 3, 7); // The maximal formula MF=C7H7O7N7 MW=301.0406955954 double minMass = 250; double maxMass = 400; MolecularFormulaGenerator gen = new MolecularFormulaGenerator(builder, minMass, maxMass, mfRange); IMolecularFormulaSet mfSet = gen.getAllFormulas(); // Check that all element counts in the formula are <= 7 for (IMolecularFormula f : mfSet.molecularFormulas()) { for (IIsotope i : f.isotopes()) { int count = f.getIsotopeCount(i); Assert.assertTrue(count <= 7); } } }
/** * Test if formula MF=C7H15N2O4 MW=191.10318 is found properly if we fix the * element counts */ @Test public void testFixedElementCounts() throws Exception { IsotopeFactory ifac = Isotopes.getInstance(); IIsotope c = ifac.getMajorIsotope("C"); IIsotope h = ifac.getMajorIsotope("H"); IIsotope n = ifac.getMajorIsotope("N"); IIsotope o = ifac.getMajorIsotope("O"); MolecularFormulaRange mfRange = new MolecularFormulaRange(); mfRange.addIsotope(c, 7, 7); mfRange.addIsotope(h, 15, 15); mfRange.addIsotope(o, 4, 4); mfRange.addIsotope(n, 2, 2); double massMin = 10d; double massMax = 1000d; MolecularFormulaGenerator gen = new MolecularFormulaGenerator(builder, massMin, massMax, mfRange); IMolecularFormulaSet mfSet = gen.getAllFormulas(); Assert.assertNotNull(mfSet); Assert.assertEquals(1, mfSet.size()); Assert.assertEquals("C7H15N2O4", MolecularFormulaManipulator .getString(mfSet.getMolecularFormula(0))); }
/** * Test to find MF=C5H11N2O, MW=115.08714 */ @Test public void testSmallMass() throws Exception { IsotopeFactory ifac = Isotopes.getInstance(); IIsotope c = ifac.getMajorIsotope("C"); IIsotope h = ifac.getMajorIsotope("H"); IIsotope n = ifac.getMajorIsotope("N"); IIsotope o = ifac.getMajorIsotope("O"); MolecularFormulaRange mfRange = new MolecularFormulaRange(); mfRange.addIsotope(c, 0, 20); mfRange.addIsotope(h, 0, 30); mfRange.addIsotope(o, 0, 15); mfRange.addIsotope(n, 0, 10); double minMass = 115.08714 - 0.0001; double maxMass = 115.08714 + 0.0001; MolecularFormulaGenerator gen = new MolecularFormulaGenerator(builder, minMass, maxMass, mfRange); IMolecularFormulaSet mfSet = gen.getAllFormulas(); Assert.assertNotNull(mfSet); Assert.assertEquals(1, mfSet.size()); Assert.assertEquals("C5H11N2O", MolecularFormulaManipulator .getString(mfSet.getMolecularFormula(0))); }
/** * Test to find pentacarboxyporphyrin, MF=C37H38N4O10 MW=698.25879 * */ @Test public void testMiddleMass() throws Exception { IsotopeFactory ifac = Isotopes.getInstance(); IIsotope c = ifac.getMajorIsotope("C"); IIsotope h = ifac.getMajorIsotope("H"); IIsotope n = ifac.getMajorIsotope("N"); IIsotope o = ifac.getMajorIsotope("O"); MolecularFormulaRange mfRange = new MolecularFormulaRange(); mfRange.addIsotope(c, 0, 50); mfRange.addIsotope(h, 0, 100); mfRange.addIsotope(o, 0, 30); mfRange.addIsotope(n, 0, 10); double minMass = 698.25879 - 0.0001; double maxMass = 698.25879 + 0.0001; MolecularFormulaGenerator gen = new MolecularFormulaGenerator(builder, minMass, maxMass, mfRange); IMolecularFormulaSet mfSet = gen.getAllFormulas(); Assert.assertNotNull(mfSet); Assert.assertEquals(1, mfSet.size()); Assert.assertEquals("C37H38N4O10", MolecularFormulaManipulator .getString(mfSet.getMolecularFormula(0))); }
/** * Test to find ubiquitin: MF=C374H623N103O116S MW=8445.573784 * */ @Test public void testHighMass() throws Exception { IsotopeFactory ifac = Isotopes.getInstance(); IIsotope c = ifac.getMajorIsotope("C"); IIsotope h = ifac.getMajorIsotope("H"); IIsotope n = ifac.getMajorIsotope("N"); IIsotope o = ifac.getMajorIsotope("O"); IIsotope s = ifac.getMajorIsotope("S"); MolecularFormulaRange mfRange = new MolecularFormulaRange(); mfRange.addIsotope(c, 350, 400); mfRange.addIsotope(h, 620, 650); mfRange.addIsotope(o, 100, 150); mfRange.addIsotope(n, 100, 150); mfRange.addIsotope(s, 0, 10); double minMass = 8445.573784 - 0.00001; double maxMass = 8445.573784 + 0.00001; MolecularFormulaGenerator gen = new MolecularFormulaGenerator(builder, minMass, maxMass, mfRange); IMolecularFormulaSet mfSet = gen.getAllFormulas(); Assert.assertNotNull(mfSet); Assert.assertEquals(1, mfSet.size()); Assert.assertEquals("C374H623N103O116S", MolecularFormulaManipulator .getString(mfSet.getMolecularFormula(0))); ////////////////// }
double maxMass = 318.915719 + 0.0001; MolecularFormulaGenerator gen = new MolecularFormulaGenerator(builder, minMass, maxMass, mfRange); IMolecularFormulaSet mfSet = gen.getAllFormulas();