Example #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
Example #2
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
Example #3
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
Example #4
0
def test_uniuqe_id():
    ti = emzed.utils.toTable("id", [1, 1, 2])
    t = emzed.utils.toTable("t", (ti, ti, None))
    # peakmap unique id already tested by compression of peakmap:
    t.addColumn("pm", PeakMap([]))
    t.addColumn("blob", Blob("data"))
    assert t.uniqueId() == "a03470ffc2876f1c12becb55e5f82f4fd59d9f906afe6f07484755755c4807e0"
Example #5
0
    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])
Example #6
0
    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
Example #7
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)]")
        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))
Example #9
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)]")
        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()
Example #10
0
def test_unique_id(regtest):
    ti = emzed.utils.toTable("id", [1, 1, 2])
    t = emzed.utils.toTable("t", (ti, ti, None))
    # peakmap unique id already tested by compression of peakmap:
    t.addColumn("pm", PeakMap([]), type_=object)
    t.addColumn("blob", Blob("data"))
    print(t.uniqueId(), file=regtest)

    ti = emzed.utils.toTable("id", [1, 1, 2])
    t = emzed.utils.toTable("t", (ti, ti, None))
    # peakmap unique id already tested by compression of peakmap:
    t.addColumn("pm", PeakMap([]), type_=PeakMap)
    t.addColumn("blob", Blob("data"))
    print(t.uniqueId(), file=regtest)

    ti = emzed.utils.toTable("id", [1, 1, 2])
    t = emzed.utils.toTable("t", (ti, ti, None))
    # peakmap unique id already tested by compression of peakmap:
    t.addColumn("pm", PeakMap([]))
    t.addColumn("blob", Blob("data"))
    print(t.uniqueId(), file=regtest)
def testNoIntegration():

    integrator = dict(emzed._algorithm_configs.peakIntegrators)["no_integration"]
    integrator.setPeakMap(PeakMap([]))
    result = integrator.integrate(0.0, 100.0, 0, 300, 1)
    assert result.get("area") is None
    assert result.get("rmse") is None
    assert result.get("params") is None
    # assert result.get("eic") is None
    assert result.get("baseline") is None

    rts = range(0, 600)
    x, y = integrator.getSmoothed(rts, result.get("params"))
    assert x == []
    assert y == []
