diff msconvert_macros.xml @ 12:5e94d5403baf draft

planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/msconvert commit dade2a055b8b1bd4b3c177638e833eb2a6c65196
author galaxyp
date Mon, 10 Mar 2025 07:48:04 +0000
parents 052798dd73dd
children 9337a492ebab
line wrap: on
line diff
--- a/msconvert_macros.xml	Mon Nov 30 16:00:27 2020 +0000
+++ b/msconvert_macros.xml	Mon Mar 10 07:48:04 2025 +0000
@@ -1,6 +1,7 @@
 <macros>
   <token name="@VERSION@">3.0.20287</token>
   <token name="@FULL_VERSION@">@VERSION@-769529fa4</token>
+  <token name="@PROFILE_VERSION@">24.2</token>
   <xml name="msconvertCommand">
     <command detect_errors="exit_code">
 <![CDATA[
@@ -32,7 +33,7 @@
       #set inputmask = "'"+$basename+"'"
     #end if
 
-    #if $data_processing.precursor_refinement.use_mzrefinement
+    #if $data_processing.precursor_refinement.use_mzrefinement == "true"
       #set input_ident_name = ".".join((os.path.splitext($basename)[0], $data_processing.precursor_refinement.input_ident.ext))
       #set output_refinement_name = os.path.splitext($basename)[0] + '.mzRefinement.tsv'
       ln -s '$data_processing.precursor_refinement.input_ident' '$input_ident_name' &&
@@ -61,11 +62,11 @@
     $general_options.acceptZeroLengthSpectra
     $general_options.ignoreUnknownInstrumentError
 
-    #if $general_options.scan_summing.do_scan_summing:
+    #if $general_options.scan_summing.do_scan_summing == "true":
       --filter "scanSumming precursorTol=$general_options.scan_summing.precursorTol scanTimeTol=$general_options.scan_summing.scanTimeTol ionMobilityTol=$general_options.scan_summing.ionMobilityTol"
     #end if
 
-    #if $general_options.multi_run_output.do_multi_run_output:
+    #if $general_options.multi_run_output.do_multi_run_output == "true":
       #if len($general_options.multi_run_output.run_index_set) > 0
         --runIndexSet "
         #for $index in $general_options.multi_run_output.run_index_set
@@ -81,11 +82,11 @@
     --stripLocationFromSourceFiles
 
     ## DATA PROCESSING FILTERS (NOTE: FOR VENDOR METHOD TO WORK, PEAK PICKING MUST BE THE FIRST FILTER!)
-      #if $data_processing.peak_picking.pick_peaks
+      #if $data_processing.peak_picking.pick_peaks == "true"
         --filter "peakPicking $data_processing.peak_picking.pick_peaks_algorithm msLevel=$data_processing.peak_picking.pick_peaks_ms_levels"
       #end if
 
-      #if $data_processing.precursor_refinement.use_mzrefinement
+      #if $data_processing.precursor_refinement.use_mzrefinement == "true"
       --filter "mzRefiner $input_ident_name
         msLevels=$data_processing.precursor_refinement.precursor_refinement_ms_levels
         thresholdScore=$data_processing.precursor_refinement.thresholdScore
@@ -116,11 +117,11 @@
         --filter "threshold $threshold_entry.threshold_type $threshold_entry.value $threshold_entry.orientation"
       #end for
 
-      #if $data_processing.filter_mz_windows.do_mzwindow_filter
+      #if $data_processing.filter_mz_windows.do_mzwindow_filter == "true"
         --filter "mzWindow [$data_processing.filter_mz_windows.mz_window_from,$data_processing.filter_mz_windows.mz_window_to]"
       #end if
 
-      #if $data_processing.etd_filtering.do_etd_filtering
+      #if $data_processing.etd_filtering.do_etd_filtering == "true"
         --filter "ETDFilter $data_processing.etd_filtering.remove_precursor
           $data_processing.etd_filtering.remove_charge_reduced
           $data_processing.etd_filtering.remove_neutral_loss
@@ -128,7 +129,7 @@
           $data_processing.etd_filtering.matching_tolerance$data_processing.etd_filtering.matching_tolerance_units"
       #end if
 
-      #if $data_processing.ms2denoise.denoise
+      #if $data_processing.ms2denoise.denoise == "true"
         --filter "MS2Denoise $data_processing.ms2denoise.num_peaks $data_processing.ms2denoise.window_width $data_processing.ms2denoise.relax"
       #end if
 
@@ -136,7 +137,7 @@
         --filter "MS2Deisotope"
       #end if
 
-      #if $data_processing.demultiplex.demultiplex_on
+      #if $data_processing.demultiplex.demultiplex_on == "true"
         --filter "demultiplex massError=$data_processing.demultiplex.massError$data_processing.demultiplex.massErrorUnits nnlsMaxIter=$data_processing.demultiplex.nnlsMaxIter nnlsEps=$data_processing.demultiplex.nnlsEps noWeighting=$data_processing.demultiplex.noWeighting demuxBlockExtra=$data_processing.demultiplex.demuxBlockExtra variableFill=$data_processing.demultiplex.variableFill noSumNormalize=$data_processing.demultiplex.noSumNormalize optimization=$data_processing.demultiplex.optimization interpolateRT=$data_processing.demultiplex.interpolateRT minWindowSize=$data_processing.demultiplex.minWindowSize"
       #end if
 
@@ -165,7 +166,7 @@
          --filter "stripIT"
       #end if
 
-      #if $filtering.filter_ms_levels.do_ms_level_filter
+      #if $filtering.filter_ms_levels.do_ms_level_filter == "true"
         --filter "msLevel [$filtering.filter_ms_levels.ms_level_from, $filtering.filter_ms_levels.ms_level_to]"
       #end if
 
@@ -206,7 +207,7 @@
         --numpressSlof
       #end if
 
-      #if $settings.gzip_compression
+      #if $settings.gzip_compression == "true"
         --gzip
       #end if
 
@@ -221,7 +222,7 @@
         && mv 'outputs/${os.path.splitext($basename)[0]}.${output_type}' '${output}'
       #else
         ## make mzML and mzXML extensions lower case (the Galaxy data type is ) otherwise detetion of the file
-        ## TODO this won't be necessay from Galaxy 21.01 https://github.com/galaxyproject/galaxy/pull/10803
+        ## this won't be necessay from Galaxy 21.01 https://github.com/galaxyproject/galaxy/pull/10803
         #if $output_type == 'mzML' or $output_type == 'mzXML'
           && find outputs/ -name "*.$output_type" | xargs -I "FILE" sh -c 'mv FILE outputs/\$(basename FILE .$output_type).#echo str($output_type).lower()
           ## a newline is needed after `#echo ...` therefore the `;'` on the next line
@@ -229,7 +230,7 @@
         #end if
       #end if
 
-      #if $data_processing.precursor_refinement.use_mzrefinement
+      #if $data_processing.precursor_refinement.use_mzrefinement == "true"
         && mv '$output_refinement_name' '$output_refinement';
       #end if
 ]]>
@@ -251,7 +252,10 @@
 
     <section name="data_processing" title="Data Processing Filters">
         <conditional name="peak_picking">
-            <param type="boolean" name="pick_peaks" label="Apply peak picking?" truevalue="true" falsevalue="false" />
+            <param type="select" name="pick_peaks" label="Apply peak picking?">
+                <option value="true">Yes</option>
+                <option value="false" selected="true">No</option>
+            </param>
             <when value="false" />
             <when value="true">
                 <param name="pick_peaks_ms_levels" type="select" label="Peak Peaking - Apply to MS Levels">
@@ -268,7 +272,10 @@
       </conditional>
 
       <conditional name="precursor_refinement">
-        <param type="boolean" name="use_mzrefinement" label="Apply m/z refinement with identification data?" truevalue="true" falsevalue="false" checked="False" />
+        <param type="select" name="use_mzrefinement" label="Apply m/z refinement with identification data?">
+            <option value="true">Yes</option>
+            <option value="false" selected="true">No</option>
+        </param>
         <when value="false"></when>
         <when value="true">
           <param name="input_ident" type="data" format="pepxml,mzid" label="MZRefinery - Input identification data" />
@@ -337,7 +344,10 @@
       </repeat>
 
       <conditional name="filter_mz_windows">
-        <param name="do_mzwindow_filter" type="boolean" truevalue="true" falsevalue="false" label="Filter m/z Window" help="" />
+        <param name="do_mzwindow_filter" type="select" label="Filter m/z Window" help="">
+            <option value="true">Yes</option>
+            <option value="false" selected="true">No</option>
+        </param>
         <when value="false" />
         <when value="true">
           <param name="mz_window_from" type="float" label="Filter m/z From" value="0.0" optional="false" />
@@ -346,7 +356,10 @@
       </conditional>
 
       <conditional name="etd_filtering">
-        <param type="boolean" name="do_etd_filtering" label="Filter out ETD precursor peaks?" truevalue="true" falsevalue="false" />
+        <param type="select" name="do_etd_filtering" label="Filter out ETD precursor peaks?">
+            <option value="true">Yes</option>
+            <option value="false" selected="true">No</option>
+        </param>
         <when value="false" />
         <when value="true">
           <param name="remove_precursor" type="select" label="ETD Remove Unreacted Precursor">
@@ -374,7 +387,10 @@
       </conditional>
 
       <conditional name="ms2denoise">
-        <param name="denoise" type="boolean" label="De-noise MS2 with moving window filter"  />
+        <param name="denoise" type="select" label="De-noise MS2 with moving window filter">
+            <option value="true">Yes</option>
+            <option value="false" selected="true">No</option>
+        </param>
         <when value="true">
           <param name="num_peaks" label="De-noise: Number of peaks in window" value="6" type="integer" />
           <param name="window_width" type="float" label="De-noise: Window width (Daltons)" value="30" />
@@ -386,7 +402,10 @@
       <param name="ms2deisotope" type="boolean" label="Deisotope MS2 using Markey method" help="" truevalue="true" falsevalue="false" />
 
       <conditional name="demultiplex">
-        <param name="demultiplex_on" type="boolean" label="Demultiplex overlapping or MSX spectra" help="Separates overlapping or MSX multiplexed spectra into several demultiplexed spectra by inferring from adjacent multiplexed spectra. Optionally handles variable fill times (for Thermo)" />
+        <param name="demultiplex_on" type="select" label="Demultiplex overlapping or MSX spectra" help="Separates overlapping or MSX multiplexed spectra into several demultiplexed spectra by inferring from adjacent multiplexed spectra. Optionally handles variable fill times (for Thermo)">
+            <option value="true">Yes</option>
+            <option value="false" selected="true">No</option>
+        </param>
         <when value="true">
           <param name="massError" type="float" label="Demultiplex Mass Tolerance" value="10" />
           <param name="massErrorUnits" type="select" label="Units for Demultiplex Mass Tolerance">
@@ -397,13 +416,13 @@
           <param name="nnlsEps" type="float" label="Epsilon value for convergence criterion of NNLS solver" value="1e-10"/>
           <param name="demuxBlockExtra" type="float" label="DemuxBlockExtra" help="Multiplier to expand or reduce the # of spectra considered when demultiplexing. If 0, a fully determined system of equations is built. If > 1.0, the number of rows included in the system is extended DemuxBlockExtra * (# scans in 1 duty cycle)" value="0"/>
           <param name="variableFill" type="boolean" truevalue="true" falsevalue="false" label="Allow fill times to vary for each scan window"/>
