changeset 16:545054b15d7c draft

planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/msconvert commit 2cce57c0b3173029ce8fb3e7b4607b3913581dfd
author galaxyp
date Sun, 24 Mar 2024 11:13:43 +0000
parents 6153e8ada1ee
children ab6c14374bc0
files README.md msconvert.xml msconvert_macros.xml
diffstat 3 files changed, 114 insertions(+), 84 deletions(-) [+]
line wrap: on
line diff
--- a/README.md	Mon Nov 30 16:01:10 2020 +0000
+++ b/README.md	Sun Mar 24 11:13:43 2024 +0000
@@ -11,7 +11,10 @@
 
 msconvert from ProteoWizard.
 
-Note: This requires manual installation of ProteoWizard, and may require a Windows environment.
+Convert and/or filter mass spectrometry files using the offical Docker container.
+Using the Docker container requires agreeing to each vendor's license (for using their proprietary data access libraries): http://www.proteowizard.org/licenses.html
+
+Main web site: http://www.proteowizard.org
 
 See:
 
@@ -19,8 +22,9 @@
 * <http://proteowizard.sourceforge.net/tools/msconvert.html>
 
 
-Installing
-----------
+#### Note about installing older versions:
+
+Version 0.3.0 (2016) and earlier require manual installation of ProteoWizard, and may require a Windows environment.
 
 Due to potential difficulties installing ProteoWizard with vendor library support, tools for interacting with vendor types are seperated out into their own wrappers. Galaxy is generally deployed under Linux, but vendor support in ProteoWizard requires .NET 4.0. There are at least two ways to get this to work:
 
--- a/msconvert.xml	Mon Nov 30 16:01:10 2020 +0000
+++ b/msconvert.xml	Sun Mar 24 11:13:43 2024 +0000
@@ -1,25 +1,34 @@
-<tool id="msconvert" name="msconvert" version="@VERSION@.2">
-  <description>Convert and/or filter mass spectrometry files</description>
-  <macros>
-      <import>msconvert_macros.xml</import>
-  </macros>
-  <requirements>
-      <container type="docker">chambm/pwiz-skyline-i-agree-to-the-vendor-licenses:@FULL_VERSION@</container>
-  </requirements>
-  <stdio>
-    <regex match="Error writing run" source="stderr" level="fatal" description="Could not convert. Check stderr." />
-  </stdio>
-  <expand macro="msconvertCommand" />
-  <inputs>
-      <param format="mzml,mzxml,mz5,mgf,ms2,thermo.raw,raw,wiff,wiff.tar,agilentbrukeryep.d.tar,agilentmasshunter.d.tar,brukerbaf.d.tar,brukertdf.d.tar,watersmasslynx.raw.tar" name="input" type="data" label="Input unrefined MS data" />
-      <expand macro="msconvertInputParameters" />
-  </inputs>
-  <expand macro="msconvertOutput" />
-  <tests>
-      <expand macro="msconvert_tests" />
-  </tests>
-  <help>
-      <expand macro="msconvert_help" />
-  </help>
-  <expand macro="citations" />
+<tool id="msconvert" name="msconvert" version="@VERSION@.3">
+    <description>Convert and/or filter mass spectrometry files</description>
+    <macros>
+        <import>msconvert_macros.xml</import>
+    </macros>
+    <xrefs>
+        <xref type="bio.tools">msconvert</xref>
+    </xrefs>
+    <requirements>
+        <container type="docker">chambm/pwiz-skyline-i-agree-to-the-vendor-licenses:@FULL_VERSION@</container>
+    </requirements>
+    <stdio>
+        <regex match="Error writing run" source="stderr" level="fatal" description="Could not convert. Check stderr." />
+    </stdio>
+    <expand macro="msconvertCommand" />
+    <inputs>
+        <param format="mzml,mzxml,mz5,mgf,ms2,thermo.raw,raw,wiff,wiff.tar,agilentbrukeryep.d.tar,agilentmasshunter.d.tar,brukerbaf.d.tar,brukertdf.d.tar,watersmasslynx.raw.tar" name="input" type="data" label="Input unrefined MS data" />
+        <expand macro="msconvertInputParameters" />
+    </inputs>
+    <expand macro="msconvertOutput" />
+    <tests>
+        <expand macro="msconvert_tests" />
+    </tests>
+    <help><![CDATA[
+**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
+]]></help>
+    <expand macro="citations" />
 </tool>
--- a/msconvert_macros.xml	Mon Nov 30 16:01:10 2020 +0000
+++ b/msconvert_macros.xml	Sun Mar 24 11:13:43 2024 +0000
@@ -221,7 +221,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
@@ -251,7 +251,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">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 +271,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 +343,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">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 +355,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">No</option>
+        </param>
         <when value="false" />
         <when value="true">
           <param name="remove_precursor" type="select" label="ETD Remove Unreacted Precursor">
