changeset 13:083295b423ac draft

"planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/openms commit ddf41e8bda1ba065f5cdec98e93dee8165ffc1b9"
author galaxyp
date Thu, 27 Aug 2020 23:24:20 +0000
parents d10d78890243
children 26b7b0c4cb63
files OMSSAAdapter.patch PeakPickerHiRes.xml PepNovoAdapter.patch filetypes.txt fill_ctd.py fill_ctd_clargs.py generate-foo.sh generate.sh hardcoded_params.json macros.xml macros_autotest.xml macros_discarded_auto.xml macros_test.xml prepare_test_data.sh prepare_test_data_manual.sh readme.md test-data.sh test-data/DecoyDatabase_input.fasta test-data/DecoyDatabase_output.fasta test-data/FileFilter_1_input.mzML test-data/MetaProSIP_1_input.fasta test-data/MetaProSIP_1_input.featureXML test-data/MetaProSIP_1_input.mzML test-data/MetaProSIP_1_output_1.csv test-data/MetaProSIP_1_output_2.csv test-data/MzMLSplitter_output_part1.mzML test-data/MzMLSplitter_output_part2.mzML test-data/OpenPepXL_input.fasta test-data/SequenceCoverageCalculator.fasta test-data/SequenceCoverageCalculator.idXML test-data/SequenceCoverageCalculator.tsv tool-data/pepnovo_models.loc.sample tool.conf tool_data_table_conf.xml.sample tool_data_table_conf.xml.test tools_blacklist.txt
diffstat 36 files changed, 30102 insertions(+), 154119 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OMSSAAdapter.patch	Thu Aug 27 23:24:20 2020 +0000
@@ -0,0 +1,10 @@
+--- OMSSAAdapter.xml	2020-06-16 15:51:40.315400730 +0200
++++ /tmp/OMSSAAdapter.xml	2020-06-16 15:50:23.536086074 +0200
+@@ -22,6 +22,7 @@
+ mkdir database &&
+ ln -s '$database' 'database/${re.sub("[^\w\-_]", "_", $database.element_identifier)}.$gxy2omsext($database.ext)' &&
+ 
++makeblastdb -dbtype prot -in 'database/${re.sub("[^\w\-_]", "_", $database.element_identifier)}.$gxy2omsext($database.ext)' &&
+ ## Main program call
+ 
+ set -o pipefail &&
--- a/PeakPickerHiRes.xml	Wed May 15 06:52:44 2019 -0400
+++ b/PeakPickerHiRes.xml	Thu Aug 27 23:24:20 2020 +0000
@@ -1,149 +1,104 @@
 <?xml version='1.0' encoding='UTF-8'?>
 <!--This is a configuration file for the integration of a tools into Galaxy (https://galaxyproject.org/). This file was automatically generated using CTDConverter.-->
 <!--Proposed Tool Section: [Signal processing and preprocessing]-->
-<tool id="PeakPickerHiRes" name="PeakPickerHiRes" version="2.3.0">
+<tool id="PeakPickerHiRes" name="PeakPickerHiRes" version="@TOOL_VERSION@+galaxy@GALAXY_VERSION@" profile="20.05">
   <description>Finds mass spectrometric peaks in profile mass spectra.</description>
   <macros>
     <token name="@EXECUTABLE@">PeakPickerHiRes</token>
     <import>macros.xml</import>
+    <import>macros_autotest.xml</import>
+    <import>macros_test.xml</import>
   </macros>
-  <expand macro="references"/>
+  <expand macro="requirements"/>
   <expand macro="stdio"/>
-  <expand macro="requirements"/>
-  <command detect_errors="aggressive"><![CDATA[PeakPickerHiRes
+  <command detect_errors="exit_code"><![CDATA[@QUOTE_FOO@
+@EXT_FOO@
+#import re
 
-#if $param_in:
-  -in $param_in
-#end if
-#if $param_out:
-  -out $param_out
-#end if
-#if $param_algorithm_signal_to_noise:
-  -algorithm:signal_to_noise $param_algorithm_signal_to_noise
-#end if
+## Preprocessing
+mkdir in &&
+ln -s '$in' 'in/${re.sub("[^\w\-_]", "_", $in.element_identifier)}.$gxy2omsext($in.ext)' &&
+mkdir out &&
+
+## Main program call
+
+set -o pipefail &&
+@EXECUTABLE@ -write_ctd ./ &&
+python3 '$__tool_directory__/fill_ctd.py' '@EXECUTABLE@.ctd' '$args_json' '$hardcoded_json' &&
+@EXECUTABLE@ -ini @EXECUTABLE@.ctd
+-in
+'in/${re.sub("[^\w\-_]", "_", $in.element_identifier)}.$gxy2omsext($in.ext)'
+-out
+'out/output.${gxy2omsext("mzml")}'
 
-#if $rep_param_algorithm_ms_levels:
--algorithm:ms_levels
-  #for token in $rep_param_algorithm_ms_levels:
-    #if " " in str(token):
-      "$token.param_algorithm_ms_levels"
-    #else
-      $token.param_algorithm_ms_levels
-    #end if
-  #end for
-#end if
-#if $param_algorithm_report_FWHM:
-  -algorithm:report_FWHM
-#end if
-#if $param_algorithm_report_FWHM_unit:
-  -algorithm:report_FWHM_unit
-  #if " " in str($param_algorithm_report_FWHM_unit):
-    "$param_algorithm_report_FWHM_unit"
-  #else
-    $param_algorithm_report_FWHM_unit
-  #end if
-#end if
-#if $param_algorithm_SignalToNoise_win_len:
-  -algorithm:SignalToNoise:win_len $param_algorithm_SignalToNoise_win_len
-#end if
-#if $param_algorithm_SignalToNoise_bin_count:
-  -algorithm:SignalToNoise:bin_count $param_algorithm_SignalToNoise_bin_count
-#end if
-#if $param_algorithm_SignalToNoise_min_required_elements:
-  -algorithm:SignalToNoise:min_required_elements $param_algorithm_SignalToNoise_min_required_elements
-#end if
-#if $param_algorithm_SignalToNoise_write_log_messages:
-  -algorithm:SignalToNoise:write_log_messages
-  #if " " in str($param_algorithm_SignalToNoise_write_log_messages):
-    "$param_algorithm_SignalToNoise_write_log_messages"
-  #else
-    $param_algorithm_SignalToNoise_write_log_messages
-  #end if
-#end if
-#if $adv_opts.adv_opts_selector=='advanced':
-    #if $adv_opts.param_processOption:
-  -processOption
-  #if " " in str($adv_opts.param_processOption):
-    "$adv_opts.param_processOption"
-  #else
-    $adv_opts.param_processOption
-  #end if
-#end if
-    #if $adv_opts.param_force:
-  -force
-#end if
-    #if $adv_opts.param_algorithm_spacing_difference_gap:
-  -algorithm:spacing_difference_gap $adv_opts.param_algorithm_spacing_difference_gap
-#end if
-    #if $adv_opts.param_algorithm_spacing_difference:
-  -algorithm:spacing_difference $adv_opts.param_algorithm_spacing_difference
-#end if
-    #if $adv_opts.param_algorithm_missing:
-  -algorithm:missing $adv_opts.param_algorithm_missing
-#end if
-    #if $adv_opts.param_algorithm_SignalToNoise_max_intensity:
-  -algorithm:SignalToNoise:max_intensity $adv_opts.param_algorithm_SignalToNoise_max_intensity
-#end if
-    #if $adv_opts.param_algorithm_SignalToNoise_auto_max_stdev_factor:
-  -algorithm:SignalToNoise:auto_max_stdev_factor $adv_opts.param_algorithm_SignalToNoise_auto_max_stdev_factor
-#end if
-    #if $adv_opts.param_algorithm_SignalToNoise_auto_max_percentile:
-  -algorithm:SignalToNoise:auto_max_percentile $adv_opts.param_algorithm_SignalToNoise_auto_max_percentile
-#end if
-    #if $adv_opts.param_algorithm_SignalToNoise_auto_mode:
-  -algorithm:SignalToNoise:auto_mode $adv_opts.param_algorithm_SignalToNoise_auto_mode
-#end if
-    #if $adv_opts.param_algorithm_SignalToNoise_noise_for_empty_window:
-  -algorithm:SignalToNoise:noise_for_empty_window $adv_opts.param_algorithm_SignalToNoise_noise_for_empty_window
-#end if
-#end if
-]]></command>
+## Postprocessing
+&& mv 'out/output.${gxy2omsext("mzml")}' '$out'
+#if "ctd_out_FLAG" in $OPTIONAL_OUTPUTS
+  && mv '@EXECUTABLE@.ctd' '$ctd_out'
+#end if]]></command>
+  <configfiles>
+    <inputs name="args_json" data_style="paths"/>
+    <configfile name="hardcoded_json"><![CDATA[{"log": "log.txt", "threads": "\${GALAXY_SLOTS:-1}", "no_progress": true}]]></configfile>
+  </configfiles>
   <inputs>
-    <param name="param_in" type="data" format="mzml" optional="False" label="input profile data file" help="(-in) "/>
-    <param name="param_algorithm_signal_to_noise" type="float" min="0.0" optional="True" value="0.0" label="Minimal signal-to-noise ratio for a peak to be picked (0.0 disables SNT estimation!)" help="(-signal_to_noise) "/>
-    <repeat name="rep_param_algorithm_ms_levels" min="0" max="1" title="param_algorithm_ms_levels">
-      <param name="param_algorithm_ms_levels" type="text" min="1" optional="True" size="30" value="1" label="List of MS levels for which the peak picking is applied" help="(-ms_levels) Other scans are copied to the output without changes">
-        <sanitizer>
-          <valid initial="string.printable">
-            <remove value="'"/>
-            <remove value="&quot;"/>
-          </valid>
-        </sanitizer>
+    <param name="in" argument="-in" type="data" format="mzml" optional="false" label="input profile data file" help=" select mzml data sets(s)"/>
+    <section name="algorithm" title="Algorithm parameters section" help="" expanded="false">
+      <param name="signal_to_noise" argument="-algorithm:signal_to_noise" type="float" optional="true" min="0.0" value="0.0" label="Minimal signal-to-noise ratio for a peak to be picked (0.0 disables SNT estimation!)" help=""/>
+      <param name="spacing_difference_gap" argument="-algorithm:spacing_difference_gap" type="float" optional="true" min="0.0" value="4.0" label="The extension of a peak is stopped if the spacing between two subsequent data points exceeds 'spacing_difference_gap * min_spacing'" help="'min_spacing' is the smaller of the two spacings from the peak apex to its two neighboring points. '0' to disable the constraint. Not applicable to chromatograms"/>
+      <param name="spacing_difference" argument="-algorithm:spacing_difference" type="float" optional="true" min="0.0" value="1.5" label="Maximum allowed difference between points during peak extension, in multiples of the minimal difference between the peak apex and its two neighboring points" help="If this difference is exceeded a missing point is assumed (see parameter 'missing'). A higher value implies a less stringent peak definition, since individual signals within the peak are allowed to be further apart. '0' to disable the constraint. Not applicable to chromatograms"/>
+      <param name="missing" argument="-algorithm:missing" type="integer" optional="true" min="0" value="1" label="Maximum number of missing points allowed when extending a peak to the left or to the right" help="A missing data point occurs if the spacing between two subsequent data points exceeds 'spacing_difference * min_spacing'. 'min_spacing' is the smaller of the two spacings from the peak apex to its two neighboring points. Not applicable to chromatograms"/>
+      <param name="ms_levels" argument="-algorithm:ms_levels" type="text" optional="true" value="" label="List of MS levels for which the peak picking is applied" help="If empty, auto mode is enabled, all peaks which aren't picked yet will get picked. Other scans are copied to the output without changes (space separated list, in order to allow for spaces in list items surround them by single quotes)">
+        <expand macro="list_integer_valsan">
+          <validator type="expression" message="a space separated list of integer values in the range 1: is required"><![CDATA[len(value.split(' ')) == len([_ for _ in value.split(' ') if  1 <= int(_)])
+]]></validator>
+        </expand>
       </param>
-    </repeat>
-    <param name="param_algorithm_report_FWHM" display="radio" type="boolean" truevalue="-algorithm:report_FWHM" falsevalue="" checked="false" optional="True" label="Add metadata for FWHM (as floatDataArray named 'FWHM' or 'FWHM_ppm', depending on param 'report_FWHM_unit') for each picked peak" help="(-report_FWHM) "/>
-    <param name="param_algorithm_report_FWHM_unit" display="radio" type="select" optional="False" value="relative" label="Unit of FWHM. Either absolute in the unit of input," help="(-report_FWHM_unit) e.g. 'm/z' for spectra, or relative as ppm (only sensible for spectra, not chromatograms)">
-      <option value="relative" selected="true">relative</option>
-      <option value="absolute">absolute</option>
-    </param>
-    <param name="param_algorithm_SignalToNoise_win_len" type="float" min="1.0" optional="True" value="200.0" label="window length in Thomson" help="(-win_len) "/>
-    <param name="param_algorithm_SignalToNoise_bin_count" type="integer" min="3" optional="True" value="30" label="number of bins for intensity values" help="(-bin_count) "/>
-    <param name="param_algorithm_SignalToNoise_min_required_elements" type="integer" min="1" optional="True" value="10" label="minimum number of elements required in a window (otherwise it is considered sparse)" help="(-min_required_elements) "/>
-    <param name="param_algorithm_SignalToNoise_write_log_messages" display="radio" type="select" optional="False" value="true" label="Write out log messages in case of sparse windows or median in rightmost histogram bin" help="(-write_log_messages) ">
-      <option value="true" selected="true">true</option>
-      <option value="false">false</option>
-    </param>
-    <expand macro="advanced_options">
-      <param name="param_processOption" display="radio" type="select" optional="False" value="inmemory" label="Whether to load all data and process them in-memory or whether to process the data on the fly (lowmemory) without loading the whole file into memory first" help="(-processOption) ">
+      <param name="report_FWHM" argument="-algorithm:report_FWHM" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Add metadata for FWHM (as floatDataArray named 'FWHM' or 'FWHM_ppm', depending on param 'report_FWHM_unit') for each picked peak" help=""/>
+      <param name="report_FWHM_unit" argument="-algorithm:report_FWHM_unit" display="radio" type="select" optional="false" label="Unit of FWHM" help="Either absolute in the unit of input, e.g. 'm/z' for spectra, or relative as ppm (only sensible for spectra, not chromatograms)">
+        <option value="relative" selected="true">relative</option>
+        <option value="absolute">absolute</option>
+        <expand macro="list_string_san"/>
+      </param>
+      <section name="SignalToNoise" title="" help="" expanded="false">
+        <param name="max_intensity" argument="-algorithm:SignalToNoise:max_intensity" type="integer" optional="true" min="-1" value="-1" label="maximal intensity considered for histogram construction" help="By default, it will be calculated automatically (see auto_mode). Only provide this parameter if you know what you are doing (and change 'auto_mode' to '-1')! All intensities EQUAL/ABOVE 'max_intensity' will be added to the LAST histogram bin. If you choose 'max_intensity' too small, the noise estimate might be too small as well.  If chosen too big, the bins become quite large (which you could counter by increasing 'bin_count', which increases runtime). In general, the Median-S/N estimator is more robust to a manual max_intensity than the MeanIterative-S/N"/>
+        <param name="auto_max_stdev_factor" argument="-algorithm:SignalToNoise:auto_max_stdev_factor" type="float" optional="true" min="0.0" max="999.0" value="3.0" label="parameter for 'max_intensity' estimation (if 'auto_mode' == 0): mean + 'auto_max_stdev_factor' * stdev" help=""/>
+        <param name="auto_max_percentile" argument="-algorithm:SignalToNoise:auto_max_percentile" type="integer" optional="true" min="0" max="100" value="95" label="parameter for 'max_intensity' estimation (if 'auto_mode' == 1): auto_max_percentile th percentile" help=""/>
+        <param name="auto_mode" argument="-algorithm:SignalToNoise:auto_mode" type="integer" optional="true" min="-1" max="1" value="0" label="method to use to determine maximal intensity: -1 --&gt; use 'max_intensity'; 0 --&gt; 'auto_max_stdev_factor' method (default); 1 --&gt; 'auto_max_percentile' method" help=""/>
+        <param name="win_len" argument="-algorithm:SignalToNoise:win_len" type="float" optional="true" min="1.0" value="200.0" label="window length in Thomson" help=""/>
+        <param name="bin_count" argument="-algorithm:SignalToNoise:bin_count" type="integer" optional="true" min="3" value="30" label="number of bins for intensity values" help=""/>
+        <param name="min_required_elements" argument="-algorithm:SignalToNoise:min_required_elements" type="integer" optional="true" min="1" value="10" label="minimum number of elements required in a window (otherwise it is considered sparse)" help=""/>
+        <param name="noise_for_empty_window" argument="-algorithm:SignalToNoise:noise_for_empty_window" type="float" optional="true" value="1e+20" label="noise value used for sparse windows" help=""/>
+        <param name="write_log_messages" argument="-algorithm:SignalToNoise:write_log_messages" type="boolean" truevalue="true" falsevalue="false" checked="true" label="Write out log messages in case of sparse windows or median in rightmost histogram bin" help=""/>
+      </section>
+    </section>
+    <expand macro="adv_opts_macro">
+      <param name="processOption" argument="-processOption" display="radio" type="select" optional="false" label="Whether to load all data and process them in-memory or whether to process the data on the fly (lowmemory) without loading the whole file into memory first" help="">
         <option value="inmemory" selected="true">inmemory</option>
         <option value="lowmemory">lowmemory</option>
+        <expand macro="list_string_san"/>
       </param>
-      <param name="param_force" display="radio" type="boolean" truevalue="-force" falsevalue="" checked="false" optional="True" label="Overwrite tool specific checks" help="(-force) "/>
-      <param name="param_algorithm_spacing_difference_gap" type="float" min="0.0" optional="True" value="4.0" label="The extension of a peak is stopped if the spacing between two subsequent data points exceeds 'spacing_difference_gap * min_spacing'" help="(-spacing_difference_gap) 'min_spacing' is the smaller of the two spacings from the peak apex to its two neighboring points. '0' to disable the constraint. Not applicable to chromatograms"/>
-      <param name="param_algorithm_spacing_difference" type="float" min="0.0" optional="True" value="1.5" label="Maximum allowed difference between points during peak extension, in multiples of the minimal difference between the peak apex and its two neighboring points" help="(-spacing_difference) If this difference is exceeded a missing point is assumed (see parameter 'missing'). A higher value implies a less stringent peak definition, since individual signals within the peak are allowed to be further apart. '0' to disable the constraint. Not applicable to chromatograms"/>
-      <param name="param_algorithm_missing" type="integer" min="0" optional="True" value="1" label="Maximum number of missing points allowed when extending a peak to the left or to the right" help="(-missing) A missing data point occurs if the spacing between two subsequent data points exceeds 'spacing_difference * min_spacing'. 'min_spacing' is the smaller of the two spacings from the peak apex to its two neighboring points. Not applicable to chromatograms"/>
-      <param name="param_algorithm_SignalToNoise_max_intensity" type="integer" min="-1" optional="True" value="-1" label="maximal intensity considered for histogram construction" help="(-max_intensity) By default, it will be calculated automatically (see auto_mode). Only provide this parameter if you know what you are doing (and change 'auto_mode' to '-1')! All intensities EQUAL/ABOVE 'max_intensity' will be added to the LAST histogram bin. If you choose 'max_intensity' too small, the noise estimate might be too small as well.  If chosen too big, the bins become quite large (which you could counter by increasing 'bin_count', which increases runtime). In general, the Median-S/N estimator is more robust to a manual max_intensity than the MeanIterative-S/N"/>
-      <param name="param_algorithm_SignalToNoise_auto_max_stdev_factor" type="float" min="0.0" max="999.0" optional="True" value="3.0" label="parameter for 'max_intensity' estimation (if 'auto_mode' == 0): mean + 'auto_max_stdev_factor' * stdev" help="(-auto_max_stdev_factor) "/>
-      <param name="param_algorithm_SignalToNoise_auto_max_percentile" type="integer" min="0" max="100" optional="True" value="95" label="parameter for 'max_intensity' estimation (if 'auto_mode' == 1): auto_max_percentile th percentile" help="(-auto_max_percentile) "/>
-      <param name="param_algorithm_SignalToNoise_auto_mode" type="integer" min="-1" max="1" optional="True" value="0" label="method to use to determine maximal intensity: -1 --&gt; use 'max_intensity'; 0 --&gt; 'auto_max_stdev_factor' method (default); 1 --&gt; 'auto_max_percentile' method" help="(-auto_mode) "/>
-      <param name="param_algorithm_SignalToNoise_noise_for_empty_window" type="float" value="1e+20" label="noise value used for sparse windows" help="(-noise_for_empty_window) "/>
+      <param name="force" argument="-force" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Overwrite tool specific checks" help=""/>
+      <param name="test" argument="-test" type="hidden" optional="true" value="False" label="Enables the test mode (needed for internal use only)" help="">
+        <expand macro="list_string_san"/>
+      </param>
     </expand>
+    <param name="OPTIONAL_OUTPUTS" type="select" multiple="true" label="Optional outputs" optional="true">
+      <option value="ctd_out_FLAG">Output used ctd (ini) configuration file</option>
+    </param>
   </inputs>
   <outputs>
-    <data name="param_out" format="mzml"/>
+    <data name="out" label="${tool.name} on ${on_string}: out" format="mzml"/>
+    <data name="ctd_out" format="xml" label="${tool.name} on ${on_string}: ctd">
+      <filter>OPTIONAL_OUTPUTS is not None and "ctd_out_FLAG" in OPTIONAL_OUTPUTS</filter>
+    </data>
   </outputs>
-  <help>Finds mass spectrometric peaks in profile mass spectra.
+  <tests>
+    <expand macro="autotest_PeakPickerHiRes"/>
+    <expand macro="manutest_PeakPickerHiRes"/>
+  </tests>
+  <help><![CDATA[Finds mass spectrometric peaks in profile mass spectra.
 
 
-For more information, visit https://abibuilder.informatik.uni-tuebingen.de/archive/openms/Documentation/release/2.3.0/html/TOPP_PeakPickerHiRes.html</help>
+For more information, visit http://www.openms.de/documentation/TOPP_PeakPickerHiRes.html]]></help>
+  <expand macro="references"/>
 </tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/PepNovoAdapter.patch	Thu Aug 27 23:24:20 2020 +0000
@@ -0,0 +1,35 @@
+--- PepNovoAdapter.xml	2020-05-12 15:55:24.712831518 +0200
++++ /tmp/PepNovoAdapter.xml	2020-05-12 15:36:31.267276757 +0200
+@@ -42,8 +42,13 @@
+   </configfiles>
+   <inputs>
+     <param name="in" argument="-in" type="data" format="mzml" optional="false" label="input file" help=" select mzml data sets(s)"/>
+-    <param name="model_directory" argument="-model_directory" type="text" optional="false" value="" label="Name of the directory where the model files are kept" help="">
+-      <expand macro="list_string_san"/>
++    <param name="model_directory" argument="-model_directory" type="select" optional="false" label="Name of the directory where the model files are kept" help="">
++        <options from_data_table="pepnovo_models">
++            <column name="name" index="0"/>
++            <column name="value" index="2"/>
++            <filter type="unique_value" name="unique_set" column="0"/>
++            <validator type="no_options" message="No model directory available"/>
++        </options>
+     </param>
+     <param name="correct_pm" argument="-correct_pm" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Find optimal precursor mass and charge values" help=""/>
+     <param name="use_spectrum_charge" argument="-use_spectrum_charge" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Do not correct charge" help=""/>
+@@ -51,8 +56,14 @@
+     <param name="no_quality_filter" argument="-no_quality_filter" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Do not remove low quality spectra" help=""/>
+     <param name="fragment_tolerance" argument="-fragment_tolerance" type="float" optional="true" value="-1.0" label="The fragment tolerance (between 0 and 0.75 Da" help="Set to -1.0 to use model's default setting)"/>
+     <param name="pm_tolerance" argument="-pm_tolerance" type="float" optional="true" value="-1.0" label="The precursor mass tolerance (between 0 and 5.0 Da" help="Set to -1.0 to use model's default setting)"/>
+-    <param name="model" argument="-model" type="text" optional="true" value="CID_IT_TRYP" label="Name of the model that should be used" help="">
+-      <expand macro="list_string_san"/>
++    <param name="model" argument="-model" type="select" label="Name of the model that should be used" help="">
++        <options from_data_table="pepnovo_models">
++            <column name="name" index="1"/>
++            <column name="value" index="1"/>
++            <filter type="param_value" ref="model_directory" column="2"/>
++            <filter type="unique_value" column="1"/>
++            <validator type="no_options" message="No model available"/>
++        </options>
+     </param>
+     <param name="digest" argument="-digest" display="radio" type="select" optional="false" label="Enzyme used for digestion (default TRYPSIN)" help="">
+       <option value="TRYPSIN" selected="true">TRYPSIN</option>
--- a/filetypes.txt	Wed May 15 06:52:44 2019 -0400
+++ b/filetypes.txt	Thu Aug 27 23:24:20 2020 +0000
@@ -1,29 +1,85 @@
-# CTD type    # Galaxy type     # Long Galaxy data type                    # Mimetype
-csv           tabular           galaxy.datatypes.tabular:Tabular
-fasta         fasta             galaxy.datatypes.sequence:Fasta
-FASTA         fasta             galaxy.datatypes.sequence:Fasta
-ini           txt               galaxy.datatypes.data:Text
-txt           txt               galaxy.datatypes.data:Text
-options       txt               galaxy.datatypes.data:Text
-grid          grid              galaxy.datatypes.data:Grid
-html          html              galaxy.datatypes.text:Html                  text/html
-HTML          html              galaxy.datatypes.text:Html                  text/html
-TraML         traml             galaxy.datatypes.proteomics:TraML           application/xml
-traML         traml             galaxy.datatypes.proteomics:TraML           application/xml
-XML           xml               galaxy.datatypes.xml:GenericXml             application/xml
-consensusXML  consensusxml      galaxy.datatypes.proteomics:ConsensusXML    application/xml
-edta          tabular           galaxy.datatypes.tabular:Tabular 
-featureXML    featurexml        galaxy.datatypes.proteomics:FeatureXML      application/xml
-idXML         idxml             galaxy.datatypes.proteomics:IdXML           application/xml
-mzML          mzml              galaxy.datatypes.proteomics:MzML            application/xml
-mzXML         mzxml             galaxy.datatypes.proteomics:MzXML           application/xml
-pepXML        pepxml            galaxy.datatypes.proteomics:PepXml          application/xml
-qcML          qcml              galaxy.datatypes.xml:GenericXml             application/xml
-trafoXML      trafoxml          galaxy.datatypes.xml:GenericXml             application/xml
-tsv           tabular           galaxy.datatypes.tabular:Tabular
-xsd           txt               galaxy.datatypes.data:Text
-mzq           mzq               galaxy.datatypes.proteomics:MzQuantML       application/xml
-msp           msp               galaxy.datatypes.proteomics:Msp
-mzid          mzid              galaxy.datatypes.proteomics:MzIdentML       application/xml
-png           png               galaxy.datatypes.images:Png                 image/png
-mgf           mgf               galaxy.datatypes.proteomics:Mgf
+# CTD type    # Galaxy type
+# the following lines need to be at the top in order to ensure 
+# correct translation Galaxy->CTD type for the ambiguous cases
+# (should only be relevant for the autogenerated tests [which 
+# do not set the ftype of the inputs])
+txt           txt
+tsv           tabular
+
+##analysisXML
+# XTandemAdapter output is named xml in OMS (which is to unspecific) and bioml in Galaxy .. so this is renamed via hardcoded parameters 
+bioml         xml
+consensusXML  consensusxml
+# TODO csv is problematic, since csv often actually means tsv .. but not always
+csv           csv
+##dat
+dta           dta
+dta2d         dta2d
+edta          edta
+fa            fasta
+fas           fasta
+fasta         fasta
+FASTA         fasta
+featureXML    featurexml
+featurexml    featurexml
+# fid
+html          html
+HTML          html
+idXML         idxml
+##ini         txt
+json          json
+kroenik	      kroenik
+mascotXML     mascotxml
+mgf           mgf
+mrm           mrm
+ms            sirius.ms
+ms2           ms2
+msp           msp
+mzData        mzdata
+mzid          mzid
+# important to have mzML first, since LuciphorAdapter is case sensitive https://github.com/OpenMS/OpenMS/issues/4444
+mzML          mzml
+mzml          mzml
+mzq           mzq
+mzTab         mztab
+mzXML         mzxml
+novor         txt
+obo           obo
+# I guess this is the idXML output of omssa
+omssaXML      idxml
+osw           osw
+OSW           osw
+params        txt
+paramXML      paramxml
+fasta         peff
+peplist       peplist
+# TODO pep.xml should be removed with OMS 2.6 https://github.com/OpenMS/OpenMS/pull/4541
+pep.xml       pepxml
+pepXML        pepxml
+png           png
+PNG           png
+protXML       protxml
+psms          psms
+# TODO implement or use
+# psq
+pqp           pqp
+qcML          qcml
+spec.xml      spec.xml
+splib         splib
+sqMass        sqmass
+tandem.xml    tandem
+trafoXML      trafoxml
+traML         traml
+TraML         traml
+tab           tabular
+## MOVED TO TOP txt           txt
+raw           thermo.raw
+## xls: SpectraSTSearchAdapter https://github.com/OpenMS/OpenMS/pull/4419
+xls           tsv
+XML           xml
+xml           xml
+xquest.xml    xquest.xml
+xsd           xml
+
+# TODO needs to be implemented, needs to be below xml in order that Galaxy->OMS mapping gives xml
+# cachedMzML    xml
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fill_ctd.py	Thu Aug 27 23:24:20 2020 +0000
@@ -0,0 +1,190 @@
+import collections
+import json
+import operator
+import os
+import re
+import subprocess
+import sys
+from functools import reduce  # forward compatibility for Python 3
+
+from CTDopts.CTDopts import (
+    _Choices,
+    _InFile,
+    _Null,
+    _NumericRange,
+    CTDModel
+)
+
+
+def getFromDict(dataDict, mapList):
+    return reduce(operator.getitem, mapList, dataDict)
+
+
+def setInDict(dataDict, mapList, value):
+    getFromDict(dataDict, mapList[:-1])[mapList[-1]] = value
+
+
+def mergeDicts(d, e):
+    """
+    insert values from the dict e into dict d
+    no values of d are overwritten
+    """
+    for k, v in e.items():
+        if (k in d and isinstance(d[k], dict) and isinstance(e[k], collections.abc.Mapping)):
+            mergeDicts(d[k], e[k])
+        elif k not in d and not isinstance(e[k], collections.abc.Mapping):
+            d[k] = e[k]
+        else:
+            sys.stderr.write("fill_ctd.py: could not merge key %s for %s in %s" % (k, d, e))
+            sys.exit(1)
+
+
+def _json_object_hook_noenvlookup(d):
+    return _json_object_hook(d, envlookup=False)
+
+
+def _json_object_hook(d, envlookup=True):
+    """
+    wee helper to transform the json written by galaxy
+    while loading
+    - True/False (bool objects) -> "true"/"false" (lowercase string)
+    - data inputs with multiple and optional true give [None] if no file is given -> []
+    - None -> "" (empty string)
+    - replace bash expressions (if envlookup is True):
+      - environment variables (need to consist capital letters and _) by their value
+      - expressions
+    """
+    for k in d.keys():
+        # if type(d[k]) is bool:
+        #     d[k] = str(d[k]).lower()
+        # else
+        if type(d[k]) is list and len(d[k]) == 1 and d[k][0] is None:
+            d[k] = []
+        elif d[k] is None:
+            d[k] = ""
+        elif envlookup and type(d[k]) is str and d[k].startswith("$"):
+            m = re.fullmatch(r"\$([A-Z_]+)", d[k])
+            if m:
+                d[k] = os.environ.get(m.group(1), "")
+                continue
+            m = re.fullmatch(r"\$(\{[A-Z_]+):-(.*)\}", d[k])
+            if m:
+                d[k] = os.environ.get(m.group(1), m.group(2))
+                continue
+
+            try:
+                p = subprocess.run("echo %s" % d[k], shell=True, check=True, stdout=subprocess.PIPE, encoding="utf8")
+                d[k] = p.stdout.strip()
+            except subprocess.CalledProcessError:
+                sys.stderr.write("fill_ctd error: Could not evaluate %s" % d[k])
+                continue
+    return d
+
+
+def qstring2list(qs):
+    """
+    transform a space separated string that is quoted by " into a list
+    """
+    lst = list()
+    qs = qs.split(" ")
+    quoted = False
+    for p in qs:
+        if p == "":
+            continue
+        if p.startswith('"') and p.endswith('"'):
+            lst.append(p[1:-1])
+        elif p.startswith('"'):
+            quoted = True
+            lst.append(p[1:] + " ")
+        elif p.endswith('"'):
+            quoted = False
+            lst[-1] += p[:-1]
+        else:
+            if quoted:
+                lst[-1] += p + " "
+            else:
+                lst.append(p)
+    return lst
+
+
+def fix_underscores(args):
+    if type(args) is dict:
+        for k in list(args.keys()):
+            v = args[k]
+            if type(v) is dict:
+                fix_underscores(args[k])
+            if k.startswith("_"):
+                args[k[1:]] = v
+                del args[k]
+    elif type(args) is list:
+        for i, v in enumerate(args):
+            if type(v) is dict:
+                fix_underscores(args[i])
+
+
+input_ctd = sys.argv[1]
+
+# load user specified parameters from json
+with open(sys.argv[2]) as fh:
+    args = json.load(fh, object_hook=_json_object_hook_noenvlookup)
+
+# load hardcoded parameters from json
+with open(sys.argv[3]) as fh:
+    hc_args = json.load(fh, object_hook=_json_object_hook)
+
+# insert the hc_args into the args
+mergeDicts(args, hc_args)
+
+if "adv_opts_cond" in args:
+    args.update(args["adv_opts_cond"])
+    del args["adv_opts_cond"]
+
+# IDMapper has in and spectra:in params, in is used in out as format_source",
+# which does not work in Galaxy: https://github.com/galaxyproject/galaxy/pull/9493"
+# therefore hardcoded params change the name of spectra:in to spectra:_in
+# which is corrected here again
+# TODO remove once PR is in and adapt profile accordingly
+fix_underscores(args)
+
+model = CTDModel(from_file=input_ctd)
+
+# transform values from json that correspond to
+# - old style booleans (string + restrictions) -> transformed to a str
+# - unrestricted ITEMLIST which are represented as strings
+#   ("=quoted and space separated) in Galaxy -> transform to lists
+# - optional data input parameters that have defaults and for which no
+#   value is given -> overwritte with the default
+for p in model.get_parameters():
+
+    # check if the parameter is in the arguments from the galaxy tool
+    # (from the json file(s)), since advanced parameters are absent
+    # if the conditional is set to basic parameters
+    try:
+        getFromDict(args, p.get_lineage(name_only=True))
+    except KeyError:
+        # few tools use dashes in parameters which are automatically replaced
+        # by underscores by Galaxy. in these cases the dictionary needs to be
+        # updated
+        # TODO might be removed later https://github.com/OpenMS/OpenMS/pull/4529
+        try:
+            lineage = [_.replace("-", "_") for _ in p.get_lineage(name_only=True)]
+            val = getFromDict(args, lineage)
+        except KeyError:
+            continue
+        else:
+            setInDict(args, lineage, val)
+
+    if p.type is str and type(p.restrictions) is _Choices and set(p.restrictions.choices) == set(["true", "false"]):
+        v = getFromDict(args, p.get_lineage(name_only=True))
+        setInDict(args, p.get_lineage(name_only=True), str(v).lower())
+
+    elif p.is_list and (p.restrictions is None or type(p.restrictions) is _NumericRange):
+        v = getFromDict(args, p.get_lineage(name_only=True))
+        if type(v) is str:
+            setInDict(args, p.get_lineage(name_only=True), qstring2list(v))
+    elif p.type is _InFile and not (p.default is None or type(p.default) is _Null):
+        v = getFromDict(args, p.get_lineage(name_only=True))
+        if v in [[], ""]:
+            setInDict(args, p.get_lineage(name_only=True), p.default)
+
+model.write_ctd(input_ctd, arg_dict=args)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fill_ctd_clargs.py	Thu Aug 27 23:24:20 2020 +0000
@@ -0,0 +1,40 @@
+#!/usr/bin/env python3
+from argparse import ArgumentParser
+from io import StringIO
+
+from CTDopts.CTDopts import (
+    CTDModel,
+    ModelTypeError,
+    Parameters
+)
+
+if __name__ == "__main__":
+    # note add_help=False since otherwise arguments starting with -h will
+    # trigger an error (despite allow_abbreviate)
+    parser = ArgumentParser(prog="fill_ctd_clargs",
+                            description="fill command line arguments"
+                            "into a CTD file and write the CTD file to",
+                            add_help=False, allow_abbrev=False)
+    parser.add_argument("--ctd", dest="ctd", help="input ctd file",
+                        metavar='CTD', default=None, required=True)
+    args, cliargs = parser.parse_known_args()
+    # load CTDModel
+    model = None
+    try:
+        model = CTDModel(from_file=args.ctd)
+    except ModelTypeError:
+        pass
+    try:
+        model = Parameters(from_file=args.ctd)
+    except ModelTypeError:
+        pass
+    assert model is not None, "Could not parse %s, seems to be no CTD/PARAMS" % (args.ctd)
+
+    # get a dictionary of the ctd arguments where the values of the parameters
+    # given on the command line are overwritten
+    margs = model.parse_cl_args(cl_args=cliargs, ignore_required=True)
+
+    # write the ctd with the values taken from the dictionary
+    out = StringIO()
+    ctd_tree = model.write_ctd(out, margs)
+    print(out.getvalue())
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generate-foo.sh	Thu Aug 27 23:24:20 2020 +0000
@@ -0,0 +1,217 @@
+#!/usr/bin/env bash
+
+# parse test definitions from OpenMS sources for a tool with a given id
+function get_tests2 {
+	id=$1
+	>&2 echo "generate tests for $id"
+	echo '<xml name="autotest_'"$id"'">'
+
+	# get the tests from the CMakeLists.txt
+	# 1st remove some tests
+	# - Filefilter with empty select_palarity value (empty is not in the list of allowed options)
+	# - MassTraceExtractor with outdated ini file leading to wrong parameters https://github.com/OpenMS/OpenMS/issues/4386
+	# - OpenSwathMzMLFileCacher with -convert_back argumen https://github.com/OpenMS/OpenMS/issues/4399
+    # - IDRipper PATH gets empty causing problems. TODO But overall the option needs to be handled differentlt
+	# - several tools with duplicated input (leads to conflict when linking)
+	# - TOFCalibration inputs we extension (also in prepare_test_data) https://github.com/OpenMS/OpenMS/pull/4525
+	# - MaRaCluster with -consensus_out (parameter blacklister: https://github.com/OpenMS/OpenMS/issues/4456)
+	# - FileMerger with mixed dta dta2d input (ftype can not be specified in the test, dta can not be sniffed)
+	# - some input files are originally in a subdir (degenerated cases/), but not in test-data
+	# - SeedListGenerator: https://github.com/OpenMS/OpenMS/issues/4404
+	# - OpenSwathAnalyzer 9/10: cachedMzML (not supported yet)
+	CMAKE=$(cat $OPENMSGIT/src/tests/topp/CMakeLists.txt $OPENMSGIT/src/tests/topp/THIRDPARTY/third_party_tests.cmake  |
+		sed 's@${DATA_DIR_SHARE}/@@g' |
+		grep -v 'OpenSwathMzMLFileCacher .*-convert_back' |
+	    	sed 's/${TMP_RIP_PATH}/""/' |
+		sed 's@TOFCalibration_ref_masses @TOFCalibration_ref_masses.txt @g; s@TOFCalibration_const @TOFCalibration_const.csv @' |
+		grep -v "MaRaClusterAdapter.*-consensus_out"|
+ 		grep -v "FileMerger_1_input1.dta2d.*FileMerger_1_input2.dta " |
+		sed 's@degenerate_cases/@@g' |
+		grep -v 'TOPP_SeedListGenerator_3"' | 
+		egrep -v 'TOPP_OpenSwathAnalyzer_test_3"|TOPP_OpenSwathAnalyzer_test_4"')
+
+
+# 		grep -v 'FileFilter.*-spectra:select_polarity ""' |
+# 		grep -v 'MassTraceExtractor_2.ini ' |
+# 		grep -v "FileMerger_6_input2.mzML.*FileMerger_6_input2.mzML" |
+# 		grep -v "IDMerger_1_input1.idXML.*IDMerger_1_input1.idXML" |
+# 		grep -v "degenerated_empty.idXML.*degenerated_empty.idXML" |
+# 		grep -v "FeatureLinkerUnlabeledKD_1_output.consensusXML.*FeatureLinkerUnlabeledKD_1_output.consensusXML" |
+# 		grep -v "FeatureLinkerUnlabeledQT_1_output.consensusXML.*FeatureLinkerUnlabeledQT_1_output.consensusXML" |
+
+	# 1st part is a dirty hack to join lines containing a single function call, e.g.
+	# addtest(....
+	#         ....)
+	echo "$CMAKE" | sed 's/#.*//; s/^\s*//; s/\s*$//' | grep -v "^#" | grep -v "^$"  | awk '{printf("%s@NEWLINE@", $0)}' | sed 's/)@NEWLINE@/)\n/g' | sed 's/@NEWLINE@/ /g' | 
+		grep -iE "add_test\(\"(TOPP|UTILS)_.*/$id " | egrep -v "_prepare\"|_convert|WRITEINI|WRITECTD|INVALIDVALUE"  | while read -r line
+	do
+		line=$(echo "$line" | sed 's/add_test("\([^"]\+\)"/\1/; s/)$//; s/\${TOPP_BIN_PATH}\///g;s/\${DATA_DIR_TOPP}\///g; s#THIRDPARTY/##g')
+		# >&2 echo $line
+		test_id=$(echo "$line" | cut -d" " -f 1)
+		tool_id=$(echo "$line" | cut -d" " -f 2)
+		if [[ $test_id =~ _out_?[0-9]? ]]; then
+			>&2 echo "    skip $test_id $line"
+			continue
+		fi
+		if [[ ${id,,} != ${tool_id,,} ]]; then
+			>&2 echo "    skip $test_id ($id != $tool_id) $line"
+			continue
+		fi
+
+		#remove tests with set_tests_properties(....PROPERTIES WILL_FAIL 1)
+		if grep -lq "$test_id"'\".* PROPERTIES WILL_FAIL 1' $OPENMSGIT/src/tests/topp/CMakeLists.txt $OPENMSGIT/src/tests/topp/THIRDPARTY/third_party_tests.cmake; then
+			>&2 echo "    skip failing "$test_id
+			continue
+		fi
+		tes="  <test>\n"
+		line=$(fix_tmp_files "$line")
+		line=$(unique_files "$line")
+		# >&2 echo $line
+		#if there is an ini file then we use this to generate the test
+		#otherwise the ctd file is used
+		#other command line parameters are inserted later into this xml
+		if grep -lq "\-ini" <<<"$line"; then
+			ini=$(echo $line | sed 's/.*-ini \([^ ]\+\).*/\1/')
+			ini="test-data/$ini"
+		else
+			ini="ctd/$tool_id.ctd"
+		fi
+		cli=$(echo $line |cut -d" " -f3- | sed 's/-ini [^ ]\+//')
+		
+		ctdtmp=$(mktemp)
+		#echo python3 fill_ctd_clargs.py --ctd $ini $cli
+		# using eval: otherwise for some reason quoted values are not used properly ('A B' -> ["'A", "B'"])
+		# >&2 echo "python3 fill_ctd_clargs.py --ctd $ini $cli"
+		eval "python3 fill_ctd_clargs.py --ctd $ini $cli" > "$ctdtmp"
+		# echo $ctdtmp
+ 		# >&2 cat $ctdtmp
+  		testtmp=$(mktemp)
+ 		python3 $CTDCONVERTER/convert.py galaxy -i $ctdtmp -o $testtmp -s tools_blacklist.txt -f "$FILETYPES" -m macros.xml -t tool.conf  -p hardcoded_params.json --tool-version $VERSION --test-only --test-unsniffable csv tsv txt dta dta2d edta mrm splib > /dev/null
+	   	cat $testtmp | grep -v '<output.*file=""' # | grep -v 'CHEMISTRY/'
+		rm $ctdtmp $testtmp
+
+		#> /dev/null
+
+		#rm $testtmp
+	done 
+	echo '</xml>'
+}
+
+#some tests use the same file twice which does not work in planemo tests
+#hence we create symlinks for each file used twice
+function unique_files {
+	line=$@
+	for arg in $@
+	do
+		if [[ ! -f "test-data/$arg" ]]; then
+			continue
+		fi
+		cnt=$(grep -c $arg <<< $(echo "$line" | tr ' ' '\n'))
+		while [[ $cnt -gt 1 ]]; do
+            new_arg=$(echo $arg | sed "s/\(.*\)\./\1_$cnt./")
+			ln -fs $arg test-data/$new_arg
+			line=$(echo $line | sed "s/\($arg.*\)$arg/\1$new_arg/")
+			cnt=$(grep -c $arg <<< $(echo "$line" | tr ' ' '\n'))
+		done
+	done
+
+	echo $line
+}
+
+# options of out_type selects need to be fixed to Galaxy data types
+function fix_out_type {
+	grep "^$1" "$2" | awk '{print $2}'
+}
+
+#OpenMS tests output to tmp files and compare with FuzzyDiff to the expected file.
+#problem: the extension of the tmp files is unusable for test generation.
+#unfortunately the extensions used in the DIFF lines are not always usable for the CLI
+#(e.g. for prepare_test_data, e.g. CLI expects csv but test file is txt)
+#this function replaces the tmp file by the expected file. 
+function fix_tmp_files {
+#	>&2 echo "FIX $line"
+	ret=""
+	for a in $@; do
+		if [[ ! $a =~ .tmp$ ]]; then
+			ret="$ret $a"
+			continue
+		fi
+#		>&2 echo "    a "$a
+		g=$(cat $OPENMSGIT/src/tests/topp/CMakeLists.txt $OPENMSGIT/src/tests/topp/THIRDPARTY/third_party_tests.cmake | awk '{printf("%s@NEWLINE@", $0)}' | sed 's/)@NEWLINE@/)\n/g' | sed 's/@NEWLINE@/ /g' | grep '\${DIFF}.*'"$a")
+#		>&2 echo "    g "$g
+		in1=$(sed 's/.*-in1 \([^ ]\+\).*/\1/' <<<$g)
+		# >&2 echo "    in1 "$in1
+		if [[  "$a" != "$in1" ]]; then
+			ret="$ret $a"
+			continue
+		fi
+		in2=$(sed 's/.*-in2 \([^ ]\+\).*/\1/' <<<$g)
+		in2=$(basename $in2 | sed 's/)$//')
+		# >&2 echo "    in2 "$in2
+		if [[ -f "test-data/$in2" ]]; then
+			ln -fs "$in1" "test-data/$in2"
+			ret="$ret $in2"
+		else
+			ret="$ret $a"
+		fi
+	done
+#	>&2 echo "--> $ret"
+	echo "$ret"
+}
+
+function link_tmp_files {
+    # note this also considers commented lines (starting with a #)
+    # because of tests where the diff command is commented and we
+    # still want to use the extension of these files
+    cat $OPENMSGIT/src/tests/topp/CMakeLists.txt $OPENMSGIT/src/tests/topp/THIRDPARTY/third_party_tests.cmake | sed 's/^\s*//; s/\s*$//' | grep -v "^$"  | awk '{printf("%s@NEWLINE@", $0)}' | sed 's/)@NEWLINE@/)\n/g' | sed 's/@NEWLINE@/ /g' | grep "\${DIFF}" | while read -r line
+    do
+        in1=$(sed 's/.*-in1 \([^ ]\+\).*/\1/' <<<$line)
+        in1=$(basename $in1 | sed 's/)$//')
+        in2=$(sed 's/.*-in2 \([^ ]\+\).*/\1/' <<<$line)
+        in2=$(basename $in2 | sed 's/)$//')
+        if [[ "$in1" == "$in2" ]]; then
+            >&2 echo "not linking equal $in1 $in2"
+            continue
+        fi
+        ln -f -s $in1 test-data/$in2
+    done
+    for i in test-data/*.tmp
+    do
+        if [ ! -e test-data/$(basename $i .tmp) ]; then
+            ln -s $(basename $i) test-data/$(basename $i .tmp)
+            #ln -s $(basename $i) test-data/$(basename $i .tmp)
+        else
+            ln -fs $(basename $i) test-data/$(basename $i .tmp)
+        fi
+    done
+}
+
+
+
+# parse data preparation calls from OpenMS sources for a tool with a given id
+function prepare_test_data {
+# 	id=$1
+# | egrep -i "$id\_.*[0-9]+(_prepare\"|_convert)?"
+	cat $OPENMSGIT/src/tests/topp/CMakeLists.txt  $OPENMSGIT/src/tests/topp/THIRDPARTY/third_party_tests.cmake | sed 's/#.*$//'| sed 's/^\s*//; s/\s*$//' | grep -v "^$"  | awk '{printf("%s@NEWLINE@", $0)}' | sed 's/)@NEWLINE@/)\n/g' | sed 's/@NEWLINE@/ /g' | 
+		sed 's/degenerate_cases\///' | 
+		egrep -v "WRITEINI|WRITECTD|INVALIDVALUE|DIFF" | 
+		grep add_test | 
+		egrep "TOPP|UTILS" |
+		sed 's@${DATA_DIR_SHARE}/@@g;'|
+		sed 's@${TMP_RIP_PATH}@dummy2.tmp@g'|
+		sed 's@TOFCalibration_ref_masses @TOFCalibration_ref_masses.txt @g; s@TOFCalibration_const @TOFCalibration_const.csv @'| 
+	while read line
+	do
+		test_id=$(echo "$line" | sed 's/add_test(//; s/"//g;  s/)[^)]*$//; s/\${TOPP_BIN_PATH}\///g;s/\${DATA_DIR_TOPP}\///g; s#THIRDPARTY/##g' | cut -d" " -f1)
+
+		if grep -lq "$test_id"'\".* PROPERTIES WILL_FAIL 1' $OPENMSGIT/src/tests/topp/CMakeLists.txt $OPENMSGIT/src/tests/topp/THIRDPARTY/third_party_tests.cmake; then
+			>&2 echo "    skip failing "$test_id
+			continue
+		fi
+
+		line=$(echo "$line" | sed 's/add_test("//; s/)[^)]*$//; s/\${TOPP_BIN_PATH}\///g;s/\${DATA_DIR_TOPP}\///g; s#THIRDPARTY/##g' | cut -d" " -f2-)
+		# line="$(fix_tmp_files $line)"
+		echo "$line > $test_id.stdout 2> $test_id.stderr"
+		echo "if [[ \"\$?\" -ne \"0\" ]]; then >&2 echo '$test_id failed'; >&2 echo -e \"stderr:\n\$(cat $test_id.stderr | sed 's/^/    /')\"; echo -e \"stdout:\n\$(cat $test_id.stdout)\";fi"	
+    done
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/generate.sh	Thu Aug 27 23:24:20 2020 +0000
@@ -0,0 +1,76 @@
+#!/usr/bin/env bash
+
+# VERSION=2.3
+# CONDAPKG=https://anaconda.org/bioconda/openms/2.3.0/download/linux-64/openms-2.3.0-py27h932d754_3.tar.bz2
+# VERSION=2.4
+# CONDAPKG=https://anaconda.org/bioconda/openms/2.4.0/download/linux-64/openms-2.4.0-py27h574aadf_1.tar.bz2
+
+VERSION=2.5
+FILETYPES="filetypes.txt"
+PROFILE="20.05"
+## FILETYPES_RE=$(grep -v "^#" $FILETYPES | grep -v "^$" | cut -f 1 -d" " | tr '\n' '|' | sed 's/|$//'| sed 's/|/\\|/g')
+
+export tmp=$(mktemp -d)
+
+export CTDCONVERTER="$tmp/CTDConverter"
+
+export PYTHONPATH="$(pwd)/CTDopts/"
+###############################################################################
+## reset old data
+###############################################################################
+# rm $(ls *xml |grep -v macros)
+# rm -rf ctd
+# mkdir -p ctd
+# echo "" > prepare_test_data.sh
+
+###############################################################################
+## generate tests
+## also creates 
+## - conda environment (for executing the binaries) and 
+## - the git clone of OpenMS (for generating the tests)
+## - ctd files
+###############################################################################
+bash ./test-data.sh ./macros_autotest.xml
+
+###############################################################################
+## get the 
+## - conda package (for easy access and listing of the OpenMS binaries), 
+###############################################################################
+# if [ ! -d $OPENMSPKG ]; then
+# 	mkdir $OPENMSPKG/
+# 	wget -P $OPENMSPKG/ "$CONDAPKG"
+# 	tar -xf $OPENMSPKG/"$(basename $CONDAPKG)" -C OpenMS$VERSION-pkg/
+#   rm $OPENMSPKG/"$(basename $CONDAPKG)"
+# fi
+
+###############################################################################
+## Get python libaries for CTD -> Galaxy conversion
+## TODO fix to main repo OR conda packkage if PRs are merged 
+###############################################################################
+# if [ ! -d CTDopts ]; then
+# 	# git clone https://github.com/genericworkflownodes/CTDopts CTDopts
+# 	git clone -b topic/no-1-2x https://github.com/bernt-matthias/CTDopts CTDopts
+# fi
+if [ ! -d $CTDCONVERTER ]; then
+	#git clone https://github.com/WorkflowConversion/CTDConverter.git CTDConverter
+	git clone -b topic/cdata https://github.com/bernt-matthias/CTDConverter.git $CTDCONVERTER
+fi
+# export PYTHONPATH=$(pwd)/CTDopts
+###############################################################################
+## conversion ctd->xml 
+###############################################################################
+source $(dirname $(which conda))/../etc/profile.d/conda.sh
+conda activate $tmp/OpenMS$VERSION-env
+python $CTDCONVERTER/convert.py galaxy -i ctd/*ctd -o ./ -s tools_blacklist.txt -f "$FILETYPES" -m macros.xml -t tool.conf  -p hardcoded_params.json --test-macros macros_autotest.xml --test-macros-prefix autotest_  --test-macros macros_test.xml --test-macros-prefix manutest_ --tool-version $VERSION --tool-profile $PROFILE > convert.out 2> convert.err
+if [[ "$?" -ne "0" ]]; then >&2 echo 'CTD -> XML conversion failed'; >&2 echo -e "stderr:\n$(cat convert.err)"; fi
+conda deactivate
+
+patch PepNovoAdapter.xml < PepNovoAdapter.patch
+patch OMSSAAdapter.xml < OMSSAAdapter.patch
+
+# #-b version log debug test in_type executable pepnovo_executable param_model_directory rt_concat_trafo_out param_id_pool
+
+# for i in A-E F-H I-L M-N O-P Q-Z
+# do
+# 	planemo t [$i]*xml --galaxy_branch release_20.05 --galaxy_python_version 3.7 --test_output $i.html --test_output_json $i.json &
+# done
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hardcoded_params.json	Thu Aug 27 23:24:20 2020 +0000
@@ -0,0 +1,247 @@
+{
+	"#": "blacklist parameters",
+
+	"version": [{"value": "@"}],
+	"debug": [{"value": "@"}],
+	"algorithm:debug": [{"value": "@"}],
+	"java_memory": [{"value": "@"}],
+	"java_permgen": [{"value": "@"}],
+	"#": "type of input is always determined from the file extension ",
+	"in_type": [{"value": "@"}],
+
+	"#": "tool specific blacklist parameters",
+
+	"convert_back": [{"value": "@", "tools": ["OpenSwathMzMLFileCacher"]}],
+	"NET_executable": [{
+			"value": "@", 
+			"tools": ["FileConverter"]
+	}],
+
+
+	"params_file": [{"value": "@", "tools": ["SpectraSTSearchAdapter"]}],
+
+	"#": "TODO not usable in 2.5 https://github.com/OpenMS/OpenMS/issues/4456, corresponding test currently disabled",
+    	"consensus_out": [{"value": "@", "tools": ["MaRaClusterAdapter"]}],
+	"#": "TODO would need treatment as prefix-output",
+	"output_directory": [{"value": "@", "tools": ["MaRaClusterAdapter"]}],
+
+	"#": "hardcode parameter values",
+
+	"comet_version": [{
+		"value":"2016.01 rev. 3"
+	}],
+	"comet_executable": [{
+		"value":"comet"
+	}],
+	"crux_executable": [{
+		"value": "crux"
+	}],
+	"fido_executable": [{
+		"value":"Fido"
+	}],
+	"fidocp_executable": [{
+		"value":"FidoChooseParameters"
+	}],
+	"maracluster_executable": [{
+		"value":"/home/berntm/projects/tools-galaxyp/tools/openms/OpenMS2.5.0-git/THIRDPARTY/Linux/64bit/MaRaCluster/maracluster"
+	}],
+	"mascot_directory": [{
+		"value":"TODO"
+	}],
+	"myrimatch_executable": [{
+		"value":"myrimatch"
+	}],
+	"omssa_executable": [{
+		"value":"$(dirname $(realpath $(which omssacl)))/omssacl"
+	}],
+	"ThermoRaw_executable": [{
+		"value": "ThermoRawFileParser.exe", 
+		"tools": ["FileConverter"]
+	}],
+	"pepnovo_executable": [{
+		"value":"pepnovo"
+	}],
+	"percolator_executable": [{
+		"value":"percolator"
+	}],
+	"xtandem_executable": [{
+		"value":"xtandem"
+	}],
+	"executable": [
+		{
+			"value":"$(dirname $(realpath $(which luciphor2)))/luciphor2.jar",
+			"tools": ["LuciphorAdapter"]
+		}, {
+			"value":"/home/berntm/Downloads/MSFragger-20171106/MSFragger-20171106.jar",
+			"tools": ["MSFraggerAdapter"]
+		}, {
+			"value":"$(msgf_plus -get_jar_path)",
+			"tools": ["MSGFPlusAdapter"]
+		}, {
+			"value": "/home/berntm/Downloads/novor/lib/novor.jar",
+			"tools": ["NovorAdapter"]
+		}, {
+			"value":"$(which sirius)",
+			"tools": ["SiriusAdapter", "AssayGeneratorMetabo"]
+		}, {
+			"value":"spectrast",
+			"tools": ["SpectraSTSearchAdapter"]
+		}
+	],
+	"r_executable": [{
+		"value":"R"
+	}],
+	"rscript_executable": [{
+		"value":"Rscript"
+	}],
+	"java_executable": [{
+		"value":"java"
+	}],
+	"log": [{
+		"value":"log.txt"
+	}],
+	"tempDirectory": [{
+		"value":"$TMP_DIR"
+	}],
+	"temp_data_directory": [{
+		"value":"$TMP_DIR"
+	}],
+	"algorithm:Preprocessing:tmp_dir": [{
+		"value":"$TMP_DIR"
+	}],
+	"no_progress": [{
+		"value": true
+	}],
+	"#": "only used in LuciphorAdapter at the moment, inconsistency will be fixed",
+	"num_threads": [{
+		"value":"${GALAXY_SLOTS:-1}"
+	}],
+	"threads": [{
+		"value": "${GALAXY_SLOTS:-1}"
+	}],
+	"#": "hardcode the outer loop threads for OpenSwathWorkflow",
+	"outer_loop_threads": [{
+			"value": "1", 
+			"tools": ["OpenSwathWorkflow"]
+	}],
+	"separator": [{
+		"value": ",",
+		"tools": ["IDMassAccuracy"]
+	}],
+	"#": "overwrite/add Galaxy xml attributes of some parameters (names need to start with param_)",
+
+	"#": "test is not a hardcoded value since we need to set it in the tool tests", 
+	"test": [{
+		"CTD:type": "text",
+		"XML:type": "hidden"
+	}],
+
+	"#": "overwrite CTD attributes of some parameters (some are not possible, e.g. type)",
+
+	"#": "for some tools the user needs to select the desired output type since detection by extension makes no sense for galaxy tools",
+	"out_type": [{
+	    "CTD:required": true,
+	    "CTD:advanced": false
+	}],
+
+	"#": "SeedListGenerator with consensusXML input needs a dynamic number of outputs that depends on the content of the input, so we remove this options at the moment because its hard or impossible to implement in Galaxy, https://github.com/OpenMS/OpenMS/issues/4404 .. see also in parameter",
+	"#": "FileInfo, MapStatistics, SequenceCoverageCalculator wo -out just writes to stdout. not wanted here",
+	"#": "MascotAdapter: https://github.com/OpenMS/OpenMS/pull/4553",
+	"#": "Phosphoscoring: https://github.com/OpenMS/OpenMS/pull/4569",
+	"#": "MzMLSplitter output prefix https://github.com/OpenMS/OpenMS/issues/4404",
+	"#": "IDRipper: blacklist out (is doing the same as the output-prefix out-path)",
+	"out": [{
+		"CTD:is_list": false, 
+		"tools": ["SeedListGenerator"]
+	}, {
+	 	"CTD:required": true,
+		"tools": ["FileInfo", "MapStatistics", "SequenceCoverageCalculator"]
+	}, {
+		"CTD:restrictions": "idXML",
+		"tools": ["MascotAdapter"]
+	}, {
+		"CTD:restrictions": "idXML",
+		"tools": ["PhosphoScoring"]	
+	}, {
+		"CTD:type": "output-prefix", 
+		"CTD:required": "true",
+		"CTD:restrictions": "mzml",
+		"tools": ["MzMLSplitter"]
+	}, {
+		"value": "@", 
+		"tools": ["IDRipper"]
+	}],
+
+	"#": "https://github.com/OpenMS/OpenMS/pull/4552 .. if this is removed the test will need out_cm_FLAG",
+	"out_cm": [{
+		"CTD:required": true, 
+		"tools": ["MetaboliteAdductDecharger"]
+	}],
+
+
+	"#": "https://github.com/OpenMS/OpenMS/pull/4451", 
+	"out_xquestxml": [{
+		"CTD:restrictions": "xquest.xml",
+		"tools": ["OpenPepXL", "OpenPepXLLF"]
+	}],
+	"out_xquest_specxml": [{
+		"CTD:restrictions": "spec.xml",
+		"tools": ["OpenPepXL", "OpenPepXLLF"]
+	}],
+
+	"#": "Try to remove xml data type whereever possible",
+	"#": "XTandem Adapter output is called .xml in OMS -> use Galaxy's bioml",
+	"xml_out": [{
+		"CTD:restrictions": "bioml",
+		"tools": ["XTandemAdapter"]
+	}],
+	
+	"#": "IDFileConverter remove xml",
+	"#": "OpenSwathWorkflow make in single file input and all outputs non-optional",
+        "#": "XFDR does not need xml .. redundant with xquest.xml TODO check if list is up to date with each new release",
+        "#": "SpectraSTSearchAdapter does not need xml .. redundant with pep.xml TODO check if list is up to date with each new release",
+	"#": "SeedListGenerator https://github.com/OpenMS/OpenMS/issues/4404 .. see also out parameter",
+	"in": [{
+		"CTD:restrictions": "pepXML,protXML,mascotXML,omssaXML,bioml,psms,tsv,idXML,mzid,xquest.xml",
+		"tools": ["IDFileConverter"]
+	}, {
+		"CTD:is_list": false, 
+		"tools": ["OpenSwathWorkflow"]
+	}, {
+		"CTD:restrictions": "idXML,mzid,xquest.xml",
+		"tools": ["XFDR"]
+	}, {
+		"CTD:restrictions": "txt,tsv,pep.xml,pepXML,html",
+		"tools": ["SpectraSTSearchAdapter"]
+	}, {
+		"CTD:restrictions": "mzML,idXML,featureXML",
+		"tools": ["SeedListGenerator"]
+	}],
+
+	"#": "parameter is a flag but restrictions in wrong order: TODO https://github.com/OpenMS/OpenMS/pull/4455",
+	"# masstrace_snr_filtering": [{
+		"CTD:restrictions": "true,false",
+		"tools": ["MassTraceExtractor"]
+	}],
+
+	"#": "IDMapper has in and spectra:in params, in is used in out as format_source",
+	"#": "which does not work in Galaxy: https://github.com/galaxyproject/galaxy/pull/9493", 
+	"spectra:in": [{
+		"CTD:name": "_in", 
+		"tools": ["IDMapper"]
+	}],
+
+	"#": "output-prefix",
+	"out_path": [{
+		"CTD:type": "output-prefix", 
+		"CTD:required": "true",
+		"CTD:restrictions": "idXML",
+		"tools": ["IDRipper"]
+	}],
+	"outputDirectory": [{
+		"CTD:type": "output-prefix", 
+		"CTD:required": "true",
+		"CTD:restrictions": "mzml",
+		"tools": ["OpenSwathFileSplitter"]
+	}]
+}
--- a/macros.xml	Wed May 15 06:52:44 2019 -0400
+++ b/macros.xml	Thu Aug 27 23:24:20 2020 +0000
@@ -1,11 +1,21 @@
 <?xml version='1.0' encoding='UTF-8'?>
+<!-- CTD2Galaxy depends on this file and on the stdio, advanced_options macros!
+     You can edit this file to add your own macros, if you so desire, or you can
+     add additional macro files using the m/macros parameter -->
 <macros>
+  <token name="@TOOL_VERSION@">2.5</token>
+  <token name="@GALAXY_VERSION@">0</token>
   <xml name="requirements">
     <requirements>
-      <requirement type="package" version="2.3">openms</requirement>
-      <requirement type="package" version="15.12.15.2">xtandem</requirement>
-      <requirement type="package" version="1.0">fido</requirement>
-      <requirement type="package" version="2017.07.21">msgf_plus</requirement>
+      <requirement type="package" version="@TOOL_VERSION@">openms</requirement>
+      <requirement type="package" version="@TOOL_VERSION@">openms-thirdparty</requirement>
+      <!-- makeblastdb for OMSSAAdapter -->
+      <requirement type="package" version="2.9.0">blast</requirement>
+      <requirement type="package" version="8.0.192">openjdk</requirement>
+      <!--<requirement type="package" version="5.0.0">tpp</requirement>-->
+      <!-- for realpath (used e.g. in LuciphorAdapter) -->
+	  <!--<requirement type="package" version="8.25">coreutils</requirement>-->
+	  <requirement type="package" version="1.4">ctdopts</requirement>
       <yield/>
     </requirements>
   </xml>
@@ -21,8 +31,8 @@
       <citation type="doi">doi:10.1186/1471-2105-9-163</citation>
     </citations>
   </xml>
-  <xml name="advanced_options">
-    <conditional name="adv_opts">
+  <xml name="adv_opts_macro">
+    <conditional name="adv_opts_cond">
       <param name="adv_opts_selector" type="select" label="Advanced Options">
         <option value="basic" selected="True">Hide Advanced Options</option>
         <option value="advanced">Show Advanced Options</option>
@@ -33,4 +43,87 @@
       </when>
     </conditional>
   </xml>
-</macros>
+
+  <!-- sanitizers and validators -->
+  <xml name="list_string_val">
+    <validator type="regex" message="parameter must not start with $">^[^$]</validator>
+    
+    <validator type="regex" message="a space separated list of string is needed (strings that contain spaces can be quoted with &quot;)">^ *((?:\"[^\"]*\" +)|(?:[^ \"]+ +))*((?:\"[^\"]*\")|(?:[^ \"]+)) *$</validator>
+  </xml>
+  <xml name="list_string_san">
+    <sanitizer>
+      <valid initial="string.printable">
+<!--        <remove value="'"/>-->
+<!--        <remove value="\"/>--><!-- otherwise the user could quote the final quote -->
+<!--        <remove value="`"/>-->
+<!--        <remove value="$"/>-->
+<!--        <remove value="&lt;"/>-->
+	<!--<remove value="&amp;"/> removed for MascotAdapterOnline -Mascot_server:export_params which is a URL POST string which can contain & .. could be mapped to &amp; but there is still a & -->
+        <!--<remove value=";"/>-->
+<!--        <remove value="#"/>-->
+      </valid>
+    </sanitizer>
+  </xml>
+  <xml name="list_float_valsan">
+    <validator type="regex" message="a space separated list of float values is required">^ *[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?( *[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?)* *$</validator>
+    <yield/>
+    <sanitizer>
+      <valid initial="string.digits">
+        <add value=" "/>
+        <add value="."/>
+        <add value="E"/>
+        <add value="e"/>
+        <add value="+"/>
+        <add value="-"/>
+      </valid>
+    </sanitizer>
+  </xml>
+  <xml name="list_integer_valsan">
+    <validator type="regex" message="a space separated list of integer values is required">^ *[+-]?[0-9]+( *[+-]?[0-9]+)* *$</validator>
+    <yield/>
+    <sanitizer>
+      <valid initial="string.digits">
+        <add value=" "/>
+        <add value="+"/>
+        <add value="-"/>
+      </valid>
+    </sanitizer>
+  </xml>
+
+  <!-- helper function to quote space separated strings -->
+  <token name="@QUOTE_FOO@">
+#def quote(s):
+    #set $s = [ _ for _ in $s.split(" ") if _ != "" ]
+    #set $q = False
+    #for $i, $p in enumerate($s):
+        #if $p == "":
+            #continue
+        #end if
+        #if $p.startswith('"'):
+            #set $q = True
+        #end if
+##        #if p.startswith('-'):
+##            #set p = "\\" + p
+##        #elif p.startswith('"-'):
+##            #set p = "\\" + p[1:]
+##        #end if
+        #if not $q:
+            #set $s[i] = '"%s"' % p
+        #end if
+        #if $p.endswith('"'):
+            #set $q = False
+        #end if
+    #end for
+    #return " ".join($s)
+#end def
+  </token>
+
+<token name="@EXT_FOO@"><![CDATA[#def oms2gxyext(o)
+    #set m={'txt': 'txt', 'tsv': 'tabular', 'bioml': 'xml', 'consensusXML': 'consensusxml', 'csv': 'csv', 'dta': 'dta', 'dta2d': 'dta2d', 'edta': 'edta', 'fa': 'fasta', 'fas': 'fasta', 'fasta': 'fasta', 'FASTA': 'fasta', 'featureXML': 'featurexml', 'featurexml': 'featurexml', 'html': 'html', 'HTML': 'html', 'idXML': 'idxml', 'json': 'json', 'kroenik': 'kroenik', 'mascotXML': 'mascotxml', 'mgf': 'mgf', 'mrm': 'mrm', 'ms': 'sirius.ms', 'ms2': 'ms2', 'msp': 'msp', 'mzData': 'mzdata', 'mzid': 'mzid', 'mzML': 'mzml', 'mzml': 'mzml', 'mzq': 'mzq', 'mzTab': 'mztab', 'mzXML': 'mzxml', 'novor': 'txt', 'obo': 'obo', 'omssaXML': 'idxml', 'osw': 'osw', 'OSW': 'osw', 'params': 'txt', 'paramXML': 'paramxml', 'peplist': 'peplist', 'pep.xml': 'pepxml', 'pepXML': 'pepxml', 'png': 'png', 'PNG': 'png', 'protXML': 'protxml', 'psms': 'psms', 'pqp': 'pqp', 'qcML': 'qcml', 'spec.xml': 'spec.xml', 'splib': 'splib', 'sqMass': 'sqmass', 'tandem.xml': 'tandem', 'trafoXML': 'trafoxml', 'traML': 'traml', 'TraML': 'traml', 'tab': 'tabular', 'raw': 'thermo.raw', 'xls': 'tsv', 'XML': 'xml', 'xml': 'xml', 'xquest.xml': 'xquest.xml', 'xsd': 'xml'}
+    #return m[o]
+#end def
+#def gxy2omsext(g)
+    #set m={'txt': 'txt', 'tabular': 'tsv', 'xml': 'bioml', 'consensusxml': 'consensusXML', 'csv': 'csv', 'dta': 'dta', 'dta2d': 'dta2d', 'edta': 'edta', 'fasta': 'fa', 'featurexml': 'featureXML', 'html': 'html', 'idxml': 'idXML', 'json': 'json', 'kroenik': 'kroenik', 'mascotxml': 'mascotXML', 'mgf': 'mgf', 'mrm': 'mrm', 'sirius.ms': 'ms', 'ms2': 'ms2', 'msp': 'msp', 'mzdata': 'mzData', 'mzid': 'mzid', 'mzml': 'mzML', 'mzq': 'mzq', 'mztab': 'mzTab', 'mzxml': 'mzXML', 'obo': 'obo', 'osw': 'osw', 'paramxml': 'paramXML', 'peff': 'fasta', 'peplist': 'peplist', 'pepxml': 'pep.xml', 'png': 'png', 'protxml': 'protXML', 'psms': 'psms', 'pqp': 'pqp', 'qcml': 'qcML', 'spec.xml': 'spec.xml', 'splib': 'splib', 'sqmass': 'sqMass', 'tandem': 'tandem.xml', 'trafoxml': 'trafoXML', 'traml': 'traML', 'thermo.raw': 'raw', 'tsv': 'xls', 'xquest.xml': 'xquest.xml'}
+    #return m[g]
+#end def
+]]></token></macros>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/macros_autotest.xml	Thu Aug 27 23:24:20 2020 +0000
@@ -0,0 +1,26318 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<macros>
+  <xml name="autotest_AccurateMassSearch">
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="ConsensusMapNormalizer_input.consensusXML"/>
+      <output name="out" file="AccurateMassSearch_1_output.tmp.mzTab" compare="sim_size" delta="5700" ftype="mztab"/>
+      <param name="positive_adducts" value="CHEMISTRY/PositiveAdducts.tsv" ftype="tabular"/>
+      <param name="negative_adducts" value="CHEMISTRY/NegativeAdducts.tsv" ftype="tabular"/>
+      <section name="db">
+        <param name="mapping" value="CHEMISTRY/HMDBMappingFile.tsv" ftype="tabular"/>
+        <param name="struct" value="CHEMISTRY/HMDB2StructMapping.tsv" ftype="tabular"/>
+      </section>
+      <section name="algorithm">
+        <param name="mass_error_value" value="5.0"/>
+        <param name="mass_error_unit" value="ppm"/>
+        <param name="ionization_mode" value="positive"/>
+        <param name="isotopic_similarity" value="false"/>
+        <param name="use_feature_adducts" value="false"/>
+        <param name="keep_unidentified_masses" value="false"/>
+        <section name="mzTab">
+          <param name="exportIsotopeIntensities" value="false"/>
+        </section>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="3">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="AccurateMassSearch_2_input.featureXML"/>
+      <output name="out" file="AccurateMassSearch_2_output.tmp.mzTab" compare="sim_size" delta="5700" ftype="mztab"/>
+      <output name="out_annotation" file="AccurateMassSearch_2_output.tmp.featureXML" compare="sim_size" delta="5700" ftype="featurexml"/>
+      <param name="positive_adducts" value="AMS_PositiveAdducts.tsv" ftype="tabular"/>
+      <param name="negative_adducts" value="AMS_NegativeAdducts.tsv" ftype="tabular"/>
+      <section name="db">
+        <param name="mapping" value="AMS_test_Mapping.tsv" ftype="tabular"/>
+        <param name="struct" value="AMS_test_Struct.tsv" ftype="tabular"/>
+      </section>
+      <section name="algorithm">
+        <param name="mass_error_value" value="5.0"/>
+        <param name="mass_error_unit" value="ppm"/>
+        <param name="ionization_mode" value="positive"/>
+        <param name="isotopic_similarity" value="false"/>
+        <param name="use_feature_adducts" value="false"/>
+        <param name="keep_unidentified_masses" value="false"/>
+        <section name="mzTab">
+          <param name="exportIsotopeIntensities" value="true"/>
+        </section>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG,out_annotation_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="3">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="AccurateMassSearch_2_input.featureXML"/>
+      <output name="out" file="AccurateMassSearch_3_output.tmp.mzTab" compare="sim_size" delta="5700" ftype="mztab"/>
+      <output name="out_annotation" file="AccurateMassSearch_2_output.tmp.featureXML" compare="sim_size" delta="5700" ftype="featurexml"/>
+      <param name="positive_adducts" value="AMS_PositiveAdducts.tsv" ftype="tabular"/>
+      <param name="negative_adducts" value="AMS_NegativeAdducts.tsv" ftype="tabular"/>
+      <section name="db">
+        <param name="mapping" value="AMS_test_Mapping.tsv" ftype="tabular"/>
+        <param name="struct" value="AMS_test_Struct.tsv" ftype="tabular"/>
+      </section>
+      <section name="algorithm">
+        <param name="mass_error_value" value="5.0"/>
+        <param name="mass_error_unit" value="ppm"/>
+        <param name="ionization_mode" value="positive"/>
+        <param name="isotopic_similarity" value="false"/>
+        <param name="use_feature_adducts" value="false"/>
+        <param name="keep_unidentified_masses" value="false"/>
+        <section name="mzTab">
+          <param name="exportIsotopeIntensities" value="false"/>
+        </section>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG,out_annotation_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+  </xml>
+  <xml name="autotest_AssayGeneratorMetabo">
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="precursor_recalibration_window" value="0.1"/>
+        <param name="precursor_recalibration_window_unit" value="Da"/>
+        <param name="min_fragment_mz" value="0.0"/>
+        <param name="max_fragment_mz" value="2000.0"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="AssayGeneratorMetabo_input.mzML"/>
+      <param name="in_id" value="AssayGeneratorMetabo_ffm_input.featureXML"/>
+      <param name="out_type" value="tsv"/>
+      <output name="out" file="AssayGeneratorMetabo_ffm_output.tmp.tsv" compare="sim_size" delta="5700" ftype="tabular"/>
+      <param name="fragment_annotation" value="none"/>
+      <param name="method" value="highest_intensity"/>
+      <param name="use_exact_mass" value="false"/>
+      <param name="exclude_ms2_precursor" value="false"/>
+      <param name="precursor_mz_distance" value="0.0001"/>
+      <param name="precursor_rt_tolerance" value="5.0"/>
+      <param name="use_known_unknowns" value="false"/>
+      <param name="min_transitions" value="1"/>
+      <param name="max_transitions" value="3"/>
+      <param name="cosine_similarity_threshold" value="0.98"/>
+      <param name="transition_threshold" value="5.0"/>
+      <param name="out_workspace_directory" value=""/>
+      <section name="deisotoping">
+        <param name="use_deisotoper" value="false"/>
+        <param name="fragment_tolerance" value="1.0"/>
+        <param name="fragment_unit" value="ppm"/>
+        <param name="min_charge" value="1"/>
+        <param name="max_charge" value="1"/>
+        <param name="min_isopeaks" value="2"/>
+        <param name="max_isopeaks" value="3"/>
+        <param name="keep_only_deisotoped" value="false"/>
+        <param name="annotate_charge" value="false"/>
+      </section>
+      <section name="preprocessing">
+        <param name="filter_by_num_masstraces" value="1"/>
+        <param name="precursor_mz_tolerance" value="0.005"/>
+        <param name="precursor_mz_tolerance_unit" value="Da"/>
+        <param name="precursor_rt_tolerance" value="5"/>
+        <param name="isotope_pattern_iterations" value="3"/>
+        <param name="feature_only" value="false"/>
+        <param name="no_masstrace_info_isotope_pattern" value="false"/>
+      </section>
+      <section name="sirius">
+        <param name="profile" value="qtof"/>
+        <param name="candidates" value="5"/>
+        <param name="database" value="all"/>
+        <param name="noise" value="0"/>
+        <param name="ppm_max" value="10"/>
+        <param name="isotope" value="both"/>
+        <param name="elements" value="CHNOP[5]S[8]Cl[1]"/>
+        <param name="compound_timeout" value="10"/>
+        <param name="tree_timeout" value="0"/>
+        <param name="top_n_hits" value="10"/>
+        <param name="cores" value="1"/>
+        <param name="auto_charge" value="false"/>
+        <param name="ion_tree" value="false"/>
+        <param name="no_recalibration" value="false"/>
+        <param name="most_intense_ms2" value="false"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="precursor_recalibration_window" value="0.1"/>
+        <param name="precursor_recalibration_window_unit" value="Da"/>
+        <param name="min_fragment_mz" value="0.0"/>
+        <param name="max_fragment_mz" value="2000.0"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="AssayGeneratorMetabo_input.mzML"/>
+      <param name="in_id" value="AssayGeneratorMetabo_ams_input.featureXML"/>
+      <param name="out_type" value="tsv"/>
+      <output name="out" file="AssayGeneratorMetabo_ams_output.tmp.tsv" compare="sim_size" delta="5700" ftype="tabular"/>
+      <param name="fragment_annotation" value="none"/>
+      <param name="method" value="highest_intensity"/>
+      <param name="use_exact_mass" value="false"/>
+      <param name="exclude_ms2_precursor" value="false"/>
+      <param name="precursor_mz_distance" value="0.0001"/>
+      <param name="precursor_rt_tolerance" value="5.0"/>
+      <param name="use_known_unknowns" value="false"/>
+      <param name="min_transitions" value="1"/>
+      <param name="max_transitions" value="3"/>
+      <param name="cosine_similarity_threshold" value="0.98"/>
+      <param name="transition_threshold" value="5.0"/>
+      <param name="out_workspace_directory" value=""/>
+      <section name="deisotoping">
+        <param name="use_deisotoper" value="false"/>
+        <param name="fragment_tolerance" value="1.0"/>
+        <param name="fragment_unit" value="ppm"/>
+        <param name="min_charge" value="1"/>
+        <param name="max_charge" value="1"/>
+        <param name="min_isopeaks" value="2"/>
+        <param name="max_isopeaks" value="3"/>
+        <param name="keep_only_deisotoped" value="false"/>
+        <param name="annotate_charge" value="false"/>
+      </section>
+      <section name="preprocessing">
+        <param name="filter_by_num_masstraces" value="1"/>
+        <param name="precursor_mz_tolerance" value="0.005"/>
+        <param name="precursor_mz_tolerance_unit" value="Da"/>
+        <param name="precursor_rt_tolerance" value="5"/>
+        <param name="isotope_pattern_iterations" value="3"/>
+        <param name="feature_only" value="false"/>
+        <param name="no_masstrace_info_isotope_pattern" value="false"/>
+      </section>
+      <section name="sirius">
+        <param name="profile" value="qtof"/>
+        <param name="candidates" value="5"/>
+        <param name="database" value="all"/>
+        <param name="noise" value="0"/>
+        <param name="ppm_max" value="10"/>
+        <param name="isotope" value="both"/>
+        <param name="elements" value="CHNOP[5]S[8]Cl[1]"/>
+        <param name="compound_timeout" value="10"/>
+        <param name="tree_timeout" value="0"/>
+        <param name="top_n_hits" value="10"/>
+        <param name="cores" value="1"/>
+        <param name="auto_charge" value="false"/>
+        <param name="ion_tree" value="false"/>
+        <param name="no_recalibration" value="false"/>
+        <param name="most_intense_ms2" value="false"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="precursor_recalibration_window" value="0.1"/>
+        <param name="precursor_recalibration_window_unit" value="Da"/>
+        <param name="min_fragment_mz" value="0.0"/>
+        <param name="max_fragment_mz" value="2000.0"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="AssayGeneratorMetabo_input.mzML"/>
+      <param name="in_id" value="AssayGeneratorMetabo_ffm_input.featureXML"/>
+      <param name="out_type" value="tsv"/>
+      <output name="out" file="AssayGeneratorMetabo_ffm_output_consensus.tmp.tsv" compare="sim_size" delta="5700" ftype="tabular"/>
+      <param name="fragment_annotation" value="none"/>
+      <param name="method" value="consensus_spectrum"/>
+      <param name="use_exact_mass" value="false"/>
+      <param name="exclude_ms2_precursor" value="false"/>
+      <param name="precursor_mz_distance" value="0.0001"/>
+      <param name="precursor_rt_tolerance" value="5.0"/>
+      <param name="use_known_unknowns" value="false"/>
+      <param name="min_transitions" value="1"/>
+      <param name="max_transitions" value="3"/>
+      <param name="cosine_similarity_threshold" value="0.98"/>
+      <param name="transition_threshold" value="5.0"/>
+      <param name="out_workspace_directory" value=""/>
+      <section name="deisotoping">
+        <param name="use_deisotoper" value="false"/>
+        <param name="fragment_tolerance" value="1.0"/>
+        <param name="fragment_unit" value="ppm"/>
+        <param name="min_charge" value="1"/>
+        <param name="max_charge" value="1"/>
+        <param name="min_isopeaks" value="2"/>
+        <param name="max_isopeaks" value="3"/>
+        <param name="keep_only_deisotoped" value="false"/>
+        <param name="annotate_charge" value="false"/>
+      </section>
+      <section name="preprocessing">
+        <param name="filter_by_num_masstraces" value="1"/>
+        <param name="precursor_mz_tolerance" value="0.005"/>
+        <param name="precursor_mz_tolerance_unit" value="Da"/>
+        <param name="precursor_rt_tolerance" value="5"/>
+        <param name="isotope_pattern_iterations" value="3"/>
+        <param name="feature_only" value="false"/>
+        <param name="no_masstrace_info_isotope_pattern" value="false"/>
+      </section>
+      <section name="sirius">
+        <param name="profile" value="qtof"/>
+        <param name="candidates" value="5"/>
+        <param name="database" value="all"/>
+        <param name="noise" value="0"/>
+        <param name="ppm_max" value="10"/>
+        <param name="isotope" value="both"/>
+        <param name="elements" value="CHNOP[5]S[8]Cl[1]"/>
+        <param name="compound_timeout" value="10"/>
+        <param name="tree_timeout" value="0"/>
+        <param name="top_n_hits" value="10"/>
+        <param name="cores" value="1"/>
+        <param name="auto_charge" value="false"/>
+        <param name="ion_tree" value="false"/>
+        <param name="no_recalibration" value="false"/>
+        <param name="most_intense_ms2" value="false"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="precursor_recalibration_window" value="0.1"/>
+        <param name="precursor_recalibration_window_unit" value="Da"/>
+        <param name="min_fragment_mz" value="0.0"/>
+        <param name="max_fragment_mz" value="2000.0"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="AssayGeneratorMetabo_input.mzML"/>
+      <param name="in_id" value="AssayGeneratorMetabo_ams_input.featureXML"/>
+      <param name="out_type" value="tsv"/>
+      <output name="out" file="AssayGeneratorMetabo_ams_output_consensus.tmp.tsv" compare="sim_size" delta="5700" ftype="tabular"/>
+      <param name="fragment_annotation" value="none"/>
+      <param name="method" value="consensus_spectrum"/>
+      <param name="use_exact_mass" value="false"/>
+      <param name="exclude_ms2_precursor" value="false"/>
+      <param name="precursor_mz_distance" value="0.0001"/>
+      <param name="precursor_rt_tolerance" value="5.0"/>
+      <param name="use_known_unknowns" value="false"/>
+      <param name="min_transitions" value="1"/>
+      <param name="max_transitions" value="3"/>
+      <param name="cosine_similarity_threshold" value="0.98"/>
+      <param name="transition_threshold" value="5.0"/>
+      <param name="out_workspace_directory" value=""/>
+      <section name="deisotoping">
+        <param name="use_deisotoper" value="false"/>
+        <param name="fragment_tolerance" value="1.0"/>
+        <param name="fragment_unit" value="ppm"/>
+        <param name="min_charge" value="1"/>
+        <param name="max_charge" value="1"/>
+        <param name="min_isopeaks" value="2"/>
+        <param name="max_isopeaks" value="3"/>
+        <param name="keep_only_deisotoped" value="false"/>
+        <param name="annotate_charge" value="false"/>
+      </section>
+      <section name="preprocessing">
+        <param name="filter_by_num_masstraces" value="1"/>
+        <param name="precursor_mz_tolerance" value="0.005"/>
+        <param name="precursor_mz_tolerance_unit" value="Da"/>
+        <param name="precursor_rt_tolerance" value="5"/>
+        <param name="isotope_pattern_iterations" value="3"/>
+        <param name="feature_only" value="false"/>
+        <param name="no_masstrace_info_isotope_pattern" value="false"/>
+      </section>
+      <section name="sirius">
+        <param name="profile" value="qtof"/>
+        <param name="candidates" value="5"/>
+        <param name="database" value="all"/>
+        <param name="noise" value="0"/>
+        <param name="ppm_max" value="10"/>
+        <param name="isotope" value="both"/>
+        <param name="elements" value="CHNOP[5]S[8]Cl[1]"/>
+        <param name="compound_timeout" value="10"/>
+        <param name="tree_timeout" value="0"/>
+        <param name="top_n_hits" value="10"/>
+        <param name="cores" value="1"/>
+        <param name="auto_charge" value="false"/>
+        <param name="ion_tree" value="false"/>
+        <param name="no_recalibration" value="false"/>
+        <param name="most_intense_ms2" value="false"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="precursor_recalibration_window" value="0.1"/>
+        <param name="precursor_recalibration_window_unit" value="Da"/>
+        <param name="min_fragment_mz" value="0.0"/>
+        <param name="max_fragment_mz" value="2000.0"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="AssayGeneratorMetabo_input.mzML"/>
+      <param name="in_id" value="AssayGeneratorMetabo_ams_input.featureXML"/>
+      <param name="out_type" value="tsv"/>
+      <output name="out" file="AssayGeneratorMetabo_ams_uku_output_consensus.tmp.tsv" compare="sim_size" delta="5700" ftype="tabular"/>
+      <param name="fragment_annotation" value="none"/>
+      <param name="method" value="consensus_spectrum"/>
+      <param name="use_exact_mass" value="false"/>
+      <param name="exclude_ms2_precursor" value="false"/>
+      <param name="precursor_mz_distance" value="0.0001"/>
+      <param name="precursor_rt_tolerance" value="5.0"/>
+      <param name="use_known_unknowns" value="true"/>
+      <param name="min_transitions" value="1"/>
+      <param name="max_transitions" value="3"/>
+      <param name="cosine_similarity_threshold" value="0.98"/>
+      <param name="transition_threshold" value="5.0"/>
+      <param name="out_workspace_directory" value=""/>
+      <section name="deisotoping">
+        <param name="use_deisotoper" value="false"/>
+        <param name="fragment_tolerance" value="1.0"/>
+        <param name="fragment_unit" value="ppm"/>
+        <param name="min_charge" value="1"/>
+        <param name="max_charge" value="1"/>
+        <param name="min_isopeaks" value="2"/>
+        <param name="max_isopeaks" value="3"/>
+        <param name="keep_only_deisotoped" value="false"/>
+        <param name="annotate_charge" value="false"/>
+      </section>
+      <section name="preprocessing">
+        <param name="filter_by_num_masstraces" value="1"/>
+        <param name="precursor_mz_tolerance" value="0.005"/>
+        <param name="precursor_mz_tolerance_unit" value="Da"/>
+        <param name="precursor_rt_tolerance" value="5"/>
+        <param name="isotope_pattern_iterations" value="3"/>
+        <param name="feature_only" value="false"/>
+        <param name="no_masstrace_info_isotope_pattern" value="false"/>
+      </section>
+      <section name="sirius">
+        <param name="profile" value="qtof"/>
+        <param name="candidates" value="5"/>
+        <param name="database" value="all"/>
+        <param name="noise" value="0"/>
+        <param name="ppm_max" value="10"/>
+        <param name="isotope" value="both"/>
+        <param name="elements" value="CHNOP[5]S[8]Cl[1]"/>
+        <param name="compound_timeout" value="10"/>
+        <param name="tree_timeout" value="0"/>
+        <param name="top_n_hits" value="10"/>
+        <param name="cores" value="1"/>
+        <param name="auto_charge" value="false"/>
+        <param name="ion_tree" value="false"/>
+        <param name="no_recalibration" value="false"/>
+        <param name="most_intense_ms2" value="false"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="precursor_recalibration_window" value="0.1"/>
+        <param name="precursor_recalibration_window_unit" value="Da"/>
+        <param name="min_fragment_mz" value="0.0"/>
+        <param name="max_fragment_mz" value="2000.0"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="AssayGeneratorMetabo_input.mzML"/>
+      <param name="in_id" value="AssayGeneratorMetabo_ams_input.featureXML"/>
+      <param name="out_type" value="tsv"/>
+      <output name="out" file="AssayGeneratorMetabo_ams_sirius_output.tmp.tsv" compare="sim_size" delta="5700" ftype="tabular"/>
+      <param name="fragment_annotation" value="sirius"/>
+      <param name="method" value="highest_intensity"/>
+      <param name="use_exact_mass" value="true"/>
+      <param name="exclude_ms2_precursor" value="false"/>
+      <param name="precursor_mz_distance" value="0.0001"/>
+      <param name="precursor_rt_tolerance" value="5.0"/>
+      <param name="use_known_unknowns" value="false"/>
+      <param name="min_transitions" value="2"/>
+      <param name="max_transitions" value="3"/>
+      <param name="cosine_similarity_threshold" value="0.98"/>
+      <param name="transition_threshold" value="3.0"/>
+      <param name="out_workspace_directory" value=""/>
+      <section name="deisotoping">
+        <param name="use_deisotoper" value="false"/>
+        <param name="fragment_tolerance" value="1.0"/>
+        <param name="fragment_unit" value="ppm"/>
+        <param name="min_charge" value="1"/>
+        <param name="max_charge" value="1"/>
+        <param name="min_isopeaks" value="2"/>
+        <param name="max_isopeaks" value="3"/>
+        <param name="keep_only_deisotoped" value="false"/>
+        <param name="annotate_charge" value="false"/>
+      </section>
+      <section name="preprocessing">
+        <param name="filter_by_num_masstraces" value="1"/>
+        <param name="precursor_mz_tolerance" value="10.0"/>
+        <param name="precursor_mz_tolerance_unit" value="ppm"/>
+        <param name="precursor_rt_tolerance" value="5"/>
+        <param name="isotope_pattern_iterations" value="3"/>
+        <param name="feature_only" value="true"/>
+        <param name="no_masstrace_info_isotope_pattern" value="false"/>
+      </section>
+      <section name="sirius">
+        <param name="profile" value="qtof"/>
+        <param name="candidates" value="5"/>
+        <param name="database" value="all"/>
+        <param name="noise" value="0"/>
+        <param name="ppm_max" value="10"/>
+        <param name="isotope" value="both"/>
+        <param name="elements" value="CHNOP[5]S[8]Cl[1]"/>
+        <param name="compound_timeout" value="100"/>
+        <param name="tree_timeout" value="0"/>
+        <param name="top_n_hits" value="10"/>
+        <param name="cores" value="1"/>
+        <param name="auto_charge" value="false"/>
+        <param name="ion_tree" value="false"/>
+        <param name="no_recalibration" value="false"/>
+        <param name="most_intense_ms2" value="false"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="precursor_recalibration_window" value="0.1"/>
+        <param name="precursor_recalibration_window_unit" value="Da"/>
+        <param name="min_fragment_mz" value="0.0"/>
+        <param name="max_fragment_mz" value="2000.0"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="AssayGeneratorMetabo_input.mzML"/>
+      <param name="in_id" value="AssayGeneratorMetabo_ams_input.featureXML"/>
+      <param name="out_type" value="tsv"/>
+      <output name="out" file="AssayGeneratorMetabo_ams_sirius_ukn_output.tmp.tsv" compare="sim_size" delta="5700" ftype="tabular"/>
+      <param name="fragment_annotation" value="sirius"/>
+      <param name="method" value="highest_intensity"/>
+      <param name="use_exact_mass" value="true"/>
+      <param name="exclude_ms2_precursor" value="false"/>
+      <param name="precursor_mz_distance" value="0.0001"/>
+      <param name="precursor_rt_tolerance" value="5.0"/>
+      <param name="use_known_unknowns" value="true"/>
+      <param name="min_transitions" value="2"/>
+      <param name="max_transitions" value="3"/>
+      <param name="cosine_similarity_threshold" value="0.98"/>
+      <param name="transition_threshold" value="3.0"/>
+      <param name="out_workspace_directory" value=""/>
+      <section name="deisotoping">
+        <param name="use_deisotoper" value="false"/>
+        <param name="fragment_tolerance" value="1.0"/>
+        <param name="fragment_unit" value="ppm"/>
+        <param name="min_charge" value="1"/>
+        <param name="max_charge" value="1"/>
+        <param name="min_isopeaks" value="2"/>
+        <param name="max_isopeaks" value="3"/>
+        <param name="keep_only_deisotoped" value="false"/>
+        <param name="annotate_charge" value="false"/>
+      </section>
+      <section name="preprocessing">
+        <param name="filter_by_num_masstraces" value="1"/>
+        <param name="precursor_mz_tolerance" value="10.0"/>
+        <param name="precursor_mz_tolerance_unit" value="ppm"/>
+        <param name="precursor_rt_tolerance" value="5"/>
+        <param name="isotope_pattern_iterations" value="3"/>
+        <param name="feature_only" value="true"/>
+        <param name="no_masstrace_info_isotope_pattern" value="false"/>
+      </section>
+      <section name="sirius">
+        <param name="profile" value="qtof"/>
+        <param name="candidates" value="5"/>
+        <param name="database" value="all"/>
+        <param name="noise" value="0"/>
+        <param name="ppm_max" value="10"/>
+        <param name="isotope" value="both"/>
+        <param name="elements" value="CHNOP[5]S[8]Cl[1]"/>
+        <param name="compound_timeout" value="100"/>
+        <param name="tree_timeout" value="0"/>
+        <param name="top_n_hits" value="10"/>
+        <param name="cores" value="1"/>
+        <param name="auto_charge" value="false"/>
+        <param name="ion_tree" value="false"/>
+        <param name="no_recalibration" value="false"/>
+        <param name="most_intense_ms2" value="false"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="precursor_recalibration_window" value="0.1"/>
+        <param name="precursor_recalibration_window_unit" value="Da"/>
+        <param name="min_fragment_mz" value="0.0"/>
+        <param name="max_fragment_mz" value="2000.0"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="AssayGeneratorMetabo_intsort_input.mzML"/>
+      <param name="in_id" value="AssayGeneratorMetabo_intsort_input.featureXML"/>
+      <param name="out_type" value="tsv"/>
+      <output name="out" file="AssayGeneratorMetabo_ams_sirius_intsort_output.tmp.tsv" compare="sim_size" delta="5700" ftype="tabular"/>
+      <param name="fragment_annotation" value="sirius"/>
+      <param name="method" value="highest_intensity"/>
+      <param name="use_exact_mass" value="true"/>
+      <param name="exclude_ms2_precursor" value="false"/>
+      <param name="precursor_mz_distance" value="0.0001"/>
+      <param name="precursor_rt_tolerance" value="5.0"/>
+      <param name="use_known_unknowns" value="false"/>
+      <param name="min_transitions" value="2"/>
+      <param name="max_transitions" value="3"/>
+      <param name="cosine_similarity_threshold" value="0.98"/>
+      <param name="transition_threshold" value="3.0"/>
+      <param name="out_workspace_directory" value=""/>
+      <section name="deisotoping">
+        <param name="use_deisotoper" value="false"/>
+        <param name="fragment_tolerance" value="1.0"/>
+        <param name="fragment_unit" value="ppm"/>
+        <param name="min_charge" value="1"/>
+        <param name="max_charge" value="1"/>
+        <param name="min_isopeaks" value="2"/>
+        <param name="max_isopeaks" value="3"/>
+        <param name="keep_only_deisotoped" value="false"/>
+        <param name="annotate_charge" value="false"/>
+      </section>
+      <section name="preprocessing">
+        <param name="filter_by_num_masstraces" value="1"/>
+        <param name="precursor_mz_tolerance" value="10.0"/>
+        <param name="precursor_mz_tolerance_unit" value="ppm"/>
+        <param name="precursor_rt_tolerance" value="5"/>
+        <param name="isotope_pattern_iterations" value="3"/>
+        <param name="feature_only" value="true"/>
+        <param name="no_masstrace_info_isotope_pattern" value="false"/>
+      </section>
+      <section name="sirius">
+        <param name="profile" value="qtof"/>
+        <param name="candidates" value="5"/>
+        <param name="database" value="all"/>
+        <param name="noise" value="0"/>
+        <param name="ppm_max" value="10"/>
+        <param name="isotope" value="both"/>
+        <param name="elements" value="CHNOP[5]S[8]Cl[1]"/>
+        <param name="compound_timeout" value="100"/>
+        <param name="tree_timeout" value="0"/>
+        <param name="top_n_hits" value="10"/>
+        <param name="cores" value="1"/>
+        <param name="auto_charge" value="false"/>
+        <param name="ion_tree" value="false"/>
+        <param name="no_recalibration" value="false"/>
+        <param name="most_intense_ms2" value="false"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="precursor_recalibration_window" value="0.1"/>
+        <param name="precursor_recalibration_window_unit" value="Da"/>
+        <param name="min_fragment_mz" value="100.0"/>
+        <param name="max_fragment_mz" value="900.0"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="AssayGeneratorMetabo_input.mzML"/>
+      <param name="in_id" value="AssayGeneratorMetabo_ams_input.featureXML"/>
+      <param name="out_type" value="tsv"/>
+      <output name="out" file="AssayGeneratorMetabo_ams_sirius_restrict_output.tmp.tsv" compare="sim_size" delta="5700" ftype="tabular"/>
+      <param name="fragment_annotation" value="sirius"/>
+      <param name="method" value="highest_intensity"/>
+      <param name="use_exact_mass" value="true"/>
+      <param name="exclude_ms2_precursor" value="false"/>
+      <param name="precursor_mz_distance" value="0.0001"/>
+      <param name="precursor_rt_tolerance" value="5.0"/>
+      <param name="use_known_unknowns" value="false"/>
+      <param name="min_transitions" value="2"/>
+      <param name="max_transitions" value="3"/>
+      <param name="cosine_similarity_threshold" value="0.98"/>
+      <param name="transition_threshold" value="3.0"/>
+      <param name="out_workspace_directory" value=""/>
+      <section name="deisotoping">
+        <param name="use_deisotoper" value="false"/>
+        <param name="fragment_tolerance" value="1.0"/>
+        <param name="fragment_unit" value="ppm"/>
+        <param name="min_charge" value="1"/>
+        <param name="max_charge" value="1"/>
+        <param name="min_isopeaks" value="2"/>
+        <param name="max_isopeaks" value="3"/>
+        <param name="keep_only_deisotoped" value="false"/>
+        <param name="annotate_charge" value="false"/>
+      </section>
+      <section name="preprocessing">
+        <param name="filter_by_num_masstraces" value="1"/>
+        <param name="precursor_mz_tolerance" value="10.0"/>
+        <param name="precursor_mz_tolerance_unit" value="ppm"/>
+        <param name="precursor_rt_tolerance" value="5"/>
+        <param name="isotope_pattern_iterations" value="3"/>
+        <param name="feature_only" value="true"/>
+        <param name="no_masstrace_info_isotope_pattern" value="false"/>
+      </section>
+      <section name="sirius">
+        <param name="profile" value="qtof"/>
+        <param name="candidates" value="5"/>
+        <param name="database" value="all"/>
+        <param name="noise" value="0"/>
+        <param name="ppm_max" value="10"/>
+        <param name="isotope" value="both"/>
+        <param name="elements" value="CHNOP[5]S[8]Cl[1]"/>
+        <param name="compound_timeout" value="100"/>
+        <param name="tree_timeout" value="0"/>
+        <param name="top_n_hits" value="10"/>
+        <param name="cores" value="1"/>
+        <param name="auto_charge" value="false"/>
+        <param name="ion_tree" value="false"/>
+        <param name="no_recalibration" value="false"/>
+        <param name="most_intense_ms2" value="false"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+  </xml>
+  <xml name="autotest_BaselineFilter">
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="BaselineFilter_input.mzML"/>
+      <output name="out" file="BaselineFilter_output.mzML" compare="sim_size" delta="5700" ftype="mzml"/>
+      <param name="struc_elem_length" value="1.5"/>
+      <param name="struc_elem_unit" value="Thomson"/>
+      <param name="method" value="tophat"/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+  </xml>
+  <xml name="autotest_ClusterMassTracesByPrecursor">
+</xml>
+  <xml name="autotest_ClusterMassTraces">
+</xml>
+  <xml name="autotest_CometAdapter">
+    <test expect_num_outputs="3">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="fragment_bin_tolerance" value="1.0005"/>
+        <param name="fragment_bin_offset" value="0.25"/>
+        <param name="instrument" value="high_res"/>
+        <param name="use_A_ions" value="false"/>
+        <param name="use_B_ions" value="true"/>
+        <param name="use_C_ions" value="false"/>
+        <param name="use_X_ions" value="false"/>
+        <param name="use_Y_ions" value="true"/>
+        <param name="use_Z_ions" value="false"/>
+        <param name="use_NL_ions" value="false"/>
+        <param name="digest_mass_range" value="600:5000"/>
+        <param name="max_precursor_charge" value="5"/>
+        <param name="spectrum_batch_size" value="1000"/>
+        <param name="mass_offsets" value="0.0"/>
+        <param name="minimum_peaks" value="10"/>
+        <param name="minimum_intensity" value="0.0"/>
+        <param name="remove_precursor_peak" value="no"/>
+        <param name="remove_precursor_tolerance" value="1.5"/>
+        <param name="clear_mz_range" value="0:0"/>
+        <param name="max_variable_mods_in_peptide" value="5"/>
+        <param name="require_variable_mod" value="false"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="spectra_comet.mzML"/>
+      <output name="out" file="CometAdapter_1_out.idXML" compare="sim_size" delta="5700" ftype="idxml"/>
+      <param name="database" value="proteins.fasta"/>
+      <output name="pin_out" file="CometAdapter_1_out2.tmp.tsv" compare="sim_size" delta="5700" ftype="tabular"/>
+      <param name="precursor_mass_tolerance" value="3.0"/>
+      <param name="precursor_error_units" value="ppm"/>
+      <param name="isotope_error" value="off"/>
+      <param name="enzyme" value="Trypsin"/>
+      <param name="num_enzyme_termini" value="fully"/>
+      <param name="allowed_missed_cleavages" value="1"/>
+      <param name="num_hits" value="5"/>
+      <param name="precursor_charge" value="0:0"/>
+      <param name="override_charge" value="keep any known"/>
+      <param name="ms_level" value="2"/>
+      <param name="activation_method" value="ALL"/>
+      <param name="max_fragment_charge" value="3"/>
+      <param name="clip_nterm_methionine" value="false"/>
+      <param name="fixed_modifications" value=""/>
+      <param name="variable_modifications" value=""/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG,pin_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="3">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="fragment_bin_tolerance" value="1.0005"/>
+        <param name="fragment_bin_offset" value="0.25"/>
+        <param name="instrument" value="high_res"/>
+        <param name="use_A_ions" value="false"/>
+        <param name="use_B_ions" value="true"/>
+        <param name="use_C_ions" value="false"/>
+        <param name="use_X_ions" value="false"/>
+        <param name="use_Y_ions" value="true"/>
+        <param name="use_Z_ions" value="false"/>
+        <param name="use_NL_ions" value="false"/>
+        <param name="digest_mass_range" value="600:5000"/>
+        <param name="max_precursor_charge" value="5"/>
+        <param name="spectrum_batch_size" value="1000"/>
+        <param name="mass_offsets" value="0.0"/>
+        <param name="minimum_peaks" value="10"/>
+        <param name="minimum_intensity" value="0.0"/>
+        <param name="remove_precursor_peak" value="no"/>
+        <param name="remove_precursor_tolerance" value="1.5"/>
+        <param name="clear_mz_range" value="0:0"/>
+        <param name="max_variable_mods_in_peptide" value="5"/>
+        <param name="require_variable_mod" value="false"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="CometAdapter_2_prepared.mzML"/>
+      <output name="out" file="CometAdapter_2_out.idXML" compare="sim_size" delta="5700" ftype="idxml"/>
+      <param name="database" value="CometAdapter_2_in.fasta"/>
+      <output name="pin_out" file="CometAdapter_2_out2.tmp.tsv" compare="sim_size" delta="5700" ftype="tabular"/>
+      <param name="precursor_mass_tolerance" value="3.0"/>
+      <param name="precursor_error_units" value="Da"/>
+      <param name="isotope_error" value="off"/>
+      <param name="enzyme" value="Trypsin"/>
+      <param name="num_enzyme_termini" value="fully"/>
+      <param name="allowed_missed_cleavages" value="1"/>
+      <param name="num_hits" value="5"/>
+      <param name="precursor_charge" value="0:0"/>
+      <param name="override_charge" value="keep any known"/>
+      <param name="ms_level" value="2"/>
+      <param name="activation_method" value="ALL"/>
+      <param name="max_fragment_charge" value="3"/>
+      <param name="clip_nterm_methionine" value="false"/>
+      <param name="fixed_modifications" value=""/>
+      <param name="variable_modifications" value=""/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG,pin_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="3">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="fragment_bin_tolerance" value="0.02"/>
+        <param name="fragment_bin_offset" value="0.0"/>
+        <param name="instrument" value="high_res"/>
+        <param name="use_A_ions" value="false"/>
+        <param name="use_B_ions" value="true"/>
+        <param name="use_C_ions" value="false"/>
+        <param name="use_X_ions" value="false"/>
+        <param name="use_Y_ions" value="true"/>
+        <param name="use_Z_ions" value="false"/>
+        <param name="use_NL_ions" value="false"/>
+        <param name="digest_mass_range" value="600:5000"/>
+        <param name="max_precursor_charge" value="5"/>
+        <param name="spectrum_batch_size" value="20000"/>
+        <param name="mass_offsets" value="0.0"/>
+        <param name="minimum_peaks" value="10"/>
+        <param name="minimum_intensity" value="0.0"/>
+        <param name="remove_precursor_peak" value="no"/>
+        <param name="remove_precursor_tolerance" value="1.5"/>
+        <param name="clear_mz_range" value="0:0"/>
+        <param name="max_variable_mods_in_peptide" value="3"/>
+        <param name="require_variable_mod" value="false"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="CometAdapter_3.mzML"/>
+      <output name="out" file="CometAdapter_3_out.idXML" compare="sim_size" delta="5700" ftype="idxml"/>
+      <param name="database" value="CometAdapter_3.fasta"/>
+      <output name="pin_out" file="CometAdapter_3_out2.tmp.tsv" compare="sim_size" delta="5700" ftype="tabular"/>
+      <param name="precursor_mass_tolerance" value="5.0"/>
+      <param name="precursor_error_units" value="ppm"/>
+      <param name="isotope_error" value="off"/>
+      <param name="enzyme" value="Trypsin"/>
+      <param name="num_enzyme_termini" value="fully"/>
+      <param name="allowed_missed_cleavages" value="3"/>
+      <param name="num_hits" value="5"/>
+      <param name="precursor_charge" value="0:0"/>
+      <param name="override_charge" value="keep known search unknown"/>
+      <param name="ms_level" value="2"/>
+      <param name="activation_method" value="ALL"/>
+      <param name="max_fragment_charge" value="3"/>
+      <param name="clip_nterm_methionine" value="false"/>
+      <param name="fixed_modifications" value="Carbamidomethyl (C)"/>
+      <param name="variable_modifications" value="Acetyl (Protein N-term),Carbamidomethyl (N-term)"/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG,pin_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+  </xml>
+  <xml name="autotest_CompNovoCID">
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="CompNovoCID_1_input.mzML"/>
+      <output name="out" file="CompNovoCID_1_output.idXML" compare="sim_size" delta="5700" ftype="idxml"/>
+      <section name="algorithm">
+        <param name="max_number_aa_per_decomp" value="4"/>
+        <param name="tryptic_only" value="true"/>
+        <param name="precursor_mass_tolerance" value="0.3"/>
+        <param name="fragment_mass_tolerance" value="0.3"/>
+        <param name="max_number_pivot" value="9"/>
+        <param name="max_subscore_number" value="40"/>
+        <param name="decomp_weights_precision" value="0.01"/>
+        <param name="double_charged_iso_threshold" value="0.6"/>
+        <param name="max_mz" value="2000.0"/>
+        <param name="min_mz" value="200.0"/>
+        <param name="max_isotope_to_score" value="3"/>
+        <param name="max_decomp_weight" value="450.0"/>
+        <param name="max_isotope" value="3"/>
+        <param name="missed_cleavages" value="1"/>
+        <param name="number_of_hits" value="1"/>
+        <param name="estimate_precursor_mz" value="true"/>
+        <param name="number_of_prescoring_hits" value="250"/>
+        <param name="fixed_modifications" value=""/>
+        <param name="variable_modifications" value=""/>
+        <param name="residue_set" value="Natural19WithoutI"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+  </xml>
+  <xml name="autotest_CompNovo">
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="CompNovo_1_input.mzML"/>
+      <output name="out" file="CompNovo_1_output.idXML" compare="sim_size" delta="5700" ftype="idxml"/>
+      <section name="algorithm">
+        <param name="max_number_aa_per_decomp" value="4"/>
+        <param name="tryptic_only" value="true"/>
+        <param name="precursor_mass_tolerance" value="0.3"/>
+        <param name="fragment_mass_tolerance" value="0.3"/>
+        <param name="max_number_pivot" value="9"/>
+        <param name="max_subscore_number" value="40"/>
+        <param name="decomp_weights_precision" value="0.01"/>
+        <param name="double_charged_iso_threshold" value="0.6"/>
+        <param name="max_mz" value="2000.0"/>
+        <param name="min_mz" value="200.0"/>
+        <param name="max_isotope_to_score" value="3"/>
+        <param name="max_decomp_weight" value="450.0"/>
+        <param name="max_isotope" value="3"/>
+        <param name="missed_cleavages" value="1"/>
+        <param name="number_of_hits" value="1"/>
+        <param name="estimate_precursor_mz" value="true"/>
+        <param name="number_of_prescoring_hits" value="250"/>
+        <param name="fixed_modifications" value=""/>
+        <param name="variable_modifications" value=""/>
+        <param name="residue_set" value="Natural19WithoutI"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+  </xml>
+  <xml name="autotest_ConsensusID">
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="ConsensusID_1_input.idXML"/>
+      <output name="out" file="ConsensusID_1_output.idXML" compare="sim_size" delta="5700" ftype="idxml"/>
+      <param name="rt_delta" value="0.1"/>
+      <param name="mz_delta" value="0.1"/>
+      <param name="algorithm" value="PEPMatrix"/>
+      <section name="filter">
+        <param name="considered_hits" value="0"/>
+        <param name="min_support" value="0.0"/>
+        <param name="count_empty" value="false"/>
+      </section>
+      <section name="PEPIons">
+        <param name="mass_tolerance" value="0.5"/>
+        <param name="min_shared" value="2"/>
+      </section>
+      <section name="PEPMatrix">
+        <param name="matrix" value="PAM30MS"/>
+        <param name="penalty" value="5"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="ConsensusID_2_input.featureXML"/>
+      <output name="out" file="ConsensusID_2_output.featureXML" compare="sim_size" delta="5700" ftype="featurexml"/>
+      <param name="rt_delta" value="0.1"/>
+      <param name="mz_delta" value="0.1"/>
+      <param name="algorithm" value="average"/>
+      <section name="filter">
+        <param name="considered_hits" value="0"/>
+        <param name="min_support" value="0.0"/>
+        <param name="count_empty" value="false"/>
+      </section>
+      <section name="PEPIons">
+        <param name="mass_tolerance" value="0.5"/>
+        <param name="min_shared" value="2"/>
+      </section>
+      <section name="PEPMatrix">
+        <param name="matrix" value="identity"/>
+        <param name="penalty" value="5"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="ConsensusID_3_input.consensusXML"/>
+      <output name="out" file="ConsensusID_3_output.consensusXML" compare="sim_size" delta="5700" ftype="consensusxml"/>
+      <param name="rt_delta" value="0.1"/>
+      <param name="mz_delta" value="0.1"/>
+      <param name="algorithm" value="best"/>
+      <section name="filter">
+        <param name="considered_hits" value="0"/>
+        <param name="min_support" value="0.0"/>
+        <param name="count_empty" value="false"/>
+      </section>
+      <section name="PEPIons">
+        <param name="mass_tolerance" value="0.5"/>
+        <param name="min_shared" value="2"/>
+      </section>
+      <section name="PEPMatrix">
+        <param name="matrix" value="identity"/>
+        <param name="penalty" value="5"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="ConsensusID_1_input.idXML"/>
+      <output name="out" file="ConsensusID_4_output.idXML" compare="sim_size" delta="5700" ftype="idxml"/>
+      <param name="rt_delta" value="0.1"/>
+      <param name="mz_delta" value="0.1"/>
+      <param name="algorithm" value="PEPMatrix"/>
+      <section name="filter">
+        <param name="considered_hits" value="6"/>
+        <param name="min_support" value="0.0"/>
+        <param name="count_empty" value="false"/>
+      </section>
+      <section name="PEPIons">
+        <param name="mass_tolerance" value="0.5"/>
+        <param name="min_shared" value="2"/>
+      </section>
+      <section name="PEPMatrix">
+        <param name="matrix" value="identity"/>
+        <param name="penalty" value="5"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="ConsensusID_1_input.idXML"/>
+      <output name="out" file="ConsensusID_5_output.idXML" compare="sim_size" delta="5700" ftype="idxml"/>
+      <param name="rt_delta" value="0.1"/>
+      <param name="mz_delta" value="0.1"/>
+      <param name="algorithm" value="PEPIons"/>
+      <section name="filter">
+        <param name="considered_hits" value="0"/>
+        <param name="min_support" value="0.0"/>
+        <param name="count_empty" value="false"/>
+      </section>
+      <section name="PEPIons">
+        <param name="mass_tolerance" value="0.5"/>
+        <param name="min_shared" value="2"/>
+      </section>
+      <section name="PEPMatrix">
+        <param name="matrix" value="identity"/>
+        <param name="penalty" value="5"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="ConsensusID_1_input.idXML"/>
+      <output name="out" file="ConsensusID_6_output.idXML" compare="sim_size" delta="5700" ftype="idxml"/>
+      <param name="rt_delta" value="0.1"/>
+      <param name="mz_delta" value="0.1"/>
+      <param name="algorithm" value="best"/>
+      <section name="filter">
+        <param name="considered_hits" value="0"/>
+        <param name="min_support" value="0.5"/>
+        <param name="count_empty" value="false"/>
+      </section>
+      <section name="PEPIons">
+        <param name="mass_tolerance" value="0.5"/>
+        <param name="min_shared" value="2"/>
+      </section>
+      <section name="PEPMatrix">
+        <param name="matrix" value="identity"/>
+        <param name="penalty" value="5"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+  </xml>
+  <xml name="autotest_ConsensusMapNormalizer">
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="accession_filter" value=""/>
+        <param name="description_filter" value=""/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="ConsensusMapNormalizer_input.consensusXML"/>
+      <output name="out" file="ConsensusMapNormalizer_output.consensusXML" compare="sim_size" delta="5700" ftype="consensusxml"/>
+      <param name="algorithm_type" value="robust_regression"/>
+      <param name="ratio_threshold" value="0.67"/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+  </xml>
+  <xml name="autotest_CruxAdapter">
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="custom_enzyme" value=""/>
+        <param name="decoy_prefix" value="decoy_"/>
+        <param name="deisotope" value="false"/>
+        <param name="report_decoys" value="false"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="spectra_comet.mzML"/>
+      <output name="out" file="CruxAdapter_1_out.idXML" compare="sim_size" delta="5700" ftype="idxml"/>
+      <param name="database" value="proteins.fasta"/>
+      <param name="extra_index_args" value=""/>
+      <param name="extra_search_args" value=""/>
+      <param name="extra_percolator_args" value=""/>
+      <param name="precursor_mass_tolerance" value="10.0"/>
+      <param name="precursor_mass_units" value="ppm"/>
+      <param name="fragment_bin_offset" value="0.0"/>
+      <param name="fragment_bin_width" value="0.02"/>
+      <param name="isotope_error" value=""/>
+      <param name="run_percolator" value="false"/>
+      <param name="enzyme" value="trypsin"/>
+      <param name="digestion" value="full-digest"/>
+      <param name="allowed_missed_cleavages" value="0"/>
+      <param name="decoy_format" value="shuffle"/>
+      <param name="keep_terminal_aminos" value="NC"/>
+      <param name="cterm_modifications" value=""/>
+      <param name="nterm_modifications" value=""/>
+      <param name="modifications" value=""/>
+      <param name="test_fdr" value="0.01"/>
+      <param name="train_fdr" value="0.01"/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+  </xml>
+  <xml name="autotest_CVInspector">
+</xml>
+  <xml name="autotest_DatabaseFilter">
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="DatabaseFilter_1.fasta"/>
+      <param name="id" value="DatabaseFilter_1.idXML"/>
+      <param name="method" value="whitelist"/>
+      <output name="out" file="DatabaseFilter_1_out.fasta" compare="sim_size" delta="5700" ftype="fasta"/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="DatabaseFilter_1.fasta"/>
+      <param name="id" value="DatabaseFilter_1.idXML"/>
+      <param name="method" value="blacklist"/>
+      <output name="out" file="DatabaseFilter_2_out.fasta" compare="sim_size" delta="5700" ftype="fasta"/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="DatabaseFilter_3.fasta"/>
+      <param name="id" value="DatabaseFilter_3.mzid"/>
+      <param name="method" value="whitelist"/>
+      <output name="out" file="DatabaseFilter_3_out.fasta" compare="sim_size" delta="5700" ftype="fasta"/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="DatabaseFilter_3.fasta"/>
+      <param name="id" value="DatabaseFilter_3.mzid"/>
+      <param name="method" value="blacklist"/>
+      <output name="out" file="DatabaseFilter_4_out.fasta" compare="sim_size" delta="5700" ftype="fasta"/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+  </xml>
+  <xml name="autotest_Decharger">
+    <test expect_num_outputs="4">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="Decharger_input.featureXML"/>
+      <output name="out_cm" file="Decharger_output.consensusXML" compare="sim_size" delta="5700" ftype="consensusxml"/>
+      <output name="out_fm" file="Decharger_output_fm.tmp" compare="sim_size" delta="5700" ftype="featurexml"/>
+      <output name="outpairs" file="Decharger_p_output.tmp" compare="sim_size" delta="5700" ftype="consensusxml"/>
+      <section name="algorithm">
+        <section name="FeatureDeconvolution">
+          <param name="charge_min" value="1"/>
+          <param name="charge_max" value="10"/>
+          <param name="charge_span_max" value="4"/>
+          <param name="q_try" value="feature"/>
+          <param name="retention_max_diff" value="1.0"/>
+          <param name="retention_max_diff_local" value="1.0"/>
+          <param name="mass_max_diff" value="0.1"/>
+          <param name="potential_adducts" value="&quot;H:+:0.7&quot; &quot;Na:+:0.1&quot; &quot;(2)H4H-4:0:0.1:-2:heavy&quot;"/>
+          <param name="max_neutrals" value="0"/>
+          <param name="max_minority_bound" value="2"/>
+          <param name="min_rt_overlap" value="0.66"/>
+          <param name="intensity_filter" value="false"/>
+          <param name="negative_mode" value="false"/>
+          <param name="default_map_label" value="decharged features"/>
+          <param name="verbose_level" value="0"/>
+        </section>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG,out_fm_FLAG,outpairs_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+  </xml>
+  <xml name="autotest_DecoyDatabase">
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="shuffle_max_attempts" value="30"/>
+        <param name="shuffle_sequence_identity_threshold" value="0.5"/>
+        <param name="seed" value="1"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="DecoyDatabase_1.fasta"/>
+      <output name="out" file="DecoyDatabase_1_out.fasta" compare="sim_size" delta="5700" ftype="fasta"/>
+      <param name="decoy_string" value="DECOY_"/>
+      <param name="decoy_string_position" value="prefix"/>
+      <param name="only_decoy" value="true"/>
+      <param name="type" value="protein"/>
+      <param name="method" value="reverse"/>
+      <param name="enzyme" value="Trypsin"/>
+      <section name="Decoy">
+        <param name="non_shuffle_pattern" value=""/>
+        <param name="keepPeptideNTerm" value="true"/>
+        <param name="keepPeptideCTerm" value="true"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="shuffle_max_attempts" value="30"/>
+        <param name="shuffle_sequence_identity_threshold" value="0.5"/>
+        <param name="seed" value="42"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="DecoyDatabase_1.fasta"/>
+      <output name="out" file="DecoyDatabase_2_out.fasta" compare="sim_size" delta="5700" ftype="fasta"/>
+      <param name="decoy_string" value="blabla"/>
+      <param name="decoy_string_position" value="prefix"/>
+      <param name="only_decoy" value="false"/>
+      <param name="type" value="protein"/>
+      <param name="method" value="shuffle"/>
+      <param name="enzyme" value="Trypsin"/>
+      <section name="Decoy">
+        <param name="non_shuffle_pattern" value="KRP"/>
+        <param name="keepPeptideNTerm" value="true"/>
+        <param name="keepPeptideCTerm" value="true"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="shuffle_max_attempts" value="30"/>
+        <param name="shuffle_sequence_identity_threshold" value="0.5"/>
+        <param name="seed" value="42"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="DecoyDatabase_1.fasta"/>
+      <output name="out" file="DecoyDatabase_3_out.fasta" compare="sim_size" delta="5700" ftype="fasta"/>
+      <param name="decoy_string" value="blabla"/>
+      <param name="decoy_string_position" value="prefix"/>
+      <param name="only_decoy" value="false"/>
+      <param name="type" value="protein"/>
+      <param name="method" value="shuffle"/>
+      <param name="enzyme" value="Chymotrypsin"/>
+      <section name="Decoy">
+        <param name="non_shuffle_pattern" value="KR"/>
+        <param name="keepPeptideNTerm" value="true"/>
+        <param name="keepPeptideCTerm" value="true"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="shuffle_max_attempts" value="30"/>
+        <param name="shuffle_sequence_identity_threshold" value="0.5"/>
+        <param name="seed" value="42"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="DecoyDatabase_4.fasta"/>
+      <output name="out" file="DecoyDatabase_4_out.fasta" compare="sim_size" delta="5700" ftype="fasta"/>
+      <param name="decoy_string" value="blabla"/>
+      <param name="decoy_string_position" value="prefix"/>
+      <param name="only_decoy" value="false"/>
+      <param name="type" value="RNA"/>
+      <param name="method" value="reverse"/>
+      <param name="enzyme" value="Trypsin"/>
+      <section name="Decoy">
+        <param name="non_shuffle_pattern" value=""/>
+        <param name="keepPeptideNTerm" value="true"/>
+        <param name="keepPeptideCTerm" value="true"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+  </xml>
+  <xml name="autotest_DeMeanderize">
+</xml>
+  <xml name="autotest_DTAExtractor">
+    <test expect_num_outputs="1">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="DTAExtractor_1_input.mzML"/>
+      <param name="out" value="DTAExtractor"/>
+      <param name="mz" value=":"/>
+      <param name="rt" value=":61"/>
+      <param name="level" value="1,2,3"/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="1">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="DTAExtractor_1_input.mzML"/>
+      <param name="out" value="DTAExtractor"/>
+      <param name="mz" value=":"/>
+      <param name="rt" value=":"/>
+      <param name="level" value="1"/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="1">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="DTAExtractor_1_input.mzML"/>
+      <param name="out" value="DTAExtractor"/>
+      <param name="mz" value=":1000"/>
+      <param name="rt" value=":"/>
+      <param name="level" value="2"/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+  </xml>
+  <xml name="autotest_EICExtractor">
+</xml>
+  <xml name="autotest_Epifany">
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="conservative_fdr" value="true"/>
+        <param name="min_psms_extreme_probability" value="0.0"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FidoAdapter_1_input.idXML"/>
+      <output name="out" file="Epifany_1_out.idXML" compare="sim_size" delta="5700" ftype="idxml"/>
+      <param name="protein_fdr" value="false"/>
+      <param name="greedy_group_resolution" value="none"/>
+      <param name="max_psms_extreme_probability" value="1.0"/>
+      <section name="algorithm">
+        <param name="psm_probability_cutoff" value="0.001"/>
+        <param name="top_PSMs" value="1"/>
+        <param name="update_PSM_probabilities" value="true"/>
+        <param name="user_defined_priors" value="false"/>
+        <param name="annotate_group_probabilities" value="true"/>
+        <param name="use_ids_outside_features" value="false"/>
+        <section name="model_parameters">
+          <param name="prot_prior" value="0.7"/>
+          <param name="pep_emission" value="0.1"/>
+          <param name="pep_spurious_emission" value="0.001"/>
+          <param name="pep_prior" value="0.1"/>
+          <param name="regularize" value="false"/>
+          <param name="extended_model" value="false"/>
+        </section>
+        <section name="loopy_belief_propagation">
+          <param name="scheduling_type" value="priority"/>
+          <param name="convergence_threshold" value="1e-05"/>
+          <param name="dampening_lambda" value="0.001"/>
+          <param name="max_nr_iterations" value="2147483647"/>
+          <param name="p_norm_inference" value="1.0"/>
+        </section>
+        <section name="param_optimize">
+          <param name="aucweight" value="0.3"/>
+          <param name="conservative_fdr" value="true"/>
+        </section>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+  </xml>
+  <xml name="autotest_ERPairFinder">
+</xml>
+  <xml name="autotest_ExternalCalibration">
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="ExternalCalibration_1_input.mzML"/>
+      <output name="out" file="ExternalCalibration_1_MS1_out.mzML" compare="sim_size" delta="5700" ftype="mzml"/>
+      <param name="offset" value="-5.5"/>
+      <param name="slope" value="0.0001"/>
+      <param name="power" value="0.0"/>
+      <param name="ms_level" value="1"/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="ExternalCalibration_1_input.mzML"/>
+      <output name="out" file="ExternalCalibration_2_MS2_out.mzML" compare="sim_size" delta="5700" ftype="mzml"/>
+      <param name="offset" value="-5.5"/>
+      <param name="slope" value="0.0001"/>
+      <param name="power" value="0.0"/>
+      <param name="ms_level" value="2"/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+  </xml>
+  <xml name="autotest_FalseDiscoveryRate">
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FalseDiscoveryRate_OMSSA.idXML"/>
+      <output name="out" file="FalseDiscoveryRate_output_1.idXML" compare="sim_size" delta="5700" ftype="idxml"/>
+      <param name="PSM" value="true"/>
+      <param name="protein" value="false"/>
+      <section name="FDR">
+        <param name="PSM" value="1.0"/>
+        <param name="protein" value="1.0"/>
+        <section name="cleanup">
+          <param name="remove_proteins_without_psms" value="true"/>
+          <param name="remove_psms_without_proteins" value="true"/>
+          <param name="remove_spectra_without_psms" value="true"/>
+        </section>
+      </section>
+      <section name="algorithm">
+        <param name="no_qvalues" value="false"/>
+        <param name="use_all_hits" value="false"/>
+        <param name="split_charge_variants" value="false"/>
+        <param name="treat_runs_separately" value="false"/>
+        <param name="add_decoy_peptides" value="false"/>
+        <param name="add_decoy_proteins" value="false"/>
+        <param name="conservative" value="true"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FalseDiscoveryRate_OMSSA.idXML"/>
+      <output name="out" file="FalseDiscoveryRate_output_2.idXML" compare="sim_size" delta="5700" ftype="idxml"/>
+      <param name="PSM" value="true"/>
+      <param name="protein" value="false"/>
+      <section name="FDR">
+        <param name="PSM" value="1.0"/>
+        <param name="protein" value="1.0"/>
+        <section name="cleanup">
+          <param name="remove_proteins_without_psms" value="true"/>
+          <param name="remove_psms_without_proteins" value="true"/>
+          <param name="remove_spectra_without_psms" value="true"/>
+        </section>
+      </section>
+      <section name="algorithm">
+        <param name="no_qvalues" value="false"/>
+        <param name="use_all_hits" value="false"/>
+        <param name="split_charge_variants" value="false"/>
+        <param name="treat_runs_separately" value="true"/>
+        <param name="add_decoy_peptides" value="false"/>
+        <param name="add_decoy_proteins" value="false"/>
+        <param name="conservative" value="true"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FalseDiscoveryRate_OMSSA.idXML"/>
+      <output name="out" file="FalseDiscoveryRate_output_3.idXML" compare="sim_size" delta="5700" ftype="idxml"/>
+      <param name="PSM" value="true"/>
+      <param name="protein" value="false"/>
+      <section name="FDR">
+        <param name="PSM" value="1.0"/>
+        <param name="protein" value="1.0"/>
+        <section name="cleanup">
+          <param name="remove_proteins_without_psms" value="true"/>
+          <param name="remove_psms_without_proteins" value="true"/>
+          <param name="remove_spectra_without_psms" value="true"/>
+        </section>
+      </section>
+      <section name="algorithm">
+        <param name="no_qvalues" value="false"/>
+        <param name="use_all_hits" value="false"/>
+        <param name="split_charge_variants" value="true"/>
+        <param name="treat_runs_separately" value="false"/>
+        <param name="add_decoy_peptides" value="false"/>
+        <param name="add_decoy_proteins" value="false"/>
+        <param name="conservative" value="true"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FalseDiscoveryRate_OMSSA_4.idXML"/>
+      <output name="out" file="FalseDiscoveryRate_output_4.idXML" compare="sim_size" delta="5700" ftype="idxml"/>
+      <param name="PSM" value="true"/>
+      <param name="protein" value="false"/>
+      <section name="FDR">
+        <param name="PSM" value="1.0"/>
+        <param name="protein" value="1.0"/>
+        <section name="cleanup">
+          <param name="remove_proteins_without_psms" value="true"/>
+          <param name="remove_psms_without_proteins" value="true"/>
+          <param name="remove_spectra_without_psms" value="true"/>
+        </section>
+      </section>
+      <section name="algorithm">
+        <param name="no_qvalues" value="false"/>
+        <param name="use_all_hits" value="false"/>
+        <param name="split_charge_variants" value="true"/>
+        <param name="treat_runs_separately" value="false"/>
+        <param name="add_decoy_peptides" value="false"/>
+        <param name="add_decoy_proteins" value="false"/>
+        <param name="conservative" value="true"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="true"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FalseDiscoveryRate_5_input.idXML"/>
+      <output name="out" file="FalseDiscoveryRate_5_output.idXML" compare="sim_size" delta="5700" ftype="idxml"/>
+      <param name="PSM" value="false"/>
+      <param name="protein" value="true"/>
+      <section name="FDR">
+        <param name="PSM" value="1.0"/>
+        <param name="protein" value="1.0"/>
+        <section name="cleanup">
+          <param name="remove_proteins_without_psms" value="true"/>
+          <param name="remove_psms_without_proteins" value="true"/>
+          <param name="remove_spectra_without_psms" value="true"/>
+        </section>
+      </section>
+      <section name="algorithm">
+        <param name="no_qvalues" value="false"/>
+        <param name="use_all_hits" value="false"/>
+        <param name="split_charge_variants" value="false"/>
+        <param name="treat_runs_separately" value="false"/>
+        <param name="add_decoy_peptides" value="false"/>
+        <param name="add_decoy_proteins" value="true"/>
+        <param name="conservative" value="true"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FalseDiscoveryRate_6_input.idXML"/>
+      <output name="out" file="FalseDiscoveryRate_6_output.idXML" compare="sim_size" delta="5700" ftype="idxml"/>
+      <param name="PSM" value="true"/>
+      <param name="protein" value="false"/>
+      <section name="FDR">
+        <param name="PSM" value="0.05"/>
+        <param name="protein" value="1.0"/>
+        <section name="cleanup">
+          <param name="remove_proteins_without_psms" value="true"/>
+          <param name="remove_psms_without_proteins" value="true"/>
+          <param name="remove_spectra_without_psms" value="true"/>
+        </section>
+      </section>
+      <section name="algorithm">
+        <param name="no_qvalues" value="false"/>
+        <param name="use_all_hits" value="false"/>
+        <param name="split_charge_variants" value="false"/>
+        <param name="treat_runs_separately" value="false"/>
+        <param name="add_decoy_peptides" value="false"/>
+        <param name="add_decoy_proteins" value="false"/>
+        <param name="conservative" value="true"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="true"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FalseDiscoveryRate_7_input.idXML"/>
+      <output name="out" file="FalseDiscoveryRate_7_output.idXML" compare="sim_size" delta="5700" ftype="idxml"/>
+      <param name="PSM" value="false"/>
+      <param name="protein" value="true"/>
+      <section name="FDR">
+        <param name="PSM" value="1.0"/>
+        <param name="protein" value="0.3"/>
+        <section name="cleanup">
+          <param name="remove_proteins_without_psms" value="true"/>
+          <param name="remove_psms_without_proteins" value="true"/>
+          <param name="remove_spectra_without_psms" value="true"/>
+        </section>
+      </section>
+      <section name="algorithm">
+        <param name="no_qvalues" value="false"/>
+        <param name="use_all_hits" value="false"/>
+        <param name="split_charge_variants" value="false"/>
+        <param name="treat_runs_separately" value="false"/>
+        <param name="add_decoy_peptides" value="false"/>
+        <param name="add_decoy_proteins" value="false"/>
+        <param name="conservative" value="true"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+  </xml>
+  <xml name="autotest_FeatureFinderCentroided">
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+        <param name="pseudo_rt_shift" value="500.0"/>
+      </conditional>
+      <param name="in" value="FeatureFinderCentroided_1_input.mzML"/>
+      <output name="out" file="FeatureFinderCentroided_1_output.featureXML" compare="sim_size" delta="5700" ftype="featurexml"/>
+      <section name="algorithm">
+        <section name="intensity">
+          <param name="bins" value="1"/>
+        </section>
+        <section name="mass_trace">
+          <param name="mz_tolerance" value="0.02"/>
+          <param name="min_spectra" value="14"/>
+          <param name="max_missing" value="1"/>
+          <param name="slope_bound" value="0.1"/>
+        </section>
+        <section name="isotopic_pattern">
+          <param name="charge_low" value="2"/>
+          <param name="charge_high" value="2"/>
+          <param name="mz_tolerance" value="0.02"/>
+          <param name="intensity_percentage" value="10.0"/>
+          <param name="intensity_percentage_optional" value="0.1"/>
+          <param name="optional_fit_improvement" value="2.0"/>
+          <param name="mass_window_width" value="100.0"/>
+          <param name="abundance_12C" value="98.93"/>
+          <param name="abundance_14N" value="99.632"/>
+        </section>
+        <section name="seed">
+          <param name="min_score" value="0.8"/>
+        </section>
+        <section name="fit">
+          <param name="max_iterations" value="500"/>
+        </section>
+        <section name="feature">
+          <param name="min_score" value="0.7"/>
+          <param name="min_isotope_fit" value="0.8"/>
+          <param name="min_trace_score" value="0.5"/>
+          <param name="min_rt_span" value="0.333"/>
+          <param name="max_rt_span" value="2.5"/>
+          <param name="rt_shape" value="symmetric"/>
+          <param name="max_intersection" value="0.35"/>
+          <param name="reported_mz" value="monoisotopic"/>
+        </section>
+        <section name="user-seed">
+          <param name="rt_tolerance" value="5.0"/>
+          <param name="mz_tolerance" value="1.1"/>
+          <param name="min_score" value="0.5"/>
+        </section>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+  </xml>
+  <xml name="autotest_FeatureFinderIdentification">
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FeatureFinderIdentification_1_input.mzML"/>
+      <param name="id" value="FeatureFinderIdentification_1_input.idXML"/>
+      <output name="out" file="FeatureFinderIdentification_1_output.featureXML" compare="sim_size" delta="5700" ftype="featurexml"/>
+      <section name="extract">
+        <param name="batch_size" value="1000"/>
+        <param name="mz_window" value="0.1"/>
+        <param name="n_isotopes" value="2"/>
+        <param name="isotope_pmin" value="0.0"/>
+        <param name="rt_quantile" value="0.95"/>
+        <param name="rt_window" value="0.0"/>
+      </section>
+      <section name="detect">
+        <param name="peak_width" value="60.0"/>
+        <param name="min_peak_width" value="0.2"/>
+        <param name="signal_to_noise" value="0.8"/>
+        <param name="mapping_tolerance" value="0.0"/>
+      </section>
+      <section name="svm">
+        <param name="samples" value="0"/>
+        <param name="no_selection" value="false"/>
+        <param name="kernel" value="RBF"/>
+        <param name="xval" value="5"/>
+        <param name="log2_C" value="-5.0 -3.0 -1.0 1.0 3.0 5.0 7.0 9.0 11.0 13.0 15.0"/>
+        <param name="log2_gamma" value="-15.0 -13.0 -11.0 -9.0 -7.0 -5.0 -3.0 -1.0 1.0 3.0"/>
+        <param name="epsilon" value="0.001"/>
+        <param name="cache_size" value="100.0"/>
+        <param name="no_shrinking" value="false"/>
+        <param name="predictors" value="peak_apices_sum,var_xcorr_coelution,var_xcorr_shape,var_library_sangle,var_intensity_score,sn_ratio,var_log_sn_score,var_elution_model_fit_score,xx_lda_prelim_score,var_isotope_correlation_score,var_isotope_overlap_score,var_massdev_score,main_var_xx_swath_prelim_score"/>
+        <param name="min_prob" value="0.0"/>
+      </section>
+      <section name="model">
+        <param name="type" value="none"/>
+        <param name="add_zeros" value="0.2"/>
+        <param name="unweighted_fit" value="false"/>
+        <param name="no_imputation" value="false"/>
+        <section name="check">
+          <param name="min_area" value="1.0"/>
+          <param name="boundaries" value="0.5"/>
+          <param name="width" value="10.0"/>
+          <param name="asymmetry" value="10.0"/>
+        </section>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FeatureFinderIdentification_1_input.mzML"/>
+      <param name="id" value="FeatureFinderIdentification_1_input.idXML"/>
+      <output name="out" file="FeatureFinderIdentification_3_output.featureXML" compare="sim_size" delta="5700" ftype="featurexml"/>
+      <section name="extract">
+        <param name="batch_size" value="1000"/>
+        <param name="mz_window" value="0.1"/>
+        <param name="n_isotopes" value="2"/>
+        <param name="isotope_pmin" value="0.0"/>
+        <param name="rt_quantile" value="0.95"/>
+        <param name="rt_window" value="0.0"/>
+      </section>
+      <section name="detect">
+        <param name="peak_width" value="60.0"/>
+        <param name="min_peak_width" value="0.2"/>
+        <param name="signal_to_noise" value="0.8"/>
+        <param name="mapping_tolerance" value="0.0"/>
+      </section>
+      <section name="svm">
+        <param name="samples" value="0"/>
+        <param name="no_selection" value="false"/>
+        <param name="kernel" value="RBF"/>
+        <param name="xval" value="5"/>
+        <param name="log2_C" value="-5.0 -3.0 -1.0 1.0 3.0 5.0 7.0 9.0 11.0 13.0 15.0"/>
+        <param name="log2_gamma" value="-15.0 -13.0 -11.0 -9.0 -7.0 -5.0 -3.0 -1.0 1.0 3.0"/>
+        <param name="epsilon" value="0.001"/>
+        <param name="cache_size" value="100.0"/>
+        <param name="no_shrinking" value="false"/>
+        <param name="predictors" value="peak_apices_sum,var_xcorr_coelution,var_xcorr_shape,var_library_sangle,var_intensity_score,sn_ratio,var_log_sn_score,var_elution_model_fit_score,xx_lda_prelim_score,var_isotope_correlation_score,var_isotope_overlap_score,var_massdev_score,main_var_xx_swath_prelim_score"/>
+        <param name="min_prob" value="0.0"/>
+      </section>
+      <section name="model">
+        <param name="type" value="symmetric"/>
+        <param name="add_zeros" value="0.2"/>
+        <param name="unweighted_fit" value="false"/>
+        <param name="no_imputation" value="false"/>
+        <section name="check">
+          <param name="min_area" value="1.0"/>
+          <param name="boundaries" value="0.5"/>
+          <param name="width" value="10.0"/>
+          <param name="asymmetry" value="10.0"/>
+        </section>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FeatureFinderIdentification_1_input.mzML"/>
+      <param name="id" value="FeatureFinderIdentification_1_input.idXML"/>
+      <output name="out" file="FeatureFinderIdentification_1_output.featureXML" compare="sim_size" delta="5700" ftype="featurexml"/>
+      <section name="extract">
+        <param name="batch_size" value="10"/>
+        <param name="mz_window" value="0.1"/>
+        <param name="n_isotopes" value="2"/>
+        <param name="isotope_pmin" value="0.0"/>
+        <param name="rt_quantile" value="0.95"/>
+        <param name="rt_window" value="0.0"/>
+      </section>
+      <section name="detect">
+        <param name="peak_width" value="60.0"/>
+        <param name="min_peak_width" value="0.2"/>
+        <param name="signal_to_noise" value="0.8"/>
+        <param name="mapping_tolerance" value="0.0"/>
+      </section>
+      <section name="svm">
+        <param name="samples" value="0"/>
+        <param name="no_selection" value="false"/>
+        <param name="kernel" value="RBF"/>
+        <param name="xval" value="5"/>
+        <param name="log2_C" value="-5.0 -3.0 -1.0 1.0 3.0 5.0 7.0 9.0 11.0 13.0 15.0"/>
+        <param name="log2_gamma" value="-15.0 -13.0 -11.0 -9.0 -7.0 -5.0 -3.0 -1.0 1.0 3.0"/>
+        <param name="epsilon" value="0.001"/>
+        <param name="cache_size" value="100.0"/>
+        <param name="no_shrinking" value="false"/>
+        <param name="predictors" value="peak_apices_sum,var_xcorr_coelution,var_xcorr_shape,var_library_sangle,var_intensity_score,sn_ratio,var_log_sn_score,var_elution_model_fit_score,xx_lda_prelim_score,var_isotope_correlation_score,var_isotope_overlap_score,var_massdev_score,main_var_xx_swath_prelim_score"/>
+        <param name="min_prob" value="0.0"/>
+      </section>
+      <section name="model">
+        <param name="type" value="none"/>
+        <param name="add_zeros" value="0.2"/>
+        <param name="unweighted_fit" value="false"/>
+        <param name="no_imputation" value="false"/>
+        <section name="check">
+          <param name="min_area" value="1.0"/>
+          <param name="boundaries" value="0.5"/>
+          <param name="width" value="10.0"/>
+          <param name="asymmetry" value="10.0"/>
+        </section>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+  </xml>
+  <xml name="autotest_FeatureFinderIsotopeWavelet">
+</xml>
+  <xml name="autotest_FeatureFinderMetaboIdent">
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FeatureFinderMetaboIdent_1_input.mzML"/>
+      <param name="id" value="FeatureFinderMetaboIdent_1_input.tsv" ftype="tabular"/>
+      <output name="out" file="FeatureFinderMetaboIdent_1_output.featureXML" compare="sim_size" delta="5700" ftype="featurexml"/>
+      <section name="extract">
+        <param name="mz_window" value="5.0"/>
+        <param name="n_isotopes" value="2"/>
+        <param name="isotope_pmin" value="0.0"/>
+        <param name="rt_window" value="20.0"/>
+      </section>
+      <section name="detect">
+        <param name="peak_width" value="3.0"/>
+        <param name="min_peak_width" value="0.2"/>
+        <param name="signal_to_noise" value="0.8"/>
+      </section>
+      <section name="model">
+        <param name="type" value="symmetric"/>
+        <param name="add_zeros" value="0.2"/>
+        <param name="unweighted_fit" value="false"/>
+        <param name="no_imputation" value="false"/>
+        <section name="check">
+          <param name="min_area" value="1.0"/>
+          <param name="boundaries" value="0.5"/>
+          <param name="width" value="10.0"/>
+          <param name="asymmetry" value="10.0"/>
+        </section>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+  </xml>
+  <xml name="autotest_FeatureFinderMetabo">
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FeatureFinderMetabo_1_input.mzML"/>
+      <output name="out" file="FeatureFinderMetabo_1_output.featureXML" compare="sim_size" delta="5700" ftype="featurexml"/>
+      <section name="algorithm">
+        <section name="common">
+          <param name="noise_threshold_int" value="10.0"/>
+          <param name="chrom_peak_snr" value="3.0"/>
+          <param name="chrom_fwhm" value="5.0"/>
+        </section>
+        <section name="mtd">
+          <param name="mass_error_ppm" value="20.0"/>
+          <param name="reestimate_mt_sd" value="true"/>
+          <param name="quant_method" value="area"/>
+          <param name="trace_termination_criterion" value="outlier"/>
+          <param name="trace_termination_outliers" value="5"/>
+          <param name="min_sample_rate" value="0.5"/>
+          <param name="min_trace_length" value="5.0"/>
+          <param name="max_trace_length" value="300.0"/>
+        </section>
+        <section name="epd">
+          <param name="enabled" value="true"/>
+          <param name="width_filtering" value="off"/>
+          <param name="min_fwhm" value="3.0"/>
+          <param name="max_fwhm" value="60.0"/>
+          <param name="masstrace_snr_filtering" value="false"/>
+        </section>
+        <section name="ffm">
+          <param name="local_rt_range" value="10.0"/>
+          <param name="local_mz_range" value="6.5"/>
+          <param name="charge_lower_bound" value="1"/>
+          <param name="charge_upper_bound" value="3"/>
+          <param name="report_summed_ints" value="false"/>
+          <param name="enable_RT_filtering" value="true"/>
+          <param name="isotope_filtering_model" value="metabolites (5% RMS)"/>
+          <param name="mz_scoring_13C" value="true"/>
+          <param name="use_smoothed_intensities" value="true"/>
+          <param name="report_convex_hulls" value="false"/>
+          <param name="remove_single_traces" value="false"/>
+          <param name="mz_scoring_by_elements" value="false"/>
+          <param name="elements" value="CHNOPS"/>
+        </section>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FeatureFinderMetabo_2_input.mzML"/>
+      <output name="out" file="FeatureFinderMetabo_2_noEPD_output.featureXML" compare="sim_size" delta="5700" ftype="featurexml"/>
+      <section name="algorithm">
+        <section name="common">
+          <param name="noise_threshold_int" value="100.0"/>
+          <param name="chrom_peak_snr" value="0.0"/>
+          <param name="chrom_fwhm" value="100.0"/>
+        </section>
+        <section name="mtd">
+          <param name="mass_error_ppm" value="5.0"/>
+          <param name="reestimate_mt_sd" value="true"/>
+          <param name="quant_method" value="median"/>
+          <param name="trace_termination_criterion" value="sample_rate"/>
+          <param name="trace_termination_outliers" value="2"/>
+          <param name="min_sample_rate" value="0.01"/>
+          <param name="min_trace_length" value="30.0"/>
+          <param name="max_trace_length" value="3000.0"/>
+        </section>
+        <section name="epd">
+          <param name="enabled" value="false"/>
+          <param name="width_filtering" value="off"/>
+          <param name="min_fwhm" value="10.0"/>
+          <param name="max_fwhm" value="80.0"/>
+          <param name="masstrace_snr_filtering" value="false"/>
+        </section>
+        <section name="ffm">
+          <param name="local_rt_range" value="10.0"/>
+          <param name="local_mz_range" value="4.5"/>
+          <param name="charge_lower_bound" value="1"/>
+          <param name="charge_upper_bound" value="3"/>
+          <param name="report_summed_ints" value="false"/>
+          <param name="enable_RT_filtering" value="false"/>
+          <param name="isotope_filtering_model" value="none"/>
+          <param name="mz_scoring_13C" value="false"/>
+          <param name="use_smoothed_intensities" value="false"/>
+          <param name="report_convex_hulls" value="true"/>
+          <param name="remove_single_traces" value="false"/>
+          <param name="mz_scoring_by_elements" value="false"/>
+          <param name="elements" value="CHNOPS"/>
+        </section>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="3">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FeatureFinderMetabo_3_input.mzML"/>
+      <output name="out" file="FeatureFinderMetabo_3.tmp" compare="sim_size" delta="5700" ftype="featurexml"/>
+      <output name="out_chrom" file="FeatureFinderMetabo_3_chrom_output.mzML" compare="sim_size" delta="5700" ftype="mzml"/>
+      <section name="algorithm">
+        <section name="common">
+          <param name="noise_threshold_int" value="10.0"/>
+          <param name="chrom_peak_snr" value="3.0"/>
+          <param name="chrom_fwhm" value="5.0"/>
+        </section>
+        <section name="mtd">
+          <param name="mass_error_ppm" value="5.0"/>
+          <param name="reestimate_mt_sd" value="true"/>
+          <param name="quant_method" value="area"/>
+          <param name="trace_termination_criterion" value="outlier"/>
+          <param name="trace_termination_outliers" value="5"/>
+          <param name="min_sample_rate" value="0.5"/>
+          <param name="min_trace_length" value="5.0"/>
+          <param name="max_trace_length" value="-1.0"/>
+        </section>
+        <section name="epd">
+          <param name="enabled" value="true"/>
+          <param name="width_filtering" value="fixed"/>
+          <param name="min_fwhm" value="3.0"/>
+          <param name="max_fwhm" value="60.0"/>
+          <param name="masstrace_snr_filtering" value="false"/>
+        </section>
+        <section name="ffm">
+          <param name="local_rt_range" value="10.0"/>
+          <param name="local_mz_range" value="6.5"/>
+          <param name="charge_lower_bound" value="1"/>
+          <param name="charge_upper_bound" value="3"/>
+          <param name="report_summed_ints" value="false"/>
+          <param name="enable_RT_filtering" value="true"/>
+          <param name="isotope_filtering_model" value="none"/>
+          <param name="mz_scoring_13C" value="true"/>
+          <param name="use_smoothed_intensities" value="true"/>
+          <param name="report_convex_hulls" value="true"/>
+          <param name="remove_single_traces" value="false"/>
+          <param name="mz_scoring_by_elements" value="false"/>
+          <param name="elements" value="CHNOPS"/>
+        </section>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG,out_chrom_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="3">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FeatureFinderMetabo_3_input.mzML"/>
+      <output name="out" file="FeatureFinderMetabo_4_output.featureXML" compare="sim_size" delta="5700" ftype="featurexml"/>
+      <output name="out_chrom" file="FeatureFinderMetabo_4_chrom_output.mzML" compare="sim_size" delta="5700" ftype="mzml"/>
+      <section name="algorithm">
+        <section name="common">
+          <param name="noise_threshold_int" value="10.0"/>
+          <param name="chrom_peak_snr" value="3.0"/>
+          <param name="chrom_fwhm" value="5.0"/>
+        </section>
+        <section name="mtd">
+          <param name="mass_error_ppm" value="5.0"/>
+          <param name="reestimate_mt_sd" value="true"/>
+          <param name="quant_method" value="area"/>
+          <param name="trace_termination_criterion" value="outlier"/>
+          <param name="trace_termination_outliers" value="5"/>
+          <param name="min_sample_rate" value="0.5"/>
+          <param name="min_trace_length" value="5.0"/>
+          <param name="max_trace_length" value="-1.0"/>
+        </section>
+        <section name="epd">
+          <param name="enabled" value="true"/>
+          <param name="width_filtering" value="fixed"/>
+          <param name="min_fwhm" value="3.0"/>
+          <param name="max_fwhm" value="60.0"/>
+          <param name="masstrace_snr_filtering" value="false"/>
+        </section>
+        <section name="ffm">
+          <param name="local_rt_range" value="10.0"/>
+          <param name="local_mz_range" value="6.5"/>
+          <param name="charge_lower_bound" value="1"/>
+          <param name="charge_upper_bound" value="3"/>
+          <param name="report_summed_ints" value="false"/>
+          <param name="enable_RT_filtering" value="true"/>
+          <param name="isotope_filtering_model" value="none"/>
+          <param name="mz_scoring_13C" value="true"/>
+          <param name="use_smoothed_intensities" value="true"/>
+          <param name="report_convex_hulls" value="true"/>
+          <param name="remove_single_traces" value="true"/>
+          <param name="mz_scoring_by_elements" value="false"/>
+          <param name="elements" value="CHNOPS"/>
+        </section>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG,out_chrom_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FeatureFinderMetabo_1_input.mzML"/>
+      <output name="out" file="FeatureFinderMetabo_5_output.featureXML" compare="sim_size" delta="5700" ftype="featurexml"/>
+      <section name="algorithm">
+        <section name="common">
+          <param name="noise_threshold_int" value="10.0"/>
+          <param name="chrom_peak_snr" value="3.0"/>
+          <param name="chrom_fwhm" value="5.0"/>
+        </section>
+        <section name="mtd">
+          <param name="mass_error_ppm" value="20.0"/>
+          <param name="reestimate_mt_sd" value="true"/>
+          <param name="quant_method" value="max_height"/>
+          <param name="trace_termination_criterion" value="outlier"/>
+          <param name="trace_termination_outliers" value="5"/>
+          <param name="min_sample_rate" value="0.5"/>
+          <param name="min_trace_length" value="5.0"/>
+          <param name="max_trace_length" value="300.0"/>
+        </section>
+        <section name="epd">
+          <param name="enabled" value="true"/>
+          <param name="width_filtering" value="off"/>
+          <param name="min_fwhm" value="3.0"/>
+          <param name="max_fwhm" value="60.0"/>
+          <param name="masstrace_snr_filtering" value="false"/>
+        </section>
+        <section name="ffm">
+          <param name="local_rt_range" value="10.0"/>
+          <param name="local_mz_range" value="6.5"/>
+          <param name="charge_lower_bound" value="1"/>
+          <param name="charge_upper_bound" value="3"/>
+          <param name="report_summed_ints" value="false"/>
+          <param name="enable_RT_filtering" value="true"/>
+          <param name="isotope_filtering_model" value="metabolites (5% RMS)"/>
+          <param name="mz_scoring_13C" value="true"/>
+          <param name="use_smoothed_intensities" value="true"/>
+          <param name="report_convex_hulls" value="false"/>
+          <param name="remove_single_traces" value="false"/>
+          <param name="mz_scoring_by_elements" value="false"/>
+          <param name="elements" value="CHNOPS"/>
+        </section>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+  </xml>
+  <xml name="autotest_FeatureFinderMRM">
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FeatureFinderMRM_1_input.mzML"/>
+      <output name="out" file="FeatureFinderMRM_1_output.featureXML" compare="sim_size" delta="5700" ftype="featurexml"/>
+      <section name="algorithm">
+        <param name="min_rt_distance" value="10.0"/>
+        <param name="min_num_peaks_per_feature" value="5"/>
+        <param name="min_signal_to_noise_ratio" value="2.0"/>
+        <param name="write_debug_files" value="false"/>
+        <param name="resample_traces" value="false"/>
+        <param name="write_debuginfo" value="false"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+  </xml>
+  <xml name="autotest_FeatureFinderMultiplex">
+    <test expect_num_outputs="3">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FeatureFinderMultiplex_1_input.mzML"/>
+      <output name="out" file="FeatureFinderMultiplex_1_output.featureXML" compare="sim_size" delta="5700" ftype="featurexml"/>
+      <output name="out_multiplets" file="FeatureFinderMultiplex_1_output.consensusXML" compare="sim_size" delta="5700" ftype="consensusxml"/>
+      <section name="algorithm">
+        <param name="labels" value="[Dimethyl0][Dimethyl8]"/>
+        <param name="charge" value="1:4"/>
+        <param name="isotopes_per_peptide" value="3:6"/>
+        <param name="rt_typical" value="90.0"/>
+        <param name="rt_band" value="10.0"/>
+        <param name="rt_min" value="5.0"/>
+        <param name="mz_tolerance" value="40.0"/>
+        <param name="mz_unit" value="ppm"/>
+        <param name="intensity_cutoff" value="10.0"/>
+        <param name="peptide_similarity" value="0.8"/>
+        <param name="averagine_similarity" value="0.75"/>
+        <param name="averagine_similarity_scaling" value="0.75"/>
+        <param name="missed_cleavages" value="1"/>
+        <param name="spectrum_type" value="automatic"/>
+        <param name="averagine_type" value="peptide"/>
+        <param name="knock_out" value="false"/>
+      </section>
+      <section name="labels">
+        <param name="Arg6" value="6.0201290268"/>
+        <param name="Arg10" value="10.0082686"/>
+        <param name="Lys4" value="4.0251069836"/>
+        <param name="Lys6" value="6.0201290268"/>
+        <param name="Lys8" value="8.0141988132"/>
+        <param name="Leu3" value="3.01883"/>
+        <param name="Dimethyl0" value="28.0313"/>
+        <param name="Dimethyl4" value="32.056407"/>
+        <param name="Dimethyl6" value="34.063117"/>
+        <param name="Dimethyl8" value="36.07567"/>
+        <param name="ICPL0" value="105.021464"/>
+        <param name="ICPL4" value="109.046571"/>
+        <param name="ICPL6" value="111.041593"/>
+        <param name="ICPL10" value="115.0667"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG,out_FLAG,out_multiplets_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="3">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FeatureFinderMultiplex_2_input.mzML"/>
+      <output name="out" file="FeatureFinderMultiplex_2_output.featureXML" compare="sim_size" delta="5700" ftype="featurexml"/>
+      <output name="out_multiplets" file="FeatureFinderMultiplex_2_output.consensusXML" compare="sim_size" delta="5700" ftype="consensusxml"/>
+      <section name="algorithm">
+        <param name="labels" value="[][Lys8,Arg10]"/>
+        <param name="charge" value="1:4"/>
+        <param name="isotopes_per_peptide" value="3:6"/>
+        <param name="rt_typical" value="40.0"/>
+        <param name="rt_band" value="5.0"/>
+        <param name="rt_min" value="2.0"/>
+        <param name="mz_tolerance" value="6.0"/>
+        <param name="mz_unit" value="ppm"/>
+        <param name="intensity_cutoff" value="1000.0"/>
+        <param name="peptide_similarity" value="0.5"/>
+        <param name="averagine_similarity" value="0.4"/>
+        <param name="averagine_similarity_scaling" value="0.75"/>
+        <param name="missed_cleavages" value="0"/>
+        <param name="spectrum_type" value="automatic"/>
+        <param name="averagine_type" value="peptide"/>
+        <param name="knock_out" value="false"/>
+      </section>
+      <section name="labels">
+        <param name="Arg6" value="6.0201290268"/>
+        <param name="Arg10" value="10.0082686"/>
+        <param name="Lys4" value="4.0251069836"/>
+        <param name="Lys6" value="6.0201290268"/>
+        <param name="Lys8" value="8.0141988132"/>
+        <param name="Leu3" value="3.01883"/>
+        <param name="Dimethyl0" value="28.0313"/>
+        <param name="Dimethyl4" value="32.056407"/>
+        <param name="Dimethyl6" value="34.063117"/>
+        <param name="Dimethyl8" value="36.07567"/>
+        <param name="ICPL0" value="105.021464"/>
+        <param name="ICPL4" value="109.046571"/>
+        <param name="ICPL6" value="111.041593"/>
+        <param name="ICPL10" value="115.0667"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG,out_FLAG,out_multiplets_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="3">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FeatureFinderMultiplex_3_input.mzML"/>
+      <output name="out" file="FeatureFinderMultiplex_3_output.featureXML" compare="sim_size" delta="5700" ftype="featurexml"/>
+      <output name="out_multiplets" file="FeatureFinderMultiplex_3_output.consensusXML" compare="sim_size" delta="5700" ftype="consensusxml"/>
+      <section name="algorithm">
+        <param name="labels" value="[]"/>
+        <param name="charge" value="5:15"/>
+        <param name="isotopes_per_peptide" value="5:10"/>
+        <param name="rt_typical" value="45.0"/>
+        <param name="rt_band" value="5.0"/>
+        <param name="rt_min" value="2.0"/>
+        <param name="mz_tolerance" value="6.0"/>
+        <param name="mz_unit" value="ppm"/>
+        <param name="intensity_cutoff" value="200.0"/>
+        <param name="peptide_similarity" value="0.5"/>
+        <param name="averagine_similarity" value="0.4"/>
+        <param name="averagine_similarity_scaling" value="0.75"/>
+        <param name="missed_cleavages" value="0"/>
+        <param name="spectrum_type" value="automatic"/>
+        <param name="averagine_type" value="RNA"/>
+        <param name="knock_out" value="false"/>
+      </section>
+      <section name="labels">
+        <param name="Arg6" value="6.0201290268"/>
+        <param name="Arg10" value="10.0082686"/>
+        <param name="Lys4" value="4.0251069836"/>
+        <param name="Lys6" value="6.0201290268"/>
+        <param name="Lys8" value="8.0141988132"/>
+        <param name="Leu3" value="3.01883"/>
+        <param name="Dimethyl0" value="28.0313"/>
+        <param name="Dimethyl4" value="32.056407"/>
+        <param name="Dimethyl6" value="34.063117"/>
+        <param name="Dimethyl8" value="36.07567"/>
+        <param name="ICPL0" value="105.021464"/>
+        <param name="ICPL4" value="109.046571"/>
+        <param name="ICPL6" value="111.041593"/>
+        <param name="ICPL10" value="115.0667"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG,out_FLAG,out_multiplets_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="3">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FeatureFinderMultiplex_4_input.mzML"/>
+      <output name="out" file="FeatureFinderMultiplex_4_output.featureXML" compare="sim_size" delta="5700" ftype="featurexml"/>
+      <output name="out_multiplets" file="FeatureFinderMultiplex_4_output.consensusXML" compare="sim_size" delta="5700" ftype="consensusxml"/>
+      <section name="algorithm">
+        <param name="labels" value="[]"/>
+        <param name="charge" value="5:15"/>
+        <param name="isotopes_per_peptide" value="5:10"/>
+        <param name="rt_typical" value="45.0"/>
+        <param name="rt_band" value="5.0"/>
+        <param name="rt_min" value="2.0"/>
+        <param name="mz_tolerance" value="6.0"/>
+        <param name="mz_unit" value="ppm"/>
+        <param name="intensity_cutoff" value="200.0"/>
+        <param name="peptide_similarity" value="0.5"/>
+        <param name="averagine_similarity" value="0.4"/>
+        <param name="averagine_similarity_scaling" value="0.75"/>
+        <param name="missed_cleavages" value="0"/>
+        <param name="spectrum_type" value="automatic"/>
+        <param name="averagine_type" value="DNA"/>
+        <param name="knock_out" value="false"/>
+      </section>
+      <section name="labels">
+        <param name="Arg6" value="6.0201290268"/>
+        <param name="Arg10" value="10.0082686"/>
+        <param name="Lys4" value="4.0251069836"/>
+        <param name="Lys6" value="6.0201290268"/>
+        <param name="Lys8" value="8.0141988132"/>
+        <param name="Leu3" value="3.01883"/>
+        <param name="Dimethyl0" value="28.0313"/>
+        <param name="Dimethyl4" value="32.056407"/>
+        <param name="Dimethyl6" value="34.063117"/>
+        <param name="Dimethyl8" value="36.07567"/>
+        <param name="ICPL0" value="105.021464"/>
+        <param name="ICPL4" value="109.046571"/>
+        <param name="ICPL6" value="111.041593"/>
+        <param name="ICPL10" value="115.0667"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG,out_FLAG,out_multiplets_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="3">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FeatureFinderMultiplex_5_input.mzML"/>
+      <output name="out" file="FeatureFinderMultiplex_5_output.featureXML" compare="sim_size" delta="5700" ftype="featurexml"/>
+      <output name="out_multiplets" file="FeatureFinderMultiplex_5_output.consensusXML" compare="sim_size" delta="5700" ftype="consensusxml"/>
+      <section name="algorithm">
+        <param name="labels" value="[Dimethyl0][Dimethyl6]"/>
+        <param name="charge" value="1:5"/>
+        <param name="isotopes_per_peptide" value="3:6"/>
+        <param name="rt_typical" value="50.0"/>
+        <param name="rt_band" value="3.0"/>
+        <param name="rt_min" value="8.0"/>
+        <param name="mz_tolerance" value="10.0"/>
+        <param name="mz_unit" value="ppm"/>
+        <param name="intensity_cutoff" value="10000000.0"/>
+        <param name="peptide_similarity" value="0.95"/>
+        <param name="averagine_similarity" value="0.8"/>
+        <param name="averagine_similarity_scaling" value="0.95"/>
+        <param name="missed_cleavages" value="3"/>
+        <param name="spectrum_type" value="profile"/>
+        <param name="averagine_type" value="peptide"/>
+        <param name="knock_out" value="false"/>
+      </section>
+      <section name="labels">
+        <param name="Arg6" value="6.0201290268"/>
+        <param name="Arg10" value="10.0082686"/>
+        <param name="Lys4" value="4.0251069836"/>
+        <param name="Lys6" value="6.0201290268"/>
+        <param name="Lys8" value="8.0141988132"/>
+        <param name="Leu3" value="3.01883"/>
+        <param name="Dimethyl0" value="28.0313"/>
+        <param name="Dimethyl4" value="32.056407"/>
+        <param name="Dimethyl6" value="34.063117"/>
+        <param name="Dimethyl8" value="36.07567"/>
+        <param name="ICPL0" value="105.021464"/>
+        <param name="ICPL4" value="109.046571"/>
+        <param name="ICPL6" value="111.041593"/>
+        <param name="ICPL10" value="115.0667"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG,out_FLAG,out_multiplets_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="3">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FeatureFinderMultiplex_6_input.mzML"/>
+      <output name="out" file="FeatureFinderMultiplex_6_output.featureXML" compare="sim_size" delta="5700" ftype="featurexml"/>
+      <output name="out_multiplets" file="FeatureFinderMultiplex_6_output.consensusXML" compare="sim_size" delta="5700" ftype="consensusxml"/>
+      <section name="algorithm">
+        <param name="labels" value="[Dimethyl0][Dimethyl6]"/>
+        <param name="charge" value="1:5"/>
+        <param name="isotopes_per_peptide" value="3:6"/>
+        <param name="rt_typical" value="50.0"/>
+        <param name="rt_band" value="3.0"/>
+        <param name="rt_min" value="8.0"/>
+        <param name="mz_tolerance" value="10.0"/>
+        <param name="mz_unit" value="ppm"/>
+        <param name="intensity_cutoff" value="10000000.0"/>
+        <param name="peptide_similarity" value="0.95"/>
+        <param name="averagine_similarity" value="0.8"/>
+        <param name="averagine_similarity_scaling" value="1.0"/>
+        <param name="missed_cleavages" value="3"/>
+        <param name="spectrum_type" value="profile"/>
+        <param name="averagine_type" value="peptide"/>
+        <param name="knock_out" value="false"/>
+      </section>
+      <section name="labels">
+        <param name="Arg6" value="6.0201290268"/>
+        <param name="Arg10" value="10.0082686"/>
+        <param name="Lys4" value="4.0251069836"/>
+        <param name="Lys6" value="6.0201290268"/>
+        <param name="Lys8" value="8.0141988132"/>
+        <param name="Leu3" value="3.01883"/>
+        <param name="Dimethyl0" value="28.0313"/>
+        <param name="Dimethyl4" value="32.056407"/>
+        <param name="Dimethyl6" value="34.063117"/>
+        <param name="Dimethyl8" value="36.07567"/>
+        <param name="ICPL0" value="105.021464"/>
+        <param name="ICPL4" value="109.046571"/>
+        <param name="ICPL6" value="111.041593"/>
+        <param name="ICPL10" value="115.0667"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG,out_FLAG,out_multiplets_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="3">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FeatureFinderMultiplex_7_input.mzML"/>
+      <output name="out" file="FeatureFinderMultiplex_7_output.featureXML" compare="sim_size" delta="5700" ftype="featurexml"/>
+      <output name="out_multiplets" file="FeatureFinderMultiplex_7_output.consensusXML" compare="sim_size" delta="5700" ftype="consensusxml"/>
+      <section name="algorithm">
+        <param name="labels" value="[][Dimethyl4]"/>
+        <param name="charge" value="1:4"/>
+        <param name="isotopes_per_peptide" value="3:6"/>
+        <param name="rt_typical" value="40.0"/>
+        <param name="rt_band" value="5.0"/>
+        <param name="rt_min" value="2.0"/>
+        <param name="mz_tolerance" value="6.0"/>
+        <param name="mz_unit" value="ppm"/>
+        <param name="intensity_cutoff" value="1000.0"/>
+        <param name="peptide_similarity" value="0.5"/>
+        <param name="averagine_similarity" value="0.4"/>
+        <param name="averagine_similarity_scaling" value="0.75"/>
+        <param name="missed_cleavages" value="0"/>
+        <param name="spectrum_type" value="automatic"/>
+        <param name="averagine_type" value="peptide"/>
+        <param name="knock_out" value="false"/>
+      </section>
+      <section name="labels">
+        <param name="Arg6" value="6.0201290268"/>
+        <param name="Arg10" value="10.0082686"/>
+        <param name="Lys4" value="4.0251069836"/>
+        <param name="Lys6" value="6.0201290268"/>
+        <param name="Lys8" value="8.0141988132"/>
+        <param name="Leu3" value="3.01883"/>
+        <param name="Dimethyl0" value="28.0313"/>
+        <param name="Dimethyl4" value="31.0094"/>
+        <param name="Dimethyl6" value="34.063117"/>
+        <param name="Dimethyl8" value="36.07567"/>
+        <param name="ICPL0" value="105.021464"/>
+        <param name="ICPL4" value="109.046571"/>
+        <param name="ICPL6" value="111.041593"/>
+        <param name="ICPL10" value="115.0667"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG,out_FLAG,out_multiplets_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="3">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FeatureFinderMultiplex_8_input.mzML"/>
+      <output name="out" file="FeatureFinderMultiplex_8_output.featureXML" compare="sim_size" delta="5700" ftype="featurexml"/>
+      <output name="out_multiplets" file="FeatureFinderMultiplex_8_output.consensusXML" compare="sim_size" delta="5700" ftype="consensusxml"/>
+      <section name="algorithm">
+        <param name="labels" value="[Dimethyl0][Dimethyl4][Dimethyl8]"/>
+        <param name="charge" value="1:7"/>
+        <param name="isotopes_per_peptide" value="3:8"/>
+        <param name="rt_typical" value="50.0"/>
+        <param name="rt_band" value="3.0"/>
+        <param name="rt_min" value="8.0"/>
+        <param name="mz_tolerance" value="10.0"/>
+        <param name="mz_unit" value="ppm"/>
+        <param name="intensity_cutoff" value="10.0"/>
+        <param name="peptide_similarity" value="0.2"/>
+        <param name="averagine_similarity" value="0.25"/>
+        <param name="averagine_similarity_scaling" value="0.95"/>
+        <param name="missed_cleavages" value="4"/>
+        <param name="spectrum_type" value="automatic"/>
+        <param name="averagine_type" value="peptide"/>
+        <param name="knock_out" value="true"/>
+      </section>
+      <section name="labels">
+        <param name="Arg6" value="6.0201290268"/>
+        <param name="Arg10" value="10.0082686"/>
+        <param name="Lys4" value="4.0251069836"/>
+        <param name="Lys6" value="6.0201290268"/>
+        <param name="Lys8" value="8.0141988132"/>
+        <param name="Leu3" value="3.01883"/>
+        <param name="Dimethyl0" value="28.0313"/>
+        <param name="Dimethyl4" value="32.056407"/>
+        <param name="Dimethyl6" value="34.063117"/>
+        <param name="Dimethyl8" value="36.07567"/>
+        <param name="ICPL0" value="105.021464"/>
+        <param name="ICPL4" value="109.046571"/>
+        <param name="ICPL6" value="111.041593"/>
+        <param name="ICPL10" value="115.0667"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG,out_FLAG,out_multiplets_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="3">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FeatureFinderMultiplex_9_input.mzML"/>
+      <output name="out" file="FeatureFinderMultiplex_9_output.featureXML" compare="sim_size" delta="5700" ftype="featurexml"/>
+      <output name="out_multiplets" file="FeatureFinderMultiplex_9_output.consensusXML" compare="sim_size" delta="5700" ftype="consensusxml"/>
+      <section name="algorithm">
+        <param name="labels" value="[0][6.03705]"/>
+        <param name="charge" value="2:8"/>
+        <param name="isotopes_per_peptide" value="3:8"/>
+        <param name="rt_typical" value="40.0"/>
+        <param name="rt_band" value="0.0"/>
+        <param name="rt_min" value="4.0"/>
+        <param name="mz_tolerance" value="10.0"/>
+        <param name="mz_unit" value="ppm"/>
+        <param name="intensity_cutoff" value="1000.0"/>
+        <param name="peptide_similarity" value="0.5"/>
+        <param name="averagine_similarity" value="0.4"/>
+        <param name="averagine_similarity_scaling" value="0.95"/>
+        <param name="missed_cleavages" value="0"/>
+        <param name="spectrum_type" value="centroid"/>
+        <param name="averagine_type" value="peptide"/>
+        <param name="knock_out" value="false"/>
+      </section>
+      <section name="labels">
+        <param name="Arg6" value="6.0201290268"/>
+        <param name="Arg10" value="10.0082686"/>
+        <param name="Lys4" value="4.0251069836"/>
+        <param name="Lys6" value="6.0201290268"/>
+        <param name="Lys8" value="8.0141988132"/>
+        <param name="Leu3" value="3.01883"/>
+        <param name="Dimethyl0" value="28.0313"/>
+        <param name="Dimethyl4" value="32.056407"/>
+        <param name="Dimethyl6" value="34.063117"/>
+        <param name="Dimethyl8" value="36.07567"/>
+        <param name="ICPL0" value="105.021464"/>
+        <param name="ICPL4" value="109.046571"/>
+        <param name="ICPL6" value="111.041593"/>
+        <param name="ICPL10" value="115.0667"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG,out_FLAG,out_multiplets_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="3">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FeatureFinderMultiplex_10_input.mzML"/>
+      <output name="out" file="FeatureFinderMultiplex_10_output.featureXML" compare="sim_size" delta="5700" ftype="featurexml"/>
+      <output name="out_multiplets" file="FeatureFinderMultiplex_10_output.consensusXML" compare="sim_size" delta="5700" ftype="consensusxml"/>
+      <section name="algorithm">
+        <param name="labels" value="[Dimethyl0][Dimethyl6]"/>
+        <param name="charge" value="1:7"/>
+        <param name="isotopes_per_peptide" value="3:6"/>
+        <param name="rt_typical" value="50.0"/>
+        <param name="rt_band" value="5.0"/>
+        <param name="rt_min" value="8.0"/>
+        <param name="mz_tolerance" value="6.0"/>
+        <param name="mz_unit" value="ppm"/>
+        <param name="intensity_cutoff" value="10.0"/>
+        <param name="peptide_similarity" value="0.4"/>
+        <param name="averagine_similarity" value="0.5"/>
+        <param name="averagine_similarity_scaling" value="0.95"/>
+        <param name="missed_cleavages" value="3"/>
+        <param name="spectrum_type" value="profile"/>
+        <param name="averagine_type" value="peptide"/>
+        <param name="knock_out" value="true"/>
+      </section>
+      <section name="labels">
+        <param name="Arg6" value="6.0201290268"/>
+        <param name="Arg10" value="10.0082686"/>
+        <param name="Lys4" value="4.0251069836"/>
+        <param name="Lys6" value="6.0201290268"/>
+        <param name="Lys8" value="8.0141988132"/>
+        <param name="Leu3" value="3.01883"/>
+        <param name="Dimethyl0" value="28.0313"/>
+        <param name="Dimethyl4" value="32.056407"/>
+        <param name="Dimethyl6" value="34.063117"/>
+        <param name="Dimethyl8" value="36.07567"/>
+        <param name="ICPL0" value="105.021464"/>
+        <param name="ICPL4" value="109.046571"/>
+        <param name="ICPL6" value="111.041593"/>
+        <param name="ICPL10" value="115.0667"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG,out_FLAG,out_multiplets_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FeatureFinderMultiplex_11_input.mzML"/>
+      <output name="out" file="FeatureFinderMultiplex_11_output.featureXML" compare="sim_size" delta="5700" ftype="featurexml"/>
+      <section name="algorithm">
+        <param name="labels" value="[]"/>
+        <param name="charge" value="1:4"/>
+        <param name="isotopes_per_peptide" value="3:6"/>
+        <param name="rt_typical" value="1e-05"/>
+        <param name="rt_band" value="0.0"/>
+        <param name="rt_min" value="0.0"/>
+        <param name="mz_tolerance" value="10.0"/>
+        <param name="mz_unit" value="ppm"/>
+        <param name="intensity_cutoff" value="1000.0"/>
+        <param name="peptide_similarity" value="0.5"/>
+        <param name="averagine_similarity" value="0.7"/>
+        <param name="averagine_similarity_scaling" value="0.95"/>
+        <param name="missed_cleavages" value="0"/>
+        <param name="spectrum_type" value="automatic"/>
+        <param name="averagine_type" value="peptide"/>
+        <param name="knock_out" value="false"/>
+      </section>
+      <section name="labels">
+        <param name="Arg6" value="6.0201290268"/>
+        <param name="Arg10" value="10.0082686"/>
+        <param name="Lys4" value="4.0251069836"/>
+        <param name="Lys6" value="6.0201290268"/>
+        <param name="Lys8" value="8.0141988132"/>
+        <param name="Leu3" value="3.01883"/>
+        <param name="Dimethyl0" value="28.0313"/>
+        <param name="Dimethyl4" value="32.056407"/>
+        <param name="Dimethyl6" value="34.063117"/>
+        <param name="Dimethyl8" value="36.07567"/>
+        <param name="ICPL0" value="105.021464"/>
+        <param name="ICPL4" value="109.046571"/>
+        <param name="ICPL6" value="111.041593"/>
+        <param name="ICPL10" value="115.0667"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG,out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+  </xml>
+  <xml name="autotest_FeatureFinderSuperHirn">
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FeatureFinderSuperHirn_input_1.mzML"/>
+      <output name="out" file="FeatureFinderSuperHirn_1_output.featureXML" compare="sim_size" delta="5700" ftype="featurexml"/>
+      <section name="algorithm">
+        <section name="centroiding">
+          <param name="active" value="false"/>
+          <param name="window_width" value="5"/>
+          <param name="absolute_isotope_mass_precision" value="0.01"/>
+          <param name="relative_isotope_mass_precision" value="10.0"/>
+          <param name="minimal_peak_height" value="0.0"/>
+          <param name="min_ms_signal_intensity" value="50.0"/>
+        </section>
+        <section name="ms1">
+          <param name="precursor_detection_scan_levels" value="1"/>
+          <param name="max_inter_scan_distance" value="0"/>
+          <param name="tr_resolution" value="0.01"/>
+          <param name="intensity_threshold" value="1000.0"/>
+          <param name="max_inter_scan_rt_distance" value="0.1"/>
+          <param name="min_nb_cluster_members" value="4"/>
+          <param name="detectable_isotope_factor" value="0.05"/>
+          <param name="intensity_cv" value="0.9"/>
+          <param name="retention_time_tolerance" value="0.5"/>
+          <param name="mz_tolerance" value="0.0"/>
+        </section>
+        <section name="ms1_feature_merger">
+          <param name="active" value="true"/>
+          <param name="tr_resolution" value="0.01"/>
+          <param name="initial_apex_tr_tolerance" value="5.0"/>
+          <param name="feature_merging_tr_tolerance" value="1.0"/>
+          <param name="intensity_variation_percentage" value="25.0"/>
+          <param name="ppm_tolerance_for_mz_clustering" value="10.0"/>
+        </section>
+        <section name="ms1_feature_selection_options">
+          <param name="start_elution_window" value="0.0"/>
+          <param name="end_elution_window" value="180.0"/>
+          <param name="mz_range_min" value="0.0"/>
+          <param name="mz_range_max" value="2000.0"/>
+          <param name="chrg_range_min" value="1"/>
+          <param name="chrg_range_max" value="5"/>
+        </section>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FeatureFinderSuperHirn_input_2.mzML"/>
+      <output name="out" file="FeatureFinderSuperHirn_2_output.featureXML" compare="sim_size" delta="5700" ftype="featurexml"/>
+      <section name="algorithm">
+        <section name="centroiding">
+          <param name="active" value="true"/>
+          <param name="window_width" value="5"/>
+          <param name="absolute_isotope_mass_precision" value="0.01"/>
+          <param name="relative_isotope_mass_precision" value="10.0"/>
+          <param name="minimal_peak_height" value="0.0"/>
+          <param name="min_ms_signal_intensity" value="50.0"/>
+        </section>
+        <section name="ms1">
+          <param name="precursor_detection_scan_levels" value="1"/>
+          <param name="max_inter_scan_distance" value="0"/>
+          <param name="tr_resolution" value="0.01"/>
+          <param name="intensity_threshold" value="1000.0"/>
+          <param name="max_inter_scan_rt_distance" value="0.1"/>
+          <param name="min_nb_cluster_members" value="4"/>
+          <param name="detectable_isotope_factor" value="0.05"/>
+          <param name="intensity_cv" value="0.9"/>
+          <param name="retention_time_tolerance" value="0.5"/>
+          <param name="mz_tolerance" value="0.0"/>
+        </section>
+        <section name="ms1_feature_merger">
+          <param name="active" value="true"/>
+          <param name="tr_resolution" value="0.01"/>
+          <param name="initial_apex_tr_tolerance" value="5.0"/>
+          <param name="feature_merging_tr_tolerance" value="1.0"/>
+          <param name="intensity_variation_percentage" value="25.0"/>
+          <param name="ppm_tolerance_for_mz_clustering" value="10.0"/>
+        </section>
+        <section name="ms1_feature_selection_options">
+          <param name="start_elution_window" value="0.0"/>
+          <param name="end_elution_window" value="180.0"/>
+          <param name="mz_range_min" value="0.0"/>
+          <param name="mz_range_max" value="2000.0"/>
+          <param name="chrg_range_min" value="1"/>
+          <param name="chrg_range_max" value="5"/>
+        </section>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+  </xml>
+  <xml name="autotest_FeatureLinkerLabeled">
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FeatureLinkerLabeled_1_input.featureXML"/>
+      <output name="out" file="FeatureLinkerLabeled_1_output.consensusXML" compare="sim_size" delta="5700" ftype="consensusxml"/>
+      <section name="algorithm">
+        <param name="rt_estimate" value="false"/>
+        <param name="rt_pair_dist" value="-1.0"/>
+        <param name="rt_dev_low" value="0.4"/>
+        <param name="rt_dev_high" value="0.4"/>
+        <param name="mz_pair_dists" value="8.0"/>
+        <param name="mz_dev" value="0.1"/>
+        <param name="mrm" value="false"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FeatureLinkerLabeled_2_input.featureXML"/>
+      <output name="out" file="FeatureLinkerLabeled_2_output.consensusXML" compare="sim_size" delta="5700" ftype="consensusxml"/>
+      <section name="algorithm">
+        <param name="rt_estimate" value="true"/>
+        <param name="rt_pair_dist" value="-121.0382"/>
+        <param name="rt_dev_low" value="123.3965"/>
+        <param name="rt_dev_high" value="123.3965"/>
+        <param name="mz_pair_dists" value="4.0"/>
+        <param name="mz_dev" value="0.1"/>
+        <param name="mrm" value="false"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+  </xml>
+  <xml name="autotest_FeatureLinkerUnlabeledKD">
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FeatureLinkerUnlabeled_1_input1.featureXML,FeatureLinkerUnlabeled_1_input2.featureXML,FeatureLinkerUnlabeled_1_input3.featureXML"/>
+      <output name="out" file="FeatureLinkerUnlabeledKD_1_output.consensusXML" compare="sim_size" delta="5700" ftype="consensusxml"/>
+      <param name="keep_subelements" value="false"/>
+      <section name="algorithm">
+        <param name="mz_unit" value="Da"/>
+        <param name="nr_partitions" value="1"/>
+        <section name="warp">
+          <param name="enabled" value="false"/>
+          <param name="rt_tol" value="100.0"/>
+          <param name="mz_tol" value="0.3"/>
+          <param name="max_pairwise_log_fc" value="0.5"/>
+          <param name="min_rel_cc_size" value="0.5"/>
+          <param name="max_nr_conflicts" value="0"/>
+        </section>
+        <section name="link">
+          <param name="rt_tol" value="100.0"/>
+          <param name="mz_tol" value="0.3"/>
+          <param name="charge_merging" value="With_charge_zero"/>
+          <param name="adduct_merging" value="Any"/>
+        </section>
+        <section name="distance_RT">
+          <param name="exponent" value="1.0"/>
+          <param name="weight" value="1.0"/>
+        </section>
+        <section name="distance_MZ">
+          <param name="exponent" value="2.0"/>
+          <param name="weight" value="1.0"/>
+        </section>
+        <section name="distance_intensity">
+          <param name="exponent" value="1.0"/>
+          <param name="weight" value="1.0"/>
+          <param name="log_transform" value="enabled"/>
+        </section>
+        <section name="LOWESS">
+          <param name="span" value="0.666666666666667"/>
+          <param name="num_iterations" value="3"/>
+          <param name="delta" value="-1.0"/>
+          <param name="interpolation_type" value="cspline"/>
+          <param name="extrapolation_type" value="four-point-linear"/>
+        </section>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FeatureLinkerUnlabeledKD_1_output.consensusXML,FeatureLinkerUnlabeledKD_1_output_2.consensusXML"/>
+      <output name="out" file="FeatureLinkerUnlabeledKD_2_output.consensusXML" compare="sim_size" delta="5700" ftype="consensusxml"/>
+      <param name="keep_subelements" value="true"/>
+      <section name="algorithm">
+        <param name="mz_unit" value="Da"/>
+        <param name="nr_partitions" value="99999"/>
+        <section name="warp">
+          <param name="enabled" value="false"/>
+          <param name="rt_tol" value="100.0"/>
+          <param name="mz_tol" value="0.3"/>
+          <param name="max_pairwise_log_fc" value="0.5"/>
+          <param name="min_rel_cc_size" value="0.5"/>
+          <param name="max_nr_conflicts" value="0"/>
+        </section>
+        <section name="link">
+          <param name="rt_tol" value="100.0"/>
+          <param name="mz_tol" value="0.3"/>
+          <param name="charge_merging" value="With_charge_zero"/>
+          <param name="adduct_merging" value="Any"/>
+        </section>
+        <section name="distance_RT">
+          <param name="exponent" value="1.0"/>
+          <param name="weight" value="1.0"/>
+        </section>
+        <section name="distance_MZ">
+          <param name="exponent" value="2.0"/>
+          <param name="weight" value="1.0"/>
+        </section>
+        <section name="distance_intensity">
+          <param name="exponent" value="1.0"/>
+          <param name="weight" value="1.0"/>
+          <param name="log_transform" value="enabled"/>
+        </section>
+        <section name="LOWESS">
+          <param name="span" value="0.666666666666667"/>
+          <param name="num_iterations" value="3"/>
+          <param name="delta" value="-1.0"/>
+          <param name="interpolation_type" value="cspline"/>
+          <param name="extrapolation_type" value="four-point-linear"/>
+        </section>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FeatureLinkerUnlabeledQT_3_input1.featureXML,FeatureLinkerUnlabeledQT_3_input2.featureXML"/>
+      <output name="out" file="FeatureLinkerUnlabeledKD_3_output.consensusXML" compare="sim_size" delta="5700" ftype="consensusxml"/>
+      <param name="keep_subelements" value="false"/>
+      <section name="algorithm">
+        <param name="mz_unit" value="Da"/>
+        <param name="nr_partitions" value="100"/>
+        <section name="warp">
+          <param name="enabled" value="false"/>
+          <param name="rt_tol" value="100.0"/>
+          <param name="mz_tol" value="0.3"/>
+          <param name="max_pairwise_log_fc" value="0.5"/>
+          <param name="min_rel_cc_size" value="0.5"/>
+          <param name="max_nr_conflicts" value="0"/>
+        </section>
+        <section name="link">
+          <param name="rt_tol" value="100.0"/>
+          <param name="mz_tol" value="0.3"/>
+          <param name="charge_merging" value="With_charge_zero"/>
+          <param name="adduct_merging" value="Any"/>
+        </section>
+        <section name="distance_RT">
+          <param name="exponent" value="1.0"/>
+          <param name="weight" value="1.0"/>
+        </section>
+        <section name="distance_MZ">
+          <param name="exponent" value="2.0"/>
+          <param name="weight" value="1.0"/>
+        </section>
+        <section name="distance_intensity">
+          <param name="exponent" value="1.0"/>
+          <param name="weight" value="1.0"/>
+          <param name="log_transform" value="enabled"/>
+        </section>
+        <section name="LOWESS">
+          <param name="span" value="0.666666666666667"/>
+          <param name="num_iterations" value="3"/>
+          <param name="delta" value="-1.0"/>
+          <param name="interpolation_type" value="cspline"/>
+          <param name="extrapolation_type" value="four-point-linear"/>
+        </section>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FeatureLinkerUnlabeledKD_dc_input1.featureXML,FeatureLinkerUnlabeledKD_dc_input2.featureXML,FeatureLinkerUnlabeledKD_dc_input3.featureXML,FeatureLinkerUnlabeledKD_dc_input1_2.featureXML,FeatureLinkerUnlabeledKD_dc_input2_2.featureXML"/>
+      <output name="out" file="FeatureLinkerUnlabeledKD_4_output.consensusXML" compare="sim_size" delta="5700" ftype="consensusxml"/>
+      <param name="keep_subelements" value="false"/>
+      <section name="algorithm">
+        <param name="mz_unit" value="ppm"/>
+        <param name="nr_partitions" value="100"/>
+        <section name="warp">
+          <param name="enabled" value="true"/>
+          <param name="rt_tol" value="100.0"/>
+          <param name="mz_tol" value="5.0"/>
+          <param name="max_pairwise_log_fc" value="0.5"/>
+          <param name="min_rel_cc_size" value="0.5"/>
+          <param name="max_nr_conflicts" value="0"/>
+        </section>
+        <section name="link">
+          <param name="rt_tol" value="30.0"/>
+          <param name="mz_tol" value="10.0"/>
+          <param name="charge_merging" value="Identical"/>
+          <param name="adduct_merging" value="Any"/>
+        </section>
+        <section name="distance_RT">
+          <param name="exponent" value="1.0"/>
+          <param name="weight" value="1.0"/>
+        </section>
+        <section name="distance_MZ">
+          <param name="exponent" value="2.0"/>
+          <param name="weight" value="1.0"/>
+        </section>
+        <section name="distance_intensity">
+          <param name="exponent" value="1.0"/>
+          <param name="weight" value="1.0"/>
+          <param name="log_transform" value="enabled"/>
+        </section>
+        <section name="LOWESS">
+          <param name="span" value="0.666666666666667"/>
+          <param name="num_iterations" value="3"/>
+          <param name="delta" value="-1.0"/>
+          <param name="interpolation_type" value="cspline"/>
+          <param name="extrapolation_type" value="four-point-linear"/>
+        </section>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FeatureLinkerUnlabeledKD_dc_input1.featureXML,FeatureLinkerUnlabeledKD_dc_input2.featureXML,FeatureLinkerUnlabeledKD_dc_input3.featureXML,FeatureLinkerUnlabeledKD_dc_input1_2.featureXML,FeatureLinkerUnlabeledKD_dc_input2_2.featureXML"/>
+      <output name="out" file="FeatureLinkerUnlabeledKD_5_output.consensusXML" compare="sim_size" delta="5700" ftype="consensusxml"/>
+      <param name="keep_subelements" value="false"/>
+      <section name="algorithm">
+        <param name="mz_unit" value="ppm"/>
+        <param name="nr_partitions" value="100"/>
+        <section name="warp">
+          <param name="enabled" value="true"/>
+          <param name="rt_tol" value="100.0"/>
+          <param name="mz_tol" value="5.0"/>
+          <param name="max_pairwise_log_fc" value="0.5"/>
+          <param name="min_rel_cc_size" value="0.5"/>
+          <param name="max_nr_conflicts" value="0"/>
+        </section>
+        <section name="link">
+          <param name="rt_tol" value="30.0"/>
+          <param name="mz_tol" value="10.0"/>
+          <param name="charge_merging" value="With_charge_zero"/>
+          <param name="adduct_merging" value="Any"/>
+        </section>
+        <section name="distance_RT">
+          <param name="exponent" value="1.0"/>
+          <param name="weight" value="1.0"/>
+        </section>
+        <section name="distance_MZ">
+          <param name="exponent" value="2.0"/>
+          <param name="weight" value="1.0"/>
+        </section>
+        <section name="distance_intensity">
+          <param name="exponent" value="1.0"/>
+          <param name="weight" value="1.0"/>
+          <param name="log_transform" value="enabled"/>
+        </section>
+        <section name="LOWESS">
+          <param name="span" value="0.666666666666667"/>
+          <param name="num_iterations" value="3"/>
+          <param name="delta" value="-1.0"/>
+          <param name="interpolation_type" value="cspline"/>
+          <param name="extrapolation_type" value="four-point-linear"/>
+        </section>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FeatureLinkerUnlabeledKD_dc_input1.featureXML,FeatureLinkerUnlabeledKD_dc_input2.featureXML,FeatureLinkerUnlabeledKD_dc_input3.featureXML,FeatureLinkerUnlabeledKD_dc_input1_2.featureXML,FeatureLinkerUnlabeledKD_dc_input2_2.featureXML"/>
+      <output name="out" file="FeatureLinkerUnlabeledKD_6_output.consensusXML" compare="sim_size" delta="5700" ftype="consensusxml"/>
+      <param name="keep_subelements" value="false"/>
+      <section name="algorithm">
+        <param name="mz_unit" value="ppm"/>
+        <param name="nr_partitions" value="100"/>
+        <section name="warp">
+          <param name="enabled" value="true"/>
+          <param name="rt_tol" value="100.0"/>
+          <param name="mz_tol" value="5.0"/>
+          <param name="max_pairwise_log_fc" value="0.5"/>
+          <param name="min_rel_cc_size" value="0.5"/>
+          <param name="max_nr_conflicts" value="0"/>
+        </section>
+        <section name="link">
+          <param name="rt_tol" value="30.0"/>
+          <param name="mz_tol" value="10.0"/>
+          <param name="charge_merging" value="Any"/>
+          <param name="adduct_merging" value="With_unknown_adducts"/>
+        </section>
+        <section name="distance_RT">
+          <param name="exponent" value="1.0"/>
+          <param name="weight" value="1.0"/>
+        </section>
+        <section name="distance_MZ">
+          <param name="exponent" value="2.0"/>
+          <param name="weight" value="1.0"/>
+        </section>
+        <section name="distance_intensity">
+          <param name="exponent" value="1.0"/>
+          <param name="weight" value="1.0"/>
+          <param name="log_transform" value="enabled"/>
+        </section>
+        <section name="LOWESS">
+          <param name="span" value="0.666666666666667"/>
+          <param name="num_iterations" value="3"/>
+          <param name="delta" value="-1.0"/>
+          <param name="interpolation_type" value="cspline"/>
+          <param name="extrapolation_type" value="four-point-linear"/>
+        </section>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FeatureLinkerUnlabeledKD_dc_input1.featureXML,FeatureLinkerUnlabeledKD_dc_input2.featureXML,FeatureLinkerUnlabeledKD_dc_input3.featureXML,FeatureLinkerUnlabeledKD_dc_input1_2.featureXML,FeatureLinkerUnlabeledKD_dc_input2_2.featureXML"/>
+      <output name="out" file="FeatureLinkerUnlabeledKD_7_output.consensusXML" compare="sim_size" delta="5700" ftype="consensusxml"/>
+      <param name="keep_subelements" value="false"/>
+      <section name="algorithm">
+        <param name="mz_unit" value="ppm"/>
+        <param name="nr_partitions" value="100"/>
+        <section name="warp">
+          <param name="enabled" value="true"/>
+          <param name="rt_tol" value="100.0"/>
+          <param name="mz_tol" value="5.0"/>
+          <param name="max_pairwise_log_fc" value="0.5"/>
+          <param name="min_rel_cc_size" value="0.5"/>
+          <param name="max_nr_conflicts" value="0"/>
+        </section>
+        <section name="link">
+          <param name="rt_tol" value="30.0"/>
+          <param name="mz_tol" value="10.0"/>
+          <param name="charge_merging" value="Any"/>
+          <param name="adduct_merging" value="Identical"/>
+        </section>
+        <section name="distance_RT">
+          <param name="exponent" value="1.0"/>
+          <param name="weight" value="1.0"/>
+        </section>
+        <section name="distance_MZ">
+          <param name="exponent" value="2.0"/>
+          <param name="weight" value="1.0"/>
+        </section>
+        <section name="distance_intensity">
+          <param name="exponent" value="1.0"/>
+          <param name="weight" value="1.0"/>
+          <param name="log_transform" value="enabled"/>
+        </section>
+        <section name="LOWESS">
+          <param name="span" value="0.666666666666667"/>
+          <param name="num_iterations" value="3"/>
+          <param name="delta" value="-1.0"/>
+          <param name="interpolation_type" value="cspline"/>
+          <param name="extrapolation_type" value="four-point-linear"/>
+        </section>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+  </xml>
+  <xml name="autotest_FeatureLinkerUnlabeledQT">
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FeatureLinkerUnlabeled_1_input1.featureXML,FeatureLinkerUnlabeled_1_input2.featureXML,FeatureLinkerUnlabeled_1_input3.featureXML"/>
+      <output name="out" file="FeatureLinkerUnlabeledQT_1_output.consensusXML" compare="sim_size" delta="5700" ftype="consensusxml"/>
+      <param name="keep_subelements" value="false"/>
+      <section name="algorithm">
+        <param name="use_identifications" value="false"/>
+        <param name="nr_partitions" value="100"/>
+        <param name="ignore_charge" value="false"/>
+        <param name="ignore_adduct" value="true"/>
+        <section name="distance_RT">
+          <param name="max_difference" value="100.0"/>
+          <param name="exponent" value="1.0"/>
+          <param name="weight" value="1.0"/>
+        </section>
+        <section name="distance_MZ">
+          <param name="max_difference" value="0.3"/>
+          <param name="unit" value="Da"/>
+          <param name="exponent" value="2.0"/>
+          <param name="weight" value="1.0"/>
+        </section>
+        <section name="distance_intensity">
+          <param name="exponent" value="1.0"/>
+          <param name="weight" value="0.0"/>
+          <param name="log_transform" value="disabled"/>
+        </section>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FeatureLinkerUnlabeledQT_1_output.consensusXML,FeatureLinkerUnlabeledQT_1_output_2.consensusXML"/>
+      <output name="out" file="FeatureLinkerUnlabeledQT_2_output.consensusXML" compare="sim_size" delta="5700" ftype="consensusxml"/>
+      <param name="keep_subelements" value="true"/>
+      <section name="algorithm">
+        <param name="use_identifications" value="false"/>
+        <param name="nr_partitions" value="100"/>
+        <param name="ignore_charge" value="false"/>
+        <param name="ignore_adduct" value="true"/>
+        <section name="distance_RT">
+          <param name="max_difference" value="100.0"/>
+          <param name="exponent" value="1.0"/>
+          <param name="weight" value="1.0"/>
+        </section>
+        <section name="distance_MZ">
+          <param name="max_difference" value="0.3"/>
+          <param name="unit" value="Da"/>
+          <param name="exponent" value="2.0"/>
+          <param name="weight" value="1.0"/>
+        </section>
+        <section name="distance_intensity">
+          <param name="exponent" value="1.0"/>
+          <param name="weight" value="0.0"/>
+          <param name="log_transform" value="disabled"/>
+        </section>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FeatureLinkerUnlabeledQT_3_input1.featureXML,FeatureLinkerUnlabeledQT_3_input2.featureXML"/>
+      <output name="out" file="FeatureLinkerUnlabeledQT_3_output.consensusXML" compare="sim_size" delta="5700" ftype="consensusxml"/>
+      <param name="keep_subelements" value="false"/>
+      <section name="algorithm">
+        <param name="use_identifications" value="false"/>
+        <param name="nr_partitions" value="99999"/>
+        <param name="ignore_charge" value="false"/>
+        <param name="ignore_adduct" value="true"/>
+        <section name="distance_RT">
+          <param name="max_difference" value="100.0"/>
+          <param name="exponent" value="1.0"/>
+          <param name="weight" value="1.0"/>
+        </section>
+        <section name="distance_MZ">
+          <param name="max_difference" value="0.3"/>
+          <param name="unit" value="Da"/>
+          <param name="exponent" value="2.0"/>
+          <param name="weight" value="1.0"/>
+        </section>
+        <section name="distance_intensity">
+          <param name="exponent" value="1.0"/>
+          <param name="weight" value="0.0"/>
+          <param name="log_transform" value="disabled"/>
+        </section>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FeatureLinkerUnlabeled_1_input1.featureXML,FeatureLinkerUnlabeled_1_input2.featureXML,FeatureLinkerUnlabeled_1_input3.featureXML"/>
+      <output name="out" file="FeatureLinkerUnlabeledQT_4_output.consensusXML" compare="sim_size" delta="5700" ftype="consensusxml"/>
+      <param name="keep_subelements" value="false"/>
+      <section name="algorithm">
+        <param name="use_identifications" value="true"/>
+        <param name="nr_partitions" value="100"/>
+        <param name="ignore_charge" value="false"/>
+        <param name="ignore_adduct" value="true"/>
+        <section name="distance_RT">
+          <param name="max_difference" value="100.0"/>
+          <param name="exponent" value="1.0"/>
+          <param name="weight" value="1.0"/>
+        </section>
+        <section name="distance_MZ">
+          <param name="max_difference" value="0.3"/>
+          <param name="unit" value="Da"/>
+          <param name="exponent" value="2.0"/>
+          <param name="weight" value="1.0"/>
+        </section>
+        <section name="distance_intensity">
+          <param name="exponent" value="1.0"/>
+          <param name="weight" value="0.0"/>
+          <param name="log_transform" value="disabled"/>
+        </section>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FeatureLinkerUnlabeledQT_5_input1.featureXML,FeatureLinkerUnlabeledQT_5_input2.featureXML,FeatureLinkerUnlabeledQT_5_input3.featureXML"/>
+      <output name="out" file="FeatureLinkerUnlabeledQT_5_output.consensusXML" compare="sim_size" delta="5700" ftype="consensusxml"/>
+      <param name="keep_subelements" value="false"/>
+      <section name="algorithm">
+        <param name="use_identifications" value="false"/>
+        <param name="nr_partitions" value="100"/>
+        <param name="ignore_charge" value="false"/>
+        <param name="ignore_adduct" value="true"/>
+        <section name="distance_RT">
+          <param name="max_difference" value="200.0"/>
+          <param name="exponent" value="1.0"/>
+          <param name="weight" value="1.0"/>
+        </section>
+        <section name="distance_MZ">
+          <param name="max_difference" value="0.3"/>
+          <param name="unit" value="Da"/>
+          <param name="exponent" value="2.0"/>
+          <param name="weight" value="1.0"/>
+        </section>
+        <section name="distance_intensity">
+          <param name="exponent" value="1.0"/>
+          <param name="weight" value="0.0"/>
+          <param name="log_transform" value="disabled"/>
+        </section>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FeatureLinkerUnlabeledQT_5_input1.featureXML,FeatureLinkerUnlabeledQT_5_input2.featureXML,FeatureLinkerUnlabeledQT_5_input3.featureXML"/>
+      <output name="out" file="FeatureLinkerUnlabeledQT_6_output.consensusXML" compare="sim_size" delta="5700" ftype="consensusxml"/>
+      <param name="keep_subelements" value="false"/>
+      <section name="algorithm">
+        <param name="use_identifications" value="true"/>
+        <param name="nr_partitions" value="100"/>
+        <param name="ignore_charge" value="false"/>
+        <param name="ignore_adduct" value="true"/>
+        <section name="distance_RT">
+          <param name="max_difference" value="200.0"/>
+          <param name="exponent" value="1.0"/>
+          <param name="weight" value="1.0"/>
+        </section>
+        <section name="distance_MZ">
+          <param name="max_difference" value="0.3"/>
+          <param name="unit" value="Da"/>
+          <param name="exponent" value="2.0"/>
+          <param name="weight" value="1.0"/>
+        </section>
+        <section name="distance_intensity">
+          <param name="exponent" value="1.0"/>
+          <param name="weight" value="0.0"/>
+          <param name="log_transform" value="disabled"/>
+        </section>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+  </xml>
+  <xml name="autotest_FeatureLinkerUnlabeled">
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FeatureLinkerUnlabeled_1_input1.featureXML,FeatureLinkerUnlabeled_1_input2.featureXML,FeatureLinkerUnlabeled_1_input3.featureXML"/>
+      <output name="out" file="FeatureLinkerUnlabeled_1_output.consensusXML" compare="sim_size" delta="5700" ftype="consensusxml"/>
+      <param name="keep_subelements" value="false"/>
+      <section name="algorithm">
+        <param name="second_nearest_gap" value="2.0"/>
+        <param name="use_identifications" value="false"/>
+        <param name="ignore_charge" value="true"/>
+        <param name="ignore_adduct" value="true"/>
+        <section name="distance_RT">
+          <param name="max_difference" value="200.0"/>
+          <param name="exponent" value="1.0"/>
+          <param name="weight" value="1.0"/>
+        </section>
+        <section name="distance_MZ">
+          <param name="max_difference" value="0.5"/>
+          <param name="unit" value="Da"/>
+          <param name="exponent" value="1.0"/>
+          <param name="weight" value="1.0"/>
+        </section>
+        <section name="distance_intensity">
+          <param name="exponent" value="1.0"/>
+          <param name="weight" value="0.0"/>
+          <param name="log_transform" value="disabled"/>
+        </section>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FeatureLinkerUnlabeled_2_input1.featureXML,FeatureLinkerUnlabeled_2_input2.featureXML,FeatureLinkerUnlabeled_2_input3.featureXML"/>
+      <output name="out" file="FeatureLinkerUnlabeled_2_output.consensusXML" compare="sim_size" delta="5700" ftype="consensusxml"/>
+      <param name="keep_subelements" value="false"/>
+      <section name="algorithm">
+        <param name="second_nearest_gap" value="2.0"/>
+        <param name="use_identifications" value="false"/>
+        <param name="ignore_charge" value="false"/>
+        <param name="ignore_adduct" value="true"/>
+        <section name="distance_RT">
+          <param name="max_difference" value="100.0"/>
+          <param name="exponent" value="1.0"/>
+          <param name="weight" value="1.0"/>
+        </section>
+        <section name="distance_MZ">
+          <param name="max_difference" value="0.3"/>
+          <param name="unit" value="Da"/>
+          <param name="exponent" value="2.0"/>
+          <param name="weight" value="1.0"/>
+        </section>
+        <section name="distance_intensity">
+          <param name="exponent" value="1.0"/>
+          <param name="weight" value="0.5"/>
+          <param name="log_transform" value="disabled"/>
+        </section>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FeatureLinkerUnlabeled_3_input1.featureXML,FeatureLinkerUnlabeled_3_input2.featureXML"/>
+      <output name="out" file="FeatureLinkerUnlabeled_3_output.consensusXML" compare="sim_size" delta="5700" ftype="consensusxml"/>
+      <param name="keep_subelements" value="false"/>
+      <section name="algorithm">
+        <param name="second_nearest_gap" value="1.5"/>
+        <param name="use_identifications" value="false"/>
+        <param name="ignore_charge" value="true"/>
+        <param name="ignore_adduct" value="true"/>
+        <section name="distance_RT">
+          <param name="max_difference" value="30.0"/>
+          <param name="exponent" value="1.0"/>
+          <param name="weight" value="1.0"/>
+        </section>
+        <section name="distance_MZ">
+          <param name="max_difference" value="0.3"/>
+          <param name="unit" value="Da"/>
+          <param name="exponent" value="2.0"/>
+          <param name="weight" value="1.0"/>
+        </section>
+        <section name="distance_intensity">
+          <param name="exponent" value="1.0"/>
+          <param name="weight" value="0.0"/>
+          <param name="log_transform" value="disabled"/>
+        </section>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FeatureLinkerUnlabeled_1_input1.featureXML,FeatureLinkerUnlabeled_1_input2.featureXML,FeatureLinkerUnlabeled_1_input3.featureXML"/>
+      <output name="out" file="FeatureLinkerUnlabeled_4_output.consensusXML" compare="sim_size" delta="5700" ftype="consensusxml"/>
+      <param name="keep_subelements" value="false"/>
+      <section name="algorithm">
+        <param name="second_nearest_gap" value="2.0"/>
+        <param name="use_identifications" value="true"/>
+        <param name="ignore_charge" value="true"/>
+        <param name="ignore_adduct" value="true"/>
+        <section name="distance_RT">
+          <param name="max_difference" value="200.0"/>
+          <param name="exponent" value="2.0"/>
+          <param name="weight" value="1.0"/>
+        </section>
+        <section name="distance_MZ">
+          <param name="max_difference" value="0.5"/>
+          <param name="unit" value="Da"/>
+          <param name="exponent" value="2.0"/>
+          <param name="weight" value="1.0"/>
+        </section>
+        <section name="distance_intensity">
+          <param name="exponent" value="1.0"/>
+          <param name="weight" value="0.0"/>
+          <param name="log_transform" value="disabled"/>
+        </section>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+  </xml>
+  <xml name="autotest_FFEval">
+</xml>
+  <xml name="autotest_FidoAdapter">
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="keep_zero_group" value="false"/>
+        <param name="accuracy" value=""/>
+        <param name="log2_states_precalc" value="0"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FidoAdapter_1_input.idXML"/>
+      <output name="out" file="FidoAdapter_1_output.idXML" compare="sim_size" delta="5700" ftype="idxml"/>
+      <param name="separate_runs" value="false"/>
+      <param name="greedy_group_resolution" value="false"/>
+      <param name="no_cleanup" value="false"/>
+      <param name="all_PSMs" value="false"/>
+      <param name="group_level" value="false"/>
+      <param name="log2_states" value="0"/>
+      <section name="prob">
+        <param name="protein" value="0.0"/>
+        <param name="peptide" value="0.0"/>
+        <param name="spurious" value="0.0"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="keep_zero_group" value="false"/>
+        <param name="accuracy" value=""/>
+        <param name="log2_states_precalc" value="0"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FidoAdapter_1_input.idXML"/>
+      <output name="out" file="FidoAdapter_2_output.idXML" compare="sim_size" delta="5700" ftype="idxml"/>
+      <param name="separate_runs" value="true"/>
+      <param name="greedy_group_resolution" value="false"/>
+      <param name="no_cleanup" value="false"/>
+      <param name="all_PSMs" value="false"/>
+      <param name="group_level" value="false"/>
+      <param name="log2_states" value="0"/>
+      <section name="prob">
+        <param name="protein" value="0.0"/>
+        <param name="peptide" value="0.0"/>
+        <param name="spurious" value="0.0"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="keep_zero_group" value="false"/>
+        <param name="accuracy" value=""/>
+        <param name="log2_states_precalc" value="0"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FidoAdapter_1_input.idXML"/>
+      <output name="out" file="FidoAdapter_3_output.idXML" compare="sim_size" delta="5700" ftype="idxml"/>
+      <param name="separate_runs" value="false"/>
+      <param name="greedy_group_resolution" value="false"/>
+      <param name="no_cleanup" value="false"/>
+      <param name="all_PSMs" value="true"/>
+      <param name="group_level" value="true"/>
+      <param name="log2_states" value="0"/>
+      <section name="prob">
+        <param name="protein" value="0.0"/>
+        <param name="peptide" value="0.0"/>
+        <param name="spurious" value="0.0"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="keep_zero_group" value="false"/>
+        <param name="accuracy" value=""/>
+        <param name="log2_states_precalc" value="0"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FidoAdapter_4_input.idXML"/>
+      <output name="out" file="FidoAdapter_4_output.idXML" compare="sim_size" delta="5700" ftype="idxml"/>
+      <param name="separate_runs" value="false"/>
+      <param name="greedy_group_resolution" value="false"/>
+      <param name="no_cleanup" value="false"/>
+      <param name="all_PSMs" value="false"/>
+      <param name="group_level" value="false"/>
+      <param name="log2_states" value="0"/>
+      <section name="prob">
+        <param name="protein" value="0.0"/>
+        <param name="peptide" value="0.0"/>
+        <param name="spurious" value="0.0"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="keep_zero_group" value="false"/>
+        <param name="accuracy" value=""/>
+        <param name="log2_states_precalc" value="0"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FidoAdapter_5_input.idXML"/>
+      <output name="out" file="FidoAdapter_5_output.idXML" compare="sim_size" delta="5700" ftype="idxml"/>
+      <param name="separate_runs" value="false"/>
+      <param name="greedy_group_resolution" value="true"/>
+      <param name="no_cleanup" value="false"/>
+      <param name="all_PSMs" value="false"/>
+      <param name="group_level" value="false"/>
+      <param name="log2_states" value="0"/>
+      <section name="prob">
+        <param name="protein" value="0.0"/>
+        <param name="peptide" value="0.0"/>
+        <param name="spurious" value="0.0"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="keep_zero_group" value="false"/>
+        <param name="accuracy" value=""/>
+        <param name="log2_states_precalc" value="0"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FidoAdapter_1_input.idXML"/>
+      <output name="out" file="FidoAdapter_1_output.idXML" compare="sim_size" delta="5700" ftype="idxml"/>
+      <param name="separate_runs" value="false"/>
+      <param name="greedy_group_resolution" value="false"/>
+      <param name="no_cleanup" value="false"/>
+      <param name="all_PSMs" value="false"/>
+      <param name="group_level" value="false"/>
+      <param name="log2_states" value="0"/>
+      <section name="prob">
+        <param name="protein" value="0.9"/>
+        <param name="peptide" value="0.01"/>
+        <param name="spurious" value="0.0"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+  </xml>
+  <xml name="autotest_FileConverter">
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="UID_postprocessing" value="ensure"/>
+        <param name="TIC_DTA2D" value="false"/>
+        <param name="MGF_compact" value="false"/>
+        <param name="force_MaxQuant_compatibility" value="false"/>
+        <param name="convert_to_chromatograms" value="false"/>
+        <param name="force_TPP_compatibility" value="false"/>
+        <param name="change_im_format" value="none"/>
+        <param name="write_scan_index" value="true"/>
+        <param name="lossy_compression" value="false"/>
+        <param name="lossy_mass_accuracy" value="-1.0"/>
+        <param name="process_lowmemory" value="false"/>
+        <param name="no_peak_picking" value="false"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FileConverter_1_input.mzData"/>
+      <output name="out" file="FileConverter_1_output.mzML" compare="sim_size" delta="5700" ftype="mzml"/>
+      <param name="out_type" value="mzML"/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="UID_postprocessing" value="ensure"/>
+        <param name="TIC_DTA2D" value="false"/>
+        <param name="MGF_compact" value="false"/>
+        <param name="force_MaxQuant_compatibility" value="false"/>
+        <param name="convert_to_chromatograms" value="false"/>
+        <param name="force_TPP_compatibility" value="false"/>
+        <param name="change_im_format" value="none"/>
+        <param name="write_scan_index" value="true"/>
+        <param name="lossy_compression" value="false"/>
+        <param name="lossy_mass_accuracy" value="-1.0"/>
+        <param name="process_lowmemory" value="false"/>
+        <param name="no_peak_picking" value="false"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FileConverter_2_input.someInputDTA2D"/>
+      <output name="out" file="FileConverter_2_output.mzML" compare="sim_size" delta="5700" ftype="mzml"/>
+      <param name="out_type" value="mzML"/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="UID_postprocessing" value="ensure"/>
+        <param name="TIC_DTA2D" value="false"/>
+        <param name="MGF_compact" value="false"/>
+        <param name="force_MaxQuant_compatibility" value="false"/>
+        <param name="convert_to_chromatograms" value="false"/>
+        <param name="force_TPP_compatibility" value="false"/>
+        <param name="change_im_format" value="none"/>
+        <param name="write_scan_index" value="true"/>
+        <param name="lossy_compression" value="false"/>
+        <param name="lossy_mass_accuracy" value="-1.0"/>
+        <param name="process_lowmemory" value="false"/>
+        <param name="no_peak_picking" value="false"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FileConverter_3_input.featureXML"/>
+      <output name="out" file="FileConverter_3_output.mzML" compare="sim_size" delta="5700" ftype="mzml"/>
+      <param name="out_type" value="mzML"/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="UID_postprocessing" value="ensure"/>
+        <param name="TIC_DTA2D" value="false"/>
+        <param name="MGF_compact" value="false"/>
+        <param name="force_MaxQuant_compatibility" value="false"/>
+        <param name="convert_to_chromatograms" value="false"/>
+        <param name="force_TPP_compatibility" value="false"/>
+        <param name="change_im_format" value="none"/>
+        <param name="write_scan_index" value="true"/>
+        <param name="lossy_compression" value="false"/>
+        <param name="lossy_mass_accuracy" value="-1.0"/>
+        <param name="process_lowmemory" value="false"/>
+        <param name="no_peak_picking" value="false"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FileConverter_4_input.mzXML"/>
+      <output name="out" file="FileConverter_4_output.mzML" compare="sim_size" delta="5700" ftype="mzml"/>
+      <param name="out_type" value="mzML"/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="UID_postprocessing" value="ensure"/>
+        <param name="TIC_DTA2D" value="false"/>
+        <param name="MGF_compact" value="false"/>
+        <param name="force_MaxQuant_compatibility" value="false"/>
+        <param name="convert_to_chromatograms" value="false"/>
+        <param name="force_TPP_compatibility" value="false"/>
+        <param name="change_im_format" value="none"/>
+        <param name="write_scan_index" value="true"/>
+        <param name="lossy_compression" value="false"/>
+        <param name="lossy_mass_accuracy" value="-1.0"/>
+        <param name="process_lowmemory" value="false"/>
+        <param name="no_peak_picking" value="false"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FileConverter_5_input.mzML"/>
+      <output name="out" file="FileConverter_5_output.mzXML" compare="sim_size" delta="5700" ftype="mzxml"/>
+      <param name="out_type" value="mzXML"/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="UID_postprocessing" value="ensure"/>
+        <param name="TIC_DTA2D" value="false"/>
+        <param name="MGF_compact" value="false"/>
+        <param name="force_MaxQuant_compatibility" value="false"/>
+        <param name="convert_to_chromatograms" value="false"/>
+        <param name="force_TPP_compatibility" value="false"/>
+        <param name="change_im_format" value="none"/>
+        <param name="write_scan_index" value="true"/>
+        <param name="lossy_compression" value="false"/>
+        <param name="lossy_mass_accuracy" value="-1.0"/>
+        <param name="process_lowmemory" value="false"/>
+        <param name="no_peak_picking" value="false"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FileConverter_6_input.mzML"/>
+      <output name="out" file="FileConverter_6_output.mzXML" compare="sim_size" delta="5700" ftype="mzxml"/>
+      <param name="out_type" value="mzXML"/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="UID_postprocessing" value="ensure"/>
+        <param name="TIC_DTA2D" value="false"/>
+        <param name="MGF_compact" value="false"/>
+        <param name="force_MaxQuant_compatibility" value="false"/>
+        <param name="convert_to_chromatograms" value="false"/>
+        <param name="force_TPP_compatibility" value="false"/>
+        <param name="change_im_format" value="none"/>
+        <param name="write_scan_index" value="true"/>
+        <param name="lossy_compression" value="false"/>
+        <param name="lossy_mass_accuracy" value="-1.0"/>
+        <param name="process_lowmemory" value="false"/>
+        <param name="no_peak_picking" value="false"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FileConverter_7_input.consensusXML"/>
+      <output name="out" file="FileConverter_7_output.featureXML" compare="sim_size" delta="5700" ftype="featurexml"/>
+      <param name="out_type" value="featureXML"/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="UID_postprocessing" value="ensure"/>
+        <param name="TIC_DTA2D" value="false"/>
+        <param name="MGF_compact" value="false"/>
+        <param name="force_MaxQuant_compatibility" value="false"/>
+        <param name="convert_to_chromatograms" value="false"/>
+        <param name="force_TPP_compatibility" value="false"/>
+        <param name="change_im_format" value="none"/>
+        <param name="write_scan_index" value="true"/>
+        <param name="lossy_compression" value="false"/>
+        <param name="lossy_mass_accuracy" value="-1.0"/>
+        <param name="process_lowmemory" value="false"/>
+        <param name="no_peak_picking" value="false"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FileConverter_8_input.mzML"/>
+      <output name="out" file="FileConverter_8_output.mzData" compare="sim_size" delta="5700" ftype="mzdata"/>
+      <param name="out_type" value="mzData"/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="UID_postprocessing" value="ensure"/>
+        <param name="TIC_DTA2D" value="false"/>
+        <param name="MGF_compact" value="false"/>
+        <param name="force_MaxQuant_compatibility" value="false"/>
+        <param name="convert_to_chromatograms" value="false"/>
+        <param name="force_TPP_compatibility" value="false"/>
+        <param name="change_im_format" value="none"/>
+        <param name="write_scan_index" value="true"/>
+        <param name="lossy_compression" value="false"/>
+        <param name="lossy_mass_accuracy" value="-1.0"/>
+        <param name="process_lowmemory" value="false"/>
+        <param name="no_peak_picking" value="false"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FileConverter_9_input.consensusXML"/>
+      <output name="out" file="FileConverter_9_output.featureXML" compare="sim_size" delta="5700" ftype="featurexml"/>
+      <param name="out_type" value="featureXML"/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="UID_postprocessing" value="ensure"/>
+        <param name="TIC_DTA2D" value="false"/>
+        <param name="MGF_compact" value="false"/>
+        <param name="force_MaxQuant_compatibility" value="false"/>
+        <param name="convert_to_chromatograms" value="false"/>
+        <param name="force_TPP_compatibility" value="false"/>
+        <param name="change_im_format" value="none"/>
+        <param name="write_scan_index" value="true"/>
+        <param name="lossy_compression" value="false"/>
+        <param name="lossy_mass_accuracy" value="-1.0"/>
+        <param name="process_lowmemory" value="false"/>
+        <param name="no_peak_picking" value="false"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FileConverter_10_input.edta" ftype="edta"/>
+      <output name="out" file="FileConverter_10_output.featureXML" compare="sim_size" delta="5700" ftype="featurexml"/>
+      <param name="out_type" value="featureXML"/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="UID_postprocessing" value="ensure"/>
+        <param name="TIC_DTA2D" value="false"/>
+        <param name="MGF_compact" value="false"/>
+        <param name="force_MaxQuant_compatibility" value="false"/>
+        <param name="convert_to_chromatograms" value="false"/>
+        <param name="force_TPP_compatibility" value="false"/>
+        <param name="change_im_format" value="none"/>
+        <param name="write_scan_index" value="true"/>
+        <param name="lossy_compression" value="false"/>
+        <param name="lossy_mass_accuracy" value="-1.0"/>
+        <param name="process_lowmemory" value="false"/>
+        <param name="no_peak_picking" value="false"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FileConverter_11_input.peplist"/>
+      <output name="out" file="FileConverter_11_output.featureXML" compare="sim_size" delta="5700" ftype="featurexml"/>
+      <param name="out_type" value="featureXML"/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="UID_postprocessing" value="ensure"/>
+        <param name="TIC_DTA2D" value="false"/>
+        <param name="MGF_compact" value="false"/>
+        <param name="force_MaxQuant_compatibility" value="false"/>
+        <param name="convert_to_chromatograms" value="false"/>
+        <param name="force_TPP_compatibility" value="false"/>
+        <param name="change_im_format" value="none"/>
+        <param name="write_scan_index" value="true"/>
+        <param name="lossy_compression" value="false"/>
+        <param name="lossy_mass_accuracy" value="-1.0"/>
+        <param name="process_lowmemory" value="false"/>
+        <param name="no_peak_picking" value="false"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FileConverter_12_input.peptides.tsv" ftype="tabular"/>
+      <output name="out" file="FileConverter_12_output.featureXML" compare="sim_size" delta="5700" ftype="featurexml"/>
+      <param name="out_type" value="featureXML"/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="UID_postprocessing" value="ensure"/>
+        <param name="TIC_DTA2D" value="false"/>
+        <param name="MGF_compact" value="false"/>
+        <param name="force_MaxQuant_compatibility" value="false"/>
+        <param name="convert_to_chromatograms" value="false"/>
+        <param name="force_TPP_compatibility" value="false"/>
+        <param name="change_im_format" value="none"/>
+        <param name="write_scan_index" value="true"/>
+        <param name="lossy_compression" value="false"/>
+        <param name="lossy_mass_accuracy" value="-1.0"/>
+        <param name="process_lowmemory" value="false"/>
+        <param name="no_peak_picking" value="false"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FileConverter_13_input.peptides.kroenik"/>
+      <output name="out" file="FileConverter_13_output.featureXML" compare="sim_size" delta="5700" ftype="featurexml"/>
+      <param name="out_type" value="featureXML"/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="UID_postprocessing" value="ensure"/>
+        <param name="TIC_DTA2D" value="false"/>
+        <param name="MGF_compact" value="false"/>
+        <param name="force_MaxQuant_compatibility" value="false"/>
+        <param name="convert_to_chromatograms" value="false"/>
+        <param name="force_TPP_compatibility" value="false"/>
+        <param name="change_im_format" value="none"/>
+        <param name="write_scan_index" value="true"/>
+        <param name="lossy_compression" value="false"/>
+        <param name="lossy_mass_accuracy" value="-1.0"/>
+        <param name="process_lowmemory" value="false"/>
+        <param name="no_peak_picking" value="false"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FileConverter_9_output.featureXML"/>
+      <output name="out" file="FileConverter_14_output.consensusXML" compare="sim_size" delta="5700" ftype="consensusxml"/>
+      <param name="out_type" value="consensusXML"/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="UID_postprocessing" value="ensure"/>
+        <param name="TIC_DTA2D" value="false"/>
+        <param name="MGF_compact" value="false"/>
+        <param name="force_MaxQuant_compatibility" value="false"/>
+        <param name="convert_to_chromatograms" value="false"/>
+        <param name="force_TPP_compatibility" value="false"/>
+        <param name="change_im_format" value="none"/>
+        <param name="write_scan_index" value="true"/>
+        <param name="lossy_compression" value="false"/>
+        <param name="lossy_mass_accuracy" value="-1.0"/>
+        <param name="process_lowmemory" value="false"/>
+        <param name="no_peak_picking" value="false"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FileConverter_10_input.edta" ftype="edta"/>
+      <output name="out" file="FileConverter_15_output.consensusXML" compare="sim_size" delta="5700" ftype="consensusxml"/>
+      <param name="out_type" value="consensusXML"/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="UID_postprocessing" value="ensure"/>
+        <param name="TIC_DTA2D" value="false"/>
+        <param name="MGF_compact" value="false"/>
+        <param name="force_MaxQuant_compatibility" value="false"/>
+        <param name="convert_to_chromatograms" value="false"/>
+        <param name="force_TPP_compatibility" value="false"/>
+        <param name="change_im_format" value="none"/>
+        <param name="write_scan_index" value="true"/>
+        <param name="lossy_compression" value="false"/>
+        <param name="lossy_mass_accuracy" value="-1.0"/>
+        <param name="process_lowmemory" value="false"/>
+        <param name="no_peak_picking" value="false"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FileConverter_16_input.edta" ftype="edta"/>
+      <output name="out" file="FileConverter_16_output.consensusXML" compare="sim_size" delta="5700" ftype="consensusxml"/>
+      <param name="out_type" value="consensusXML"/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="UID_postprocessing" value="ensure"/>
+        <param name="TIC_DTA2D" value="false"/>
+        <param name="MGF_compact" value="false"/>
+        <param name="force_MaxQuant_compatibility" value="false"/>
+        <param name="convert_to_chromatograms" value="false"/>
+        <param name="force_TPP_compatibility" value="false"/>
+        <param name="change_im_format" value="none"/>
+        <param name="write_scan_index" value="true"/>
+        <param name="lossy_compression" value="false"/>
+        <param name="lossy_mass_accuracy" value="-1.0"/>
+        <param name="process_lowmemory" value="false"/>
+        <param name="no_peak_picking" value="false"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FileConverter_17_input.consensusXML"/>
+      <output name="out" file="FileConverter_17.csv" compare="sim_size" delta="5700" ftype="csv"/>
+      <param name="out_type" value="csv"/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="UID_postprocessing" value="ensure"/>
+        <param name="TIC_DTA2D" value="false"/>
+        <param name="MGF_compact" value="false"/>
+        <param name="force_MaxQuant_compatibility" value="false"/>
+        <param name="convert_to_chromatograms" value="false"/>
+        <param name="force_TPP_compatibility" value="false"/>
+        <param name="change_im_format" value="none"/>
+        <param name="write_scan_index" value="true"/>
+        <param name="lossy_compression" value="false"/>
+        <param name="lossy_mass_accuracy" value="-1.0"/>
+        <param name="process_lowmemory" value="false"/>
+        <param name="no_peak_picking" value="false"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FileConverter_17_input.consensusXML"/>
+      <output name="out" file="FileConverter_17_output.ibspectra.csv" compare="sim_size" delta="5700" ftype="csv"/>
+      <param name="out_type" value="csv"/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="UID_postprocessing" value="ensure"/>
+        <param name="TIC_DTA2D" value="false"/>
+        <param name="MGF_compact" value="false"/>
+        <param name="force_MaxQuant_compatibility" value="false"/>
+        <param name="convert_to_chromatograms" value="false"/>
+        <param name="force_TPP_compatibility" value="false"/>
+        <param name="change_im_format" value="none"/>
+        <param name="write_scan_index" value="true"/>
+        <param name="lossy_compression" value="false"/>
+        <param name="lossy_mass_accuracy" value="-1.0"/>
+        <param name="process_lowmemory" value="true"/>
+        <param name="no_peak_picking" value="false"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FileFilter_1_input.mzML"/>
+      <output name="out" file="FileConverter_19_output.mzML" compare="sim_size" delta="5700" ftype="mzml"/>
+      <param name="out_type" value="mzML"/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="UID_postprocessing" value="ensure"/>
+        <param name="TIC_DTA2D" value="false"/>
+        <param name="MGF_compact" value="false"/>
+        <param name="force_MaxQuant_compatibility" value="false"/>
+        <param name="convert_to_chromatograms" value="false"/>
+        <param name="force_TPP_compatibility" value="false"/>
+        <param name="change_im_format" value="none"/>
+        <param name="write_scan_index" value="true"/>
+        <param name="lossy_compression" value="false"/>
+        <param name="lossy_mass_accuracy" value="-1.0"/>
+        <param name="process_lowmemory" value="false"/>
+        <param name="no_peak_picking" value="false"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FileConverter_20_input.featureXML"/>
+      <output name="out" file="FileConverter_20_output.featureXML" compare="sim_size" delta="5700" ftype="featurexml"/>
+      <param name="out_type" value="featureXML"/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="UID_postprocessing" value="ensure"/>
+        <param name="TIC_DTA2D" value="false"/>
+        <param name="MGF_compact" value="false"/>
+        <param name="force_MaxQuant_compatibility" value="false"/>
+        <param name="convert_to_chromatograms" value="false"/>
+        <param name="force_TPP_compatibility" value="false"/>
+        <param name="change_im_format" value="none"/>
+        <param name="write_scan_index" value="true"/>
+        <param name="lossy_compression" value="false"/>
+        <param name="lossy_mass_accuracy" value="-1.0"/>
+        <param name="process_lowmemory" value="true"/>
+        <param name="no_peak_picking" value="false"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FileConverter_4_input.mzXML"/>
+      <output name="out" file="FileConverter_4_output.mzML" compare="sim_size" delta="5700" ftype="mzml"/>
+      <param name="out_type" value="mzML"/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="UID_postprocessing" value="ensure"/>
+        <param name="TIC_DTA2D" value="false"/>
+        <param name="MGF_compact" value="false"/>
+        <param name="force_MaxQuant_compatibility" value="false"/>
+        <param name="convert_to_chromatograms" value="false"/>
+        <param name="force_TPP_compatibility" value="false"/>
+        <param name="change_im_format" value="none"/>
+        <param name="write_scan_index" value="true"/>
+        <param name="lossy_compression" value="false"/>
+        <param name="lossy_mass_accuracy" value="-1.0"/>
+        <param name="process_lowmemory" value="false"/>
+        <param name="no_peak_picking" value="false"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FileConverter_23_input.mzML"/>
+      <output name="out" file="FileConverter_23_output.mzML" compare="sim_size" delta="5700" ftype="mzml"/>
+      <param name="out_type" value="mzML"/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="UID_postprocessing" value="ensure"/>
+        <param name="TIC_DTA2D" value="false"/>
+        <param name="MGF_compact" value="false"/>
+        <param name="force_MaxQuant_compatibility" value="false"/>
+        <param name="convert_to_chromatograms" value="false"/>
+        <param name="force_TPP_compatibility" value="false"/>
+        <param name="change_im_format" value="none"/>
+        <param name="write_scan_index" value="true"/>
+        <param name="lossy_compression" value="true"/>
+        <param name="lossy_mass_accuracy" value="0.0001"/>
+        <param name="process_lowmemory" value="true"/>
+        <param name="no_peak_picking" value="false"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FileFilter_1_input.mzML"/>
+      <output name="out" file="FileConverter_24_output.mzML" compare="sim_size" delta="5700" ftype="mzml"/>
+      <param name="out_type" value="mzML"/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="UID_postprocessing" value="ensure"/>
+        <param name="TIC_DTA2D" value="false"/>
+        <param name="MGF_compact" value="false"/>
+        <param name="force_MaxQuant_compatibility" value="false"/>
+        <param name="convert_to_chromatograms" value="false"/>
+        <param name="force_TPP_compatibility" value="false"/>
+        <param name="change_im_format" value="none"/>
+        <param name="write_scan_index" value="true"/>
+        <param name="lossy_compression" value="true"/>
+        <param name="lossy_mass_accuracy" value="-1.0"/>
+        <param name="process_lowmemory" value="true"/>
+        <param name="no_peak_picking" value="false"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FileFilter_1_input.mzML"/>
+      <output name="out" file="FileConverter_25_output.mzML" compare="sim_size" delta="5700" ftype="mzml"/>
+      <param name="out_type" value="mzML"/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="UID_postprocessing" value="ensure"/>
+        <param name="TIC_DTA2D" value="false"/>
+        <param name="MGF_compact" value="false"/>
+        <param name="force_MaxQuant_compatibility" value="true"/>
+        <param name="convert_to_chromatograms" value="false"/>
+        <param name="force_TPP_compatibility" value="false"/>
+        <param name="change_im_format" value="none"/>
+        <param name="write_scan_index" value="true"/>
+        <param name="lossy_compression" value="false"/>
+        <param name="lossy_mass_accuracy" value="-1.0"/>
+        <param name="process_lowmemory" value="false"/>
+        <param name="no_peak_picking" value="false"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FileFilter_1_input.mzML"/>
+      <output name="out" file="FileConverter_26_output.mzXML" compare="sim_size" delta="5700" ftype="mzxml"/>
+      <param name="out_type" value="mzXML"/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="UID_postprocessing" value="ensure"/>
+        <param name="TIC_DTA2D" value="false"/>
+        <param name="MGF_compact" value="false"/>
+        <param name="force_MaxQuant_compatibility" value="true"/>
+        <param name="convert_to_chromatograms" value="false"/>
+        <param name="force_TPP_compatibility" value="false"/>
+        <param name="change_im_format" value="none"/>
+        <param name="write_scan_index" value="true"/>
+        <param name="lossy_compression" value="false"/>
+        <param name="lossy_mass_accuracy" value="-1.0"/>
+        <param name="process_lowmemory" value="false"/>
+        <param name="no_peak_picking" value="false"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FileConverter_26_output.mzXML"/>
+      <output name="out" file="FileConverter_26-2_output.mzXML" compare="sim_size" delta="5700" ftype="mzxml"/>
+      <param name="out_type" value="mzXML"/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="UID_postprocessing" value="ensure"/>
+        <param name="TIC_DTA2D" value="false"/>
+        <param name="MGF_compact" value="false"/>
+        <param name="force_MaxQuant_compatibility" value="false"/>
+        <param name="convert_to_chromatograms" value="true"/>
+        <param name="force_TPP_compatibility" value="false"/>
+        <param name="change_im_format" value="none"/>
+        <param name="write_scan_index" value="true"/>
+        <param name="lossy_compression" value="false"/>
+        <param name="lossy_mass_accuracy" value="-1.0"/>
+        <param name="process_lowmemory" value="false"/>
+        <param name="no_peak_picking" value="false"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FileConverter_27_input.mzML"/>
+      <output name="out" file="FileConverter_27_output.mzML" compare="sim_size" delta="5700" ftype="mzml"/>
+      <param name="out_type" value="mzML"/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="UID_postprocessing" value="ensure"/>
+        <param name="TIC_DTA2D" value="false"/>
+        <param name="MGF_compact" value="false"/>
+        <param name="force_MaxQuant_compatibility" value="false"/>
+        <param name="convert_to_chromatograms" value="true"/>
+        <param name="force_TPP_compatibility" value="false"/>
+        <param name="change_im_format" value="none"/>
+        <param name="write_scan_index" value="true"/>
+        <param name="lossy_compression" value="false"/>
+        <param name="lossy_mass_accuracy" value="-1.0"/>
+        <param name="process_lowmemory" value="false"/>
+        <param name="no_peak_picking" value="false"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FileConverter_28_input.mzML"/>
+      <output name="out" file="FileConverter_28_output.mzML" compare="sim_size" delta="5700" ftype="mzml"/>
+      <param name="out_type" value="mzML"/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="UID_postprocessing" value="ensure"/>
+        <param name="TIC_DTA2D" value="false"/>
+        <param name="MGF_compact" value="false"/>
+        <param name="force_MaxQuant_compatibility" value="false"/>
+        <param name="convert_to_chromatograms" value="false"/>
+        <param name="force_TPP_compatibility" value="false"/>
+        <param name="change_im_format" value="none"/>
+        <param name="write_scan_index" value="true"/>
+        <param name="lossy_compression" value="true"/>
+        <param name="lossy_mass_accuracy" value="1e-05"/>
+        <param name="process_lowmemory" value="true"/>
+        <param name="no_peak_picking" value="false"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="OpenSwathWorkflow_17_input.mzML"/>
+      <output name="out" file="FileConverter_29_output.mzML" compare="sim_size" delta="5700" ftype="mzml"/>
+      <param name="out_type" value="mzML"/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="UID_postprocessing" value="ensure"/>
+        <param name="TIC_DTA2D" value="false"/>
+        <param name="MGF_compact" value="false"/>
+        <param name="force_MaxQuant_compatibility" value="false"/>
+        <param name="convert_to_chromatograms" value="false"/>
+        <param name="force_TPP_compatibility" value="false"/>
+        <param name="change_im_format" value="none"/>
+        <param name="write_scan_index" value="true"/>
+        <param name="lossy_compression" value="false"/>
+        <param name="lossy_mass_accuracy" value="-1.0"/>
+        <param name="process_lowmemory" value="false"/>
+        <param name="no_peak_picking" value="false"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FileConverter_29_output.mzML"/>
+      <output name="out" file="FileConverter_29.back.tmp" compare="sim_size" delta="5700"/>
+      <param name="out_type" value="mzML"/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="UID_postprocessing" value="ensure"/>
+        <param name="TIC_DTA2D" value="false"/>
+        <param name="MGF_compact" value="false"/>
+        <param name="force_MaxQuant_compatibility" value="false"/>
+        <param name="convert_to_chromatograms" value="false"/>
+        <param name="force_TPP_compatibility" value="false"/>
+        <param name="change_im_format" value="multiple"/>
+        <param name="write_scan_index" value="true"/>
+        <param name="lossy_compression" value="false"/>
+        <param name="lossy_mass_accuracy" value="-1.0"/>
+        <param name="process_lowmemory" value="false"/>
+        <param name="no_peak_picking" value="false"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FileConverter_30_input.mzML"/>
+      <output name="out" file="FileConverter_30_output.mzML" compare="sim_size" delta="5700" ftype="mzml"/>
+      <param name="out_type" value="mzML"/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="UID_postprocessing" value="ensure"/>
+        <param name="TIC_DTA2D" value="false"/>
+        <param name="MGF_compact" value="false"/>
+        <param name="force_MaxQuant_compatibility" value="false"/>
+        <param name="convert_to_chromatograms" value="false"/>
+        <param name="force_TPP_compatibility" value="false"/>
+        <param name="change_im_format" value="single"/>
+        <param name="write_scan_index" value="true"/>
+        <param name="lossy_compression" value="false"/>
+        <param name="lossy_mass_accuracy" value="-1.0"/>
+        <param name="process_lowmemory" value="false"/>
+        <param name="no_peak_picking" value="false"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FileConverter_30_output.mzML"/>
+      <output name="out" file="FileConverter_31_output.mzML" compare="sim_size" delta="5700" ftype="mzml"/>
+      <param name="out_type" value="mzML"/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="UID_postprocessing" value="ensure"/>
+        <param name="TIC_DTA2D" value="false"/>
+        <param name="MGF_compact" value="false"/>
+        <param name="force_MaxQuant_compatibility" value="false"/>
+        <param name="convert_to_chromatograms" value="false"/>
+        <param name="force_TPP_compatibility" value="false"/>
+        <param name="change_im_format" value="none"/>
+        <param name="write_scan_index" value="true"/>
+        <param name="lossy_compression" value="false"/>
+        <param name="lossy_mass_accuracy" value="-1.0"/>
+        <param name="process_lowmemory" value="false"/>
+        <param name="no_peak_picking" value="false"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="ginkgotoxin-ms-switching.raw"/>
+      <output name="out" file="ginkgotoxin-ms-switching_out_tmp.mzML" compare="sim_size" delta="5700" ftype="mzml"/>
+      <param name="out_type" value="mzml"/>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+  </xml>
+  <xml name="autotest_FileFilter">
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FileFilter_1_input.mzML"/>
+      <output name="out" file="FileFilter_1_output.mzML" compare="sim_size" delta="5700" ftype="mzml"/>
+      <param name="out_type" value="mzML"/>
+      <param name="rt" value=":30"/>
+      <param name="mz" value=":1000"/>
+      <param name="int" value=":20000"/>
+      <param name="sort" value="false"/>
+      <section name="peak_options">
+        <param name="sn" value="0.0"/>
+        <param name="rm_pc_charge" value=""/>
+        <param name="pc_mz_range" value=":"/>
+        <param name="pc_mz_list" value=""/>
+        <param name="level" value="1 2 3"/>
+        <param name="sort_peaks" value="false"/>
+        <param name="no_chromatograms" value="false"/>
+        <param name="remove_chromatograms" value="false"/>
+        <param name="remove_empty" value="false"/>
+        <param name="mz_precision" value="64"/>
+        <param name="int_precision" value="32"/>
+        <param name="indexed_file" value="true"/>
+        <param name="zlib_compression" value="false"/>
+        <section name="numpress">
+          <param name="masstime" value="none"/>
+          <param name="lossy_mass_accuracy" value="-1.0"/>
+          <param name="intensity" value="none"/>
+          <param name="float_da" value="none"/>
+        </section>
+      </section>
+      <section name="spectra">
+        <param name="remove_zoom" value="false"/>
+        <param name="remove_mode" value=""/>
+        <param name="remove_activation" value=""/>
+        <param name="remove_collision_energy" value=":"/>
+        <param name="remove_isolation_window_width" value=":"/>
+        <param name="select_zoom" value="false"/>
+        <param name="select_mode" value=""/>
+        <param name="select_activation" value=""/>
+        <param name="select_collision_energy" value=":"/>
+        <param name="select_isolation_window_width" value=":"/>
+        <param name="select_polarity" value=""/>
+        <section name="blackorwhitelist">
+          <param name="similarity_threshold" value="-1.0"/>
+          <param name="rt" value="0.01"/>
+          <param name="mz" value="0.01"/>
+          <param name="use_ppm_tolerance" value="false"/>
+          <param name="blacklist" value="true"/>
+        </section>
+      </section>
+      <section name="feature">
+        <param name="q" value=":"/>
+      </section>
+      <section name="consensus">
+        <param name="map" value=""/>
+        <param name="map_and" value="false"/>
+        <section name="blackorwhitelist">
+          <param name="blacklist" value="true"/>
+          <param name="maps" value=""/>
+          <param name="rt" value="60.0"/>
+          <param name="mz" value="0.01"/>
+          <param name="use_ppm_tolerance" value="false"/>
+        </section>
+      </section>
+      <section name="f_and_c">
+        <param name="charge" value=":"/>
+        <param name="size" value=":"/>
+        <param name="remove_meta" value=""/>
+      </section>
+      <section name="id">
+        <param name="remove_clashes" value="false"/>
+        <param name="keep_best_score_id" value="false"/>
+        <param name="sequences_whitelist" value=""/>
+        <param name="sequence_comparison_method" value="substring"/>
+        <param name="accessions_whitelist" value=""/>
+        <param name="remove_annotated_features" value="false"/>
+        <param name="remove_unannotated_features" value="false"/>
+        <param name="remove_unassigned_ids" value="false"/>
+        <param name="rt" value="0.1"/>
+        <param name="mz" value="0.001"/>
+        <param name="blacklist_imperfect" value="false"/>
+      </section>
+      <section name="algorithm">
+        <section name="SignalToNoise">
+          <param name="max_intensity" value="-1"/>
+          <param name="auto_max_stdev_factor" value="3.0"/>
+          <param name="auto_max_percentile" value="95"/>
+          <param name="auto_mode" value="0"/>
+          <param name="win_len" value="200.0"/>
+          <param name="bin_count" value="30"/>
+          <param name="min_required_elements" value="10"/>
+          <param name="noise_for_empty_window" value="1e+20"/>
+          <param name="write_log_messages" value="true"/>
+        </section>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FileFilter_1_input.mzML"/>
+      <output name="out" file="FileFilter_2_output.mzML" compare="sim_size" delta="5700" ftype="mzml"/>
+      <param name="out_type" value="mzML"/>
+      <param name="rt" value="30:"/>
+      <param name="mz" value="1000:"/>
+      <param name="int" value="100:"/>
+      <param name="sort" value="false"/>
+      <section name="peak_options">
+        <param name="sn" value="0.0"/>
+        <param name="rm_pc_charge" value=""/>
+        <param name="pc_mz_range" value=":"/>
+        <param name="pc_mz_list" value=""/>
+        <param name="level" value="1 2 3"/>
+        <param name="sort_peaks" value="false"/>
+        <param name="no_chromatograms" value="false"/>
+        <param name="remove_chromatograms" value="false"/>
+        <param name="remove_empty" value="false"/>
+        <param name="mz_precision" value="64"/>
+        <param name="int_precision" value="32"/>
+        <param name="indexed_file" value="true"/>
+        <param name="zlib_compression" value="false"/>
+        <section name="numpress">
+          <param name="masstime" value="none"/>
+          <param name="lossy_mass_accuracy" value="-1.0"/>
+          <param name="intensity" value="none"/>
+          <param name="float_da" value="none"/>
+        </section>
+      </section>
+      <section name="spectra">
+        <param name="remove_zoom" value="false"/>
+        <param name="remove_mode" value=""/>
+        <param name="remove_activation" value=""/>
+        <param name="remove_collision_energy" value=":"/>
+        <param name="remove_isolation_window_width" value=":"/>
+        <param name="select_zoom" value="false"/>
+        <param name="select_mode" value=""/>
+        <param name="select_activation" value=""/>
+        <param name="select_collision_energy" value=":"/>
+        <param name="select_isolation_window_width" value=":"/>
+        <param name="select_polarity" value=""/>
+        <section name="blackorwhitelist">
+          <param name="similarity_threshold" value="-1.0"/>
+          <param name="rt" value="0.01"/>
+          <param name="mz" value="0.01"/>
+          <param name="use_ppm_tolerance" value="false"/>
+          <param name="blacklist" value="true"/>
+        </section>
+      </section>
+      <section name="feature">
+        <param name="q" value=":"/>
+      </section>
+      <section name="consensus">
+        <param name="map" value=""/>
+        <param name="map_and" value="false"/>
+        <section name="blackorwhitelist">
+          <param name="blacklist" value="true"/>
+          <param name="maps" value=""/>
+          <param name="rt" value="60.0"/>
+          <param name="mz" value="0.01"/>
+          <param name="use_ppm_tolerance" value="false"/>
+        </section>
+      </section>
+      <section name="f_and_c">
+        <param name="charge" value=":"/>
+        <param name="size" value=":"/>
+        <param name="remove_meta" value=""/>
+      </section>
+      <section name="id">
+        <param name="remove_clashes" value="false"/>
+        <param name="keep_best_score_id" value="false"/>
+        <param name="sequences_whitelist" value=""/>
+        <param name="sequence_comparison_method" value="substring"/>
+        <param name="accessions_whitelist" value=""/>
+        <param name="remove_annotated_features" value="false"/>
+        <param name="remove_unannotated_features" value="false"/>
+        <param name="remove_unassigned_ids" value="false"/>
+        <param name="rt" value="0.1"/>
+        <param name="mz" value="0.001"/>
+        <param name="blacklist_imperfect" value="false"/>
+      </section>
+      <section name="algorithm">
+        <section name="SignalToNoise">
+          <param name="max_intensity" value="-1"/>
+          <param name="auto_max_stdev_factor" value="3.0"/>
+          <param name="auto_max_percentile" value="95"/>
+          <param name="auto_mode" value="0"/>
+          <param name="win_len" value="200.0"/>
+          <param name="bin_count" value="30"/>
+          <param name="min_required_elements" value="10"/>
+          <param name="noise_for_empty_window" value="1e+20"/>
+          <param name="write_log_messages" value="true"/>
+        </section>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FileFilter_1_input.mzML"/>
+      <output name="out" file="FileFilter_3_output.mzML" compare="sim_size" delta="5700" ftype="mzml"/>
+      <param name="out_type" value="mzML"/>
+      <param name="rt" value=":"/>
+      <param name="mz" value=":"/>
+      <param name="int" value=":"/>
+      <param name="sort" value="false"/>
+      <section name="peak_options">
+        <param name="sn" value="0.0"/>
+        <param name="rm_pc_charge" value=""/>
+        <param name="pc_mz_range" value=":"/>
+        <param name="pc_mz_list" value=""/>
+        <param name="level" value="2"/>
+        <param name="sort_peaks" value="false"/>
+        <param name="no_chromatograms" value="false"/>
+        <param name="remove_chromatograms" value="false"/>
+        <param name="remove_empty" value="false"/>
+        <param name="mz_precision" value="64"/>
+        <param name="int_precision" value="32"/>
+        <param name="indexed_file" value="true"/>
+        <param name="zlib_compression" value="false"/>
+        <section name="numpress">
+          <param name="masstime" value="none"/>
+          <param name="lossy_mass_accuracy" value="-1.0"/>
+          <param name="intensity" value="none"/>
+          <param name="float_da" value="none"/>
+        </section>
+      </section>
+      <section name="spectra">
+        <param name="remove_zoom" value="false"/>
+        <param name="remove_mode" value=""/>
+        <param name="remove_activation" value=""/>
+        <param name="remove_collision_energy" value=":"/>
+        <param name="remove_isolation_window_width" value=":"/>
+        <param name="select_zoom" value="false"/>
+        <param name="select_mode" value=""/>
+        <param name="select_activation" value=""/>
+        <param name="select_collision_energy" value=":"/>
+        <param name="select_isolation_window_width" value=":"/>
+        <param name="select_polarity" value=""/>
+        <section name="blackorwhitelist">
+          <param name="similarity_threshold" value="-1.0"/>
+          <param name="rt" value="0.01"/>
+          <param name="mz" value="0.01"/>
+          <param name="use_ppm_tolerance" value="false"/>
+          <param name="blacklist" value="true"/>
+        </section>
+      </section>
+      <section name="feature">
+        <param name="q" value=":"/>
+      </section>
+      <section name="consensus">
+        <param name="map" value=""/>
+        <param name="map_and" value="false"/>
+        <section name="blackorwhitelist">
+          <param name="blacklist" value="true"/>
+          <param name="maps" value=""/>
+          <param name="rt" value="60.0"/>
+          <param name="mz" value="0.01"/>
+          <param name="use_ppm_tolerance" value="false"/>
+        </section>
+      </section>
+      <section name="f_and_c">
+        <param name="charge" value=":"/>
+        <param name="size" value=":"/>
+        <param name="remove_meta" value=""/>
+      </section>
+      <section name="id">
+        <param name="remove_clashes" value="false"/>
+        <param name="keep_best_score_id" value="false"/>
+        <param name="sequences_whitelist" value=""/>
+        <param name="sequence_comparison_method" value="substring"/>
+        <param name="accessions_whitelist" value=""/>
+        <param name="remove_annotated_features" value="false"/>
+        <param name="remove_unannotated_features" value="false"/>
+        <param name="remove_unassigned_ids" value="false"/>
+        <param name="rt" value="0.1"/>
+        <param name="mz" value="0.001"/>
+        <param name="blacklist_imperfect" value="false"/>
+      </section>
+      <section name="algorithm">
+        <section name="SignalToNoise">
+          <param name="max_intensity" value="-1"/>
+          <param name="auto_max_stdev_factor" value="3.0"/>
+          <param name="auto_max_percentile" value="95"/>
+          <param name="auto_mode" value="0"/>
+          <param name="win_len" value="200.0"/>
+          <param name="bin_count" value="30"/>
+          <param name="min_required_elements" value="10"/>
+          <param name="noise_for_empty_window" value="1e+20"/>
+          <param name="write_log_messages" value="true"/>
+        </section>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FileFilter_4_input.mzML"/>
+      <output name="out" file="FileFilter_4_output.mzML" compare="sim_size" delta="5700" ftype="mzml"/>
+      <param name="out_type" value="mzML"/>
+      <param name="rt" value=":"/>
+      <param name="mz" value=":"/>
+      <param name="int" value=":"/>
+      <param name="sort" value="false"/>
+      <section name="peak_options">
+        <param name="sn" value="0.0"/>
+        <param name="rm_pc_charge" value=""/>
+        <param name="pc_mz_range" value=":"/>
+        <param name="pc_mz_list" value=""/>
+        <param name="level" value="1 2 3"/>
+        <param name="sort_peaks" value="false"/>
+        <param name="no_chromatograms" value="false"/>
+        <param name="remove_chromatograms" value="false"/>
+        <param name="remove_empty" value="false"/>
+        <param name="mz_precision" value="64"/>
+        <param name="int_precision" value="32"/>
+        <param name="indexed_file" value="true"/>
+        <param name="zlib_compression" value="false"/>
+        <section name="numpress">
+          <param name="masstime" value="none"/>
+          <param name="lossy_mass_accuracy" value="-1.0"/>
+          <param name="intensity" value="none"/>
+          <param name="float_da" value="none"/>
+        </section>
+      </section>
+      <section name="spectra">
+        <param name="remove_zoom" value="true"/>
+        <param name="remove_mode" value=""/>
+        <param name="remove_activation" value=""/>
+        <param name="remove_collision_energy" value=":"/>
+        <param name="remove_isolation_window_width" value=":"/>
+        <param name="select_zoom" value="false"/>
+        <param name="select_mode" value=""/>
+        <param name="select_activation" value=""/>
+        <param name="select_collision_energy" value=":"/>
+        <param name="select_isolation_window_width" value=":"/>
+        <param name="select_polarity" value=""/>
+        <section name="blackorwhitelist">
+          <param name="similarity_threshold" value="-1.0"/>
+          <param name="rt" value="0.01"/>
+          <param name="mz" value="0.01"/>
+          <param name="use_ppm_tolerance" value="false"/>
+          <param name="blacklist" value="true"/>
+        </section>
+      </section>
+      <section name="feature">
+        <param name="q" value=":"/>
+      </section>
+      <section name="consensus">
+        <param name="map" value=""/>
+        <param name="map_and" value="false"/>
+        <section name="blackorwhitelist">
+          <param name="blacklist" value="true"/>
+          <param name="maps" value=""/>
+          <param name="rt" value="60.0"/>
+          <param name="mz" value="0.01"/>
+          <param name="use_ppm_tolerance" value="false"/>
+        </section>
+      </section>
+      <section name="f_and_c">
+        <param name="charge" value=":"/>
+        <param name="size" value=":"/>
+        <param name="remove_meta" value=""/>
+      </section>
+      <section name="id">
+        <param name="remove_clashes" value="false"/>
+        <param name="keep_best_score_id" value="false"/>
+        <param name="sequences_whitelist" value=""/>
+        <param name="sequence_comparison_method" value="substring"/>
+        <param name="accessions_whitelist" value=""/>
+        <param name="remove_annotated_features" value="false"/>
+        <param name="remove_unannotated_features" value="false"/>
+        <param name="remove_unassigned_ids" value="false"/>
+        <param name="rt" value="0.1"/>
+        <param name="mz" value="0.001"/>
+        <param name="blacklist_imperfect" value="false"/>
+      </section>
+      <section name="algorithm">
+        <section name="SignalToNoise">
+          <param name="max_intensity" value="-1"/>
+          <param name="auto_max_stdev_factor" value="3.0"/>
+          <param name="auto_max_percentile" value="95"/>
+          <param name="auto_mode" value="0"/>
+          <param name="win_len" value="200.0"/>
+          <param name="bin_count" value="30"/>
+          <param name="min_required_elements" value="10"/>
+          <param name="noise_for_empty_window" value="1e+20"/>
+          <param name="write_log_messages" value="true"/>
+        </section>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FileFilter_5_input.featureXML"/>
+      <output name="out" file="FileFilter_5_out.featureXML" compare="sim_size" delta="5700" ftype="featurexml"/>
+      <param name="out_type" value="featureXML"/>
+      <param name="rt" value=":1000"/>
+      <param name="mz" value=":480"/>
+      <param name="int" value=":79000"/>
+      <param name="sort" value="false"/>
+      <section name="peak_options">
+        <param name="sn" value="0.0"/>
+        <param name="rm_pc_charge" value=""/>
+        <param name="pc_mz_range" value=":"/>
+        <param name="pc_mz_list" value=""/>
+        <param name="level" value="1 2 3"/>
+        <param name="sort_peaks" value="false"/>
+        <param name="no_chromatograms" value="false"/>
+        <param name="remove_chromatograms" value="false"/>
+        <param name="remove_empty" value="false"/>
+        <param name="mz_precision" value="64"/>
+        <param name="int_precision" value="32"/>
+        <param name="indexed_file" value="true"/>
+        <param name="zlib_compression" value="false"/>
+        <section name="numpress">
+          <param name="masstime" value="none"/>
+          <param name="lossy_mass_accuracy" value="-1.0"/>
+          <param name="intensity" value="none"/>
+          <param name="float_da" value="none"/>
+        </section>
+      </section>
+      <section name="spectra">
+        <param name="remove_zoom" value="false"/>
+        <param name="remove_mode" value=""/>
+        <param name="remove_activation" value=""/>
+        <param name="remove_collision_energy" value=":"/>
+        <param name="remove_isolation_window_width" value=":"/>
+        <param name="select_zoom" value="false"/>
+        <param name="select_mode" value=""/>
+        <param name="select_activation" value=""/>
+        <param name="select_collision_energy" value=":"/>
+        <param name="select_isolation_window_width" value=":"/>
+        <param name="select_polarity" value=""/>
+        <section name="blackorwhitelist">
+          <param name="similarity_threshold" value="-1.0"/>
+          <param name="rt" value="0.01"/>
+          <param name="mz" value="0.01"/>
+          <param name="use_ppm_tolerance" value="false"/>
+          <param name="blacklist" value="true"/>
+        </section>
+      </section>
+      <section name="feature">
+        <param name="q" value=":0.6"/>
+      </section>
+      <section name="consensus">
+        <param name="map" value=""/>
+        <param name="map_and" value="false"/>
+        <section name="blackorwhitelist">
+          <param name="blacklist" value="true"/>
+          <param name="maps" value=""/>
+          <param name="rt" value="60.0"/>
+          <param name="mz" value="0.01"/>
+          <param name="use_ppm_tolerance" value="false"/>
+        </section>
+      </section>
+      <section name="f_and_c">
+        <param name="charge" value=":3"/>
+        <param name="size" value=":"/>
+        <param name="remove_meta" value=""/>
+      </section>
+      <section name="id">
+        <param name="remove_clashes" value="false"/>
+        <param name="keep_best_score_id" value="false"/>
+        <param name="sequences_whitelist" value=""/>
+        <param name="sequence_comparison_method" value="substring"/>
+        <param name="accessions_whitelist" value=""/>
+        <param name="remove_annotated_features" value="false"/>
+        <param name="remove_unannotated_features" value="false"/>
+        <param name="remove_unassigned_ids" value="false"/>
+        <param name="rt" value="0.1"/>
+        <param name="mz" value="0.001"/>
+        <param name="blacklist_imperfect" value="false"/>
+      </section>
+      <section name="algorithm">
+        <section name="SignalToNoise">
+          <param name="max_intensity" value="-1"/>
+          <param name="auto_max_stdev_factor" value="3.0"/>
+          <param name="auto_max_percentile" value="95"/>
+          <param name="auto_mode" value="0"/>
+          <param name="win_len" value="200.0"/>
+          <param name="bin_count" value="30"/>
+          <param name="min_required_elements" value="10"/>
+          <param name="noise_for_empty_window" value="1e+20"/>
+          <param name="write_log_messages" value="true"/>
+        </section>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FileFilter_5_input.featureXML"/>
+      <output name="out" file="FileFilter_6_out.featureXML" compare="sim_size" delta="5700" ftype="featurexml"/>
+      <param name="out_type" value="featureXML"/>
+      <param name="rt" value="1000:"/>
+      <param name="mz" value="440:"/>
+      <param name="int" value="70000:"/>
+      <param name="sort" value="false"/>
+      <section name="peak_options">
+        <param name="sn" value="0.0"/>
+        <param name="rm_pc_charge" value=""/>
+        <param name="pc_mz_range" value=":"/>
+        <param name="pc_mz_list" value=""/>
+        <param name="level" value="1 2 3"/>
+        <param name="sort_peaks" value="false"/>
+        <param name="no_chromatograms" value="false"/>
+        <param name="remove_chromatograms" value="false"/>
+        <param name="remove_empty" value="false"/>
+        <param name="mz_precision" value="64"/>
+        <param name="int_precision" value="32"/>
+        <param name="indexed_file" value="true"/>
+        <param name="zlib_compression" value="false"/>
+        <section name="numpress">
+          <param name="masstime" value="none"/>
+          <param name="lossy_mass_accuracy" value="-1.0"/>
+          <param name="intensity" value="none"/>
+          <param name="float_da" value="none"/>
+        </section>
+      </section>
+      <section name="spectra">
+        <param name="remove_zoom" value="false"/>
+        <param name="remove_mode" value=""/>
+        <param name="remove_activation" value=""/>
+        <param name="remove_collision_energy" value=":"/>
+        <param name="remove_isolation_window_width" value=":"/>
+        <param name="select_zoom" value="false"/>
+        <param name="select_mode" value=""/>
+        <param name="select_activation" value=""/>
+        <param name="select_collision_energy" value=":"/>
+        <param name="select_isolation_window_width" value=":"/>
+        <param name="select_polarity" value=""/>
+        <section name="blackorwhitelist">
+          <param name="similarity_threshold" value="-1.0"/>
+          <param name="rt" value="0.01"/>
+          <param name="mz" value="0.01"/>
+          <param name="use_ppm_tolerance" value="false"/>
+          <param name="blacklist" value="true"/>
+        </section>
+      </section>
+      <section name="feature">
+        <param name="q" value="0.51:"/>
+      </section>
+      <section name="consensus">
+        <param name="map" value=""/>
+        <param name="map_and" value="false"/>
+        <section name="blackorwhitelist">
+          <param name="blacklist" value="true"/>
+          <param name="maps" value=""/>
+          <param name="rt" value="60.0"/>
+          <param name="mz" value="0.01"/>
+          <param name="use_ppm_tolerance" value="false"/>
+        </section>
+      </section>
+      <section name="f_and_c">
+        <param name="charge" value="3:"/>
+        <param name="size" value=":"/>
+        <param name="remove_meta" value=""/>
+      </section>
+      <section name="id">
+        <param name="remove_clashes" value="false"/>
+        <param name="keep_best_score_id" value="false"/>
+        <param name="sequences_whitelist" value=""/>
+        <param name="sequence_comparison_method" value="substring"/>
+        <param name="accessions_whitelist" value=""/>
+        <param name="remove_annotated_features" value="false"/>
+        <param name="remove_unannotated_features" value="false"/>
+        <param name="remove_unassigned_ids" value="false"/>
+        <param name="rt" value="0.1"/>
+        <param name="mz" value="0.001"/>
+        <param name="blacklist_imperfect" value="false"/>
+      </section>
+      <section name="algorithm">
+        <section name="SignalToNoise">
+          <param name="max_intensity" value="-1"/>
+          <param name="auto_max_stdev_factor" value="3.0"/>
+          <param name="auto_max_percentile" value="95"/>
+          <param name="auto_mode" value="0"/>
+          <param name="win_len" value="200.0"/>
+          <param name="bin_count" value="30"/>
+          <param name="min_required_elements" value="10"/>
+          <param name="noise_for_empty_window" value="1e+20"/>
+          <param name="write_log_messages" value="true"/>
+        </section>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FileFilter_7_input.mzML"/>
+      <output name="out" file="FileFilter_7_output.mzML" compare="sim_size" delta="5700" ftype="mzml"/>
+      <param name="out_type" value="mzML"/>
+      <param name="rt" value=":"/>
+      <param name="mz" value=":"/>
+      <param name="int" value="7000:"/>
+      <param name="sort" value="false"/>
+      <section name="peak_options">
+        <param name="sn" value="0.0"/>
+        <param name="rm_pc_charge" value=""/>
+        <param name="pc_mz_range" value=":"/>
+        <param name="pc_mz_list" value=""/>
+        <param name="level" value="1 2 3"/>
+        <param name="sort_peaks" value="false"/>
+        <param name="no_chromatograms" value="false"/>
+        <param name="remove_chromatograms" value="false"/>
+        <param name="remove_empty" value="false"/>
+        <param name="mz_precision" value="64"/>
+        <param name="int_precision" value="32"/>
+        <param name="indexed_file" value="true"/>
+        <param name="zlib_compression" value="false"/>
+        <section name="numpress">
+          <param name="masstime" value="none"/>
+          <param name="lossy_mass_accuracy" value="-1.0"/>
+          <param name="intensity" value="none"/>
+          <param name="float_da" value="none"/>
+        </section>
+      </section>
+      <section name="spectra">
+        <param name="remove_zoom" value="false"/>
+        <param name="remove_mode" value=""/>
+        <param name="remove_activation" value=""/>
+        <param name="remove_collision_energy" value=":"/>
+        <param name="remove_isolation_window_width" value=":"/>
+        <param name="select_zoom" value="false"/>
+        <param name="select_mode" value=""/>
+        <param name="select_activation" value=""/>
+        <param name="select_collision_energy" value=":"/>
+        <param name="select_isolation_window_width" value=":"/>
+        <param name="select_polarity" value=""/>
+        <section name="blackorwhitelist">
+          <param name="similarity_threshold" value="-1.0"/>
+          <param name="rt" value="0.01"/>
+          <param name="mz" value="0.01"/>
+          <param name="use_ppm_tolerance" value="false"/>
+          <param name="blacklist" value="true"/>
+        </section>
+      </section>
+      <section name="feature">
+        <param name="q" value=":"/>
+      </section>
+      <section name="consensus">
+        <param name="map" value=""/>
+        <param name="map_and" value="false"/>
+        <section name="blackorwhitelist">
+          <param name="blacklist" value="true"/>
+          <param name="maps" value=""/>
+          <param name="rt" value="60.0"/>
+          <param name="mz" value="0.01"/>
+          <param name="use_ppm_tolerance" value="false"/>
+        </section>
+      </section>
+      <section name="f_and_c">
+        <param name="charge" value=":"/>
+        <param name="size" value=":"/>
+        <param name="remove_meta" value=""/>
+      </section>
+      <section name="id">
+        <param name="remove_clashes" value="false"/>
+        <param name="keep_best_score_id" value="false"/>
+        <param name="sequences_whitelist" value=""/>
+        <param name="sequence_comparison_method" value="substring"/>
+        <param name="accessions_whitelist" value=""/>
+        <param name="remove_annotated_features" value="false"/>
+        <param name="remove_unannotated_features" value="false"/>
+        <param name="remove_unassigned_ids" value="false"/>
+        <param name="rt" value="0.1"/>
+        <param name="mz" value="0.001"/>
+        <param name="blacklist_imperfect" value="false"/>
+      </section>
+      <section name="algorithm">
+        <section name="SignalToNoise">
+          <param name="max_intensity" value="-1"/>
+          <param name="auto_max_stdev_factor" value="3.0"/>
+          <param name="auto_max_percentile" value="95"/>
+          <param name="auto_mode" value="0"/>
+          <param name="win_len" value="200.0"/>
+          <param name="bin_count" value="30"/>
+          <param name="min_required_elements" value="10"/>
+          <param name="noise_for_empty_window" value="1e+20"/>
+          <param name="write_log_messages" value="true"/>
+        </section>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FileFilter_8_input.consensusXML"/>
+      <output name="out" file="FileFilter_8_output.consensusXML" compare="sim_size" delta="5700" ftype="consensusxml"/>
+      <param name="out_type" value="consensusXML"/>
+      <param name="rt" value="600:1400"/>
+      <param name="mz" value="700:2300"/>
+      <param name="int" value="1100:6000"/>
+      <param name="sort" value="false"/>
+      <section name="peak_options">
+        <param name="sn" value="0.0"/>
+        <param name="rm_pc_charge" value=""/>
+        <param name="pc_mz_range" value=":"/>
+        <param name="pc_mz_list" value=""/>
+        <param name="level" value="1 2 3"/>
+        <param name="sort_peaks" value="false"/>
+        <param name="no_chromatograms" value="false"/>
+        <param name="remove_chromatograms" value="false"/>
+        <param name="remove_empty" value="false"/>
+        <param name="mz_precision" value="64"/>
+        <param name="int_precision" value="32"/>
+        <param name="indexed_file" value="true"/>
+        <param name="zlib_compression" value="false"/>
+        <section name="numpress">
+          <param name="masstime" value="none"/>
+          <param name="lossy_mass_accuracy" value="-1.0"/>
+          <param name="intensity" value="none"/>
+          <param name="float_da" value="none"/>
+        </section>
+      </section>
+      <section name="spectra">
+        <param name="remove_zoom" value="false"/>
+        <param name="remove_mode" value=""/>
+        <param name="remove_activation" value=""/>
+        <param name="remove_collision_energy" value=":"/>
+        <param name="remove_isolation_window_width" value=":"/>
+        <param name="select_zoom" value="false"/>
+        <param name="select_mode" value=""/>
+        <param name="select_activation" value=""/>
+        <param name="select_collision_energy" value=":"/>
+        <param name="select_isolation_window_width" value=":"/>
+        <param name="select_polarity" value=""/>
+        <section name="blackorwhitelist">
+          <param name="similarity_threshold" value="-1.0"/>
+          <param name="rt" value="0.01"/>
+          <param name="mz" value="0.01"/>
+          <param name="use_ppm_tolerance" value="false"/>
+          <param name="blacklist" value="true"/>
+        </section>
+      </section>
+      <section name="feature">
+        <param name="q" value=":"/>
+      </section>
+      <section name="consensus">
+        <param name="map" value=""/>
+        <param name="map_and" value="false"/>
+        <section name="blackorwhitelist">
+          <param name="blacklist" value="true"/>
+          <param name="maps" value=""/>
+          <param name="rt" value="60.0"/>
+          <param name="mz" value="0.01"/>
+          <param name="use_ppm_tolerance" value="false"/>
+        </section>
+      </section>
+      <section name="f_and_c">
+        <param name="charge" value=":"/>
+        <param name="size" value=":"/>
+        <param name="remove_meta" value=""/>
+      </section>
+      <section name="id">
+        <param name="remove_clashes" value="false"/>
+        <param name="keep_best_score_id" value="false"/>
+        <param name="sequences_whitelist" value=""/>
+        <param name="sequence_comparison_method" value="substring"/>
+        <param name="accessions_whitelist" value=""/>
+        <param name="remove_annotated_features" value="false"/>
+        <param name="remove_unannotated_features" value="false"/>
+        <param name="remove_unassigned_ids" value="false"/>
+        <param name="rt" value="0.1"/>
+        <param name="mz" value="0.001"/>
+        <param name="blacklist_imperfect" value="false"/>
+      </section>
+      <section name="algorithm">
+        <section name="SignalToNoise">
+          <param name="max_intensity" value="-1"/>
+          <param name="auto_max_stdev_factor" value="3.0"/>
+          <param name="auto_max_percentile" value="95"/>
+          <param name="auto_mode" value="0"/>
+          <param name="win_len" value="200.0"/>
+          <param name="bin_count" value="30"/>
+          <param name="min_required_elements" value="10"/>
+          <param name="noise_for_empty_window" value="1e+20"/>
+          <param name="write_log_messages" value="true"/>
+        </section>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FileFilter_9_input.mzML"/>
+      <output name="out" file="FileFilter_9_output.mzML" compare="sim_size" delta="5700" ftype="mzml"/>
+      <param name="out_type" value="mzML"/>
+      <param name="rt" value=":"/>
+      <param name="mz" value=":"/>
+      <param name="int" value=":"/>
+      <param name="sort" value="false"/>
+      <section name="peak_options">
+        <param name="sn" value="0.0"/>
+        <param name="rm_pc_charge" value=""/>
+        <param name="pc_mz_range" value=":"/>
+        <param name="pc_mz_list" value=""/>
+        <param name="level" value="1 2 3"/>
+        <param name="sort_peaks" value="false"/>
+        <param name="no_chromatograms" value="false"/>
+        <param name="remove_chromatograms" value="false"/>
+        <param name="remove_empty" value="false"/>
+        <param name="mz_precision" value="64"/>
+        <param name="int_precision" value="32"/>
+        <param name="indexed_file" value="true"/>
+        <param name="zlib_compression" value="false"/>
+        <section name="numpress">
+          <param name="masstime" value="none"/>
+          <param name="lossy_mass_accuracy" value="-1.0"/>
+          <param name="intensity" value="none"/>
+          <param name="float_da" value="none"/>
+        </section>
+      </section>
+      <section name="spectra">
+        <param name="remove_zoom" value="false"/>
+        <param name="remove_mode" value="SelectedIonMonitoring"/>
+        <param name="remove_activation" value=""/>
+        <param name="remove_collision_energy" value=":"/>
+        <param name="remove_isolation_window_width" value=":"/>
+        <param name="select_zoom" value="false"/>
+        <param name="select_mode" value=""/>
+        <param name="select_activation" value=""/>
+        <param name="select_collision_energy" value=":"/>
+        <param name="select_isolation_window_width" value=":"/>
+        <param name="select_polarity" value=""/>
+        <section name="blackorwhitelist">
+          <param name="similarity_threshold" value="-1.0"/>
+          <param name="rt" value="0.01"/>
+          <param name="mz" value="0.01"/>
+          <param name="use_ppm_tolerance" value="false"/>
+          <param name="blacklist" value="true"/>
+        </section>
+      </section>
+      <section name="feature">
+        <param name="q" value=":"/>
+      </section>
+      <section name="consensus">
+        <param name="map" value=""/>
+        <param name="map_and" value="false"/>
+        <section name="blackorwhitelist">
+          <param name="blacklist" value="true"/>
+          <param name="maps" value=""/>
+          <param name="rt" value="60.0"/>
+          <param name="mz" value="0.01"/>
+          <param name="use_ppm_tolerance" value="false"/>
+        </section>
+      </section>
+      <section name="f_and_c">
+        <param name="charge" value=":"/>
+        <param name="size" value=":"/>
+        <param name="remove_meta" value=""/>
+      </section>
+      <section name="id">
+        <param name="remove_clashes" value="false"/>
+        <param name="keep_best_score_id" value="false"/>
+        <param name="sequences_whitelist" value=""/>
+        <param name="sequence_comparison_method" value="substring"/>
+        <param name="accessions_whitelist" value=""/>
+        <param name="remove_annotated_features" value="false"/>
+        <param name="remove_unannotated_features" value="false"/>
+        <param name="remove_unassigned_ids" value="false"/>
+        <param name="rt" value="0.1"/>
+        <param name="mz" value="0.001"/>
+        <param name="blacklist_imperfect" value="false"/>
+      </section>
+      <section name="algorithm">
+        <section name="SignalToNoise">
+          <param name="max_intensity" value="-1"/>
+          <param name="auto_max_stdev_factor" value="3.0"/>
+          <param name="auto_max_percentile" value="95"/>
+          <param name="auto_mode" value="0"/>
+          <param name="win_len" value="200.0"/>
+          <param name="bin_count" value="30"/>
+          <param name="min_required_elements" value="10"/>
+          <param name="noise_for_empty_window" value="1e+20"/>
+          <param name="write_log_messages" value="true"/>
+        </section>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FileFilter_10_input.mzML"/>
+      <output name="out" file="FileFilter_10_output.mzML" compare="sim_size" delta="5700" ftype="mzml"/>
+      <param name="out_type" value="mzML"/>
+      <param name="rt" value=":"/>
+      <param name="mz" value=":"/>
+      <param name="int" value=":"/>
+      <param name="sort" value="false"/>
+      <section name="peak_options">
+        <param name="sn" value="0.0"/>
+        <param name="rm_pc_charge" value=""/>
+        <param name="pc_mz_range" value=":"/>
+        <param name="pc_mz_list" value=""/>
+        <param name="level" value="1 2 3"/>
+        <param name="sort_peaks" value="false"/>
+        <param name="no_chromatograms" value="false"/>
+        <param name="remove_chromatograms" value="false"/>
+        <param name="remove_empty" value="false"/>
+        <param name="mz_precision" value="64"/>
+        <param name="int_precision" value="32"/>
+        <param name="indexed_file" value="true"/>
+        <param name="zlib_compression" value="false"/>
+        <section name="numpress">
+          <param name="masstime" value="none"/>
+          <param name="lossy_mass_accuracy" value="-1.0"/>
+          <param name="intensity" value="none"/>
+          <param name="float_da" value="none"/>
+        </section>
+      </section>
+      <section name="spectra">
+        <param name="remove_zoom" value="false"/>
+        <param name="remove_mode" value=""/>
+        <param name="remove_activation" value="Collision-induced dissociation"/>
+        <param name="remove_collision_energy" value=":"/>
+        <param name="remove_isolation_window_width" value=":"/>
+        <param name="select_zoom" value="false"/>
+        <param name="select_mode" value=""/>
+        <param name="select_activation" value=""/>
+        <param name="select_collision_energy" value=":"/>
+        <param name="select_isolation_window_width" value=":"/>
+        <param name="select_polarity" value=""/>
+        <section name="blackorwhitelist">
+          <param name="similarity_threshold" value="-1.0"/>
+          <param name="rt" value="0.01"/>
+          <param name="mz" value="0.01"/>
+          <param name="use_ppm_tolerance" value="false"/>
+          <param name="blacklist" value="true"/>
+        </section>
+      </section>
+      <section name="feature">
+        <param name="q" value=":"/>
+      </section>
+      <section name="consensus">
+        <param name="map" value=""/>
+        <param name="map_and" value="false"/>
+        <section name="blackorwhitelist">
+          <param name="blacklist" value="true"/>
+          <param name="maps" value=""/>
+          <param name="rt" value="60.0"/>
+          <param name="mz" value="0.01"/>
+          <param name="use_ppm_tolerance" value="false"/>
+        </section>
+      </section>
+      <section name="f_and_c">
+        <param name="charge" value=":"/>
+        <param name="size" value=":"/>
+        <param name="remove_meta" value=""/>
+      </section>
+      <section name="id">
+        <param name="remove_clashes" value="false"/>
+        <param name="keep_best_score_id" value="false"/>
+        <param name="sequences_whitelist" value=""/>
+        <param name="sequence_comparison_method" value="substring"/>
+        <param name="accessions_whitelist" value=""/>
+        <param name="remove_annotated_features" value="false"/>
+        <param name="remove_unannotated_features" value="false"/>
+        <param name="remove_unassigned_ids" value="false"/>
+        <param name="rt" value="0.1"/>
+        <param name="mz" value="0.001"/>
+        <param name="blacklist_imperfect" value="false"/>
+      </section>
+      <section name="algorithm">
+        <section name="SignalToNoise">
+          <param name="max_intensity" value="-1"/>
+          <param name="auto_max_stdev_factor" value="3.0"/>
+          <param name="auto_max_percentile" value="95"/>
+          <param name="auto_mode" value="0"/>
+          <param name="win_len" value="200.0"/>
+          <param name="bin_count" value="30"/>
+          <param name="min_required_elements" value="10"/>
+          <param name="noise_for_empty_window" value="1e+20"/>
+          <param name="write_log_messages" value="true"/>
+        </section>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FileFilter_11_input.mzML"/>
+      <output name="out" file="FileFilter_11_output.mzML" compare="sim_size" delta="5700" ftype="mzml"/>
+      <param name="out_type" value="mzML"/>
+      <param name="rt" value=":"/>
+      <param name="mz" value=":"/>
+      <param name="int" value=":"/>
+      <param name="sort" value="false"/>
+      <section name="peak_options">
+        <param name="sn" value="0.0"/>
+        <param name="rm_pc_charge" value=""/>
+        <param name="pc_mz_range" value=":"/>
+        <param name="pc_mz_list" value=""/>
+        <param name="level" value="1 2 3"/>
+        <param name="sort_peaks" value="false"/>
+        <param name="no_chromatograms" value="false"/>
+        <param name="remove_chromatograms" value="false"/>
+        <param name="remove_empty" value="false"/>
+        <param name="mz_precision" value="64"/>
+        <param name="int_precision" value="32"/>
+        <param name="indexed_file" value="true"/>
+        <param name="zlib_compression" value="false"/>
+        <section name="numpress">
+          <param name="masstime" value="none"/>
+          <param name="lossy_mass_accuracy" value="-1.0"/>
+          <param name="intensity" value="none"/>
+          <param name="float_da" value="none"/>
+        </section>
+      </section>
+      <section name="spectra">
+        <param name="remove_zoom" value="false"/>
+        <param name="remove_mode" value=""/>
+        <param name="remove_activation" value="Plasma desorption"/>
+        <param name="remove_collision_energy" value=":"/>
+        <param name="remove_isolation_window_width" value=":"/>
+        <param name="select_zoom" value="false"/>
+        <param name="select_mode" value=""/>
+        <param name="select_activation" value=""/>
+        <param name="select_collision_energy" value=":"/>
+        <param name="select_isolation_window_width" value=":"/>
+        <param name="select_polarity" value=""/>
+        <section name="blackorwhitelist">
+          <param name="similarity_threshold" value="-1.0"/>
+          <param name="rt" value="0.01"/>
+          <param name="mz" value="0.01"/>
+          <param name="use_ppm_tolerance" value="false"/>
+          <param name="blacklist" value="true"/>
+        </section>
+      </section>
+      <section name="feature">
+        <param name="q" value=":"/>
+      </section>
+      <section name="consensus">
+        <param name="map" value=""/>
+        <param name="map_and" value="false"/>
+        <section name="blackorwhitelist">
+          <param name="blacklist" value="true"/>
+          <param name="maps" value=""/>
+          <param name="rt" value="60.0"/>
+          <param name="mz" value="0.01"/>
+          <param name="use_ppm_tolerance" value="false"/>
+        </section>
+      </section>
+      <section name="f_and_c">
+        <param name="charge" value=":"/>
+        <param name="size" value=":"/>
+        <param name="remove_meta" value=""/>
+      </section>
+      <section name="id">
+        <param name="remove_clashes" value="false"/>
+        <param name="keep_best_score_id" value="false"/>
+        <param name="sequences_whitelist" value=""/>
+        <param name="sequence_comparison_method" value="substring"/>
+        <param name="accessions_whitelist" value=""/>
+        <param name="remove_annotated_features" value="false"/>
+        <param name="remove_unannotated_features" value="false"/>
+        <param name="remove_unassigned_ids" value="false"/>
+        <param name="rt" value="0.1"/>
+        <param name="mz" value="0.001"/>
+        <param name="blacklist_imperfect" value="false"/>
+      </section>
+      <section name="algorithm">
+        <section name="SignalToNoise">
+          <param name="max_intensity" value="-1"/>
+          <param name="auto_max_stdev_factor" value="3.0"/>
+          <param name="auto_max_percentile" value="95"/>
+          <param name="auto_mode" value="0"/>
+          <param name="win_len" value="200.0"/>
+          <param name="bin_count" value="30"/>
+          <param name="min_required_elements" value="10"/>
+          <param name="noise_for_empty_window" value="1e+20"/>
+          <param name="write_log_messages" value="true"/>
+        </section>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FileFilter_12_input.mzML"/>
+      <output name="out" file="FileFilter_12_output.mzML" compare="sim_size" delta="5700" ftype="mzml"/>
+      <param name="out_type" value="mzML"/>
+      <param name="rt" value=":"/>
+      <param name="mz" value=":"/>
+      <param name="int" value=":"/>
+      <param name="sort" value="false"/>
+      <section name="peak_options">
+        <param name="sn" value="0.0"/>
+        <param name="rm_pc_charge" value=""/>
+        <param name="pc_mz_range" value=":"/>
+        <param name="pc_mz_list" value=""/>
+        <param name="level" value="1 2 3"/>
+        <param name="sort_peaks" value="false"/>
+        <param name="no_chromatograms" value="false"/>
+        <param name="remove_chromatograms" value="true"/>
+        <param name="remove_empty" value="false"/>
+        <param name="mz_precision" value="64"/>
+        <param name="int_precision" value="32"/>
+        <param name="indexed_file" value="true"/>
+        <param name="zlib_compression" value="false"/>
+        <section name="numpress">
+          <param name="masstime" value="none"/>
+          <param name="lossy_mass_accuracy" value="-1.0"/>
+          <param name="intensity" value="none"/>
+          <param name="float_da" value="none"/>
+        </section>
+      </section>
+      <section name="spectra">
+        <param name="remove_zoom" value="false"/>
+        <param name="remove_mode" value=""/>
+        <param name="remove_activation" value=""/>
+        <param name="remove_collision_energy" value=":"/>
+        <param name="remove_isolation_window_width" value=":"/>
+        <param name="select_zoom" value="false"/>
+        <param name="select_mode" value=""/>
+        <param name="select_activation" value=""/>
+        <param name="select_collision_energy" value=":"/>
+        <param name="select_isolation_window_width" value=":"/>
+        <param name="select_polarity" value=""/>
+        <section name="blackorwhitelist">
+          <param name="similarity_threshold" value="-1.0"/>
+          <param name="rt" value="0.01"/>
+          <param name="mz" value="0.01"/>
+          <param name="use_ppm_tolerance" value="false"/>
+          <param name="blacklist" value="true"/>
+        </section>
+      </section>
+      <section name="feature">
+        <param name="q" value=":"/>
+      </section>
+      <section name="consensus">
+        <param name="map" value=""/>
+        <param name="map_and" value="false"/>
+        <section name="blackorwhitelist">
+          <param name="blacklist" value="true"/>
+          <param name="maps" value=""/>
+          <param name="rt" value="60.0"/>
+          <param name="mz" value="0.01"/>
+          <param name="use_ppm_tolerance" value="false"/>
+        </section>
+      </section>
+      <section name="f_and_c">
+        <param name="charge" value=":"/>
+        <param name="size" value=":"/>
+        <param name="remove_meta" value=""/>
+      </section>
+      <section name="id">
+        <param name="remove_clashes" value="false"/>
+        <param name="keep_best_score_id" value="false"/>
+        <param name="sequences_whitelist" value=""/>
+        <param name="sequence_comparison_method" value="substring"/>
+        <param name="accessions_whitelist" value=""/>
+        <param name="remove_annotated_features" value="false"/>
+        <param name="remove_unannotated_features" value="false"/>
+        <param name="remove_unassigned_ids" value="false"/>
+        <param name="rt" value="0.1"/>
+        <param name="mz" value="0.001"/>
+        <param name="blacklist_imperfect" value="false"/>
+      </section>
+      <section name="algorithm">
+        <section name="SignalToNoise">
+          <param name="max_intensity" value="-1"/>
+          <param name="auto_max_stdev_factor" value="3.0"/>
+          <param name="auto_max_percentile" value="95"/>
+          <param name="auto_mode" value="0"/>
+          <param name="win_len" value="200.0"/>
+          <param name="bin_count" value="30"/>
+          <param name="min_required_elements" value="10"/>
+          <param name="noise_for_empty_window" value="1e+20"/>
+          <param name="write_log_messages" value="true"/>
+        </section>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <test expect_num_outputs="2">
+      <conditional name="adv_opts_cond">
+        <param name="adv_opts_selector" value="advanced"/>
+        <param name="force" value="false"/>
+        <param name="test" value="true"/>
+      </conditional>
+      <param name="in" value="FileFilter_13_input.consensusXML"/>
+      <output name="out" file="FileFilter_13_output.featureXML" compare="sim_size" delta="5700" ftype="featurexml"/>
+      <param name="out_type" value="featureXML"/>
+      <param name="rt" value=":"/>
+      <param name="mz" value=":"/>
+      <param name="int" value=":"/>
+      <param name="sort" value="false"/>
+      <section name="peak_options">
+        <param name="sn" value="0.0"/>
+        <param name="rm_pc_charge" value=""/>
+        <param name="pc_mz_range" value=":"/>
+        <param name="pc_mz_list" value=""/>
+        <param name="level" value="1 2 3"/>
+        <param name="sort_peaks" value="false"/>
+        <param name="no_chromatograms" value="false"/>
+        <param name="remove_chromatograms" value="false"/>
+        <param name="remove_empty" value="false"/>
+        <param name="mz_precision" value="64"/>
+        <param name="int_precision" value="32"/>
+        <param name="indexed_file" value="true"/>
+        <param name="zlib_compression" value="false"/>
+        <section name="numpress">
+          <param name="masstime" value="none"/>
+          <param name="lossy_mass_accuracy" value="-1.0"/>
+          <param name="intensity" value="none"/>
+          <param name="float_da" value="none"/>
+        </section>
+      </section>
+      <section name="spectra">
+        <param name="remove_zoom" value="false"/>
+        <param name="remove_mode" value=""/>
+        <param name="remove_activation" value=""/>
+        <param name="remove_collision_energy" value=":"/>
+        <param name="remove_isolation_window_width" value=":"/>
+        <param name="select_zoom" value="false"/>
+        <param name="select_mode" value=""/>
+        <param name="select_activation" value=""/>
+        <param name="select_collision_energy" value=":"/>
+        <param name="select_isolation_window_width" value=":"/>
+        <param name="select_polarity" value=""/>
+        <section name="blackorwhitelist">
+          <param name="similarity_threshold" value="-1.0"/>
+          <param name="rt" value="0.01"/>
+          <param name="mz" value="0.01"/>
+          <param name="use_ppm_tolerance" value="false"/>
+          <param name="blacklist" value="true"/>
+        </section>
+      </section>
+      <section name="feature">
+        <param name="q" value=":"/>
+      </section>
+      <section name="consensus">
+        <param name="map" value="2"/>
+        <param name="map_and" value="false"/>
+        <section name="blackorwhitelist">
+          <param name="blacklist" value="true"/>
+          <param name="maps" value=""/>
+          <param name="rt" value="60.0"/>
+          <param name="mz" value="0.01"/>
+          <param name="use_ppm_tolerance" value="false"/>
+        </section>
+      </section>
+      <section name="f_and_c">
+        <param name="charge" value=":"/>
+        <param name="size" value=":"/>
+        <param name="remove_meta" value=""/>
+      </section>
+      <section name="id">
+        <param name="remove_clashes" value="false"/>
+        <param name="keep_best_score_id" value="false"/>
+        <param name="sequences_whitelist" value=""/>
+        <param name="sequence_comparison_method" value="substring"/>
+        <param name="accessions_whitelist" value=""/>
+        <param name="remove_annotated_features" value="false"/>
+        <param name="remove_unannotated_features" value="false"/>
+        <param name="remove_unassigned_ids" value="false"/>
+        <param name="rt" value="0.1"/>
+        <param name="mz" value="0.001"/>
+        <param name="blacklist_imperfect" value="false"/>
+      </section>
+      <section name="algorithm">
+        <section name="SignalToNoise">
+          <param name="max_intensity" value="-1"/>
+          <param name="auto_max_stdev_factor" value="3.0"/>
+          <param name="auto_max_percentile" value="95"/>
+          <pa