-          <param name="noSumNormalize" type="boolean" truevalue="false" falsevalue="true" checked="True" label="Normalize sums" help="After demultiplex solve, scale the sum of the intensities contributed from each of the input windows to match the non-demultiplexed intensity"/>
+          <param name="noSumNormalize" type="boolean" truevalue="true" falsevalue="false" checked="false" label="No sum normalization?" help="After demultiplex solve, scale the sum of the intensities contributed from each of the input windows to match the non-demultiplexed intensity"/>
           <param name="optimization" type="select" label="Optimization" help="Optimizations can be applied when experimental design is known">
             <option value="none" selected="true">None</option>
             <option value="overlap_only">Overlap only</option>
           </param>
           <param name="interpolateRT" type="boolean" truevalue="true" falsevalue="false" checked="True" label="Interpolate scan time"/>
-          <param name="noWeighting" type="boolean" truevalue="false" falsevalue="true" checked="True" label="Weight nearby spectra higher" help="If true, weight the spectra nearby to the input spectrum more heavily in the solve than the outer ones. Weighting is only applied if interpolateRetentionTime is false"/>
+          <param name="noWeighting" type="boolean" truevalue="true" falsevalue="false" checked="false" label="No Weight nearby spectra higher" help="If true, weight the spectra nearby to the input spectrum more heavily in the solve than the outer ones. Weighting is only applied if interpolateRetentionTime is false"/>
           <param name="minWindowSize" type="float" label="Minimum window size" value="0.2"/>
         </when>
         <when value="false" />
@@ -443,7 +462,10 @@
       <param type="boolean" name="strip_it" label="Strip Ion Trap MS1 Scans" />
 
       <conditional name="filter_ms_levels">
-        <param name="do_ms_level_filter" type="boolean" label="Filter MS Levels" />
+        <param name="do_ms_level_filter" type="select" label="Filter MS Levels">
+            <option value="true">Yes</option>
+            <option value="false" selected="true">No</option>
+        </param>
         <when value="false" />
         <when value="true">
           <param name="ms_level_from" type="integer" label="Filter MS Level From" value="0" optional="false" />
@@ -471,7 +493,10 @@
       <param argument="--combineIonMobilitySpectra" type="boolean" truevalue="--combineIonMobilitySpectra" falsevalue="" label="Combine ion mobility spectra" help="When false, each mobility scan is written as a separate spectrum. When true, each retention time point will have a single merged scan. For Bruker TIMS spectra, the ion mobilities will be preserved in a separate binaryDataArray, and for TIMS PASEF MS2s, each precursor will be merged separately." />
 
       <conditional name="scan_summing">
-        <param name="do_scan_summing" type="boolean" truevalue="true" falsevalue="false" label="Sum adjacent scans" help="Sums MS2 sub-scans whose precursors are similar in the m/z, scan time, and/or ion mobility dimensions. It is useful for some Waters DDA data and Bruker PASEF data, where sub-scans should be summed together to increase the SNR" />
+        <param name="do_scan_summing" type="select" label="Sum adjacent scans" help="Sums MS2 sub-scans whose precursors are similar in the m/z, scan time, and/or ion mobility dimensions. It is useful for some Waters DDA data and Bruker PASEF data, where sub-scans should be summed together to increase the SNR">
+            <option value="true">Yes</option>
+            <option value="false" selected="true">No</option>
+        </param>
         <when value="false" />
         <when value="true">
           <param name="precursorTol" type="float" label="Precursor m/z tolerance" value="0.05" min="0" optional="true" help="Spectra with precursor m/z values with a difference less than this tolerance are summed together." />
@@ -486,7 +511,10 @@
       <param argument="--ignoreUnknownInstrumentError" type="boolean" truevalue="--ignoreUnknownInstrumentError" falsevalue=""  label="Ignore unknown instrument error" help="If true, if an instrument cannot be determined from a vendor file, it will not be an error" />
 
       <conditional name="multi_run_output">
-        <param name="do_multi_run_output" type="boolean" truevalue="true" falsevalue="false" label="Output multiple runs per file" help="Some input types can store multiple runs (samples) in a single file (e.g. WIFF). Each run must be written to a separate output file, so check this option if you want to output all runs for a file (each file will create a dataset collection)" />
+        <param name="do_multi_run_output" type="select" label="Output multiple runs per file" help="Some input types can store multiple runs (samples) in a single file (e.g. WIFF). Each run must be written to a separate output file, so check this option if you want to output all runs for a file (each file will create a dataset collection)">
+            <option value="true">Yes</option>
+            <option value="false" selected="true">No</option>
+        </param>
         <when value="false">
           <param argument="--runIndexSet" type="integer" label="Select a single run for multi-run sources" value="0" min="0" help="For multi-run sources (e.g. WIFF), select only the specified run index (first run is index 0)" />
         </when>
@@ -524,7 +552,7 @@
   <xml name="msconvertOutput">
     <outputs>
       <data format="mzml" name="output" label="${($input.name[:-4] if $input.name.endswith('.tar') else $input.name).rsplit('.',1)[0]}.${output_type}" >
-        <filter>general_options['multi_run_output']['do_multi_run_output'] == False</filter>
+        <filter>general_options['multi_run_output']['do_multi_run_output'] == "false"</filter>
         <change_format>
           <when input="output_type" value="mz5" format="mz5" />
           <when input="output_type" value="mzXML" format="mzxml" />