def _testIntegration(path, n_cpus, integrator_id, check_values=True):

    # test with and without unicode:
    ft = io.loadTable(path("data/features.table"))
    # an invalid row should not stop integration, but result
    # in None values for emzed.utils.integrate generated columns
    ftr = utils.integrate(ft, integrator_id,  n_cpus=n_cpus, min_size_for_parallel_execution=1)
    assert len(ftr) == len(ft)
    assert "area" in ftr.getColNames()
    assert "rmse" in ftr.getColNames()

    if check_values:
        assert ftr.area.values[0] >= 0, ftr.area.values[0]
        assert ftr.rmse.values[0] >= 0, ftr.rmse.values[0]
        assert ftr.params.values[0] is not None
        assert ftr.method.values[0] is not None

    ft.setValue(ft.rows[0], "mzmin", None)

    ft._addColumnWithoutNameCheck("mzmin__0", ft.mzmin)
    ft._addColumnWithoutNameCheck("mzmax__0", ft.mzmax)
    ft._addColumnWithoutNameCheck("rtmin__0", ft.rtmin)
    ft._addColumnWithoutNameCheck("rtmax__0", ft.rtmax)
    ft._addColumnWithoutNameCheck("peakmap__0", ft.peakmap)

    ft.addColumn("mzminX", ft.mzmin)
    ft.addColumn("mzmaxX", ft.mzmax)
    ft.addColumn("rtminX", ft.rtmin)
    ft.addColumn("rtmaxX", ft.rtmax)
    ft.addColumn("peakmapX", ft.peakmap)

    ftr = utils.integrate(ft, integrator_id,  n_cpus=n_cpus, min_size_for_parallel_execution=1)
    assert len(ftr) == len(ft)
    assert "area" in ftr.getColNames()
    assert "rmse" in ftr.getColNames()
    # assert "eic" in ftr.getColNames()
    assert "area__0" in ftr.getColNames()
    assert "rmse__0" in ftr.getColNames()
    # assert "eic__0" in ftr.getColNames()
    assert "areaX" in ftr.getColNames()
    assert "rmseX" in ftr.getColNames()
    assert "rmseX" in ftr.getColNames()
    # assert "eicX" in ftr.getColNames()

    if check_values:
        assert ftr.area.values[0] is None
        assert ftr.rmse.values[0] is None
        assert ftr.params.values[0] is None
        assert ftr.method.values[0] is not None
        # assert ftr.eic.values[0] is None

        assert ftr.area.values[1] is not None
        assert ftr.rmse.values[1] is not None
        assert ftr.params.values[1] is not None
        assert ftr.method.values[1] is not None
        # assert len(ftr.eic.values[1]) == 2

        assert ftr.area__0.values[0] is None
        assert ftr.rmse__0.values[0] is None
        assert ftr.params__0.values[0] is None
        assert ftr.method__0.values[0] is not None
        # assert ftr.eic__0.values[0] is None

        assert ftr.area__0.values[1] is not None
        assert ftr.rmse__0.values[1] is not None
        assert ftr.params__0.values[1] is not None
        assert ftr.method__0.values[1] is not None
        # assert len(ftr.eic__0.values[1]) == 2

        assert ftr.areaX.values[0] is None
        assert ftr.rmseX.values[0] is None
        assert ftr.paramsX.values[0] is None
        assert ftr.methodX.values[0] is not None
        # assert ftr.eicX.values[0] is None

        assert ftr.areaX.values[1] is not None
        assert ftr.rmseX.values[1] is not None
        assert ftr.paramsX.values[1] is not None
        assert ftr.methodX.values[1] is not None
        # assert len(ftr.eicX.values[1]) == 2

    # test with empty chromatograms
    s0 = ft.peakmap.values[0].spectra[0]
    rt0 = s0.rt
    pm = PeakMap([s0])
    rts, iis = pm.chromatogram(0, 10000, rt0 + 20, rt0 + 30)
    assert len(rts) == 0
    assert len(iis) == 0
    ft.replaceColumn("peakmap", pm)
    ft.replaceColumn("rtmin", rt0 + 10)
    ft.replaceColumn("rtmax", rt0 + 20)
    ftr2 = utils.integrate(ft, integrator_id,  n_cpus=n_cpus, min_size_for_parallel_execution=1)

    # assert  set(ftr2.eic.values) == {None}

    return ftr
Example #13
0
 def testEmptyPeakMap(self):
     pm = PeakMap([])
     assert pm.extract(0, 9999, 0, 10000).spectra == ()
     assert pm.filter(lambda t: True).spectra == ()
     assert pm.specsInRange(0, 10e6) == []
     assert pm.levelNSpecsInRange(1, 0, 10e6) == []
     assert pm.chromatogram(0, 10e6, 0, 10e6) == ([], [])
     assert pm.chromatogram(0, 10e6) == ([], [])
     assert pm.msNPeaks(1, 0, 10e6).tolist() == []
     assert pm.allRts() == []
     assert pm.levelOneRts() == []
     assert pm.levelNSpecs(1,2) == []
Example #14
0
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
Example #15
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
Example #16
0
 def testEmptyPeakMap(self):
     pm = PeakMap([])
     assert pm.extract(0, 9999, 0, 10000).spectra == ()
     assert pm.filter(lambda t: True).spectra == ()
     assert pm.specsInRange(0, 10e6) == []
     assert pm.levelNSpecsInRange(1, 0, 10e6) == []
     assert pm.chromatogram(0, 10e6, 0, 10e6) == ([], [])
     assert pm.chromatogram(0, 10e6) == ([], [])
     assert pm.msNPeaks(1, 0, 10e6).tolist() == []
     assert pm.allRts() == []
     assert pm.levelOneRts() == []
     assert pm.levelNSpecs(1, 2) == []
Example #17
0
    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
Example #18
0
    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