changeset 0:6303b43e29cb draft

"planemo upload for repository https://github.com/RECETOX/galaxytools/tree/master/tools/matchms commit 46191b39a711f92418f1d412065bbb3648dbf42d"
author recetox
date Mon, 24 Jan 2022 11:15:00 +0000
parents
children 2f9c19fa4346
files matchms_filtering.xml matchms_filtering_wrapper.py test-data/filtering/clean_metadata.msp test-data/filtering/default_filters.msp test-data/filtering/input.msp test-data/filtering/mz_range.msp test-data/filtering/normalise_intensities.msp test-data/filtering/relative_intensity.msp
diffstat 8 files changed, 1228 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/matchms_filtering.xml	Mon Jan 24 11:15:00 2022 +0000
@@ -0,0 +1,153 @@
+<tool id="matchms_filtering" name="matchMS filtering" version="0.11.0+galaxy0">
+    <description>filter and normalize mass spectrometry data</description>
+    <requirements>
+        <requirement type="package" version="0.11.0">matchms</requirement>
+        <requirement type="package" version="1.1.4">pandas</requirement>
+    </requirements>
+
+    <environment_variables>
+        <environment_variable name="MPLCONFIGDIR">\$_GALAXY_JOB_TMP_DIR</environment_variable>
+    </environment_variables>
+
+    <command detect_errors="exit_code"><![CDATA[
+        sh ${matchms_python_cli}
+    ]]> </command>
+
+    <configfiles>
+        <configfile name="matchms_python_cli">
+            python3 ${__tool_directory__}/matchms_filtering_wrapper.py \
+            --spectra "$spectra" \
+            --spectra_format "$spectra.ext" \
+            #if $normalise_intensities.is_true
+                -normalise_intensities \
+            #end if
+            #if $default_filters.is_true
+                -default_filters \
+            #end if
+            #if $clean_metadata.is_true
+                -clean_metadata \
+            #end if
+            #if $relative_intensity.is_true
+                -relative_intensity \
+                --from_intensity "$relative_intensity.from_intensity" \
+                --to_intensity "$relative_intensity.to_intensity" \
+            #end if
+            #if $mz_range.is_true
+                -mz_range \
+                --from_mz "$mz_range.from_mz" \
+                --to_mz "$mz_range.to_mz" \
+            #end if
+            --output "$output"
+        </configfile>
+    </configfiles>
+
+    <inputs>
+        <param label="Spectra file" name="spectra" type="data" format="msp,mgf" help="Mass spectra file to be filtered." />
+
+        <conditional name="normalise_intensities">
+            <param name="is_true" label="Normalize intensities" type="boolean" truevalue="TRUE" falsevalue="FALSE" checked="false"
+                   help="Normalize intensities of peaks (and losses) to unit height."/>
+        </conditional>
+
+        <conditional name="default_filters">
+            <param name="is_true" label="Apply default filters" type="boolean" truevalue="TRUE" falsevalue="FALSE" checked="false"
+                   help="Collection of filters that are considered default and that do no require any (factory) arguments."/>
+        </conditional>
+
+        <conditional name="clean_metadata">
+            <param name="is_true" label="Clean metadata" type="boolean" truevalue="TRUE" falsevalue="FALSE" checked="false"
+                   help="Apply all adding and cleaning filters if possible, so that the spectra have canonical metadata." />
+        </conditional>
+
+        <conditional name="relative_intensity">
+            <param name="is_true" label="Filter relative intensity" type="boolean" truevalue="TRUE" falsevalue="FALSE" checked="false"
+                   help="Keep only peaks within set relative intensity range (keep if maximum >= intensity >= minimum)." />
+            <when value="TRUE">
+                <param label="Minimum intensity" name="from_intensity" optional="true" type="float" help="Lower bound for intensity filter." />
+                <param label="Maximum intensity" name="to_intensity" optional="true" type="float" help="Upper bound for intensity filter." />
+            </when>
+        </conditional>
+
+        <conditional name="mz_range">
+            <param name="is_true" label="Filter m/z range" type="boolean" truevalue="TRUE" falsevalue="FALSE" checked="false"
+                   help="Keep only peaks between set m/z range (keep if maximum >= m/z >= minimum)." />
+            <when value="TRUE">
+                <param label="Minimum m/z" name="from_mz" optional="true" type="float" help="Lower bound for m/z filter." />
+                <param label="Maximum m/z" name="to_mz" optional="true" type="float" help="Upper bound for m/z filter." />
+            </when>
+        </conditional>
+
+    </inputs>
+
+    <outputs>
+        <data label="${tool.name} on ${on_string}" name="output" format_source="spectra" />
+    </outputs>
+
+    <tests>
+        <test>
+            <param name="spectra" value="filtering/input.msp" ftype="msp"/>
+            <section name="normalise_intensities">
+                <param name="is_true" value="TRUE"/>
+            </section>
+            <output name="output" file="filtering/normalise_intensities.msp" ftype="msp"/>
+        </test>
+        <test>
+            <param name="spectra" value="filtering/input.msp" ftype="msp"/>
+            <section name="default_filters">
+                <param name="is_true" value="TRUE"/>
+            </section>
+            <output name="output" file="filtering/default_filters.msp" ftype="msp"/>
+        </test>
+        <test>
+            <param name="spectra" value="filtering/input.msp" ftype="msp"/>
+            <section name="clean_metadata">
+                <param name="is_true" value="TRUE"/>
+            </section>
+            <output name="output" file="filtering/clean_metadata.msp" ftype="msp"/>
+        </test>
+        <test>
+            <param name="spectra" value="filtering/input.msp" ftype="msp"/>
+            <section name="normalise_intensities">
+                <param name="is_true" value="TRUE"/>
+            </section>
+            <section name="relative_intensity">
+                <param name="is_true" value="TRUE"/>
+                <param name="from_intensity" value="0.3"/>
+                <param name="to_intensity" value="0.9"/>
+            </section>
+            <output name="output" file="filtering/relative_intensity.msp" ftype="msp"/>
+        </test>
+        <test>
+            <param name="spectra" value="filtering/input.msp" ftype="msp"/>
+            <section name="mz_range">
+                <param name="is_true" value="TRUE"/>
+                <param name="from_mz" value="300"/>
+                <param name="to_mz" value="800"/>
+            </section>
+            <output name="output" file="filtering/mz_range.msp" ftype="msp"/>
+        </test>
+    </tests>
+
+    <help><![CDATA[
+    Documentation
+        For documentation on the tool see https://github.com/matchms/matchms/blob/master/README.rst and https://matchms.readthedocs.io/en/latest/.
+
+    Upstream Tools
+        +-----------+---------------+--------+-----------+
+        | Name      | Output File   | Format | Parameter |
+        +===========+===============+========+===========+
+        | RAMClustR | Mass spectra  | msp    | references|
+        +-----------+---------------+--------+-----------+
+        | RAMClustR | Mass spectra  | msp    | queries   |
+        +-----------+---------------+--------+-----------+
+
+    Downstream Tools
+        The output is an msp file after applying the specified filters.
+    ]]></help>
+
+
+    <citations>
+        <citation type="doi">10.5281/zenodo.4589154</citation>
+        <citation type="doi">10.21105/joss.02411</citation>
+    </citations>
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/matchms_filtering_wrapper.py	Mon Jan 24 11:15:00 2022 +0000
@@ -0,0 +1,77 @@
+import argparse
+import sys
+
+from matchms.exporting import save_as_mgf, save_as_msp
+from matchms.filtering import add_compound_name, add_fingerprint, add_losses, add_parent_mass, add_precursor_mz,\
+    add_retention_index, add_retention_time, clean_compound_name
+from matchms.filtering import default_filters, normalize_intensities, select_by_mz, select_by_relative_intensity
+from matchms.importing import load_from_mgf, load_from_msp
+
+
+def main(argv):
+    parser = argparse.ArgumentParser(description="Compute MSP similarity scores")
+    parser.add_argument("--spectra", type=str, required=True, help="Mass spectra file to be filtered.")
+    parser.add_argument("--spectra_format", type=str, required=True, help="Format of spectra file.")
+    parser.add_argument("--output", type=str, required=True, help="Filtered mass spectra file.")
+    parser.add_argument("-normalise_intensities", action='store_true',
+                        help="Normalize intensities of peaks (and losses) to unit height.")
+    parser.add_argument("-default_filters", action='store_true',
+                        help="Collection of filters that are considered default and that do no require any (factory) arguments.")
+    parser.add_argument("-clean_metadata", action='store_true',
+                        help="Apply all adding and cleaning filters if possible, so that the spectra have canonical metadata.")
+    parser.add_argument("-relative_intensity", action='store_true',
+                        help="Keep only peaks within set relative intensity range (keep if to_intensity >= intensity >= from_intensity).")
+    parser.add_argument("--from_intensity", type=float, help="Lower bound for intensity filter")
+    parser.add_argument("--to_intensity", type=float, help="Upper bound for intensity filter")
+    parser.add_argument("-mz_range", action='store_true',
+                        help="Keep only peaks between set m/z range (keep if to_mz >= m/z >= from_mz).")
+    parser.add_argument("--from_mz", type=float, help="Lower bound for m/z  filter")
+    parser.add_argument("--to_mz", type=float, help="Upper bound for m/z  filter")
+    args = parser.parse_args()
+
+    if not (args.normalise_intensities
+            or args.default_filters
+            or args.clean_metadata
+            or args.relative_intensity
+            or args.mz_range):
+        raise ValueError('No filter selected.')
+
+    if args.spectra_format == 'msp':
+        spectra = list(load_from_msp(args.spectra))
+    elif args.queries_format == 'mgf':
+        spectra = list(load_from_mgf(args.spectra))
+    else:
+        raise ValueError(f'File format {args.spectra_format} not supported for mass spectra file.')
+
+    filtered_spectra = []
+    for spectrum in spectra:
+        if args.normalise_intensities:
+            spectrum = normalize_intensities(spectrum)
+
+        if args.default_filters:
+            spectrum = default_filters(spectrum)
+
+        if args.clean_metadata:
+            filters = [add_compound_name, add_precursor_mz, add_fingerprint, add_losses, add_parent_mass,
+                       add_retention_index, add_retention_time, clean_compound_name]
+            for metadata_filter in filters:
+                spectrum = metadata_filter(spectrum)
+
+        if args.relative_intensity:
+            spectrum = select_by_relative_intensity(spectrum, args.from_intensity, args.to_intensity)
+
+        if args.mz_range:
+            spectrum = select_by_mz(spectrum, args.from_mz, args.to_mz)
+
+        filtered_spectra.append(spectrum)
+
+    if args.spectra_format == 'msp':
+        save_as_msp(filtered_spectra, args.output)
+    else:
+        save_as_mgf(filtered_spectra, args.output)
+
+    return 0
+
+
+if __name__ == "__main__":
+    main(argv=sys.argv[1:])
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/filtering/clean_metadata.msp	Mon Jan 24 11:15:00 2022 +0000
@@ -0,0 +1,212 @@
+NAME: C001
+IONMODE: Negative
+RETENTIONTIME: 38.74
+RETENTIONINDEX: 
+SPECTRUMTYPE: Centroid
+COMPOUND_NAME: C001
+RETENTION_INDEX: None
+RETENTION_TIME: 38.74
+NUM PEAKS: 57
+138.9121	10186226.0
+148.9337	1008656.0
+175.0641	26780143.0
+186.1095	2675456.0
+196.8658	21390430.0
+198.8647	21688594.0
+200.8848	7742528.0
+206.9034	26130980.0
+216.9205	32607700.0
+234.0134	2550129.0
+254.8252	23747536.0
+256.8215	31377637.0
+258.8237	15532799.0
+266.8652	9805546.0
+268.8537	3090354.0
+306.9914	3169316.0
+312.7841	10051801.0
+316.7777	10734168.0
+322.8157	6317648.0
+324.9549	8619910.0
+334.849	4178412.0
+342.8093	3285552.0
+349.9455	2050695.0
+350.9875	6150799.0
+351.941	1965882.0
+366.8281	3253770.0
+370.7418	9765463.0
+372.7383	19374863.0
+382.8218	12815572.0
+384.8177	8311500.0
+392.7685	10913351.0
+413.2664	3965867.0
+426.7772	5431633.0
+428.7834	8554675.0
+434.7287	9943329.0
+436.8161	3705247.0
+440.7322	10603010.0
+442.7401	8271752.0
+450.7016	8762673.0
+460.7076	4528973.0
+462.7862	2123666.0
+484.7242	4273989.0
+486.7743	4886062.0
+488.6825	12267966.0
+492.744	7662344.0
+494.8953	7188793.0
+498.8794	6811405.0
+500.8484	6520691.0
+502.7832	3567833.0
+510.763	4989757.0
+518.7415	4243468.0
+546.6093	7177067.0
+550.6949	6104789.0
+566.5977	5171811.0
+612.6927	2005587.0
+676.6436	1982714.0
+800.4451	2792137.0
+
+NAME: C002
+IONMODE: Negative
+RETENTIONTIME: 520.25
+RETENTIONINDEX: 
+SPECTRUMTYPE: Centroid
+COMPOUND_NAME: C002
+RETENTION_INDEX: None
+RETENTION_TIME: 520.25
+NUM PEAKS: 35
+131.1733	1971789.0
+267.2688	6103973.0
+279.0196	1946255.0
+289.6491	46498377.0
+301.1565	15185412.0
+309.1649	18045974.0
+310.1623	295359836.0
+311.1658	13124727.0
+312.0296	38757284.0
+330.6757	12666597.0
+525.375	1073323842.0
+526.3783	181668883.0
+527.3812	23642795.0
+551.3321	111616808.0
+552.3348	28340614.0
+553.3314	2609936.0
+562.3269	7538206.0
+578.2905	7578406.0
+619.3008	4742103.0
+624.296	11790213.0
+813.5403	25060147.0
+814.5336	5865975.0
+955.1171	2322927.0
+1047.7378	150394804.0
+1048.7399	90978863.0
+1049.7432	29946438.0
+1050.7453	6807767.0
+1069.7158	5074652.0
+1074.1979	3402288.0
+1075.1968	33352763.0
+1076.2004	10417953.0
+1101.6535	2023916.0
+1206.3127	3738816.0
+1216.8041	4439324.0
+1217.807	3565334.0
+
+NAME: C003
+IONMODE: Negative
+RETENTIONTIME: 483.67
+RETENTIONINDEX: 
+SPECTRUMTYPE: Centroid
+COMPOUND_NAME: C003
+RETENTION_INDEX: None
+RETENTION_TIME: 483.67
+NUM PEAKS: 26
+265.2529	11366224.0
+266.2564	1420444.0
+279.6362	29849749.0
+280.6546	8848921.0
+288.6414	202172046.0
+378.2093	15309961.0
+379.1966	2902366.0
+522.3565	4089569222.0
+523.354	1201714423.0
+549.3267	63300808.0
+576.2749	7386007.0
+577.3074	2354251.0
+617.2778	2323470.0
+625.4543	4040374.0
+796.9808	13576738.0
+797.9841	6368973.0
+809.9883	12596682.0
+810.9916	6601055.0
+1043.7028	144351468.0
+1044.7068	83271854.0
+1045.706	27998321.0
+1046.7131	6505178.0
+1058.1594	20718345.0
+1059.1626	6608764.0
+1071.1639	15461047.0
+1072.1671	5096642.0
+
+NAME: C004
+IONMODE: Negative
+RETENTIONTIME: 473.48
+RETENTIONINDEX: 
+SPECTRUMTYPE: Centroid
+COMPOUND_NAME: C004
+RETENTION_INDEX: None
+RETENTION_TIME: 473.48
+NUM PEAKS: 24
+124.1405	6517662.0
+170.2437	1237313.0
+275.6336	28001849.0
+296.147	190395687.0
+482.3247	145772322.0
+483.3283	36245876.0
+496.34	12577588056.0
+497.3442	3337125302.0
+498.3462	532285213.0
+499.3493	68176083.0
+770.964	49250157.0
+771.9675	22666873.0
+783.9721	9839299.0
+784.9749	3622908.0
+949.6233	8009033.0
+950.6274	3674694.0
+991.6726	1420557258.0
+992.6749	763118028.0
+993.6787	239161906.0
+994.6801	53549573.0
+1017.6897	168186952.0
+1018.6656	120599518.0
+1019.6555	57647644.0
+1020.6591	12469103.0
+
+NAME: C005
+IONMODE: Negative
+RETENTIONTIME: 41.72
+RETENTIONINDEX: 
+SPECTRUMTYPE: Centroid
+COMPOUND_NAME: C005
+RETENTION_INDEX: None
+RETENTION_TIME: 41.72
+NUM PEAKS: 20
+218.1386	14009249.0
+337.0623	88672453.0
+338.0654	8770055.0
+353.0361	37061354.0
+359.0443	48435582.0
+360.0459	5025128.0
+375.018	29159485.0
+376.0216	2740193.0
+381.0261	13522755.0
+396.9999	10317665.0
+417.0027	13822994.0
+418.9966	4386311.0
+432.9764	9779399.0
+438.9851	11307111.0
+440.9796	3364168.0
+454.9592	9820452.0
+456.9603	3774845.0
+470.9263	3632486.0
+512.8989	4072570.0
+572.871	3485486.0
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/filtering/default_filters.msp	Mon Jan 24 11:15:00 2022 +0000
@@ -0,0 +1,207 @@
+NAME: C001
+IONMODE: negative
+RETENTIONTIME: 38.74
+RETENTIONINDEX: 
+SPECTRUMTYPE: Centroid
+COMPOUND_NAME: C001
+CHARGE: -1
+NUM PEAKS: 57
+138.9121	10186226.0
+148.9337	1008656.0
+175.0641	26780143.0
+186.1095	2675456.0
+196.8658	21390430.0
+198.8647	21688594.0
+200.8848	7742528.0
+206.9034	26130980.0
+216.9205	32607700.0
+234.0134	2550129.0
+254.8252	23747536.0
+256.8215	31377637.0
+258.8237	15532799.0
+266.8652	9805546.0
+268.8537	3090354.0
+306.9914	3169316.0
+312.7841	10051801.0
+316.7777	10734168.0
+322.8157	6317648.0
+324.9549	8619910.0
+334.849	4178412.0
+342.8093	3285552.0
+349.9455	2050695.0
+350.9875	6150799.0
+351.941	1965882.0
+366.8281	3253770.0
+370.7418	9765463.0
+372.7383	19374863.0
+382.8218	12815572.0
+384.8177	8311500.0
+392.7685	10913351.0
+413.2664	3965867.0
+426.7772	5431633.0
+428.7834	8554675.0
+434.7287	9943329.0
+436.8161	3705247.0
+440.7322	10603010.0
+442.7401	8271752.0
+450.7016	8762673.0
+460.7076	4528973.0
+462.7862	2123666.0
+484.7242	4273989.0
+486.7743	4886062.0
+488.6825	12267966.0
+492.744	7662344.0
+494.8953	7188793.0
+498.8794	6811405.0
+500.8484	6520691.0
+502.7832	3567833.0
+510.763	4989757.0
+518.7415	4243468.0
+546.6093	7177067.0
+550.6949	6104789.0
+566.5977	5171811.0
+612.6927	2005587.0
+676.6436	1982714.0
+800.4451	2792137.0
+
+NAME: C002
+IONMODE: negative
+RETENTIONTIME: 520.25
+RETENTIONINDEX: 
+SPECTRUMTYPE: Centroid
+COMPOUND_NAME: C002
+CHARGE: -1
+NUM PEAKS: 35
+131.1733	1971789.0
+267.2688	6103973.0
+279.0196	1946255.0
+289.6491	46498377.0
+301.1565	15185412.0
+309.1649	18045974.0
+310.1623	295359836.0
+311.1658	13124727.0
+312.0296	38757284.0
+330.6757	12666597.0
+525.375	1073323842.0
+526.3783	181668883.0
+527.3812	23642795.0
+551.3321	111616808.0
+552.3348	28340614.0
+553.3314	2609936.0
+562.3269	7538206.0
+578.2905	7578406.0
+619.3008	4742103.0
+624.296	11790213.0
+813.5403	25060147.0
+814.5336	5865975.0
+955.1171	2322927.0
+1047.7378	150394804.0
+1048.7399	90978863.0
+1049.7432	29946438.0
+1050.7453	6807767.0
+1069.7158	5074652.0
+1074.1979	3402288.0
+1075.1968	33352763.0
+1076.2004	10417953.0
+1101.6535	2023916.0
+1206.3127	3738816.0
+1216.8041	4439324.0
+1217.807	3565334.0
+
+NAME: C003
+IONMODE: negative
+RETENTIONTIME: 483.67
+RETENTIONINDEX: 
+SPECTRUMTYPE: Centroid
+COMPOUND_NAME: C003
+CHARGE: -1
+NUM PEAKS: 26
+265.2529	11366224.0
+266.2564	1420444.0
+279.6362	29849749.0
+280.6546	8848921.0
+288.6414	202172046.0
+378.2093	15309961.0
+379.1966	2902366.0
+522.3565	4089569222.0
+523.354	1201714423.0
+549.3267	63300808.0
+576.2749	7386007.0
+577.3074	2354251.0
+617.2778	2323470.0
+625.4543	4040374.0
+796.9808	13576738.0
+797.9841	6368973.0
+809.9883	12596682.0
+810.9916	6601055.0
+1043.7028	144351468.0
+1044.7068	83271854.0
+1045.706	27998321.0
+1046.7131	6505178.0
+1058.1594	20718345.0
+1059.1626	6608764.0
+1071.1639	15461047.0
+1072.1671	5096642.0
+
+NAME: C004
+IONMODE: negative
+RETENTIONTIME: 473.48
+RETENTIONINDEX: 
+SPECTRUMTYPE: Centroid
+COMPOUND_NAME: C004
+CHARGE: -1
+NUM PEAKS: 24
+124.1405	6517662.0
+170.2437	1237313.0
+275.6336	28001849.0
+296.147	190395687.0
+482.3247	145772322.0
+483.3283	36245876.0
+496.34	12577588056.0
+497.3442	3337125302.0
+498.3462	532285213.0
+499.3493	68176083.0
+770.964	49250157.0
+771.9675	22666873.0
+783.9721	9839299.0
+784.9749	3622908.0
+949.6233	8009033.0
+950.6274	3674694.0
+991.6726	1420557258.0
+992.6749	763118028.0
+993.6787	239161906.0
+994.6801	53549573.0
+1017.6897	168186952.0
+1018.6656	120599518.0
+1019.6555	57647644.0
+1020.6591	12469103.0
+
+NAME: C005
+IONMODE: negative
+RETENTIONTIME: 41.72
+RETENTIONINDEX: 
+SPECTRUMTYPE: Centroid
+COMPOUND_NAME: C005
+CHARGE: -1
+NUM PEAKS: 20
+218.1386	14009249.0
+337.0623	88672453.0
+338.0654	8770055.0
+353.0361	37061354.0
+359.0443	48435582.0
+360.0459	5025128.0
+375.018	29159485.0
+376.0216	2740193.0
+381.0261	13522755.0
+396.9999	10317665.0
+417.0027	13822994.0
+418.9966	4386311.0
+432.9764	9779399.0
+438.9851	11307111.0
+440.9796	3364168.0
+454.9592	9820452.0
+456.9603	3774845.0
+470.9263	3632486.0
+512.8989	4072570.0
+572.871	3485486.0
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/filtering/input.msp	Mon Jan 24 11:15:00 2022 +0000
@@ -0,0 +1,196 @@
+NAME:C001
+IONMODE:Negative
+RETENTIONTIME:38.74
+RETENTIONINDEX:
+SPECTRUMTYPE:Centroid
+Num Peaks:57
+216.9205 32607700
+256.8215 31377637
+175.0641 26780143
+206.9034 26130980
+254.8252 23747536
+198.8647 21688594
+196.8658 21390430
+372.7383 19374863
+258.8237 15532799
+382.8218 12815572
+488.6825 12267966
+392.7685 10913351
+316.7777 10734168
+440.7322 10603010
+138.9121 10186226
+312.7841 10051801
+434.7287 9943329
+266.8652 9805546
+370.7418 9765463
+450.7016 8762673
+324.9549 8619910
+428.7834 8554675
+384.8177 8311500
+442.7401 8271752
+200.8848 7742528
+492.744 7662344
+494.8953 7188793
+546.6093 7177067
+498.8794 6811405
+500.8484 6520691
+322.8157 6317648
+350.9875 6150799
+550.6949 6104789
+426.7772 5431633
+566.5977 5171811
+510.763 4989757
+486.7743 4886062
+460.7076 4528973
+484.7242 4273989
+518.7415 4243468
+334.849 4178412
+413.2664 3965867
+436.8161 3705247
+502.7832 3567833
+342.8093 3285552
+366.8281 3253770
+306.9914 3169316
+268.8537 3090354
+800.4451 2792137
+186.1095 2675456
+234.0134 2550129
+462.7862 2123666
+349.9455 2050695
+612.6927 2005587
+676.6436 1982714
+351.941 1965882
+148.9337 1008656
+
+NAME:C002
+IONMODE:Negative
+RETENTIONTIME:520.25
+RETENTIONINDEX:
+SPECTRUMTYPE:Centroid
+Num Peaks:35
+525.375 1073323842
+310.1623 295359836
+526.3783 181668883
+1047.7378 150394804
+551.3321 111616808
+1048.7399 90978863
+289.6491 46498377
+312.0296 38757284
+1075.1968 33352763
+1049.7432 29946438
+552.3348 28340614
+813.5403 25060147
+527.3812 23642795
+309.1649 18045974
+301.1565 15185412
+311.1658 13124727
+330.6757 12666597
+624.296 11790213
+1076.2004 10417953
+578.2905 7578406
+562.3269 7538206
+1050.7453 6807767
+267.2688 6103973
+814.5336 5865975
+1069.7158 5074652
+619.3008 4742103
+1216.8041 4439324
+1206.3127 3738816
+1217.807 3565334
+1074.1979 3402288
+553.3314 2609936
+955.1171 2322927
+1101.6535 2023916
+131.1733 1971789
+279.0196 1946255
+
+NAME:C003
+IONMODE:Negative
+RETENTIONTIME:483.67
+RETENTIONINDEX:
+SPECTRUMTYPE:Centroid
+Num Peaks:26
+522.3565 4089569222
+523.354 1201714423
+288.6414 202172046
+1043.7028 144351468
+1044.7068 83271854
+549.3267 63300808
+279.6362 29849749
+1045.706 27998321
+1058.1594 20718345
+1071.1639 15461047
+378.2093 15309961
+796.9808 13576738
+809.9883 12596682
+265.2529 11366224
+280.6546 8848921
+576.2749 7386007
+1059.1626 6608764
+810.9916 6601055
+1046.7131 6505178
+797.9841 6368973
+1072.1671 5096642
+625.4543 4040374
+379.1966 2902366
+577.3074 2354251
+617.2778 2323470
+266.2564 1420444
+
+NAME:C004
+IONMODE:Negative
+RETENTIONTIME:473.48
+RETENTIONINDEX:
+SPECTRUMTYPE:Centroid
+Num Peaks:24
+496.34 12577588056
+497.3442 3337125302
+991.6726 1420557258
+992.6749 763118028
+498.3462 532285213
+993.6787 239161906
+296.147 190395687
+1017.6897 168186952
+482.3247 145772322
+1018.6656 120599518
+499.3493 68176083
+1019.6555 57647644
+994.6801 53549573
+770.964 49250157
+483.3283 36245876
+275.6336 28001849
+771.9675 22666873
+1020.6591 12469103
+783.9721 9839299
+949.6233 8009033
+124.1405 6517662
+950.6274 3674694
+784.9749 3622908
+170.2437 1237313
+
+NAME:C005
+IONMODE:Negative
+RETENTIONTIME:41.72
+RETENTIONINDEX:
+SPECTRUMTYPE:Centroid
+Num Peaks:20
+337.0623 88672453
+359.0443 48435582
+353.0361 37061354
+375.018 29159485
+218.1386 14009249
+417.0027 13822994
+381.0261 13522755
+438.9851 11307111
+396.9999 10317665
+454.9592 9820452
+432.9764 9779399
+338.0654 8770055
+360.0459 5025128
+418.9966 4386311
+512.8989 4072570
+456.9603 3774845
+470.9263 3632486
+572.871 3485486
+440.9796 3364168
+376.0216 2740193
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/filtering/mz_range.msp	Mon Jan 24 11:15:00 2022 +0000
@@ -0,0 +1,132 @@
+NAME: C001
+IONMODE: Negative
+RETENTIONTIME: 38.74
+RETENTIONINDEX: 
+SPECTRUMTYPE: Centroid
+NUM PEAKS: 41
+306.9914	3169316.0
+312.7841	10051801.0
+316.7777	10734168.0
+322.8157	6317648.0
+324.9549	8619910.0
+334.849	4178412.0
+342.8093	3285552.0
+349.9455	2050695.0
+350.9875	6150799.0
+351.941	1965882.0
+366.8281	3253770.0
+370.7418	9765463.0
+372.7383	19374863.0
+382.8218	12815572.0
+384.8177	8311500.0
+392.7685	10913351.0
+413.2664	3965867.0
+426.7772	5431633.0
+428.7834	8554675.0
+434.7287	9943329.0
+436.8161	3705247.0
+440.7322	10603010.0
+442.7401	8271752.0
+450.7016	8762673.0
+460.7076	4528973.0
+462.7862	2123666.0
+484.7242	4273989.0
+486.7743	4886062.0
+488.6825	12267966.0
+492.744	7662344.0
+494.8953	7188793.0
+498.8794	6811405.0
+500.8484	6520691.0
+502.7832	3567833.0
+510.763	4989757.0
+518.7415	4243468.0
+546.6093	7177067.0
+550.6949	6104789.0
+566.5977	5171811.0
+612.6927	2005587.0
+676.6436	1982714.0
+
+NAME: C002
+IONMODE: Negative
+RETENTIONTIME: 520.25
+RETENTIONINDEX: 
+SPECTRUMTYPE: Centroid
+NUM PEAKS: 16
+301.1565	15185412.0
+309.1649	18045974.0
+310.1623	295359836.0
+311.1658	13124727.0
+312.0296	38757284.0
+330.6757	12666597.0
+525.375	1073323842.0
+526.3783	181668883.0
+527.3812	23642795.0
+551.3321	111616808.0
+552.3348	28340614.0
+553.3314	2609936.0
+562.3269	7538206.0
+578.2905	7578406.0
+619.3008	4742103.0
+624.296	11790213.0
+
+NAME: C003
+IONMODE: Negative
+RETENTIONTIME: 483.67
+RETENTIONINDEX: 
+SPECTRUMTYPE: Centroid
+NUM PEAKS: 11
+378.2093	15309961.0
+379.1966	2902366.0
+522.3565	4089569222.0
+523.354	1201714423.0
+549.3267	63300808.0
+576.2749	7386007.0
+577.3074	2354251.0
+617.2778	2323470.0
+625.4543	4040374.0
+796.9808	13576738.0
+797.9841	6368973.0
+
+NAME: C004
+IONMODE: Negative
+RETENTIONTIME: 473.48
+RETENTIONINDEX: 
+SPECTRUMTYPE: Centroid
+NUM PEAKS: 10
+482.3247	145772322.0
+483.3283	36245876.0
+496.34	12577588056.0
+497.3442	3337125302.0
+498.3462	532285213.0
+499.3493	68176083.0
+770.964	49250157.0
+771.9675	22666873.0
+783.9721	9839299.0
+784.9749	3622908.0
+
+NAME: C005
+IONMODE: Negative
+RETENTIONTIME: 41.72
+RETENTIONINDEX: 
+SPECTRUMTYPE: Centroid
+NUM PEAKS: 19
+337.0623	88672453.0
+338.0654	8770055.0
+353.0361	37061354.0
+359.0443	48435582.0
+360.0459	5025128.0
+375.018	29159485.0
+376.0216	2740193.0
+381.0261	13522755.0
+396.9999	10317665.0
+417.0027	13822994.0
+418.9966	4386311.0
+432.9764	9779399.0
+438.9851	11307111.0
+440.9796	3364168.0
+454.9592	9820452.0
+456.9603	3774845.0
+470.9263	3632486.0
+512.8989	4072570.0
+572.871	3485486.0
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/filtering/normalise_intensities.msp	Mon Jan 24 11:15:00 2022 +0000
@@ -0,0 +1,197 @@
+NAME: C001
+IONMODE: Negative
+RETENTIONTIME: 38.74
+RETENTIONINDEX: 
+SPECTRUMTYPE: Centroid
+NUM PEAKS: 57
+138.9121	0.31238713555387226
+148.9337	0.03093306182282099
+175.0641	0.8212827951680125
+186.1095	0.08204982258791635
+196.8658	0.6559932163262051
+198.8647	0.6651371915222478
+200.8848	0.23744477531380626
+206.9034	0.8013745219687375
+216.9205	1.0
+234.0134	0.0782063439003671
+254.8252	0.7282800074828951
+256.8215	0.9622769161885076
+258.8237	0.4763537140000675
+266.8652	0.30071259242448867
+268.8537	0.09477374975849262
+306.9914	0.09719532503059093
+312.7841	0.30826464301376666
+316.7777	0.3291912033047409
+322.8157	0.1937471210787636
+324.9549	0.2643519782137348
+334.849	0.12814188059875428
+342.8093	0.10076000453880525
+349.9455	0.06288990023828728
+350.9875	0.18863026217733847
+351.941	0.06028888882073866
+366.8281	0.09978532677864431
+370.7418	0.29948334289140294
+372.7383	0.5941806076478868
+382.8218	0.3930228749651156
+384.8177	0.2548937827568335
+392.7685	0.33468631642219476
+413.2664	0.1216236349083192
+426.7772	0.1665751647616974
+428.7834	0.262351377128715
+434.7287	0.3049380667756389
+436.8161	0.11363104420121628
+440.7322	0.32516890182380237
+442.7401	0.25367480687076976
+450.7016	0.268730177228078
+460.7076	0.13889274619185038
+462.7862	0.06512774590050817
+484.7242	0.13107299809554185
+486.7743	0.14984380989766222
+488.6825	0.376229111528872
+492.744	0.23498572423077985
+494.8953	0.22046305013846423
+498.8794	0.20888946475832396
+500.8484	0.19997396320500985
+502.7832	0.10941688619559184
+510.763	0.15302388699601627
+518.7415	0.13013699218282798
+546.6093	0.2201034418250904
+550.6949	0.18721924576097057
+566.5977	0.15860704680182902
+612.6927	0.061506545999871196
+676.6436	0.06080508591528995
+800.4451	0.08562814917948829
+
+NAME: C002
+IONMODE: Negative
+RETENTIONTIME: 520.25
+RETENTIONINDEX: 
+SPECTRUMTYPE: Centroid
+NUM PEAKS: 35
+131.1733	0.0018370867419900284
+267.2688	0.005686981655625982
+279.0196	0.0018132970906277511
+289.6491	0.04332185234360982
+301.1565	0.014148024487841387
+309.1649	0.01681316793110052
+310.1623	0.2751824048272655
+311.1658	0.012228114653210135
+312.0296	0.03610959011940033
+330.6757	0.011801281686240601
+525.375	1.0
+526.3783	0.16925822001818533
+527.3812	0.022027643545069038
+551.3321	0.10399173449088443
+552.3348	0.026404532249270578
+553.3314	0.00243163889393971
+562.3269	0.0070232353973927655
+578.2905	0.007060689144739971
+619.3008	0.004418147454139941
+624.296	0.010984767633625341
+813.5403	0.023348169508005768
+814.5336	0.005465242427736922
+955.1171	0.0021642368399005527
+1047.7378	0.1401206216753359
+1048.7399	0.08476366539149328
+1049.7432	0.027900654796038715
+1050.7453	0.006342696149667753
+1069.7158	0.004727978454800783
+1074.1979	0.0031698615710057058
+1075.1968	0.03107427758042852
+1076.2004	0.009706253222314986
+1101.6535	0.0018856526994021623
+1206.3127	0.003483399747305716
+1216.8041	0.004136052723591693
+1217.807	0.0033217691254826334
+
+NAME: C003
+IONMODE: Negative
+RETENTIONTIME: 483.67
+RETENTIONINDEX: 
+SPECTRUMTYPE: Centroid
+NUM PEAKS: 26
+265.2529	0.0027793206039538215
+266.2564	0.00034733340430054716
+279.6362	0.0072989959038771346
+280.6546	0.002163778266032735
+288.6414	0.049436024927126176
+378.2093	0.0037436610481220017
+379.1966	0.0007096996877780199
+522.3565	1.0
+523.354	0.29384865685493955
+549.3267	0.015478600450010918
+576.2749	0.0018060599048590942
+577.3074	0.0005756721239330571
+617.2778	0.0005681454143142512
+625.4543	0.0009879705613649104
+796.9808	0.0033198455052339984
+797.9841	0.0015573701420036753
+809.9883	0.0030801977705220513
+810.9916	0.0016141198844341264
+1043.7028	0.035297475152995465
+1044.7068	0.020362011126266247
+1045.706	0.0068462763386867055
+1046.7131	0.0015906756058816994
+1058.1594	0.00506614361447774
+1059.1626	0.0016160049240511426
+1071.1639	0.0037806052815603864
+1072.1671	0.0012462539997079428
+
+NAME: C004
+IONMODE: Negative
+RETENTIONTIME: 473.48
+RETENTIONINDEX: 
+SPECTRUMTYPE: Centroid
+NUM PEAKS: 24
+124.1405	0.0005181964913289414
+170.2437	9.837442556482469e-05
+275.6336	0.002226328996889195
+296.147	0.015137694616192635
+482.3247	0.011589847063758851
+483.3283	0.00288178272643532
+496.34	1.0
+497.3442	0.2653231515567137
+498.3462	0.04232013408533278
+499.3493	0.005420441717160338
+770.964	0.003915707588825487
+771.9675	0.0018021637295703144
+783.9721	0.0007822882222085712
+784.9749	0.0002880447335267696
+949.6233	0.0006367701791743273
+950.6274	0.00029216205711611197
+991.6726	0.11294353509394345
+992.6749	0.06067284320350776
+993.6787	0.01901492598860482
+994.6801	0.004257539105397458
+1017.6897	0.013371955835345416
+1018.6656	0.00958844553208827
+1019.6555	0.004583362385803359
+1020.6591	0.0009913747329363162
+
+NAME: C005
+IONMODE: Negative
+RETENTIONTIME: 41.72
+RETENTIONINDEX: 
+SPECTRUMTYPE: Centroid
+NUM PEAKS: 20
+218.1386	0.15798873862212878
+337.0623	1.0
+338.0654	0.09890394032518758
+353.0361	0.4179579198062785
+359.0443	0.5462303157441691
+360.0459	0.0566706776455141
+375.018	0.3288449119592981
+376.0216	0.03090241565776916
+381.0261	0.15250232222627247
+396.9999	0.1163570494660839
+417.0027	0.1558882553976487
+418.9966	0.049466444781898614
+432.9764	0.11028677643551825
+438.9851	0.12751548668671656
+440.9796	0.037939268467062706
+454.9592	0.11074974998154162
+456.9603	0.042570661713847026
+470.9263	0.04096521385282981
+512.8989	0.04592824335196862
+572.871	0.03930742730214083
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/filtering/relative_intensity.msp	Mon Jan 24 11:15:00 2022 +0000
@@ -0,0 +1,54 @@
+NAME: C001
+IONMODE: Negative
+RETENTIONTIME: 38.74
+RETENTIONINDEX: 
+SPECTRUMTYPE: Centroid
+NUM PEAKS: 16
+138.9121	0.31238713555387226
+175.0641	0.8212827951680125
+196.8658	0.6559932163262051
+198.8647	0.6651371915222478
+206.9034	0.8013745219687375
+254.8252	0.7282800074828951
+258.8237	0.4763537140000675
+266.8652	0.30071259242448867
+312.7841	0.30826464301376666
+316.7777	0.3291912033047409
+372.7383	0.5941806076478868
+382.8218	0.3930228749651156
+392.7685	0.33468631642219476
+434.7287	0.3049380667756389
+440.7322	0.32516890182380237
+488.6825	0.376229111528872
+
+NAME: C002
+IONMODE: Negative
+RETENTIONTIME: 520.25
+RETENTIONINDEX: 
+SPECTRUMTYPE: Centroid
+NUM PEAKS: 0
+
+NAME: C003
+IONMODE: Negative
+RETENTIONTIME: 483.67
+RETENTIONINDEX: 
+SPECTRUMTYPE: Centroid
+NUM PEAKS: 0
+
+NAME: C004
+IONMODE: Negative
+RETENTIONTIME: 473.48
+RETENTIONINDEX: 
+SPECTRUMTYPE: Centroid
+NUM PEAKS: 0
+
+NAME: C005
+IONMODE: Negative
+RETENTIONTIME: 41.72
+RETENTIONINDEX: 
+SPECTRUMTYPE: Centroid
+NUM PEAKS: 3
+353.0361	0.4179579198062785
+359.0443	0.5462303157441691
+375.018	0.3288449119592981
+