@@ -533,10 +561,10 @@
         </change_format>
       </data>
       <data format="tsv" name="output_refinement" label="${($input.name[:-4] if $input.name.endswith('.tar') else $input.name).rsplit('.',1)[0]}.mzRefinement.tsv">
-        <filter>data_processing['precursor_refinement']['use_mzrefinement'] == True</filter>
+        <filter>data_processing['precursor_refinement']['use_mzrefinement'] == "true"</filter>
       </data>
-      <collection name="multi_run_output_list" type="list" label="${($input.name[:-4] if $input.name.endswith('.tar') else $input.name).rsplit('.',1)[0]}.${output_type}">
-        <filter>general_options['multi_run_output']['do_multi_run_output'] == True</filter>
+      <collection name="multi_run_output_list" type="list" label="${($input.name[:-4] if $input.name.endswith('.tar') else $input.name).rsplit('.',1)[0]}.${output_type} collection">
+        <filter>general_options['multi_run_output']['do_multi_run_output'] == "true"</filter>
         <discover_datasets pattern="__name_and_ext__" directory="outputs" />
       </collection>
     </outputs>
@@ -544,100 +572,72 @@
 
 
   <xml name="msconvert_tests">
-    <test>
-      <param name="input" value="small.mzML" ftype="mzml" />
-      <param name="license_agreement" value="true" />
-      <param name="output_type" value="mzML" />
-      <param name="pick_peaks" value="true" />
-      <param name="pick_peaks_algorithm" value="cwt" />
-      <param name="pick_peaks_ms_levels" value="1-" />
-      <output name="output" file="small-peakpicking-cwt-allMS.mzML" ftype="mzml" lines_diff="8" />
-    </test>
-    <test>
+    <test expect_num_outputs="1">
       <param name="input" value="small.RAW" ftype="thermo.raw" />
       <param name="license_agreement" value="true" />
       <param name="output_type" value="mzML" />
-      <param name="pick_peaks" value="true" />
-      <param name="pick_peaks_algorithm" value="vendor" />
-      <param name="pick_peaks_ms_levels" value="1-" />
+      <param name="data_processing|peak_picking|pick_peaks" value="true" />
+      <param name="data_processing|peak_picking|pick_peaks_algorithm" value="vendor" />
+      <param name="data_processing|peak_picking|pick_peaks_ms_levels" value="1-" />
       <output name="output" file="small-peakpicking-vendor-allMS.mzML" ftype="mzml" lines_diff="4" />
     </test>
-    <test>
+    <test expect_num_outputs="1">
       <param name="input" value="ThyroglobMRM000003.d.tar" ftype="brukertdf.d.tar" />
       <param name="license_agreement" value="true" />
       <param name="output_type" value="mzML" />
-      <param name="combineIonMobilitySpectra" value="true" />
-      <param name="do_scan_summing" value="true" />
+      <param name="general_options|combineIonMobilitySpectra" value="true" />
+      <param name="general_options|scan_summing|do_scan_summing" value="true" />
       <output name="output" file="ThyroglobMRM000003.mzML" ftype="mzml" lines_diff="4" />
     </test>
-    <test>
+    <test expect_num_outputs="1">
       <param name="input" value="MassLynxTest.raw.tar" ftype="watersmasslynx.raw.tar" />
       <param name="license_agreement" value="true" />
       <param name="output_type" value="mzML" />
       <output name="output" file="MassLynxTest.mzML" ftype="mzml" lines_diff="4" />
     </test>
-    <test>
+    <test expect_num_outputs="1">
       <param name="input" value="AgilentMassHunterTest.d.tar" ftype="agilentmasshunter.d.tar" />
       <param name="license_agreement" value="true" />
       <param name="output_type" value="mzXML" />
       <output name="output" file="AgilentMassHunterTest.mzXML" ftype="mzxml" lines_diff="4" />
     </test>
-    <test>
+    <test expect_num_outputs="1">
       <param name="input" value="BrukerBafTest.d.tar" ftype="brukerbaf.d.tar" />
       <param name="license_agreement" value="true" />
       <param name="output_type" value="mzML" />
-      <param name="pick_peaks" value="true" />
-      <param name="pick_peaks_algorithm" value="vendor" />
-      <param name="pick_peaks_ms_levels" value="1-" />
+      <param name="data_processing|peak_picking|pick_peaks" value="true" />
+      <param name="data_processing|peak_picking|pick_peaks_algorithm" value="vendor" />
+      <param name="data_processing|peak_picking|pick_peaks_ms_levels" value="1-" />
       <output name="output" file="BrukerBafTest.mzML" ftype="mzml" lines_diff="4" />
     </test>
-    <test>
-      <param name="input" value="SciexTest.wiff.tar" ftype="wiff.tar" />
-      <param name="license_agreement" value="true" />
-      <param name="output_type" value="mzML" />
-      <param name="do_multi_run_output" value="false" />
-      <param name="runIndexSet" value="0" />
-      <output name="output" file="SciexTest-HPINalone.mzML" ftype="mzml" lines_diff="4" />
-    </test>
-    <test>
+    <test expect_num_outputs="1">
       <param name="input" value="SciexTest.wiff.tar" ftype="wiff.tar" />
       <param name="license_agreement" value="true" />
       <param name="output_type" value="mzXML" />
-      <param name="do_multi_run_output" value="false" />
-      <param name="runIndexSet" value="0" />
-      <param name="indices_0|from" value="0" />
-      <param name="indices_0|to" value="499" />
-      <param name="srmAsSpectra" value="true" />
-      <output name="output" file="SciexTest-HPINalone-srmAsSpectra.mzXML" ftype="mzxml" lines_diff="4" />
-    </test>
-    <test>
-      <param name="input" value="SciexTest.wiff.tar" ftype="wiff.tar" />
-      <param name="license_agreement" value="true" />
-      <param name="output_type" value="mzXML" />
-      <param name="do_multi_run_output" value="false" />
-      <param name="runIndexSet" value="1" />
-      <param name="indices_0|from" value="0" />
-      <param name="indices_0|to" value="499" />
-      <param name="srmAsSpectra" value="true" />
+      <param name="general_options|multi_run_output|do_multi_run_output" value="false" />
+      <param name="general_options|multi_run_output|runIndexSet" value="1" />
+      <param name="filtering|indices_0|from" value="0" />
+      <param name="filtering|indices_0|to" value="499" />
+      <param name="general_options|srmAsSpectra" value="true" />
       <output name="output" file="SciexTest-HPINalone-NE-srmAsSpectra.mzXML" ftype="mzxml" lines_diff="4" />
     </test>
-    <test>
+    <test expect_num_outputs="1">
       <param name="input" value="SciexTest.wiff.tar" ftype="wiff.tar" />
       <param name="license_agreement" value="true" />
       <param name="output_type" value="mzML" />
-      <param name="do_multi_run_output" value="true" />
-      <param name="run_index_set_0|from" value="0" />
-      <param name="run_index_set_0|to" value="1" />
+      <param name="general_options|multi_run_output|do_multi_run_output" value="true" />
+      <param name="general_options|multi_run_output|run_index_set_0|from" value="0" />
+      <param name="general_options|multi_run_output|run_index_set_0|to" value="1" />
       <output_collection name="multi_run_output_list" type="list">
         <element name="SciexTest-HPINalone" file="SciexTest-HPINalone.mzML" ftype="mzml" lines_diff="4" />
         <element name="SciexTest-HPINalone+NE" file="SciexTest-HPINalone-NE.mzML" ftype="mzml" lines_diff="4" />
       </output_collection>
     </test>
-    <test>
+    <test expect_num_outputs="1">
       <param name="input" value="SciexTest.wiff.tar" ftype="wiff.tar" />
       <param name="license_agreement" value="true" />
       <param name="output_type" value="mzML" />
-      <param name="do_multi_run_output" value="true" />
+      <param name="general_options|multi_run_output|do_multi_run_output" value="true" />
       <output_collection name="multi_run_output_list" type="list">
         <element name="SciexTest-HPINalone" file="SciexTest-HPINalone.mzML" ftype="mzml" lines_diff="4" />
         <element name="SciexTest-HPINalone+NE" file="SciexTest-HPINalone-NE.mzML" ftype="mzml" lines_diff="4" />
@@ -645,38 +645,21 @@
     </test>
 
     <!-- this data file only has profile MS1, so the result is the same -->
-    <test>
-      <param name="input" value="small.mzML" ftype="mzml" />
-      <param name="license_agreement" value="true" />
-      <param name="output_type" value="mzML" />
-      <param name="pick_peaks" value="true" />
-      <param name="pick_peaks_algorithm" value="cwt" />
-      <param name="pick_peaks_ms_levels" value="1" />
-      <output name="output" file="small-peakpicking-cwt-allMS.mzML" ftype="mzml" lines_diff="8" />
-    </test>
-    <test>
+    <test expect_num_outputs="1">
       <param name="input" value="small-peakpicking-cwt-allMS.mzML" ftype="mzml" />
       <param name="license_agreement" value="true" />
       <param name="output_type" value="mz5" />
-      <param name="mz_encoding" value="64" />
-      <param name="intensity_encoding" value="64" />
+      <param name="settings|mz_encoding" value="64" />
+      <param name="settings|intensity_encoding" value="64" />
       <output name="output" file="small-zlib-64.mz5" compare="sim_size" ftype="mz5" delta="150000" />
     </test>
-    <test>
-      <param name="input" value="small-peakpicking-cwt-allMS.mzML" ftype="mzml" />
-      <param name="license_agreement" value="true" />
-      <param name="output_type" value="mzXML" />
-      <param name="mz_encoding" value="32" />
-      <param name="intensity_encoding" value="32" />
-      <output name="output" file="small-zlib-32.mzXML" ftype="mzxml" lines_diff="6" />
-    </test>
     <!-- TODO: how to test gzipped output?
     <test>
       <param name="input" value="small-peakpicking-cwt-allMS.mzML" />
       <param name="output_type" value="mzXML" />
       <param name="mz_encoding" value="32" />
       <param name="intensity_encoding" value="32" />
-      <param name="binary_compression" value="false" />
+      <param name="settings|binary_compression" value="false" />
       <param name="gzip_compression" value="true" />
       <output name="output" file="small-off-32.mzXML.gz" compare="sim_size" delta="100" />
     </test>
@@ -685,233 +668,129 @@
       <param name="output_type" value="mzML" />
       <param name="mz_encoding" value="32" />
       <param name="intensity_encoding" value="32" />
-      <param name="binary_compression" value="false" />
+      <param name="settings|binary_compression" value="false" />
       <param name="gzip_compression" value="true" />
       <output name="output" file="small-off-32.mzML.gz" compare="sim_size" delta="100" />
     </test>-->
-
-    <test>
-      <param name="input" value="small-peakpicking-cwt-allMS.mzML" ftype="mzml" />
-      <param name="license_agreement" value="true" />
-      <param name="output_type" value="mzML" />
-      <param name="binary_compression" value="numpressLinearPic" />
-      <output name="output" file="small-numpressLP.mzML" ftype="mzml" lines_diff="114" />
-    </test>
-
-    <test>
-      <param name="input" value="small-peakpicking-cwt-allMS.mzML" ftype="mzml" />
-      <param name="license_agreement" value="true" />
-      <param name="output_type" value="mzML" />
-      <param name="binary_compression" value="numpressLinearSlof" />
-      <output name="output" file="small-numpressLS.mzML" ftype="mzml" lines_diff="114" />
-    </test>
-
-    <test>
-      <param name="input" value="small-peakpicking-cwt-allMS.mzML" ftype="mzml" />
-      <param name="license_agreement" value="true" />
-      <param name="output_type" value="mzML" />
-      <param name="binary_compression" value="numpressLinear" />
-      <output name="output" file="small-numpressL.mzML" ftype="mzml" lines_diff="114" />
-    </test>
-
-    <test>
-      <param name="input" value="small-peakpicking-cwt-allMS.mzML" ftype="mzml" />
-      <param name="license_agreement" value="true" />
-      <param name="output_type" value="mzML" />
-      <param name="binary_compression" value="numpressPic" />
-      <output name="output" file="small-numpressP.mzML" ftype="mzml" lines_diff="114" />
-    </test>
-
-    <test>
-      <param name="input" value="small-peakpicking-cwt-allMS.mzML" ftype="mzml" />
-      <param name="license_agreement" value="true" />
-      <param name="output_type" value="mzML" />
-      <param name="binary_compression" value="numpressSlof" />
-      <output name="output" file="small-numpressS.mzML" ftype="mzml" lines_diff="114" />
-    </test>
-
-    <test>
+    <test expect_num_outputs="2">
       <param name="input" value="Rpal_01.mz5" ftype="mz5" />
       <param name="license_agreement" value="true" />
       <param name="output_type" value="mzML" />
-      <param name="binary_compression" value="numpressLinearPic" />
-      <param name="use_mzrefinement" value="true" />
-      <param name="input_ident" value="Rpal_01.pepXML" />
-      <param name="thresholdScore" value="mvh" />
-      <param name="thresholdValue" value="40-" />
+      <param name="settings|binary_compression" value="numpressLinearPic" />
+      <param name="data_processing|precursor_refinement|use_mzrefinement" value="true" />
+      <param name="data_processing|precursor_refinement|input_ident" value="Rpal_01.pepXML" />
+      <param name="data_processing|precursor_refinement|thresholdScore" value="mvh" />
+      <param name="data_processing|precursor_refinement|thresholdValue" value="40-" />
       <output name="output" file="Rpal_01-mzRefinement.mzML" ftype="mzml" compare="sim_size" delta="0" />
       <output name="output_refinement" file="Rpal_01.pepXML.mzRefinement.tsv" ftype="tsv" />
     </test>
-
-    <test>
-      <param name="input" value="small-peakpicking-cwt-allMS.mzML" ftype="mzml" />
-      <param name="license_agreement" value="true" />
-      <param name="output_type" value="mzML" />
-      <param name="binary_compression" value="numpressLinearPic" />
-      <param name="charge_state_calculation_method" value="predictor" />
-      <param name="predictor_overrideExistingCharge" value="true" />
-      <param name="minMultipleCharge" value="2" />
-      <param name="maxMultipleCharge" value="5" />
-      <param name="singleChargeFractionTIC" value="0.95" />
-      <param name="maxKnownCharge" value="8" />
-      <output name="output" file="small-chargeStatePredictor.mzML" ftype="mzml" lines_diff="114" />
-    </test>
-    <test>
-      <param name="input" value="small-peakpicking-cwt-allMS.mzML" ftype="mzml" />
+    <test expect_num_outputs="1">
+      <param name="input" value="small.mzML" ftype="mzml" />
       <param name="license_agreement" value="true" />
       <param name="output_type" value="mzML" />
-      <param name="binary_compression" value="numpressLinearPic" />
-      <param name="charge_state_calculation_method" value="turbocharger" />
-      <param name="minCharge" value="1" />
-      <param name="maxCharge" value="5" />
-      <param name="precursorsBefore" value="1" />
-      <param name="precursorsAfter" value="1" />
-      <param name="halfIsoWidth" value="1.5" />
-      <param name="defaultMinCharge" value="1" />
-      <param name="defaultMaxCharge" value="5" />
-      <output name="output" file="small-turbocharger.mzML" ftype="mzml" lines_diff="114" />
+
+      <param name="data_processing|peak_picking|pick_peaks" value="true" />
+      <param name="data_processing|peak_picking|pick_peaks_algorithm" value="cwt" />
+      <param name="data_processing|peak_picking|pick_peaks_ms_levels" value="1" />
+
+      <param name="data_processing|thresholds_0|threshold_type" value="count" />
+      <param name="data_processing|thresholds_0|value" value="100" />
+      <param name="data_processing|thresholds_0|orientation" value="most-intense" />
+      <param name="data_processing|thresholds_1|threshold_type" value="absolute" />
+      <param name="data_processing|thresholds_1|value" value="1" />
+      <param name="data_processing|thresholds_1|orientation" value="most-intense" />
+
+      <param name="data_processing|filter_mz_windows|do_mzwindow_filter" value="true" />
+      <param name="data_processing|filter_mz_windows|mz_window_from" value="420" />
+      <param name="data_processing|filter_mz_windows|mz_window_to" value="840" />
+
+      <param name="filtering|indices_0|from" value="0" />
+      <param name="filtering|indices_0|to" value="20" />
+      <param name="filtering|indices_1|from" value="41" />
+      <param name="filtering|indices_1|to" value="41" />
+
+      <param name="filtering|filter_ms_levels|do_ms_level_filter" value="true" />
+      <param name="filtering|filter_ms_levels|ms_level_from" value="2" />
+      <param name="filtering|filter_ms_levels|ms_level_to" value="2" />
+
+      <param name="filtering|scan_numbers_0|from" value="5" />
+      <param name="filtering|scan_numbers_0|to" value="25" />
+      <param name="filtering|scan_numbers_1|from" value="40" />
+      <param name="filtering|scan_numbers_1|to" value="40" />
+
+      <param name="data_processing|ms2deisotope" value="true" />
+
+      <param name="data_processing|ms2denoise|denoise" value="true" />
+      <param name="data_processing|ms2denoise|num_peaks" value="10" />
+      <param name="data_processing|ms2denoise|window_width" value="40" />
+      <param name="data_processing|ms2denoise|relax" value="false" />
+
+      <param name="data_processing|charge_state_calculation|charge_state_calculation_method" value="predictor" />
+      <param name="data_processing|charge_state_calculation|predictor_overrideExistingCharge" value="true" />
+      <param name="data_processing|charge_state_calculation|minMultipleCharge" value="2" />
+      <param name="data_processing|charge_state_calculation|maxMultipleCharge" value="5" />
+      <param name="data_processing|charge_state_calculation|singleChargeFractionTIC" value="0.95" />
+      <param name="data_processing|charge_state_calculation|maxKnownCharge" value="8" />
+
+      <param name="settings|mz_encoding" value="32" />
+      <param name="settings|intensity_encoding" value="32" />
+
+      <param name="settings|binary_compression" value="numpressLinearPic" />
+      <output name="output" file="small-composite-test.mzML" ftype="mzml" />
     </test>
-    <test>
-      <param name="input" value="D100930_yeast_SCX10S_rak_ft8E_pc_01.mz5" ftype="mz5" />
-      <param name="license_agreement" value="true" />
-      <param name="output_type" value="mzML" />
-      <param name="do_etd_filtering" value="true" />
-      <param name="remove_precursor" value="true" />
-      <param name="remove_charge_reduced" value="true" />
-      <param name="remove_neutral_loss" value="false" />
-      <param name="blanket_removal" value="false" />
-      <param name="matching_tolerance" value="50" />
-      <param name="matching_tolerance_units" value="ppm" />
-      <param name="binary_compression" value="numpressLinearPic" />
-      <output name="output" file="D100930_yeast_SCX10S_rak_ft8E_pc_01-etdfilter.mzML" ftype="mzml" />
-    </test>
-    <test>
+    <test expect_num_outputs="1">
       <param name="input" value="small-peakpicking-cwt-allMS.mzML" ftype="mzml" />
       <param name="license_agreement" value="true" />
       <param name="output_type" value="mzML" />
-      <param name="thresholds_0|threshold_type" value="count" />
-      <param name="thresholds_0|value" value="100" />
-      <param name="thresholds_0|orientation" value="most-intense" />
-      <param name="thresholds_1|threshold_type" value="absolute" />
-      <param name="thresholds_1|value" value="1" />
-      <param name="thresholds_1|orientation" value="most-intense" />
-      <param name="binary_compression" value="numpressLinearPic" />
-      <output name="output" file="small-threshold.mzML" lines_diff="114" ftype="mzml" />
-    </test>
-    <test>
-      <param name="input" value="small-peakpicking-cwt-allMS.mzML" ftype="mzml" />
-      <param name="license_agreement" value="true" />
-      <param name="output_type" value="mzML" />
-      <param name="do_mzwindow_filter" value="true" />
-      <param name="mz_window_from" value="420" />
-      <param name="mz_window_to" value="840" />
-      <param name="binary_compression" value="numpressLinearPic" />
-      <output name="output" file="small-mzWindow.mzML" lines_diff="114" ftype="mzml" />
+      <param name="settings|binary_compression" value="numpressLinearPic" />
+      <param name="data_processing|charge_state_calculation|charge_state_calculation_method" value="turbocharger" />
+      <param name="data_processing|charge_state_calculation|minCharge" value="1" />
+      <param name="data_processing|charge_state_calculation|maxCharge" value="5" />
+      <param name="data_processing|charge_state_calculation|precursorsBefore" value="1" />
+      <param name="data_processing|charge_state_calculation|precursorsAfter" value="1" />
+      <param name="data_processing|charge_state_calculation|halfIsoWidth" value="1.5" />
+      <param name="data_processing|charge_state_calculation|defaultMinCharge" value="1" />
+      <param name="data_processing|charge_state_calculation|defaultMaxCharge" value="5" />
+      <param name="filtering|strip_it" value="true" />
+      <output name="output" file="small-composite-test-2.mzML" ftype="mzml" />
     </test>
-    <test>
-      <param name="input" value="small-peakpicking-cwt-allMS.mzML" ftype="mzml" />
-      <param name="license_agreement" value="true" />
-      <param name="output_type" value="mzML" />
-      <param name="denoise" value="true" />
-      <param name="num_peaks" value="10" />
-      <param name="window_width" value="40" />
-      <param name="relax" value="false" />
-      <param name="binary_compression" value="numpressLinearPic" />
-      <output name="output" file="small-denoise.mzML" lines_diff="114" ftype="mzml" />
-    </test>
-    <test>
-      <param name="input" value="small-peakpicking-cwt-allMS.mzML" ftype="mzml" />
-      <param name="license_agreement" value="true" />
-      <param name="output_type" value="mzML" />
-      <param name="ms2deisotope" value="true" />
-      <param name="binary_compression" value="numpressLinearPic" />
-      <output name="output" file="small-deisotope.mzML" lines_diff="114" ftype="mzml" />
-    </test>
-    <test>
-      <param name="input" value="small-peakpicking-cwt-allMS.mzML" ftype="mzml" />
-      <param name="license_agreement" value="true" />
-      <param name="output_type" value="mzML" />
-      <param name="activation" value="CID" />
-      <param name="binary_compression" value="numpressLinearPic" />
-      <output name="output" file="small-activation.mzML" lines_diff="114" ftype="mzml" />
-    </test>
-    <test>
+    <test expect_num_outputs="1">
       <param name="input" value="small-peakpicking-cwt-allMS.mzML" ftype="mzml" />
       <param name="license_agreement" value="true" />
       <param name="output_type" value="mzML" />
-      <param name="indices_0|from" value="2" />
-      <param name="indices_0|to" value="4" />
-      <param name="indices_1|from" value="10" />
-      <param name="indices_1|to" value="10" />
-      <param name="indices_2|from" value="13" />
-      <param name="indices_2|to" value="15" />
-      <param name="binary_compression" value="numpressLinearPic" />
-      <output name="output" file="small-index-filter.mzML" lines_diff="32" ftype="mzml" />
+      <param name="filtering|activation" value="CID" />
+      <param name="settings|binary_compression" value="numpressLinearPic" />
+      <output name="output" file="small-activation.mzML" lines_diff="114" ftype="mzml" />
     </test>
-    <test>
-      <param name="input" value="small-peakpicking-cwt-allMS.mzML" ftype="mzml" />
-      <param name="license_agreement" value="true" />
-      <param name="output_type" value="mzML" />
-      <param name="strip_it" value="true" />
-      <param name="binary_compression" value="numpressLinearPic" />
-      <output name="output" file="small-strip-it.mzML" lines_diff="100" ftype="mzml" />
-    </test>
-    <test>
+    <test expect_num_outputs="1">
       <param name="input" value="small-peakpicking-cwt-allMS.mzML" ftype="mzml" />
       <param name="license_agreement" value="true" />
       <param name="output_type" value="mzML" />
-      <param name="do_ms_level_filter" value="true" />
-      <param name="ms_level_from" value="2" />
-      <param name="ms_level_to" value="2" />
-      <param name="binary_compression" value="numpressLinearPic" />
-      <output name="output" file="small-ms-level-filter.mzML" lines_diff="86" ftype="mzml" />
-    </test>
-    <test>
-      <param name="input" value="small-peakpicking-cwt-allMS.mzML" ftype="mzml" />
-      <param name="license_agreement" value="true" />
-      <param name="output_type" value="mzML" />
-      <param name="polarity" value="positive" />
-      <param name="binary_compression" value="numpressLinearPic" />
+      <param name="filtering|polarity" value="positive" />
+      <param name="settings|binary_compression" value="numpressLinearPic" />
       <output name="output" file="small-polarity-filter.mzML" lines_diff="114" ftype="mzml" />
     </test>
-    <test>
-      <param name="input" value="small-peakpicking-cwt-allMS.mzML" ftype="mzml" />
+    <test expect_num_outputs="1">
+      <param name="input" value="D100930_yeast_SCX10S_rak_ft8E_pc_01.mz5" ftype="mz5" />
       <param name="license_agreement" value="true" />
       <param name="output_type" value="mzML" />
-      <param name="analyzer" value="IT" />
-      <param name="binary_compression" value="numpressLinearPic" />
-      <output name="output" file="small-analyzer-filter.mzML" lines_diff="100" ftype="mzml" />
-    </test>
-    <test>
-      <param name="input" value="small-peakpicking-cwt-allMS.mzML" ftype="mzml" />
-      <param name="license_agreement" value="true" />
-      <param name="output_type" value="mzML" />
-      <param name="scan_numbers_0|from" value="3" />
-      <param name="scan_numbers_0|to" value="5" />
-      <param name="scan_numbers_1|from" value="11" />
-      <param name="scan_numbers_1|to" value="11" />
-      <param name="scan_numbers_2|from" value="14" />
-      <param name="scan_numbers_2|to" value="16" />
-      <param name="binary_compression" value="numpressLinearPic" />
-      <output name="output" file="small-index-filter.mzML" lines_diff="86" ftype="mzml"/> <!-- the scan numbers here produce the same output as the index test above -->
+      <param name="data_processing|etd_filtering|do_etd_filtering" value="true" />
+      <param name="data_processing|etd_filtering|remove_precursor" value="true" />
+      <param name="data_processing|etd_filtering|remove_charge_reduced" value="true" />
+      <param name="data_processing|etd_filtering|remove_neutral_loss" value="false" />
+      <param name="data_processing|etd_filtering|blanket_removal" value="false" />
+      <param name="data_processing|etd_filtering|matching_tolerance" value="50" />
+      <param name="data_processing|etd_filtering|matching_tolerance_units" value="PPM" />
+      <param name="settings|binary_compression" value="numpressLinearPic" />
+      <output name="output" file="D100930_yeast_SCX10S_rak_ft8E_pc_01-etdfilter.mzML" ftype="mzml" />
     </test>
     <!--<test>
       <param name="input" value="small.mzML" />
       <param name="output_type" value="mzML" />
-      <param name="binary_compression" value="numpressLinearPic" />
+      <param name="settings|binary_compression" value="numpressLinearPic" />
       <output name="output" file="small-deisotope-poisson.mzML" />
     </test>-->
   </xml>
-  <xml name="msconvert_help">
-**What it does**
-
-Converts mass spectrometry (MS) files: proprietary MS vendor formats can be converted to open MS formats (mzML, mzXML, MGF, MS1/MS2) and open formats can be converted to other open formats. Additional options such as filtering and/or precursor recalculation are available.
-
-You can view the original documentation here_.
-
-.. _here: http://proteowizard.sourceforge.net/tools/msconvert.html
-  </xml>
-
   <xml name="citations">
     <citations>
         <citation type="doi">10.1093/bioinformatics/btn323</citation>