Skip to content
Snippets Groups Projects
Commit 5910f897 authored by schmittu's avatar schmittu :beer:
Browse files

refac

parent 906666de
No related branches found
No related tags found
No related merge requests found
Pipeline #871 failed
......@@ -127,22 +127,3 @@ def get_mzmine2_home(target_folder=_default_mzmine2_folder()):
raise RuntimeError(f"file {mzmine2_path} contains invalid path {path}")
return path
def construct_java_call_cli_args(
jre_root_folder=_default_jre_folder(), mzmine2_root_folder=_default_mzmine2_folder()
):
java_bin = find_java_bin(jre_root_folder)
mzmine2_home = get_mzmine2_home(mzmine2_root_folder)
here = os.path.dirname(os.path.abspath(__file__))
class_path = ":".join(
[
os.path.join(mzmine2_home, "lib", "*"),
os.path.join(here, "java", "extensions.jar"),
]
)
return [java_bin, "-Djava.awt.headless=true", "-ea", "-cp", '"' + class_path + '"']
......@@ -139,7 +139,7 @@ public class RemoveShoulderPeaks {
RawDataFileImpl rdf_out = new RawDataFileImpl(rmp.outPath);
for (int i=1; i <= rdf.getNumOfScans(); i++){
for (int i: rdf.getScanNumbers(1)) {
Scan s = rdf.getScan(i);
MassList ml = s.getMassList("_mass_list ");
SimpleScan new_scan = new SimpleScan(s);
......
No preview for this file type
......@@ -9,7 +9,7 @@ import emzed.lib
from .exceptions import MzMine2Exception
from .parameters import ParameterBase
from .installers import construct_java_call_cli_args
from .java_utils import construct_java_call_cli_args, run_java
class RemoveShoulderPeaksParameters(ParameterBase):
......@@ -21,7 +21,6 @@ class RemoveShoulderPeaksParameters(ParameterBase):
return value > 0, "value must be positive"
def remove_shoulder_peaks(peakmap, parameters):
assert isinstance(peakmap, emzed.lib.PeakMap)
assert isinstance(parameters, RemoveShoulderPeaksParameters)
......@@ -33,28 +32,19 @@ def remove_shoulder_peaks(peakmap, parameters):
temp_file_out = tempfile.mktemp(".mzML")
peakmap.store(temp_file_in)
cli = construct_java_call_cli_args() + [
"ch.ethz.emzed.RemoveShoulderPeaks",
run_java(
"RemoveShoulderPeaks",
temp_file_in,
str(parameters.resolution),
parameters.resolution,
parameters.peak_model,
temp_file_out,
]
p = subprocess.Popen(
" ".join(cli), shell=True, stderr=subprocess.STDOUT, stdout=subprocess.PIPE
)
for line in iter(p.stdout.readline, b""):
line = str(line, "utf-8").rstrip()
if line.startswith("!!!ERROR"):
raise MzMine2Exception("calling java failed")
if line.startswith("!!!DONE"):
break
print(line)
peakmap_back = emzed.lib.PeakMap.load(temp_file_out)
# the mzXML parser of mzedmin2 rounds rt values, we fix this here:
for s, s_back in zip(peakmap.spectra, peakmap_back.spectra):
s_back.rt = s.rt
s_back._set_rt(s.rt)
s_back._conn.commit()
return peakmap_back
......@@ -5,8 +5,7 @@ import multiprocessing
import dill
from emzed.ext.mzmine2 import (RemoveShoulderPeaksParameters,
remove_shoulder_peaks)
from emzed.ext.mzmine2 import RemoveShoulderPeaksParameters, remove_shoulder_peaks
from emzed.lib import PeakMap
......@@ -16,19 +15,20 @@ def test_remove_shoulder_peaks(data_path):
parameters.resolution = 10000.0
parameters.peak_model = "GAUSS"
pm = PeakMap.load(data_path("test_smaller.mzXML"))
pm = PeakMap.load(data_path("test_smallest.mzXML"))
pm_back = remove_shoulder_peaks(pm, parameters)
assert pm != pm_back
assert pm_back.spectra[0].mzs.shape == (241,)
assert pm_back.spectra[1].mzs.shape == (259,)
assert pm_back.spectra[0].mzs.shape == (303,)
assert pm_back.spectra[1].mzs.shape == (319,)
assert pm_back.spectra[0].rt == pm.spectra[0].rt
assert all(s.rt == s_back.rt for (s, s_back) in zip(pm.spectra, pm_back.spectra))
def execute(what):
f, *args = dill.loads(what)
return f(*args)
result = f(*args)
return result
def test_remove_shoulder_peaks_parallel(data_path, tmpdir):
......@@ -37,13 +37,16 @@ def test_remove_shoulder_peaks_parallel(data_path, tmpdir):
parameters.resolution = 10000.0
parameters.peak_model = "GAUSS"
pm = PeakMap.load(data_path("test_smaller.mzXML"))
pm = PeakMap.load(data_path("test_smallest.mzXML"))
multiprocessing.set_start_method("spawn")
# multiprocessing.set_start_method("spawn")
with multiprocessing.Pool(2) as p:
args = dill.dumps((remove_shoulder_peaks, pm, parameters))
results = p.map(execute, [args, args])
for pm_back in results:
assert pm_back.spectra[0].mzs.shape == (241,)
assert pm_back.spectra[1].mzs.shape == (259,)
assert pm_back.spectra[0].mzs.shape == (303,)
assert pm_back.spectra[1].mzs.shape == (319,)
assert all(
s.rt == s_back.rt for (s, s_back) in zip(pm.spectra, pm_back.spectra)
)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment