def test_remove(self): mzs = np.array([0.0, 1.0, 2.0, 3.0, 4.0, 5.0]).reshape(-1, 1) ones = np.ones_like(mzs) peaks = np.hstack((mzs, ones)) spectra = [ Spectrum(peaks, 0.0, 1, "0"), Spectrum(peaks, 1.0, 1, "0"), Spectrum(peaks, 1.5, 2, "0"), Spectrum(peaks, 2.0, 1, "0") ] pm = PeakMap(spectra) pmt = copy.deepcopy(pm) pmt.remove(0.0, 10.0, 0.0, 2.0) assert len(pmt) == 1 assert pmt.spectra[0] == Spectrum(peaks, 1.5, 2, "0") pmt = copy.deepcopy(pm) pmt.remove(1.0, 3.2, 1.0, 2.0) assert len(pmt) == 4 assert np.all(pmt.spectra[0].peaks == peaks) assert np.all( pmt.spectra[1].peaks.flatten() == [0., 1.0, 4.0, 1.0, 5.0, 1.0]) assert np.all(pmt.spectra[2].peaks == peaks) assert np.all( pmt.spectra[3].peaks.flatten() == [0., 1.0, 4.0, 1.0, 5.0, 1.0])
def test_proxies(self): mzs = np.array([ 0.0, 1.0, 2.0, 3.0, 4.0, 5.0 ]).reshape(-1,1) ones = np.ones_like(mzs) peaks = np.hstack((mzs, ones)) spec = Spectrum(peaks, 0.0, 1, "0") spec.peaks[:, 0] += 1.0 assert np.linalg.norm(spec.peaks[:, 0] - mzs.flatten(), 1) == 6.0 def check(fun, spec=spec): before = spec.uniqueId() exec(fun, dict(spec=spec)) assert "unique_id" not in spec.meta after = spec.uniqueId() assert before != after check("spec.peaks[:, 0] += 1") check("spec.peaks += 1") check("spec.peaks -= 1") check("spec.peaks /= 2.1") check("spec.peaks //= 2.1") check("spec.peaks *= 2") check("spec.peaks %= 1.1") check("spec.peaks **= 2") check("spec.rt += 1") check("spec.msLevel += 1") check("spec.precursors = [(1, 1, 0)]") check("spec.polarity = '+'") pm = PeakMap([spec]) before = pm.uniqueId() pm.spectra[0].rt += 2 after = spec.uniqueId() assert before != after from cPickle import loads, dumps back = loads(dumps(pm)) back.meta.pop("unique_id", None) pm.meta.pop("unique_id", None) assert back.uniqueId() == pm.uniqueId() # this was broken after pickling, the callback was not pickled and calling # it whein operatin on peaks rose an excepion for s in back: s.peaks += 1 # this was broken because it creates a view which is not continous: s.peaks = s.peaks[1:-1:2] assert s.uniqueId() spec_new = loads(dumps(spec)) assert spec_new.scan_number == spec.scan_number assert spec_new.rt == spec.rt assert spec_new.msLevel == spec.msLevel assert spec_new.precursors == spec.precursors assert spec_new.polarity == spec.polarity assert np.linalg.norm(spec_new.peaks - spec.peaks) == 0.0
def test_proxies(self): mzs = np.array([0.0, 1.0, 2.0, 3.0, 4.0, 5.0]).reshape(-1, 1) ones = np.ones_like(mzs) peaks = np.hstack((mzs, ones)) spec = Spectrum(peaks, 0.0, 1, "0") spec.peaks[:, 0] += 1.0 assert np.linalg.norm(spec.peaks[:, 0] - mzs.flatten(), 1) == 6.0 def check(fun, spec=spec): before = spec.uniqueId() exec(fun, dict(spec=spec)) assert "unique_id" not in spec.meta after = spec.uniqueId() assert before != after check("spec.peaks[:, 0] += 1") check("spec.peaks += 1") check("spec.peaks -= 1") check("spec.peaks /= 2.1") check("spec.peaks //= 2.1") check("spec.peaks *= 2") check("spec.peaks %= 1.1") check("spec.peaks **= 2") check("spec.rt += 1") check("spec.msLevel += 1") check("spec.precursors = [(1, 1, 0)]") check("spec.polarity = '+'") pm = PeakMap([spec]) before = pm.uniqueId() pm.spectra[0].rt += 2 after = spec.uniqueId() assert before != after from cPickle import loads, dumps back = loads(dumps(pm)) back.meta.pop("unique_id", None) pm.meta.pop("unique_id", None) assert back.uniqueId() == pm.uniqueId() # this was broken after pickling, the callback was not pickled and calling # it whein operatin on peaks rose an excepion for s in back: s.peaks += 1 # this was broken because it creates a view which is not continous: s.peaks = s.peaks[1:-1:2] assert s.uniqueId() spec_new = loads(dumps(spec)) assert spec_new.scan_number == spec.scan_number assert spec_new.rt == spec.rt assert spec_new.msLevel == spec.msLevel assert spec_new.precursors == spec.precursors assert spec_new.polarity == spec.polarity assert np.linalg.norm(spec_new.peaks - spec.peaks) == 0.0
def testFilterIntensity(self, regtest): data = np.array([ 0.0, 1.0, 2.0, 3.0, 4.0, 5.0 ]).reshape(-1,1) intensities = np.array([ 10.0, 11.0, 12.0, 13.0, 14.0, 15.0 ]).reshape(-1,1) peaks = np.hstack((data, intensities)) assert peaks.shape == (6,2) spec1 = Spectrum(peaks, 0.0, 1, "0") spec2 = Spectrum(peaks, 0.0, 2, "0") assert spec1.maxIntensity() == 15.0 pm = PeakMap([spec1, spec2]) pm_x = pm.extract(mslevelmin=1) assert len(pm_x) == 2 pm_x = pm.extract(mslevelmin=2) assert len(pm_x) == 1 pm_x = pm.extract(mslevelmin=3) assert len(pm_x) == 0 pm_x = pm.extract(mslevelmax=1, imin=10.0, imax=15.0) assert len(pm_x) == 1 assert pm_x[0].peaks.shape == (6, 2) for spec in pm_x: print >> regtest, spec.peaks pm_x = pm.extract(mslevelmax=1, imin=10.0) assert len(pm_x) == 1 assert pm_x[0].peaks.shape == (6, 2) for spec in pm_x: print >> regtest, spec.peaks pm_x = pm.extract(mslevelmax=1, imax=15.0) assert len(pm_x) == 1 assert pm_x[0].peaks.shape == (6, 2) for spec in pm_x: print >> regtest, spec.peaks pm_x = pm.extract(mslevelmax=1, imin=10.0) assert len(pm_x) == 1 assert pm_x[0].peaks.shape == (6, 2) for spec in pm_x: print >> regtest, spec.peaks pm_x = pm.extract(mslevelmax=1, imin=11.0) assert len(pm_x) == 1 assert pm_x[0].peaks.shape == (5, 2) for spec in pm_x: print >> regtest, spec.peaks pm_x = pm.extract(mslevelmax=1, imin=11.0, imax = 13.5) assert len(pm_x) == 1 assert pm_x[0].peaks.shape == (3, 2) for spec in pm_x: print >> regtest, spec.peaks
def testFilterIntensity(self, regtest): data = np.array([0.0, 1.0, 2.0, 3.0, 4.0, 5.0]).reshape(-1, 1) intensities = np.array([10.0, 11.0, 12.0, 13.0, 14.0, 15.0]).reshape(-1, 1) peaks = np.hstack((data, intensities)) assert peaks.shape == (6, 2) spec1 = Spectrum(peaks, 0.0, 1, "0") spec2 = Spectrum(peaks, 0.0, 2, "0") assert spec1.maxIntensity() == 15.0 pm = PeakMap([spec1, spec2]) pm_x = pm.extract(mslevelmin=1) assert len(pm_x) == 2 pm_x = pm.extract(mslevelmin=2) assert len(pm_x) == 1 pm_x = pm.extract(mslevelmin=3) assert len(pm_x) == 0 pm_x = pm.extract(mslevelmax=1, imin=10.0, imax=15.0) assert len(pm_x) == 1 assert pm_x[0].peaks.shape == (6, 2) for spec in pm_x: print >> regtest, spec.peaks pm_x = pm.extract(mslevelmax=1, imin=10.0) assert len(pm_x) == 1 assert pm_x[0].peaks.shape == (6, 2) for spec in pm_x: print >> regtest, spec.peaks pm_x = pm.extract(mslevelmax=1, imax=15.0) assert len(pm_x) == 1 assert pm_x[0].peaks.shape == (6, 2) for spec in pm_x: print >> regtest, spec.peaks pm_x = pm.extract(mslevelmax=1, imin=10.0) assert len(pm_x) == 1 assert pm_x[0].peaks.shape == (6, 2) for spec in pm_x: print >> regtest, spec.peaks pm_x = pm.extract(mslevelmax=1, imin=11.0) assert len(pm_x) == 1 assert pm_x[0].peaks.shape == (5, 2) for spec in pm_x: print >> regtest, spec.peaks pm_x = pm.extract(mslevelmax=1, imin=11.0, imax=13.5) assert len(pm_x) == 1 assert pm_x[0].peaks.shape == (3, 2) for spec in pm_x: print >> regtest, spec.peaks
def testIntensityInRange(self): data = np.array([ 0.0, 1.0, 2.0, 3.0, 4.0, 5.0 ]).reshape(-1,1) ones = np.ones_like(data) peaks = np.hstack((data, ones)) assert peaks.shape == (6,2) spec = Spectrum(peaks, 0.0, 1, "0") assert spec.intensityInRange(0.0, 5.0) == 6.0 assert spec.intensityInRange(0.1, 5.0) == 5.0 assert spec.intensityInRange(0.0, 4.5) == 5.0 assert spec.intensityInRange(0.5, 4.5) == 4.0 assert spec.intensityInRange(2.0, 2.0) == 1.0 assert spec.intensityInRange(2.1, 2.0) == 0.0
def _final_spectrum(peaks, spectra): rt = np.mean([s.rt for s in spectra]) msLevel = 2 polarity = spectra[0].polarity precursors = [p for spec in spectra for p in spec.precursors] return Spectrum(np.vstack(peaks), rt, msLevel, polarity, precursors)
def testCompress(self): t = toTable("a", []) import numpy t.compressPeakMaps() s = Spectrum( numpy.arange(12, dtype="float64").reshape(-1, 2), 1.0, 1, "+") pm = PeakMap([s]) s = Spectrum( numpy.arange(12, dtype="float64").reshape(-1, 2), 1.0, 1, "+") pm2 = PeakMap([s]) t = toTable("pm", [pm, pm2]) assert len(set(map(id, t.pm.values))) == 2 t.compressPeakMaps() assert len(set(map(id, t.pm.values))) == 1
def test_0(): ii = np.linspace(1000.0, 2000.0, 21) mzs = np.linspace(100.0, 1100.0, 21) peaks = np.vstack((mzs, ii)).T spec = Spectrum(peaks, rt=100.0, msLevel=1, polarity="+") assert (1.0 - 1e-3) <= spec.cosine_distance(spec, 0.001) <= 1.0 + 1e-3 # enforce only 10 matches mzs[10:] = 0.0 peaks = np.vstack((mzs, ii)).T other = Spectrum(peaks, rt=100.0, msLevel=1, polarity="+") assert (1.0 - 1e-3) <= spec.cosine_distance(other, 0.001) <= 1.0 + 1e-3 # enforce only 5 matches mzs[5:] = 0.0 peaks = np.vstack((mzs, ii)).T other = Spectrum(peaks, rt=100.0, msLevel=1, polarity="+") assert (0.0 - 1e-3) <= spec.cosine_distance(other, 0.001, min_matches=10) <= 0.0 + 1e-3 ii = np.linspace(1000.0, 2000.0, 21) mzs = np.linspace(100.0, 1100.0, 21) + 800.0 peaks = np.vstack((mzs, ii)).T other = Spectrum(peaks, rt=100.0, msLevel=1, polarity="+") assert (0.99963 - 1e-3) <= spec.cosine_distance(other, 0.001, min_matches=5) <= 0.99963 + 1e-3 ii = np.linspace(1000.0, 2000.0, 21) mzs = np.linspace(100.0, 1100.0, 21) + 200 peaks = np.vstack((mzs, ii)).T s1 = Spectrum(peaks, rt=1.0, msLevel=2, polarity="+", precursors=[(10.0, 1000)]) s2 = Spectrum(peaks, rt=1.0, msLevel=2, polarity="+", precursors=[(210.0, 1000)]) assert abs(s1.cosine_distance(s2, 0.001, consider_precursor_shift=True) - 0.99986) < 1e-3
def _final_spectrum(peaks, spectra): rt = np.mean([s.rt for s in spectra]) msLevel = 2 polarity = spectra[0].polarity # precursor_mz = np.mean([mz for s in spectra for (mz, ii) in s.precursors]) # precursor_ii = np.mean([ii for s in spectra for (mz, ii) in s.precursors]) # precursors = [(precursor_mz, precursor_ii)] precursors = [p for spec in spectra for p in spec.precursors] return Spectrum(np.vstack(peaks), rt, msLevel, polarity, precursors)
def test_proxies(self): mzs = np.array([0.0, 1.0, 2.0, 3.0, 4.0, 5.0]).reshape(-1, 1) ones = np.ones_like(mzs) peaks = np.hstack((mzs, ones)) spec = Spectrum(peaks, 0.0, 1, "0") spec.peaks[:, 0] += 1.0 assert np.linalg.norm(spec.peaks[:, 0] - mzs.flatten(), 1) == 6.0 def check(fun, spec=spec): before = spec.uniqueId() exec(fun, dict(spec=spec)) assert "unique_id" not in spec.meta after = spec.uniqueId() assert before != after check("spec.peaks[:, 0] += 1") check("spec.peaks += 1") check("spec.peaks -= 1") check("spec.peaks /= 2.1") check("spec.peaks //= 2.1") check("spec.peaks *= 2") check("spec.peaks %= 1.1") check("spec.peaks **= 2") check("spec.rt += 1") check("spec.msLevel += 1") check("spec.precursors = [(1, 1)]") check("spec.polarity = '+'") pm = PeakMap([spec]) before = pm.uniqueId() pm.spectra[0].rt += 2 after = spec.uniqueId() assert before != after from cPickle import loads, dumps back = loads(dumps(pm)) back.meta.pop("unique_id", None) pm.meta.pop("unique_id", None) assert back.uniqueId() == pm.uniqueId()
def test_proxies(self): mzs = np.array([ 0.0, 1.0, 2.0, 3.0, 4.0, 5.0 ]).reshape(-1,1) ones = np.ones_like(mzs) peaks = np.hstack((mzs, ones)) spec = Spectrum(peaks, 0.0, 1, "0") spec.peaks[:, 0] += 1.0 assert np.linalg.norm(spec.peaks[:, 0] - mzs.flatten(), 1) == 6.0 def check(fun, spec=spec): before = spec.uniqueId() exec(fun, dict(spec=spec)) assert "unique_id" not in spec.meta after = spec.uniqueId() assert before != after check("spec.peaks[:, 0] += 1") check("spec.peaks += 1") check("spec.peaks -= 1") check("spec.peaks /= 2.1") check("spec.peaks //= 2.1") check("spec.peaks *= 2") check("spec.peaks %= 1.1") check("spec.peaks **= 2") check("spec.rt += 1") check("spec.msLevel += 1") check("spec.precursors = [(1, 1)]") check("spec.polarity = '+'") pm = PeakMap([spec]) before = pm.uniqueId() pm.spectra[0].rt += 2 after = spec.uniqueId() assert before != after from cPickle import loads, dumps back = loads(dumps(pm)) back.meta.pop("unique_id", None) pm.meta.pop("unique_id", None) assert back.uniqueId() == pm.uniqueId()
def testTrapezIntegrationSimple(): p0 = np.array((1.0, 1.0, 2.0, 2.0)).reshape(-1,2) p1 = np.array((2.0, 2.0, 3.0, 3.0)).reshape(-1,2) p2 = np.array((1.0, 1.0, 2.0, 2.0, 3.0, 3.0)).reshape(-1,2) p3 = np.array((3.0, 3.0)).reshape(-1,2) s0 = Spectrum(p0, 0.0, 1, '0') s1 = Spectrum(p1, 1.0, 1, '0') s2 = Spectrum(p2, 2.0, 1, '0') s3 = Spectrum(p3, 3.0, 1, '0') pm = PeakMap([s0,s1,s2,s3]) integrator = dict(emzed._algorithm_configs.peakIntegrators)["trapez"] integrator.setPeakMap(pm) assert integrator.integrate(1.4, 2.5, 0, 3)["area"] == 5.0 assert integrator.integrate(1.4, 2.5, 0, 2)["area"] == 4.0 assert integrator.integrate(0.4, 2.5, 0, 3)["area"] == 6.5 assert integrator.integrate(0.4, 2.5, 0, 2)["area"] == 5.0 assert integrator.integrate(0.4, 3.0, 0, 3)["area"] == 14 # one level 2 spec: s1 = Spectrum(p1, 1.0, 2, '0') pm = PeakMap([s0,s1,s2,s3]) integrator.setPeakMap(pm) assert integrator.integrate(1.4, 2.5, 0, 3, msLevel=1)["area"] == 5.0 assert integrator.integrate(1.4, 2.5, 0, 2, msLevel=1)["area"] == 4.0 assert integrator.integrate(0.4, 2.5, 0, 3, msLevel=1)["area"] == 7.5 assert integrator.integrate(0.4, 2.5, 0, 2, msLevel=1)["area"] == 6.0 assert integrator.integrate(0.4, 3.0, 0, 3, msLevel=1)["area"] == 13.5 # multiple levels shall rise exception: ex(lambda: integrator.integrate(0.4, 3.0, 0, 3))
def testIntensityInRange(self): data = np.array([0.0, 1.0, 2.0, 3.0, 4.0, 5.0]).reshape(-1, 1) ones = np.ones_like(data) peaks = np.hstack((data, ones)) assert peaks.shape == (6, 2) spec = Spectrum(peaks, 0.0, 1, "0") assert spec.intensityInRange(0.0, 5.0) == 6.0 assert spec.intensityInRange(0.1, 5.0) == 5.0 assert spec.intensityInRange(0.0, 4.5) == 5.0 assert spec.intensityInRange(0.5, 4.5) == 4.0 assert spec.intensityInRange(2.0, 2.0) == 1.0 assert spec.intensityInRange(2.1, 2.0) == 0.0 assert spec.maxIntensity() == 1.0
def _merge(spectra, mz_tolerance=1.3e-3, only_common_peaks=False, verbose=True): """merges a list of spectra to one spetrum. *mz_tolerance* : binning size for grouping peaks. *only_common_peaks*: if this value is true the resulting spectrum only consists of dominant peaks which are present in every input spectrum *verbose*: print diagnosis messages if this value is True """ if not spectra: return None if len(spectra) == 1: return spectra[0] alignments = Spectrum.compute_alignments(spectra, mz_tolerance) common = _botton_up_common(alignments) mz_vecs = [s.peaks[:, 0] for s in spectra] intensity_vecs = [s.peaks[:, 1] for s in spectra] if only_common_peaks: mz_last = mz_vecs[-1] ii_last = intensity_vecs[-1] peaks = [(mz_last[i], ii_last[i]) for i in common] return _final_spectrum(peaks, spectra) scalings = _determine_scaling_factors(mz_vecs, intensity_vecs, alignments, common) if scalings is not None: peaks = _overlay(mz_vecs, intensity_vecs, scalings, mz_tolerance, verbose, len(common)) else: peaks = [np.empty((0, 2))] return _final_spectrum(peaks, spectra)
def test001(self): exp = MSExperiment() basename = "SHORT_MS2_FILE.mzData" here = os.path.dirname(os.path.abspath(__file__)) FileHandler().loadExperiment(os.path.join(here, "data", basename), exp) assert exp.size()>0 pc = Precursor() pc.setMZ(1.0) pc.setIntensity(100) s0 = exp[0] s0.setPrecursors([pc]) s0.setMSLevel(2) spec = Spectrum.fromMSSpectrum(s0) settings = InstrumentSettings() settings.setPolarity(IonSource.Polarity.POSITIVE) s0.setInstrumentSettings(settings) self.compare_specs(spec, s0) specneu = Spectrum.fromMSSpectrum(spec.toMSSpectrum()) self.compare_specs(specneu, s0) pm = PeakMap.fromMSExperiment(exp) assert os.path.basename(pm.meta["source"]) == basename rtmin, rtmax = pm.rtRange(None) ms1s = pm.msNPeaks(1, rtmin, rtmax) assert ms1s.shape == (1797, 2), ms1s.shape ms1s2 = pm.msNPeaks(1, rtmax=rtmax) assert np.all(ms1s == ms1s2) ms1s3 = pm.msNPeaks(1, rtmin=0) assert np.all(ms1s == ms1s3) spec = pm.spectra[0] assert len(list(spec)) == len(spec) # calls iter allrts = pm.allRts() assert allrts[0] <= pm.rtRange()[0] assert allrts[-1] >= pm.rtRange()[1] assert len(allrts) == 41, len(allrts) level1 = pm.levelNSpecs(1, 1) level2 = pm.levelNSpecs(2, 2) level12 = pm.levelNSpecs(1, 2) assert len(level1) > 0 assert len(level2) > 0 assert len(level1) + len(level2) == len(level12) == len(pm) assert level1[0].msLevel == 1 assert level2[0].msLevel == 2 # use default arg: nmax = nmin if not provided: level1 = pm.levelNSpecs(1) level2 = pm.levelNSpecs(2) assert len(level1) > 0 assert len(level2) > 0 assert len(level1) + len(level2) == len(level12) == len(pm) assert level1[0].msLevel == 1 assert level2[0].msLevel == 2 lone = pm.levelOneRts() assert len(lone) == len(level1) self.compare_exp(pm, exp, basename) pm2 = PeakMap.fromMSExperiment(pm.toMSExperiment()) self.compare_exp(pm2, exp, basename) pm2 = pm.extract(rtmin=rtmin + .000001) assert len(pm2) == len(pm) - 1 pm2 = pm2.extract(rtmax=rtmax - 0.000001) assert len(pm2) == len(pm) - 2 mzmin, mzmax = pm.mzRange(2) assert mzmin < 250 assert mzmax > 860 mzmin, mzmax = pm.mzRange(1) assert mzmin >= 700 assert mzmax <= 1050 pm2 = pm.extract(rtmin+0.00001, mzmin=300) mzmin2, mzmax2 = pm2.mzRange() assert mzmin2 >= 300 assert mzmax2 == mzmax pm2 = pm.extract(rtmin = rtmin+0.000001, mzmin=300, mzmax=1000) mzmin2, mzmax2 = pm2.mzRange() assert mzmin2 >= 300 assert mzmax2 <= 1000 with pytest.raises(Exception): pm.spectra[0].peaksInRange() pp1 = pm.spectra[0].peaksInRange(mzmax = 10000) pp2 = pm.spectra[0].peaksInRange(mzmin = 0) assert np.all(pp1 == pp2) specs0 = list(pm.spectra) specs1 = pm.specsInRange(0, 99999) specs2 = pm.specsInRange(0, specs0[0].rt) specs3 = pm.specsInRange(specs0[-1].rt, 999999) assert specs0 == specs1 assert specs2 == [ specs0[0] ] assert specs3 == [ specs0[-1] ] pm.spectra[0].polarity = "+" pm.spectra[1].polarity = "-" pm = PeakMap(pm.spectra) mz = pm.representingMzPeak(0, 99999, 0, 99999) assert abs(mz-831.86538) < 0.0001
def test_0(): ii = np.linspace(1000.0, 2000.0, 21) mzs = np.linspace(100.0, 1100.0, 21) peaks = np.vstack((mzs, ii)).T spec = Spectrum(peaks, rt=100.0, msLevel=1, polarity="+") assert (1.0 - 1e-3) <= spec.cosine_distance(spec, 0.001) <= 1.0 + 1e-3 # enforce only 10 matches mzs[10:] = 0.0 peaks = np.vstack((mzs, ii)).T other = Spectrum(peaks, rt=100.0, msLevel=1, polarity="+") assert (1.0 - 1e-3) <= spec.cosine_distance(other, 0.001) <= 1.0 + 1e-3 # enforce only 5 matches mzs[5:] = 0.0 peaks = np.vstack((mzs, ii)).T other = Spectrum(peaks, rt=100.0, msLevel=1, polarity="+") assert (0.0 - 1e-3) <= spec.cosine_distance(other, 0.001, min_matches=10) <= 0.0 + 1e-3 ii = np.linspace(1000.0, 2000.0, 21) mzs = np.linspace(100.0, 1100.0, 21) + 800.0 peaks = np.vstack((mzs, ii)).T other = Spectrum(peaks, rt=100.0, msLevel=1, polarity="+") assert (0.99963 - 1e-3) <= spec.cosine_distance( other, 0.001, min_matches=5) <= 0.99963 + 1e-3 ii = np.linspace(1000.0, 2000.0, 21) mzs = np.linspace(100.0, 1100.0, 21) + 200 peaks = np.vstack((mzs, ii)).T s1 = Spectrum(peaks, rt=1.0, msLevel=2, polarity="+", precursors=[(10.0, 1000)]) s2 = Spectrum(peaks, rt=1.0, msLevel=2, polarity="+", precursors=[(210.0, 1000)]) assert abs( s1.cosine_distance(s2, 0.001, consider_precursor_shift=True) - 0.99986) < 1e-3
def testActions(): t = buildTable() n = len(t) recorder = RecordingObject() model = TableModel(t, recorder) t_orig = t.copy() action = DeleteRowsAction(model, [0], [0]) action.do() assert len(model.table) == len(t_orig) - 1 assert model.table.rows[0] == t_orig.rows[1] action.undo() assert len(model.table) == len(t_orig) assert model.table.rows[0] == t_orig.rows[0] action = CloneRowAction(model, 0, 0) action.do() assert model.table.rows[0] == t_orig.rows[0] assert model.table.rows[1] == t_orig.rows[0] assert model.table.rows[2] == t_orig.rows[1] assert len(model.table) == n + 1 action.undo() assert len(model.table) == n assert model.table.rows[0] == t_orig.rows[0] assert model.table.rows[1] == t_orig.rows[1] action = SortTableAction(model, [("mz", True)]) action.do() assert model.table.mz.values == (None, 1.0, 2.0) action.undo() assert model.table.mz.values == t_orig.mz.values action = SortTableAction(model, [("mz", False)]) action.do() assert model.table.mz.values == (2.0, 1.0, None) action.undo() assert model.table.mz.values == t_orig.mz.values class Index(object): def row(self): return 0 def column(self): return 0 action = ChangeValueAction(model, Index(), 0, 0, 3.0) action.do() assert model.table.rows[0][0] == 3.0 action.undo() assert model.table.rows[0][0] == 1.0 t = buildTable() import numpy peak = numpy.array(((1.0, 100.0), )) specs = [Spectrum(peak, rt, 1, "+") for rt in range(9, 15)] pm = PeakMap(specs) t.replaceColumn("peakmap", pm) model.table = emzed.utils.integrate(t, "no_integration") action = IntegrateAction(model, 0, "", "trapez", 0, 100, {0: 0}) action.do() assert model.table.area.values[0] == 500.0 action.undo() assert model.table.area.values[0] == None
def test001(self): exp = MSExperiment() basename = "SHORT_MS2_FILE.mzData" here = os.path.dirname(os.path.abspath(__file__)) FileHandler().loadExperiment(os.path.join(here, "data", basename), exp) assert exp.size() > 0 pc = Precursor() pc.setMZ(1.0) pc.setIntensity(100) s0 = exp[0] s0.setPrecursors([pc]) s0.setMSLevel(2) spec = Spectrum.fromMSSpectrum(s0) settings = InstrumentSettings() settings.setPolarity(IonSource.Polarity.POSITIVE) s0.setInstrumentSettings(settings) self.compare_specs(spec, s0) specneu = Spectrum.fromMSSpectrum(spec.toMSSpectrum()) self.compare_specs(specneu, s0) pm = PeakMap.fromMSExperiment(exp) assert os.path.basename(pm.meta["source"]) == basename rtmin, rtmax = pm.rtRange(None) ms1s = pm.msNPeaks(1, rtmin, rtmax) assert ms1s.shape == (1797, 2), ms1s.shape ms1s2 = pm.msNPeaks(1, rtmax=rtmax) assert np.all(ms1s == ms1s2) ms1s3 = pm.msNPeaks(1, rtmin=0) assert np.all(ms1s == ms1s3) spec = pm.spectra[0] assert len(list(spec)) == len(spec) # calls iter allrts = pm.allRts() assert allrts[0] <= pm.rtRange()[0] assert allrts[-1] >= pm.rtRange()[1] assert len(allrts) == 41, len(allrts) level1 = pm.levelNSpecs(1, 1) level2 = pm.levelNSpecs(2, 2) level12 = pm.levelNSpecs(1, 2) assert len(level1) > 0 assert len(level2) > 0 assert len(level1) + len(level2) == len(level12) == len(pm) assert level1[0].msLevel == 1 assert level2[0].msLevel == 2 # use default arg: nmax = nmin if not provided: level1 = pm.levelNSpecs(1) level2 = pm.levelNSpecs(2) assert len(level1) > 0 assert len(level2) > 0 assert len(level1) + len(level2) == len(level12) == len(pm) assert level1[0].msLevel == 1 assert level2[0].msLevel == 2 lone = pm.levelOneRts() assert len(lone) == len(level1) self.compare_exp(pm, exp, basename) pm2 = PeakMap.fromMSExperiment(pm.toMSExperiment()) self.compare_exp(pm2, exp, basename) pm2 = pm.extract(rtmin=rtmin + .000001) assert len(pm2) == len(pm) - 1 pm2 = pm2.extract(rtmax=rtmax - 0.000001) assert len(pm2) == len(pm) - 2 mzmin, mzmax = pm.mzRange(2) assert mzmin < 250 assert mzmax > 860 mzmin, mzmax = pm.mzRange(1) assert mzmin >= 700 assert mzmax <= 1050 pm2 = pm.extract(rtmin + 0.00001, mzmin=300) mzmin2, mzmax2 = pm2.mzRange() assert mzmin2 >= 300 assert mzmax2 == mzmax pm2 = pm.extract(rtmin=rtmin + 0.000001, mzmin=300, mzmax=1000) mzmin2, mzmax2 = pm2.mzRange() assert mzmin2 >= 300 assert mzmax2 <= 1000 with pytest.raises(Exception): pm.spectra[0].peaksInRange() pp1 = pm.spectra[0].peaksInRange(mzmax=10000) pp2 = pm.spectra[0].peaksInRange(mzmin=0) assert np.all(pp1 == pp2) specs0 = list(pm.spectra) specs1 = pm.specsInRange(0, 99999) specs2 = pm.specsInRange(0, specs0[0].rt) specs3 = pm.specsInRange(specs0[-1].rt, 999999) assert specs0 == specs1 assert specs2 == [specs0[0]] assert specs3 == [specs0[-1]] pm.spectra[0].polarity = "+" pm.spectra[1].polarity = "-" pm = PeakMap(pm.spectra) mz = pm.representingMzPeak(0, 99999, 0, 99999) assert abs(mz - 831.86538) < 0.0001