diff FileFilter.xml @ 11:acf2b5b25c75 draft

"planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/openms commit 020906fb54bde7fc143c356f41975c378a741315"
author galaxyp
date Wed, 09 Sep 2020 12:50:02 +0000
parents 348aec6301b1
children c8c4aa72a49d
line wrap: on
line diff
--- a/FileFilter.xml	Fri May 17 09:18:56 2019 -0400
+++ b/FileFilter.xml	Wed Sep 09 12:50:02 2020 +0000
@@ -1,659 +1,346 @@
 <?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: [File Handling]-->
-<tool id="FileFilter" name="FileFilter" version="2.3.0">
+<tool id="FileFilter" name="FileFilter" version="@TOOL_VERSION@+galaxy@GALAXY_VERSION@" profile="20.05">
   <description>Extracts or manipulates portions of data from peak, feature or consensus-feature files.</description>
   <macros>
     <token name="@EXECUTABLE@">FileFilter</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[FileFilter
+  <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_out_type:
-  -out_type
-  #if " " in str($param_out_type):
-    "$param_out_type"
-  #else
-    $param_out_type
-  #end if
-#end if
-#if $param_rt:
-  -rt     "$param_rt"
-#end if
-#if $param_mz:
-  -mz     "$param_mz"
-#end if
-#if $param_int:
-  -int     "$param_int"
+## Preprocessing
+mkdir in &&
+ln -s '$in' 'in/${re.sub("[^\w\-_]", "_", $in.element_identifier)}.$gxy2omsext($in.ext)' &&
+mkdir out &&
+#if $spectra.blackorwhitelist.file:
+  mkdir spectra.blackorwhitelist.file &&
+  ln -s '$spectra.blackorwhitelist.file' 'spectra.blackorwhitelist.file/${re.sub("[^\w\-_]", "_", $spectra.blackorwhitelist.file.element_identifier)}.$gxy2omsext($spectra.blackorwhitelist.file.ext)' &&
 #end if
-#if $param_sort:
-  -sort
-#end if
-#if $param_peak_options_sn:
-  -peak_options:sn $param_peak_options_sn
+#if $consensus.blackorwhitelist.file:
+  mkdir consensus.blackorwhitelist.file &&
+  ln -s '$consensus.blackorwhitelist.file' 'consensus.blackorwhitelist.file/${re.sub("[^\w\-_]", "_", $consensus.blackorwhitelist.file.element_identifier)}.$gxy2omsext($consensus.blackorwhitelist.file.ext)' &&
 #end if
-
-#if $rep_param_peak_options_rm_pc_charge:
--peak_options:rm_pc_charge
-  #for token in $rep_param_peak_options_rm_pc_charge:
-    #if " " in str(token):
-      "$token.param_peak_options_rm_pc_charge"
-    #else
-      $token.param_peak_options_rm_pc_charge
-    #end if
-  #end for
-#end if
-#if $param_peak_options_pc_mz_range:
-  -peak_options:pc_mz_range     "$param_peak_options_pc_mz_range"
-#end if
-
-#if $rep_param_peak_options_pc_mz_list:
--peak_options:pc_mz_list
-  #for token in $rep_param_peak_options_pc_mz_list:
-    #if " " in str(token):
-      "$token.param_peak_options_pc_mz_list"
-    #else
-      $token.param_peak_options_pc_mz_list
-    #end if
-  #end for
+#if $id.blacklist:
+  mkdir id.blacklist &&
+  ln -s '$id.blacklist' 'id.blacklist/${re.sub("[^\w\-_]", "_", $id.blacklist.element_identifier)}.$gxy2omsext($id.blacklist.ext)' &&
 #end if
 
-#if $rep_param_peak_options_level:
--peak_options:level
-  #for token in $rep_param_peak_options_level:
-    #if " " in str(token):
-      "$token.param_peak_options_level"
-    #else
-      $token.param_peak_options_level
-    #end if
-  #end for
-#end if
-#if $param_peak_options_sort_peaks:
-  -peak_options:sort_peaks
-#end if
-#if $param_peak_options_no_chromatograms:
-  -peak_options:no_chromatograms
-#end if
-#if $param_peak_options_remove_chromatograms:
-  -peak_options:remove_chromatograms
-#end if
-#if $param_peak_options_mz_precision:
-  -peak_options:mz_precision
-  #if " " in str($param_peak_options_mz_precision):
-    "$param_peak_options_mz_precision"
-  #else
-    $param_peak_options_mz_precision
-  #end if
-#end if
-#if $param_peak_options_int_precision:
-  -peak_options:int_precision
-  #if " " in str($param_peak_options_int_precision):
-    "$param_peak_options_int_precision"
-  #else
-    $param_peak_options_int_precision
-  #end if
-#end if
-#if $param_peak_options_indexed_file:
-  -peak_options:indexed_file
-#end if
-#if $param_peak_options_zlib_compression:
-  -peak_options:zlib_compression
-#end if
-#if $param_peak_options_numpress_masstime:
-  -peak_options:numpress:masstime
-  #if " " in str($param_peak_options_numpress_masstime):
-    "$param_peak_options_numpress_masstime"
-  #else
-    $param_peak_options_numpress_masstime
-  #end if
-#end if
-#if $param_peak_options_numpress_masstime_error:
-  -peak_options:numpress:masstime_error $param_peak_options_numpress_masstime_error
-#end if
-#if $param_peak_options_numpress_intensity:
-  -peak_options:numpress:intensity
-  #if " " in str($param_peak_options_numpress_intensity):
-    "$param_peak_options_numpress_intensity"
-  #else
-    $param_peak_options_numpress_intensity
-  #end if
-#end if
-#if $param_peak_options_numpress_intensity_error:
-  -peak_options:numpress:intensity_error $param_peak_options_numpress_intensity_error
-#end if
-#if $param_spectra_remove_zoom:
-  -spectra:remove_zoom
-#end if
-#if $param_spectra_remove_mode:
-  -spectra:remove_mode
-  #if " " in str($param_spectra_remove_mode):
-    "$param_spectra_remove_mode"
-  #else
-    $param_spectra_remove_mode
-  #end if
-#end if
-#if $param_spectra_remove_activation:
-  -spectra:remove_activation
-  #if " " in str($param_spectra_remove_activation):
-    "$param_spectra_remove_activation"
-  #else
-    $param_spectra_remove_activation
-  #end if
-#end if
-#if $param_spectra_remove_collision_energy:
-  -spectra:remove_collision_energy     "$param_spectra_remove_collision_energy"
-#end if
-#if $param_spectra_remove_isolation_window_width:
-  -spectra:remove_isolation_window_width     "$param_spectra_remove_isolation_window_width"
-#end if
-#if $param_spectra_select_zoom:
-  -spectra:select_zoom
-#end if
-#if $param_spectra_select_mode:
-  -spectra:select_mode
-  #if " " in str($param_spectra_select_mode):
-    "$param_spectra_select_mode"
-  #else
-    $param_spectra_select_mode
-  #end if
+## 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.${out_type}'
+#if $spectra.blackorwhitelist.file:
+  -spectra:blackorwhitelist:file
+  'spectra.blackorwhitelist.file/${re.sub("[^\w\-_]", "_", $spectra.blackorwhitelist.file.element_identifier)}.$gxy2omsext($spectra.blackorwhitelist.file.ext)'
 #end if
-#if $param_spectra_select_activation:
-  -spectra:select_activation
-  #if " " in str($param_spectra_select_activation):
-    "$param_spectra_select_activation"
-  #else
-    $param_spectra_select_activation
-  #end if
-#end if
-#if $param_spectra_select_collision_energy:
-  -spectra:select_collision_energy     "$param_spectra_select_collision_energy"
-#end if
-#if $param_spectra_select_isolation_window_width:
-  -spectra:select_isolation_window_width     "$param_spectra_select_isolation_window_width"
-#end if
-#if $param_spectra_select_polarity:
-  -spectra:select_polarity
-  #if " " in str($param_spectra_select_polarity):
-    "$param_spectra_select_polarity"
-  #else
-    $param_spectra_select_polarity
-  #end if
-#end if
-#if $param_feature_q:
-  -feature:q     "$param_feature_q"
-#end if
-
-#if $rep_param_consensus_map:
--consensus:map
-  #for token in $rep_param_consensus_map:
-    #if " " in str(token):
-      "$token.param_consensus_map"
-    #else
-      $token.param_consensus_map
-    #end if
-  #end for
-#end if
-#if $param_consensus_map_and:
-  -consensus:map_and
-#end if
-#if $param_consensus_blackorwhitelist_blacklist:
-  -consensus:blackorwhitelist:blacklist
-  #if " " in str($param_consensus_blackorwhitelist_blacklist):
-    "$param_consensus_blackorwhitelist_blacklist"
-  #else
-    $param_consensus_blackorwhitelist_blacklist
-  #end if
-#end if
-#if $param_consensus_blackorwhitelist_file:
-  -consensus:blackorwhitelist:file $param_consensus_blackorwhitelist_file
+#if $consensus.blackorwhitelist.file:
+  -consensus:blackorwhitelist:file
+  'consensus.blackorwhitelist.file/${re.sub("[^\w\-_]", "_", $consensus.blackorwhitelist.file.element_identifier)}.$gxy2omsext($consensus.blackorwhitelist.file.ext)'
 #end if
-
-#if $rep_param_consensus_blackorwhitelist_maps:
--consensus:blackorwhitelist:maps
-  #for token in $rep_param_consensus_blackorwhitelist_maps:
-    #if " " in str(token):
-      "$token.param_consensus_blackorwhitelist_maps"
-    #else
-      $token.param_consensus_blackorwhitelist_maps
-    #end if
-  #end for
-#end if
-#if $param_consensus_blackorwhitelist_rt:
-  -consensus:blackorwhitelist:rt $param_consensus_blackorwhitelist_rt
-#end if
-#if $param_consensus_blackorwhitelist_mz:
-  -consensus:blackorwhitelist:mz $param_consensus_blackorwhitelist_mz
-#end if
-#if $param_consensus_blackorwhitelist_use_ppm_tolerance:
-  -consensus:blackorwhitelist:use_ppm_tolerance
-#end if
-#if $param_f_and_c_charge:
-  -f_and_c:charge     "$param_f_and_c_charge"
-#end if
-#if $param_f_and_c_size:
-  -f_and_c:size     "$param_f_and_c_size"
-#end if
-
-#if $rep_param_f_and_c_remove_meta:
--f_and_c:remove_meta
-  #for token in $rep_param_f_and_c_remove_meta:
-    #if " " in str(token):
-      "$token.param_f_and_c_remove_meta"
-    #else
-      $token.param_f_and_c_remove_meta
-    #end if
-  #end for
-#end if
-#if $param_id_keep_best_score_id:
-  -id:keep_best_score_id
-#end if
-
-#if $rep_param_id_sequences_whitelist:
--id:sequences_whitelist
-  #for token in $rep_param_id_sequences_whitelist:
-    #if " " in str(token):
-      "$token.param_id_sequences_whitelist"
-    #else
-      $token.param_id_sequences_whitelist
-    #end if
-  #end for
+#if $id.blacklist:
+  -id:blacklist
+  'id.blacklist/${re.sub("[^\w\-_]", "_", $id.blacklist.element_identifier)}.$gxy2omsext($id.blacklist.ext)'
 #end if
 
-#if $rep_param_id_accessions_whitelist:
--id:accessions_whitelist
-  #for token in $rep_param_id_accessions_whitelist:
-    #if " " in str(token):
-      "$token.param_id_accessions_whitelist"
-    #else
-      $token.param_id_accessions_whitelist
-    #end if
-  #end for
-#end if
-#if $param_id_remove_annotated_features:
-  -id:remove_annotated_features
-#end if
-#if $param_id_remove_unannotated_features:
-  -id:remove_unannotated_features
-#end if
-#if $param_id_remove_unassigned_ids:
-  -id:remove_unassigned_ids
-#end if
-#if $param_id_blacklist:
-  -id:blacklist $param_id_blacklist
-#end if
-#if $param_id_rt:
-  -id:rt $param_id_rt
-#end if
-#if $param_id_mz:
-  -id:mz $param_id_mz
-#end if
-#if $param_id_blacklist_imperfect:
-  -id:blacklist_imperfect
-#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_force:
-  -force
-#end if
-    #if $adv_opts.param_id_remove_clashes:
-  -id:remove_clashes
-#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.${out_type}' '$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,featurexml,consensusxml" optional="False" label="Input file" help="(-in) "/>
-    <param name="param_out_type" display="radio" type="select" optional="True" label="Output file type -- default: determined from file extension or content" help="(-out_type) ">
-      <option value="mzML">mzML</option>
-      <option value="featureXML">featureXML</option>
-      <option value="consensusXML">consensusXML</option>
-    </param>
-    <param name="param_rt" type="text" size="30" value=":" label="Retention time range to extract" help="(-rt) ">
-      <sanitizer>
-        <valid initial="string.printable">
-          <remove value="'"/>
-          <remove value="&quot;"/>
-        </valid>
-      </sanitizer>
+    <param name="in" argument="-in" type="data" format="consensusxml,featurexml,mzml" optional="false" label="Input file" help=" select consensusxml,featurexml,mzml data sets(s)"/>
+    <param name="out_type" argument="-out_type" display="radio" type="select" optional="false" label="Output file type -- default: determined from file extension or content" help="">
+      <option value="consensusXML">consensusxml</option>
+      <option value="featureXML">featurexml</option>
+      <option value="mzML">mzml</option>
+      <expand macro="list_string_san"/>
     </param>
-    <param name="param_mz" type="text" size="30" value=":" label="m/z range to extract (applies to ALL ms levels!)" help="(-mz) ">
-      <sanitizer>
-        <valid initial="string.printable">
-          <remove value="'"/>
-          <remove value="&quot;"/>
-        </valid>
-      </sanitizer>
-    </param>
-    <param name="param_int" type="text" size="30" value=":" label="Intensity range to extract" help="(-int) ">
-      <sanitizer>
-        <valid initial="string.printable">
-          <remove value="'"/>
-          <remove value="&quot;"/>
-        </valid>
-      </sanitizer>
-    </param>
-    <param name="param_sort" display="radio" type="boolean" truevalue="-sort" falsevalue="" checked="false" optional="True" label="Sorts the output according to RT and m/z" help="(-sort) "/>
-    <param name="param_peak_options_sn" type="float" value="0.0" label="Write peaks with S/N &gt; 'sn' values only" help="(-sn) "/>
-    <repeat name="rep_param_peak_options_rm_pc_charge" min="0" title="param_peak_options_rm_pc_charge">
-      <param name="param_peak_options_rm_pc_charge" type="text" size="30" value="0" label="Remove MS(2) spectra with these precursor charges" help="(-rm_pc_charge) All spectra without precursor are kept!">
-        <sanitizer>
-          <valid initial="string.printable">
-            <remove value="'"/>
-            <remove value="&quot;"/>
-          </valid>
-        </sanitizer>
-      </param>
-    </repeat>
-    <param name="param_peak_options_pc_mz_range" type="text" size="30" value=":" label="MSn (n&gt;=2) precursor filtering according to their m/z value" help="(-pc_mz_range) Do not use this flag in conjunction with 'mz', unless you want to actually remove peaks in spectra (see 'mz'). RT filtering is covered by 'rt' and compatible with this flag">
-      <sanitizer>
-        <valid initial="string.printable">
-          <remove value="'"/>
-          <remove value="&quot;"/>
-        </valid>
-      </sanitizer>
+    <param name="rt" argument="-rt" type="text" optional="true" value=":" label="Retention time range to extract" help="">
+      <expand macro="list_string_san"/>
     </param>
-    <repeat name="rep_param_peak_options_pc_mz_list" min="0" title="param_peak_options_pc_mz_list">
-      <param name="param_peak_options_pc_mz_list" type="text" size="30" value="0" label="List of m/z values" help="(-pc_mz_list) If a precursor window covers ANY of these values, the corresponding MS/MS spectrum will be kept">
-        <sanitizer>
-          <valid initial="string.printable">
-            <remove value="'"/>
-            <remove value="&quot;"/>
-          </valid>
-        </sanitizer>
-      </param>
-    </repeat>
-    <repeat name="rep_param_peak_options_level" min="0" max="1" title="param_peak_options_level">
-      <param name="param_peak_options_level" type="text" size="30" value="1 2 3" label="MS levels to extract" help="(-level) ">
-        <sanitizer>
-          <valid initial="string.printable">
-            <remove value="'"/>
-            <remove value="&quot;"/>
-          </valid>
-        </sanitizer>
-      </param>
-    </repeat>
-    <param name="param_peak_options_sort_peaks" display="radio" type="boolean" truevalue="-peak_options:sort_peaks" falsevalue="" checked="false" optional="True" label="Sorts the peaks according to m/z" help="(-sort_peaks) "/>
-    <param name="param_peak_options_no_chromatograms" display="radio" type="boolean" truevalue="-peak_options:no_chromatograms" falsevalue="" checked="false" optional="True" label="No conversion to space-saving real chromatograms," help="(-no_chromatograms) e.g. from SRM scans"/>
-    <param name="param_peak_options_remove_chromatograms" display="radio" type="boolean" truevalue="-peak_options:remove_chromatograms" falsevalue="" checked="false" optional="True" label="Removes chromatograms stored in a file" help="(-remove_chromatograms) "/>
-    <param name="param_peak_options_mz_precision" display="radio" type="select" optional="False" value="64" label="Store base64 encoded m/z data using 32 or 64 bit precision" help="(-mz_precision) ">
-      <option value="32">32</option>
-      <option value="64" selected="true">64</option>
-    </param>
-    <param name="param_peak_options_int_precision" display="radio" type="select" optional="False" value="32" label="Store base64 encoded intensity data using 32 or 64 bit precision" help="(-int_precision) ">
-      <option value="32" selected="true">32</option>
-      <option value="64">64</option>
+    <param name="mz" argument="-mz" type="text" optional="true" value=":" label="m/z range to extract (applies to ALL ms levels!)" help="">
+      <expand macro="list_string_san"/>
     </param>
-    <param name="param_peak_options_indexed_file" display="radio" type="boolean" truevalue="-peak_options:indexed_file" falsevalue="" checked="false" optional="True" label="Whether to add an index to the file when writing" help="(-indexed_file) "/>
-    <param name="param_peak_options_zlib_compression" display="radio" type="boolean" truevalue="-peak_options:zlib_compression" falsevalue="" checked="false" optional="True" label="Whether to store data with zlib compression (lossless compression)" help="(-zlib_compression) "/>
-    <param name="param_peak_options_numpress_masstime" display="radio" type="select" optional="False" value="none" label="Apply MS Numpress compression algorithms in m/z or rt dimension (recommended: linear)" help="(-masstime) ">
-      <option value="none" selected="true">none</option>
-      <option value="linear">linear</option>
-      <option value="pic">pic</option>
-      <option value="slof">slof</option>
-    </param>
-    <param name="param_peak_options_numpress_masstime_error" type="float" value="0.0001" label="Maximal allowable error in m/z or rt dimension (default 10 ppm at 100 m/z; set to 0.5 for pic or negative to disable check and speed up conversion)" help="(-masstime_error) "/>
-    <param name="param_peak_options_numpress_intensity" display="radio" type="select" optional="False" value="none" label="Apply MS Numpress compression algorithms in intensity dimension (recommended: slof or pic)" help="(-intensity) ">
-      <option value="none" selected="true">none</option>
-      <option value="linear">linear</option>
-      <option value="pic">pic</option>
-      <option value="slof">slof</option>
-    </param>
-    <param name="param_peak_options_numpress_intensity_error" type="float" value="0.0001" label="Maximal allowable error in intensity dimension (set to 0.5 for pic or negative to disable check and speed up conversion)" help="(-intensity_error) "/>
-    <param name="param_spectra_remove_zoom" display="radio" type="boolean" truevalue="-spectra:remove_zoom" falsevalue="" checked="false" optional="True" label="Remove zoom (enhanced resolution) scans" help="(-remove_zoom) "/>
-    <param name="param_spectra_remove_mode" type="select" optional="True" label="Remove scans by scan mode" help="(-remove_mode) ">
-      <option value="Unknown">Unknown</option>
-      <option value="MassSpectrum">MassSpectrum</option>
-      <option value="MS1Spectrum">MS1Spectrum</option>
-      <option value="MSnSpectrum">MSnSpectrum</option>
-      <option value="SelectedIonMonitoring">SelectedIonMonitoring</option>
-      <option value="SelectedReactionMonitoring">SelectedReactionMonitoring</option>
-      <option value="ConsecutiveReactionMonitoring">ConsecutiveReactionMonitoring</option>
-      <option value="ConstantNeutralGain">ConstantNeutralGain</option>
-      <option value="ConstantNeutralLoss">ConstantNeutralLoss</option>
-      <option value="Precursor">Precursor</option>
-      <option value="EnhancedMultiplyCharged">EnhancedMultiplyCharged</option>
-      <option value="TimeDelayedFragmentation">TimeDelayedFragmentation</option>
-      <option value="ElectromagneticRadiation">ElectromagneticRadiation</option>
-      <option value="Emission">Emission</option>
-      <option value="Absorption">Absorption</option>
+    <param name="int" argument="-int" type="text" optional="true" value=":" label="Intensity range to extract" help="">
+      <expand macro="list_string_san"/>
     </param>
-    <param name="param_spectra_remove_activation" type="select" optional="True" label="Remove MSn scans where any of its precursors features a certain activation method" help="(-remove_activation) ">
-      <option value="Collision-induced dissociation">Collision-induced dissociation</option>
-      <option value="Post-source decay">Post-source decay</option>
-      <option value="Plasma desorption">Plasma desorption</option>
-      <option value="Surface-induced dissociation">Surface-induced dissociation</option>
-      <option value="Blackbody infrared radiative dissociation">Blackbody infrared radiative dissociation</option>
-      <option value="Electron capture dissociation">Electron capture dissociation</option>
-      <option value="Infrared multiphoton dissociation">Infrared multiphoton dissociation</option>
-      <option value="Sustained off-resonance irradiation">Sustained off-resonance irradiation</option>
-      <option value="High-energy collision-induced dissociation">High-energy collision-induced dissociation</option>
-      <option value="Low-energy collision-induced dissociation">Low-energy collision-induced dissociation</option>
-      <option value="Photodissociation">Photodissociation</option>
-      <option value="Electron transfer dissociation">Electron transfer dissociation</option>
-      <option value="Pulsed q dissociation">Pulsed q dissociation</option>
-    </param>
-    <param name="param_spectra_remove_collision_energy" type="text" size="30" value=":" label="Remove MSn scans with a collision energy in the given interval" help="(-remove_collision_energy) ">
-      <sanitizer>
-        <valid initial="string.printable">
-          <remove value="'"/>
-          <remove value="&quot;"/>
-        </valid>
-      </sanitizer>
-    </param>
-    <param name="param_spectra_remove_isolation_window_width" type="text" size="30" value=":" label="Remove MSn scans whose isolation window width is in the given interval" help="(-remove_isolation_window_width) ">
-      <sanitizer>
-        <valid initial="string.printable">
-          <remove value="'"/>
-          <remove value="&quot;"/>
-        </valid>
-      </sanitizer>
-    </param>
-    <param name="param_spectra_select_zoom" display="radio" type="boolean" truevalue="-spectra:select_zoom" falsevalue="" checked="false" optional="True" label="Select zoom (enhanced resolution) scans" help="(-select_zoom) "/>
-    <param name="param_spectra_select_mode" type="select" optional="True" label="Selects scans by scan mode" help="(-select_mode) ">
-      <option value="Unknown">Unknown</option>
-      <option value="MassSpectrum">MassSpectrum</option>
-      <option value="MS1Spectrum">MS1Spectrum</option>
-      <option value="MSnSpectrum">MSnSpectrum</option>
-      <option value="SelectedIonMonitoring">SelectedIonMonitoring</option>
-      <option value="SelectedReactionMonitoring">SelectedReactionMonitoring</option>
-      <option value="ConsecutiveReactionMonitoring">ConsecutiveReactionMonitoring</option>
-      <option value="ConstantNeutralGain">ConstantNeutralGain</option>
-      <option value="ConstantNeutralLoss">ConstantNeutralLoss</option>
-      <option value="Precursor">Precursor</option>
-      <option value="EnhancedMultiplyCharged">EnhancedMultiplyCharged</option>
-      <option value="TimeDelayedFragmentation">TimeDelayedFragmentation</option>
-      <option value="ElectromagneticRadiation">ElectromagneticRadiation</option>
-      <option value="Emission">Emission</option>
-      <option value="Absorption">Absorption</option>
-    </param>
-    <param name="param_spectra_select_activation" type="select" optional="True" label="Retain MSn scans where any of its precursors features a certain activation method" help="(-select_activation) ">
-      <option value="Collision-induced dissociation">Collision-induced dissociation</option>
-      <option value="Post-source decay">Post-source decay</option>
-      <option value="Plasma desorption">Plasma desorption</option>
-      <option value="Surface-induced dissociation">Surface-induced dissociation</option>
-      <option value="Blackbody infrared radiative dissociation">Blackbody infrared radiative dissociation</option>
-      <option value="Electron capture dissociation">Electron capture dissociation</option>
-      <option value="Infrared multiphoton dissociation">Infrared multiphoton dissociation</option>
-      <option value="Sustained off-resonance irradiation">Sustained off-resonance irradiation</option>
-      <option value="High-energy collision-induced dissociation">High-energy collision-induced dissociation</option>
-      <option value="Low-energy collision-induced dissociation">Low-energy collision-induced dissociation</option>
-      <option value="Photodissociation">Photodissociation</option>
-      <option value="Electron transfer dissociation">Electron transfer dissociation</option>
-      <option value="Pulsed q dissociation">Pulsed q dissociation</option>
-    </param>
-    <param name="param_spectra_select_collision_energy" type="text" size="30" value=":" label="Select MSn scans with a collision energy in the given interval" help="(-select_collision_energy) ">
-      <sanitizer>
-        <valid initial="string.printable">
-          <remove value="'"/>
-          <remove value="&quot;"/>
-        </valid>
-      </sanitizer>
-    </param>
-    <param name="param_spectra_select_isolation_window_width" type="text" size="30" value=":" label="Select MSn scans whose isolation window width is in the given interval" help="(-select_isolation_window_width) ">
-      <sanitizer>
-        <valid initial="string.printable">
-          <remove value="'"/>
-          <remove value="&quot;"/>
-        </valid>
-      </sanitizer>
-    </param>
-    <param name="param_spectra_select_polarity" display="radio" type="select" optional="True" label="Retain MSn scans with a certain scan polarity" help="(-select_polarity) ">
-      <option value="unknown">unknown</option>
-      <option value="positive">positive</option>
-      <option value="negative">negative</option>
-    </param>
-    <param name="param_feature_q" type="text" size="30" value=":" label="Overall quality range to extract [0:1]" help="(-q) ">
-      <sanitizer>
-        <valid initial="string.printable">
-          <remove value="'"/>
-          <remove value="&quot;"/>
-        </valid>
-      </sanitizer>
+    <param name="sort" argument="-sort" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Sorts the output according to RT and m/z" help=""/>
+    <section name="peak_options" title="Peak data options" help="" expanded="false">
+      <param name="sn" argument="-peak_options:sn" type="float" optional="true" value="0.0" label="Write peaks with S/N &gt; 'sn' values only" help=""/>
+      <param name="rm_pc_charge" argument="-peak_options:rm_pc_charge" type="text" optional="true" value="" label="Remove MS(2) spectra with these precursor charges" help="All spectra without precursor are kept! (space separated list, in order to allow for spaces in list items surround them by single quotes)">
+        <expand macro="list_integer_valsan"/>
+      </param>
+      <param name="pc_mz_range" argument="-peak_options:pc_mz_range" type="text" optional="true" value=":" label="MSn (n&gt;=2) precursor filtering according to their m/z value" help="Do not use this flag in conjunction with 'mz', unless you want to actually remove peaks in spectra (see 'mz'). RT filtering is covered by 'rt' and compatible with this flag">
+        <expand macro="list_string_san"/>
+      </param>
+      <param name="pc_mz_list" argument="-peak_options:pc_mz_list" type="text" optional="true" value="" label="List of m/z values" help="If a precursor window covers ANY of these values, the corresponding MS/MS spectrum will be kept (space separated list, in order to allow for spaces in list items surround them by single quotes)">
+        <expand macro="list_float_valsan"/>
+      </param>
+      <param name="level" argument="-peak_options:level" type="text" optional="true" value="1 2 3" label="MS levels to extract" help=" (space separated list, in order to allow for spaces in list items surround them by single quotes)">
+        <expand macro="list_integer_valsan"/>
+      </param>
+      <param name="sort_peaks" argument="-peak_options:sort_peaks" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Sorts the peaks according to m/z" help=""/>
+      <param name="no_chromatograms" argument="-peak_options:no_chromatograms" type="boolean" truevalue="true" falsevalue="false" checked="false" label="No conversion to space-saving real chromatograms" help="e.g. from SRM scans"/>
+      <param name="remove_chromatograms" argument="-peak_options:remove_chromatograms" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Removes chromatograms stored in a file" help=""/>
+      <param name="remove_empty" argument="-peak_options:remove_empty" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Removes spectra and chromatograms without peaks" help=""/>
+      <param name="mz_precision" argument="-peak_options:mz_precision" display="radio" type="select" optional="false" label="Store base64 encoded m/z data using 32 or 64 bit precision" help="">
+        <option value="32">32</option>
+        <option value="64" selected="true">64</option>
+        <expand macro="list_string_san"/>
+      </param>
+      <param name="int_precision" argument="-peak_options:int_precision" display="radio" type="select" optional="false" label="Store base64 encoded intensity data using 32 or 64 bit precision" help="">
+        <option value="32" selected="true">32</option>
+        <option value="64">64</option>
+        <expand macro="list_string_san"/>
+      </param>
+      <param name="indexed_file" argument="-peak_options:indexed_file" type="boolean" truevalue="true" falsevalue="false" checked="true" label="Whether to add an index to the file when writing" help=""/>
+      <param name="zlib_compression" argument="-peak_options:zlib_compression" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Whether to store data with zlib compression (lossless compression)" help=""/>
+      <section name="numpress" title="Numpress compression for peak data" help="" expanded="false">
+        <param name="masstime" argument="-peak_options:numpress:masstime" display="radio" type="select" optional="false" label="Apply MS Numpress compression algorithms in m/z or rt dimension (recommended: linear)" help="">
+          <option value="none" selected="true">none</option>
+          <option value="linear">linear</option>
+          <option value="pic">pic</option>
+          <option value="slof">slof</option>
+          <expand macro="list_string_san"/>
+        </param>
+        <param name="lossy_mass_accuracy" argument="-peak_options:numpress:lossy_mass_accuracy" type="float" optional="true" value="-1.0" label="Desired (absolute) m/z accuracy for lossy compression" help="(e.g. use 0.0001 for a mass accuracy of 0.2 ppm at 500 m/z, default uses -1.0 for maximal accuracy)"/>
+        <param name="intensity" argument="-peak_options:numpress:intensity" display="radio" type="select" optional="false" label="Apply MS Numpress compression algorithms in intensity dimension (recommended: slof or pic)" help="">
+          <option value="none" selected="true">none</option>
+          <option value="linear">linear</option>
+          <option value="pic">pic</option>
+          <option value="slof">slof</option>
+          <expand macro="list_string_san"/>
+        </param>
+        <param name="float_da" argument="-peak_options:numpress:float_da" display="radio" type="select" optional="false" label="Apply MS Numpress compression algorithms for the float data arrays (recommended: slof or pic)" help="">
+          <option value="none" selected="true">none</option>
+          <option value="linear">linear</option>
+          <option value="pic">pic</option>
+          <option value="slof">slof</option>
+          <expand macro="list_string_san"/>
+        </param>
+      </section>
+    </section>
+    <section name="spectra" title="Remove spectra or select spectra (removing all others) with certain properties" help="" expanded="false">
+      <param name="remove_zoom" argument="-spectra:remove_zoom" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Remove zoom (enhanced resolution) scans" help=""/>
+      <param name="remove_mode" argument="-spectra:remove_mode" type="select" optional="true" label="Remove scans by scan mode" help="">
+        <option value="">default (nothing chosen)</option>
+        <option value="Unknown">Unknown</option>
+        <option value="MassSpectrum">MassSpectrum</option>
+        <option value="MS1Spectrum">MS1Spectrum</option>
+        <option value="MSnSpectrum">MSnSpectrum</option>
+        <option value="SelectedIonMonitoring">SelectedIonMonitoring</option>
+        <option value="SelectedReactionMonitoring">SelectedReactionMonitoring</option>
+        <option value="ConsecutiveReactionMonitoring">ConsecutiveReactionMonitoring</option>
+        <option value="ConstantNeutralGain">ConstantNeutralGain</option>
+        <option value="ConstantNeutralLoss">ConstantNeutralLoss</option>
+        <option value="Precursor">Precursor</option>
+        <option value="EnhancedMultiplyCharged">EnhancedMultiplyCharged</option>
+        <option value="TimeDelayedFragmentation">TimeDelayedFragmentation</option>
+        <option value="ElectromagneticRadiation">ElectromagneticRadiation</option>
+        <option value="Emission">Emission</option>
+        <option value="Absorption">Absorption</option>
+        <expand macro="list_string_san"/>
+      </param>
+      <param name="remove_activation" argument="-spectra:remove_activation" type="select" optional="true" label="Remove MSn scans where any of its precursors features a certain activation method" help="">
+        <option value="">default (nothing chosen)</option>
+        <option value="Collision-induced dissociation">Collision-induced dissociation</option>
+        <option value="Post-source decay">Post-source decay</option>
+        <option value="Plasma desorption">Plasma desorption</option>
+        <option value="Surface-induced dissociation">Surface-induced dissociation</option>
+        <option value="Blackbody infrared radiative dissociation">Blackbody infrared radiative dissociation</option>
+        <option value="Electron capture dissociation">Electron capture dissociation</option>
+        <option value="Infrared multiphoton dissociation">Infrared multiphoton dissociation</option>
+        <option value="Sustained off-resonance irradiation">Sustained off-resonance irradiation</option>
+        <option value="High-energy collision-induced dissociation">High-energy collision-induced dissociation</option>
+        <option value="Low-energy collision-induced dissociation">Low-energy collision-induced dissociation</option>
+        <option value="Photodissociation">Photodissociation</option>
+        <option value="Electron transfer dissociation">Electron transfer dissociation</option>
+        <option value="Pulsed q dissociation">Pulsed q dissociation</option>
+        <expand macro="list_string_san"/>
+      </param>
+      <param name="remove_collision_energy" argument="-spectra:remove_collision_energy" type="text" optional="true" value=":" label="Remove MSn scans with a collision energy in the given interval" help="">
+        <expand macro="list_string_san"/>
+      </param>
+      <param name="remove_isolation_window_width" argument="-spectra:remove_isolation_window_width" type="text" optional="true" value=":" label="Remove MSn scans whose isolation window width is in the given interval" help="">
+        <expand macro="list_string_san"/>
+      </param>
+      <param name="select_zoom" argument="-spectra:select_zoom" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Select zoom (enhanced resolution) scans" help=""/>
+      <param name="select_mode" argument="-spectra:select_mode" type="select" optional="true" label="Selects scans by scan mode." help="">
+        <option value="">default (nothing chosen)</option>
+        <option value="Unknown">Unknown</option>
+        <option value="MassSpectrum">MassSpectrum</option>
+        <option value="MS1Spectrum">MS1Spectrum</option>
+        <option value="MSnSpectrum">MSnSpectrum</option>
+        <option value="SelectedIonMonitoring">SelectedIonMonitoring</option>
+        <option value="SelectedReactionMonitoring">SelectedReactionMonitoring</option>
+        <option value="ConsecutiveReactionMonitoring">ConsecutiveReactionMonitoring</option>
+        <option value="ConstantNeutralGain">ConstantNeutralGain</option>
+        <option value="ConstantNeutralLoss">ConstantNeutralLoss</option>
+        <option value="Precursor">Precursor</option>
+        <option value="EnhancedMultiplyCharged">EnhancedMultiplyCharged</option>
+        <option value="TimeDelayedFragmentation">TimeDelayedFragmentation</option>
+        <option value="ElectromagneticRadiation">ElectromagneticRadiation</option>
+        <option value="Emission">Emission</option>
+        <option value="Absorption">Absorption</option>
+        <expand macro="list_string_san"/>
+      </param>
+      <param name="select_activation" argument="-spectra:select_activation" type="select" optional="true" label="Retain MSn scans where any of its precursors features a certain activation method" help="">
+        <option value="">default (nothing chosen)</option>
+        <option value="Collision-induced dissociation">Collision-induced dissociation</option>
+        <option value="Post-source decay">Post-source decay</option>
+        <option value="Plasma desorption">Plasma desorption</option>
+        <option value="Surface-induced dissociation">Surface-induced dissociation</option>
+        <option value="Blackbody infrared radiative dissociation">Blackbody infrared radiative dissociation</option>
+        <option value="Electron capture dissociation">Electron capture dissociation</option>
+        <option value="Infrared multiphoton dissociation">Infrared multiphoton dissociation</option>
+        <option value="Sustained off-resonance irradiation">Sustained off-resonance irradiation</option>
+        <option value="High-energy collision-induced dissociation">High-energy collision-induced dissociation</option>
+        <option value="Low-energy collision-induced dissociation">Low-energy collision-induced dissociation</option>
+        <option value="Photodissociation">Photodissociation</option>
+        <option value="Electron transfer dissociation">Electron transfer dissociation</option>
+        <option value="Pulsed q dissociation">Pulsed q dissociation</option>
+        <expand macro="list_string_san"/>
+      </param>
+      <param name="select_collision_energy" argument="-spectra:select_collision_energy" type="text" optional="true" value=":" label="Select MSn scans with a collision energy in the given interval" help="">
+        <expand macro="list_string_san"/>
+      </param>
+      <param name="select_isolation_window_width" argument="-spectra:select_isolation_window_width" type="text" optional="true" value=":" label="Select MSn scans whose isolation window width is in the given interval" help="">
+        <expand macro="list_string_san"/>
+      </param>
+      <param name="select_polarity" argument="-spectra:select_polarity" display="radio" type="select" optional="true" label="Retain MSn scans with a certain scan polarity" help="">
+        <option value="">default (nothing chosen)</option>
+        <option value="unknown">unknown</option>
+        <option value="positive">positive</option>
+        <option value="negative">negative</option>
+        <expand macro="list_string_san"/>
+      </param>
+      <section name="blackorwhitelist" title="Black or white listing of of MS2 spectra by spectral similarity" help="" expanded="false">
+        <param name="file" argument="-spectra:blackorwhitelist:file" type="data" format="mzml" optional="true" label="Input file containing MS2 spectra that should be retained or removed from the mzML file" help="Matching tolerances are taken from 'spectra:blackorwhitelist:similarity_threshold|rt|mz' options..  select mzml data sets(s)"/>
+        <param name="similarity_threshold" argument="-spectra:blackorwhitelist:similarity_threshold" type="float" optional="true" min="-1.0" max="1.0" value="-1.0" label="Similarity threshold when matching MS2 spectra" help="(-1 = disabled)"/>
+        <param name="rt" argument="-spectra:blackorwhitelist:rt" type="float" optional="true" value="0.01" label="Retention tolerance [s] when matching precursor positions" help="(-1 = disabled)"/>
+        <param name="mz" argument="-spectra:blackorwhitelist:mz" type="float" optional="true" value="0.01" label="m/z tolerance [Th] when matching precursor positions" help="(-1 = disabled)"/>
+        <param name="use_ppm_tolerance" argument="-spectra:blackorwhitelist:use_ppm_tolerance" type="text" optional="true" value="false" label="If ppm tolerance should be used" help="Otherwise Da are used">
+          <expand macro="list_string_san"/>
+        </param>
+        <param name="blacklist" argument="-spectra:blackorwhitelist:blacklist" type="boolean" truevalue="true" falsevalue="false" checked="true" label="True: remove matched MS2" help="False: retain matched MS2 spectra. Other levels are kept"/>
+      </section>
+    </section>
+    <section name="feature" title="Feature data options" help="" expanded="false">
+      <param name="q" argument="-feature:q" type="text" optional="true" value=":" label="Overall quality range to extract [0:1]" help="">
+        <expand macro="list_string_san"/>
+      </param>
+    </section>
+    <section name="consensus" title="Consensus feature data options" help="" expanded="false">
+      <param name="map" argument="-consensus:map" type="text" optional="true" value="" label="Non-empty list of maps to be extracted from a consensus (indices are 0-based)" help=" (space separated list, in order to allow for spaces in list items surround them by single quotes)">
+        <expand macro="list_integer_valsan"/>
+      </param>
+      <param name="map_and" argument="-consensus:map_and" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Consensus features are kept only if they contain exactly one feature from each map (as given above in 'map')" help=""/>
+      <section name="blackorwhitelist" title="Black or white listing of of MS2 spectra by consensus features" help="" expanded="false">
+        <param name="blacklist" argument="-consensus:blackorwhitelist:blacklist" type="boolean" truevalue="true" falsevalue="false" checked="true" label="True: remove matched MS2" help="False: retain matched MS2 spectra. Other levels are kept"/>
+        <param name="file" argument="-consensus:blackorwhitelist:file" type="data" format="consensusxml" optional="true" label="Input file containing consensus features whose corresponding MS2 spectra should be removed from the mzML file" help="Matching tolerances are taken from 'consensus:blackorwhitelist:rt' and 'consensus:blackorwhitelist:mz' options.. If consensus:blackorwhitelist:maps is specified, only these will be used..  select consensusxml data sets(s)"/>
+        <param name="maps" argument="-consensus:blackorwhitelist:maps" type="text" optional="true" value="" label="Maps used for black/white list filtering" help=" (space separated list, in order to allow for spaces in list items surround them by single quotes)">
+          <expand macro="list_integer_valsan"/>
+        </param>
+        <param name="rt" argument="-consensus:blackorwhitelist:rt" type="float" optional="true" min="0.0" value="60.0" label="Retention tolerance [s] for precursor to consensus feature position" help=""/>
+        <param name="mz" argument="-consensus:blackorwhitelist:mz" type="float" optional="true" min="0.0" value="0.01" label="m/z tolerance [Th] for precursor to consensus feature position" help=""/>
+        <param name="use_ppm_tolerance" argument="-consensus:blackorwhitelist:use_ppm_tolerance" type="boolean" truevalue="true" falsevalue="false" checked="false" label="If ppm tolerance should be used" help="Otherwise Da are used"/>
+      </section>
+    </section>
+    <section name="f_and_c" title="Feature &amp; Consensus data options" help="" expanded="false">
+      <param name="charge" argument="-f_and_c:charge" type="text" optional="true" value=":" label="Charge range to extract" help="">
+        <expand macro="list_string_san"/>
+      </param>
+      <param name="size" argument="-f_and_c:size" type="text" optional="true" value=":" label="Size range to extract" help="">
+        <expand macro="list_string_san"/>
+      </param>
+      <param name="remove_meta" argument="-f_and_c:remove_meta" type="text" optional="true" value="" label="Expects a 3-tuple (=3 entries in the list)" help="i.e. &lt;name&gt; 'lt|eq|gt' &lt;value&gt;; the first is the name of meta value, followed by the comparison operator (equal, less or greater) and the value to compare to. All comparisons are done after converting the given value to the corresponding data value type of the meta value (for lists, this simply compares length, not content!)! (space separated list, in order to allow for spaces in list items surround them by single quotes)">
+        <expand macro="list_string_val"/>
+        <expand macro="list_string_san"/>
+      </param>
+    </section>
+    <section name="id" title="ID options" help="The Priority of the id-flags is: remove_annotated_features / remove_unannotated_features -&gt; remove_clashes -&gt; keep_best_score_id -&gt; sequences_whitelist  / accessions_whitelist" expanded="false">
+      <param name="remove_clashes" argument="-id:remove_clashes" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Remove features with id clashes (different sequences mapped to one feature)" help=""/>
+      <param name="keep_best_score_id" argument="-id:keep_best_score_id" type="boolean" truevalue="true" falsevalue="false" checked="false" label="in case of multiple peptide identifications, keep only the id with best score" help=""/>
+      <param name="sequences_whitelist" argument="-id:sequences_whitelist" type="text" optional="true" value="" label="Keep only features containing whitelisted substrings" help="e.g. features containing LYSNLVER or the modification (Oxidation). To control comparison method used for whitelisting, see 'id:sequence_comparison_method' (space separated list, in order to allow for spaces in list items surround them by single quotes)">
+        <expand macro="list_string_val"/>
+        <expand macro="list_string_san"/>
+      </param>
+      <param name="sequence_comparison_method" argument="-id:sequence_comparison_method" display="radio" type="select" optional="false" label="Comparison method used to determine if a feature is whitelisted" help="">
+        <option value="substring" selected="true">substring</option>
+        <option value="exact">exact</option>
+        <expand macro="list_string_san"/>
+      </param>
+      <param name="accessions_whitelist" argument="-id:accessions_whitelist" type="text" optional="true" value="" label="keep only features with white listed accessions" help="e.g. sp|P02662|CASA1_BOVIN (space separated list, in order to allow for spaces in list items surround them by single quotes)">
+        <expand macro="list_string_val"/>
+        <expand macro="list_string_san"/>
+      </param>
+      <param name="remove_annotated_features" argument="-id:remove_annotated_features" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Remove features with annotations" help=""/>
+      <param name="remove_unannotated_features" argument="-id:remove_unannotated_features" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Remove features without annotations" help=""/>
+      <param name="remove_unassigned_ids" argument="-id:remove_unassigned_ids" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Remove unassigned peptide identifications" help=""/>
+      <param name="blacklist" argument="-id:blacklist" type="data" format="idxml" optional="true" label="Input file containing MS2 identifications whose corresponding MS2 spectra should be removed from the mzML file" help="Matching tolerances are taken from 'id:rt' and 'id:mz' options.. This tool will require all IDs to be matched to an MS2 spectrum, and quit with error otherwise. Use 'id:blacklist_imperfect' to allow for mismatches select idxml data sets(s)"/>
+      <param name="rt" argument="-id:rt" type="float" optional="true" min="0.0" value="0.1" label="Retention tolerance [s] for precursor to id position" help=""/>
+      <param name="mz" argument="-id:mz" type="float" optional="true" min="0.0" value="0.001" label="m/z tolerance [Th] for precursor to id position" help=""/>
+      <param name="blacklist_imperfect" argument="-id:blacklist_imperfect" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Allow for mismatching precursor positions (see 'id:blacklist')" help=""/>
+    </section>
+    <section name="algorithm" title="S/N algorithm section" help="" expanded="false">
+      <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="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>
-    <repeat name="rep_param_consensus_map" min="0" title="param_consensus_map">
-      <param name="param_consensus_map" type="text" size="30" value="0" label="Maps to be extracted from a consensus" help="(-map) ">
-        <sanitizer>
-          <valid initial="string.printable">
-            <remove value="'"/>
-            <remove value="&quot;"/>
-          </valid>
-        </sanitizer>
-      </param>
-    </repeat>
-    <param name="param_consensus_map_and" display="radio" type="boolean" truevalue="-consensus:map_and" falsevalue="" checked="false" optional="True" label="Consensus features are kept only if they contain exactly one feature from each map (as given above in 'map')" help="(-map_and) "/>
-    <param name="param_consensus_blackorwhitelist_blacklist" display="radio" type="select" optional="False" value="true" label="True: remove matched MS2" help="(-blacklist) False: retain matched MS2 spectra. Other levels are kept">
-      <option value="false">false</option>
-      <option value="true" selected="true">true</option>
-    </param>
-    <param name="param_consensus_blackorwhitelist_file" type="data" format="consensusxml" optional="True" label="Input file containing consensus features whose corresponding MS2 spectra should be removed from the mzML file! &lt;br&gt;Matching tolerances are taken from 'consensus:blackorwhitelist:rt' and 'consensus:blackorwhitelist:mz' options" help="(-file) &lt;br&gt;If consensus:blackorwhitelist:maps is specified, only these will be used. &lt;br&gt;"/>
-    <repeat name="rep_param_consensus_blackorwhitelist_maps" min="0" title="param_consensus_blackorwhitelist_maps">
-      <param name="param_consensus_blackorwhitelist_maps" type="text" size="30" value="0" label="Maps used for black/white list filtering" help="(-maps) ">
-        <sanitizer>
-          <valid initial="string.printable">
-            <remove value="'"/>
-            <remove value="&quot;"/>
-          </valid>
-        </sanitizer>
-      </param>
-    </repeat>
-    <param name="param_consensus_blackorwhitelist_rt" type="float" min="0.0" optional="True" value="60.0" label="Retention tolerance [s] for precursor to consensus feature position" help="(-rt) "/>
-    <param name="param_consensus_blackorwhitelist_mz" type="float" min="0.0" optional="True" value="0.01" label="m/z tolerance [Th] for precursor to consensus feature position" help="(-mz) "/>
-    <param name="param_consensus_blackorwhitelist_use_ppm_tolerance" display="radio" type="boolean" truevalue="-consensus:blackorwhitelist:use_ppm_tolerance" falsevalue="" checked="false" optional="True" label="If ppm tolerance should be used" help="(-use_ppm_tolerance) Otherwise Da are used"/>
-    <param name="param_f_and_c_charge" type="text" size="30" value=":" label="Charge range to extract" help="(-charge) ">
-      <sanitizer>
-        <valid initial="string.printable">
-          <remove value="'"/>
-          <remove value="&quot;"/>
-        </valid>
-      </sanitizer>
-    </param>
-    <param name="param_f_and_c_size" type="text" size="30" value=":" label="Size range to extract" help="(-size) ">
-      <sanitizer>
-        <valid initial="string.printable">
-          <remove value="'"/>
-          <remove value="&quot;"/>
-        </valid>
-      </sanitizer>
-    </param>
-    <repeat name="rep_param_f_and_c_remove_meta" min="0" title="param_f_and_c_remove_meta">
-      <param name="param_f_and_c_remove_meta" type="text" size="30" label="Expects a 3-tuple (=3 entries in the list), i.e" help="(-remove_meta) &lt;name&gt; 'lt|eq|gt' &lt;value&gt;; the first is the name of meta value, followed by the comparison operator (equal, less or greater) and the value to compare to. All comparisons are done after converting the given value to the corresponding data value type of the meta value (for lists, this simply compares length, not content!)!">
-        <sanitizer>
-          <valid initial="string.printable">
-            <remove value="'"/>
-            <remove value="&quot;"/>
-          </valid>
-        </sanitizer>
-      </param>
-    </repeat>
-    <param name="param_id_keep_best_score_id" display="radio" type="boolean" truevalue="-id:keep_best_score_id" falsevalue="" checked="false" optional="True" label="in case of multiple peptide identifications, keep only the id with best score" help="(-keep_best_score_id) "/>
-    <repeat name="rep_param_id_sequences_whitelist" min="0" title="param_id_sequences_whitelist">
-      <param name="param_id_sequences_whitelist" type="text" size="30" label="keep only features with white listed sequences," help="(-sequences_whitelist) e.g. LYSNLVER or the modification (Oxidation)">
-        <sanitizer>
-          <valid initial="string.printable">
-            <remove value="'"/>
-            <remove value="&quot;"/>
-          </valid>
-        </sanitizer>
-      </param>
-    </repeat>
-    <repeat name="rep_param_id_accessions_whitelist" min="0" title="param_id_accessions_whitelist">
-      <param name="param_id_accessions_whitelist" type="text" size="30" label="keep only features with white listed accessions," help="(-accessions_whitelist) e.g. sp|P02662|CASA1_BOVIN">
-        <sanitizer>
-          <valid initial="string.printable">
-            <remove value="'"/>
-            <remove value="&quot;"/>
-          </valid>
-        </sanitizer>
-      </param>
-    </repeat>
-    <param name="param_id_remove_annotated_features" display="radio" type="boolean" truevalue="-id:remove_annotated_features" falsevalue="" checked="false" optional="True" label="Remove features with annotations" help="(-remove_annotated_features) "/>
-    <param name="param_id_remove_unannotated_features" display="radio" type="boolean" truevalue="-id:remove_unannotated_features" falsevalue="" checked="false" optional="True" label="Remove features without annotations" help="(-remove_unannotated_features) "/>
-    <param name="param_id_remove_unassigned_ids" display="radio" type="boolean" truevalue="-id:remove_unassigned_ids" falsevalue="" checked="false" optional="True" label="Remove unassigned peptide identifications" help="(-remove_unassigned_ids) "/>
-    <param name="param_id_blacklist" type="data" format="idxml" optional="True" label="Input file containing MS2 identifications whose corresponding MS2 spectra should be removed from the mzML file! &lt;br&gt;Matching tolerances are taken from 'id:rt' and 'id:mz' options" help="(-blacklist) &lt;br&gt;This tool will require all IDs to be matched to an MS2 spectrum, and quit with error otherwise. Use 'id:blacklist_imperfect' to allow for mismatches"/>
-    <param name="param_id_rt" type="float" min="0.0" optional="True" value="0.1" label="Retention tolerance [s] for precursor to id position" help="(-rt) "/>
-    <param name="param_id_mz" type="float" min="0.0" optional="True" value="0.001" label="m/z tolerance [Th] for precursor to id position" help="(-mz) "/>
-    <param name="param_id_blacklist_imperfect" display="radio" type="boolean" truevalue="-id:blacklist_imperfect" falsevalue="" checked="false" optional="True" label="Allow for mismatching precursor positions (see 'id:blacklist')" help="(-blacklist_imperfect) "/>
-    <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_force" display="radio" type="boolean" truevalue="-force" falsevalue="" checked="false" optional="True" label="Overwrite tool specific checks" help="(-force) "/>
-      <param name="param_id_remove_clashes" display="radio" type="boolean" truevalue="-id:remove_clashes" falsevalue="" checked="false" optional="True" label="Remove features with id clashes (different sequences mapped to one feature)" help="(-remove_clashes) "/>
-      <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) "/>
-    </expand>
   </inputs>
   <outputs>
-    <data name="param_out" metadata_source="param_in" format="input"/>
+    <data name="out" label="${tool.name} on ${on_string}: out">
+      <change_format>
+        <when input="out_type" value="consensusXML" format="consensusxml"/>
+        <when input="out_type" value="featureXML" format="featurexml"/>
+        <when input="out_type" value="mzML" format="mzml"/>
+      </change_format>
+    </data>
+    <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>Extracts or manipulates portions of data from peak, feature or consensus-feature files.
+  <tests>
+    <expand macro="autotest_FileFilter"/>
+    <expand macro="manutest_FileFilter"/>
+  </tests>
+  <help><![CDATA[Extracts or manipulates portions of data from peak, feature or consensus-feature files.
 
 
-For more information, visit https://abibuilder.informatik.uni-tuebingen.de/archive/openms/Documentation/release/2.3.0/html/TOPP_FileFilter.html</help>
+For more information, visit http://www.openms.de/documentation/TOPP_FileFilter.html]]></help>
+  <expand macro="references"/>
 </tool>