def testToOpenMSFeatureMap(): t = Table("mz rt".split(), [float, float], 2 * ["%.6f"]) fm = toOpenMSFeatureMap(t) assert fm.size() == 0 t.addRow([1.0, 2.0]) fm = toOpenMSFeatureMap(t) assert fm.size() == 1 f = fm[0] assert f.getMZ() == 1.0 # == ok, as no digits after decimal point assert f.getRT() == 2.0 # dito
def isotopeDistributionTable(formula, R=None, fullC13=False, minp=0.01, **kw): """ generates Table for most common isotopes of molecule with given mass *formula*. If the resolution *R* is given, the measurement device is simulated, and overlapping peaks may merge. *fullC13=True* assumes that only C13 carbon is present in formula. Further you can give a threshold *minp* for considering only isotope peaks with an abundance above the value. Standard is *minp=0.01*. If you have special elementary isotope abundances which differ from the natural abundances, you can tell that like ``ms.isotopeDistributionTable("S4C4", C=dict(C13=0.5, C12=0.5))`` Examples: .. pycon:: import ms !onlyoutput # natural abundances: tab = ms.isotopeDistributionTable("C3H7NO2") tab.abundance /= tab.abundance.sum() tab.print_() # artifical abundances: tab = ms.isotopeDistributionTable("C3H7NO2", C=dict(C13=0.5, C12=0.5)) tab.abundance /= tab.abundance.sum() tab.print_() \ """ from libms.DataStructures.Table import Table gen = _setupIsotopeDistributionGenerator(formula, R, fullC13, minp, **kw) t = Table(["mf", "mass", "abundance"], [str, float, float], ["%s", "%.6f", "%.3f"], []) for mass, abundance in gen.getCentroids(): t.addRow([formula, mass, abundance], False) t.resetInternals() return t