@@ -374,7 +386,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">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 +401,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">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 +415,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 +461,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">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 +492,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">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 +510,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">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>
@@ -535,7 +562,7 @@
       <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>
       </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}">
+      <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>
@@ -544,7 +571,7 @@
 
 
   <xml name="msconvert_tests">
-    <test>
+    <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" />
@@ -553,7 +580,7 @@
       <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" />
@@ -562,7 +589,7 @@
       <param name="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" />
@@ -570,19 +597,19 @@
       <param name="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" />
@@ -591,7 +618,7 @@
       <param name="pick_peaks_ms_levels" value="1-" />
       <output name="output" file="BrukerBafTest.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="mzML" />
@@ -599,7 +626,7 @@
       <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" />
@@ -610,7 +637,7 @@
       <param name="srmAsSpectra" value="true" />
       <output name="output" file="SciexTest-HPINalone-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="mzXML" />
@@ -621,7 +648,7 @@
       <param name="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" />
@@ -633,7 +660,7 @@
         <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" />
@@ -645,7 +672,7 @@
     </test>
 
     <!-- this data file only has profile MS1, so the result is the same -->
-    <test>
+    <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" />
@@ -654,7 +681,7 @@
       <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" />
@@ -662,7 +689,7 @@
       <param name="intensity_encoding" value="64" />
       <output name="output" file="small-zlib-64.mz5" compare="sim_size" ftype="mz5" delta="150000" />
     </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="mzXML" />
@@ -690,7 +717,7 @@
       <output name="output" file="small-off-32.mzML.gz" compare="sim_size" delta="100" />
     </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" />
@@ -698,7 +725,7 @@
       <output name="output" file="small-numpressLP.mzML" ftype="mzml" lines_diff="114" />
     </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" />
@@ -706,7 +733,7 @@
       <output name="output" file="small-numpressLS.mzML" ftype="mzml" lines_diff="114" />
     </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" />
@@ -714,7 +741,7 @@
       <output name="output" file="small-numpressL.mzML" ftype="mzml" lines_diff="114" />
     </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" />
@@ -722,7 +749,7 @@
       <output name="output" file="small-numpressP.mzML" ftype="mzml" lines_diff="114" />
     </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" />
@@ -730,7 +757,7 @@
       <output name="output" file="small-numpressS.mzML" ftype="mzml" lines_diff="114" />
     </test>
 
-    <test>
+    <test expect_num_outputs="1">
       <param name="input" value="Rpal_01.mz5" ftype="mz5" />
       <param name="license_agreement" value="true" />
       <param name="output_type" value="mzML" />
@@ -743,7 +770,7 @@
       <output name="output_refinement" file="Rpal_01.pepXML.mzRefinement.tsv" ftype="tsv" />
     </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" />
@@ -756,7 +783,7 @@
       <param name="maxKnownCharge" value="8" />
       <output name="output" file="small-chargeStatePredictor.mzML" ftype="mzml" lines_diff="114" />
     </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" />
@@ -771,7 +798,7 @@
       <param name="defaultMaxCharge" value="5" />
       <output name="output" file="small-turbocharger.mzML" ftype="mzml" lines_diff="114" />
     </test>
-    <test>
+    <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" />
@@ -785,7 +812,7 @@
       <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" />
@@ -798,7 +825,7 @@
       <param name="binary_compression" value="numpressLinearPic" />
       <output name="output" file="small-threshold.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" />
@@ -808,7 +835,7 @@
       <param name="binary_compression" value="numpressLinearPic" />
       <output name="output" file="small-mzWindow.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" />
@@ -819,7 +846,7 @@
       <param name="binary_compression" value="numpressLinearPic" />
       <output name="output" file="small-denoise.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" />
@@ -827,7 +854,7 @@
       <param name="binary_compression" value="numpressLinearPic" />
       <output name="output" file="small-deisotope.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" />
@@ -835,7 +862,7 @@
       <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" />
@@ -848,7 +875,7 @@
       <param name="binary_compression" value="numpressLinearPic" />
       <output name="output" file="small-index-filter.mzML" lines_diff="32" 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" />
@@ -856,7 +883,7 @@
       <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" />
@@ -866,7 +893,7 @@
       <param name="binary_compression" value="numpressLinearPic" />
       <output name="output" file="small-ms-level-filter.mzML" lines_diff="86" 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" />
@@ -874,7 +901,7 @@
       <param name="binary_compression" value="numpressLinearPic" />
       <output name="output" file="small-polarity-filter.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" />
@@ -882,7 +909,7 @@
       <param name="binary_compression" value="numpressLinearPic" />
       <output name="output" file="small-analyzer-filter.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" />
@@ -902,16 +929,6 @@
       <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>