diff AssayGeneratorMetabo.xml @ 5:83f5e5c1209c draft

planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/openms commit 3d1e5f37fd16524a415f707772eeb7ead848c5e3
author galaxyp
date Thu, 01 Dec 2022 18:57:35 +0000
parents 11ac8ae77fb7
children f3ec820189ca
line wrap: on
line diff
--- a/AssayGeneratorMetabo.xml	Mon Dec 14 16:56:34 2020 +0000
+++ b/AssayGeneratorMetabo.xml	Thu Dec 01 18:57:35 2022 +0000
@@ -1,13 +1,11 @@
 <?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: [Utilities]-->
-<tool id="AssayGeneratorMetabo" name="AssayGeneratorMetabo" version="@TOOL_VERSION@+galaxy1" profile="20.05">
+<tool id="AssayGeneratorMetabo" name="AssayGeneratorMetabo" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="21.05">
   <description>Assay library generation from DDA data (Metabolomics)</description>
   <macros>
     <token name="@EXECUTABLE@">AssayGeneratorMetabo</token>
     <import>macros.xml</import>
-    <import>macros_autotest.xml</import>
-    <import>macros_test.xml</import>
   </macros>
   <expand macro="requirements"/>
   <expand macro="stdio"/>
@@ -16,10 +14,24 @@
 #import re
 
 ## Preprocessing
-mkdir in &&
-${ ' '.join(["ln -s '%s' 'in/%s.%s' &&" % (_, re.sub('[^\w\-_]', '_', _.element_identifier), $gxy2omsext(_.ext)) for _ in $in if _]) }
-mkdir in_id &&
-${ ' '.join(["ln -s '%s' 'in_id/%s.%s' &&" % (_, re.sub('[^\w\-_]', '_', _.element_identifier), $gxy2omsext(_.ext)) for _ in $in_id if _]) }
+#if $sirius_executable:
+  mkdir sirius_executable &&
+  ln -s '$sirius_executable' 'sirius_executable/${re.sub("[^\w\-_]", "_", $sirius_executable.element_identifier)}.$gxy2omsext($sirius_executable.ext)' &&
+#end if
+mkdir in_cond.in &&
+#if $in_cond.in_select == "no"
+mkdir ${' '.join(["'in_cond.in/%s'" % (i) for i, f in enumerate($in_cond.in) if f])} && 
+${' '.join(["ln -s '%s' 'in_cond.in/%s/%s.%s' && " % (f, i, re.sub('[^\w\-_]', '_', f.element_identifier), $gxy2omsext(f.ext)) for i, f in enumerate($in_cond.in) if f])}
+#else
+ln -s '$in_cond.in' 'in_cond.in/${re.sub("[^\w\-_]", "_", $in_cond.in.element_identifier)}.$gxy2omsext($in_cond.in.ext)' &&
+#end if
+mkdir in_id_cond.in_id &&
+#if $in_id_cond.in_id_select == "no"
+mkdir ${' '.join(["'in_id_cond.in_id/%s'" % (i) for i, f in enumerate($in_id_cond.in_id) if f])} && 
+${' '.join(["ln -s '%s' 'in_id_cond.in_id/%s/%s.%s' && " % (f, i, re.sub('[^\w\-_]', '_', f.element_identifier), $gxy2omsext(f.ext)) for i, f in enumerate($in_id_cond.in_id) if f])}
+#else
+ln -s '$in_id_cond.in_id' 'in_id_cond.in_id/${re.sub("[^\w\-_]", "_", $in_id_cond.in_id.element_identifier)}.$gxy2omsext($in_id_cond.in_id.ext)' &&
+#end if
 mkdir out &&
 
 ## Main program call
@@ -28,10 +40,22 @@
 @EXECUTABLE@ -write_ctd ./ &&
 python3 '$__tool_directory__/fill_ctd.py' '@EXECUTABLE@.ctd' '$args_json' '$hardcoded_json' &&
 @EXECUTABLE@ -ini @EXECUTABLE@.ctd
+#if $sirius_executable:
+  -sirius_executable
+  'sirius_executable/${re.sub("[^\w\-_]", "_", $sirius_executable.element_identifier)}.$gxy2omsext($sirius_executable.ext)'
+#end if
 -in
-${' '.join(["'in/%s.%s'"%(re.sub('[^\w\-_]', '_', _.element_identifier), $gxy2omsext(_.ext)) for _ in $in if _])}
+#if $in_cond.in_select == "no"
+${' '.join(["'in_cond.in/%s/%s.%s'"%(i, re.sub('[^\w\-_]', '_', f.element_identifier), $gxy2omsext(f.ext)) for i, f in enumerate($in_cond.in) if f])}
+#else
+'in_cond.in/${re.sub("[^\w\-_]", "_", $in_cond.in.element_identifier)}.$gxy2omsext($in_cond.in.ext)'
+#end if
 -in_id
-${' '.join(["'in_id/%s.%s'"%(re.sub('[^\w\-_]', '_', _.element_identifier), $gxy2omsext(_.ext)) for _ in $in_id if _])}
+#if $in_id_cond.in_id_select == "no"
+${' '.join(["'in_id_cond.in_id/%s/%s.%s'"%(i, re.sub('[^\w\-_]', '_', f.element_identifier), $gxy2omsext(f.ext)) for i, f in enumerate($in_id_cond.in_id) if f])}
+#else
+'in_id_cond.in_id/${re.sub("[^\w\-_]", "_", $in_id_cond.in_id.element_identifier)}.$gxy2omsext($in_id_cond.in_id.ext)'
+#end if
 -out
 'out/output.${out_type}'
 
@@ -42,42 +66,77 @@
 #end if]]></command>
   <configfiles>
     <inputs name="args_json" data_style="paths"/>
-    <configfile name="hardcoded_json"><![CDATA[{"executable": "\$(which sirius)", "out_workspace_directory": "__SIRIUS_WORKSPACE__", "log": "log.txt", "threads": "\${GALAXY_SLOTS:-1}", "no_progress": true, "sirius": {"cores": "\${GALAXY_SLOTS:-1}"}}]]></configfile>
+    <configfile name="hardcoded_json"><![CDATA[{"out_workspace_directory": "__SIRIUS_WORKSPACE__", "log": "log.txt", "threads": "\${GALAXY_SLOTS:-1}", "no_progress": true}]]></configfile>
   </configfiles>
   <inputs>
-    <param name="in" argument="-in" type="data" format="mzml" multiple="true" optional="false" label="MzML input file(s) used for assay library generation" help=" select mzml data sets(s)"/>
-    <param name="in_id" argument="-in_id" type="data" format="featurexml" multiple="true" optional="false" label="FeatureXML input file(s) containing identification information" help="(e.g. AccurateMassSearch) select featurexml data sets(s)"/>
+    <param argument="-sirius_executable" type="data" format="txt" optional="true" label="The Sirius executable" help="Provide a full or relative path, or make sure it can be found in your PATH environment select txt data sets(s)"/>
+    <conditional name="in_cond">
+      <param name="in_select" type="select" label="Run tool in batch mode for -in">
+        <option value="no">No: process all datasets jointly</option>
+        <option value="yes">Yes: process each dataset in an independent job</option>
+      </param>
+      <when value="no">
+        <param argument="-in" type="data" format="mzml" multiple="true" optional="false" label="MzML input file(s) used for assay library generation" help=" select mzml data sets(s)"/>
+      </when>
+      <when value="yes">
+        <param argument="-in" type="data" format="mzml" multiple="false" optional="false" label="MzML input file(s) used for assay library generation" help=" select mzml data sets(s)"/>
+      </when>
+    </conditional>
+    <conditional name="in_id_cond">
+      <param name="in_id_select" type="select" label="Run tool in batch mode for -in_id">
+        <option value="no">No: process all datasets jointly</option>
+        <option value="yes">Yes: process each dataset in an independent job</option>
+      </param>
+      <when value="no">
+        <param argument="-in_id" type="data" format="featurexml" multiple="true" optional="false" label="FeatureXML input file(s) containing identification information" help="(e.g. AccurateMassSearch) select featurexml data sets(s)"/>
+      </when>
+      <when value="yes">
+        <param argument="-in_id" type="data" format="featurexml" multiple="false" optional="false" label="FeatureXML input file(s) containing identification information" help="(e.g. AccurateMassSearch) select featurexml data sets(s)"/>
+      </when>
+    </conditional>
     <param name="out_type" type="select" optional="false" label="File type of output out (Assay library output file)">
       <option value="tsv">tabular (tsv)</option>
       <option value="traML">traml</option>
       <option value="pqp">pqp</option>
     </param>
-    <param name="fragment_annotation" argument="-fragment_annotation" display="radio" type="select" optional="false" label="Fragment annotation method" help="">
-      <option value="none" selected="true">none</option>
-      <option value="sirius">sirius</option>
-      <expand macro="list_string_san"/>
+    <param argument="-fragment_annotation" type="select" optional="true" label="Fragment annotation method" help="">
+      <option value="none">none</option>
+      <option value="sirius" selected="true">sirius</option>
+      <expand macro="list_string_san" name="fragment_annotation"/>
     </param>
-    <param name="method" argument="-method" display="radio" type="select" optional="false" label="Spectrum with the highest precursor intensity or a consensus spectrum ist used for assay library construction (if no fragment annotation is used)" help="">
+    <param argument="-ambiguity_resolution_mz_tolerance" type="float" optional="true" value="10.0" label="Mz tolerance for the resolution of identification ambiguity over multiple files" help=""/>
+    <param argument="-ambiguity_resolution_rt_tolerance" type="float" optional="true" value="10.0" label="RT tolerance in seconds for the resolution of identification ambiguity over multiple files" help=""/>
+    <param argument="-total_occurrence_filter" type="float" optional="true" min="0.0" max="1.0" value="0.1" label="Filter compound based on total occurrence in analysed samples" help=""/>
+    <param argument="-fragment_annotation_score_threshold" type="float" optional="true" min="0.0" max="1.0" value="0.8" label="Filters annotations based on the explained intensity of the peaks in a spectrum" help=""/>
+    <param argument="-decoy_generation" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Decoys will be generated using the fragmentation tree re-rooting approach" help="This option does only work in combination with the fragment annotation via Sirius"/>
+    <param argument="-decoy_generation_method" type="select" optional="true" label="Uses different methods for decoy generation" help="Basis for the method is the fragmentation-tree re-rooting approach ('original'). This approach can be extended by using 'resolve_overlap', which will resolve overlapping fragments of the highest intensity fragments chosen, by adding -CH2 mass to the overlapping fragments. 'Add_shift' will add a -CH2 mass shift to the target fragments and use them as additional decoys if fragmentation-tree re-rooting failed. 'Both' combines the extended methods (resolve_overlap, add_shift)">
+      <option value="original" selected="true">original</option>
+      <option value="resolve_overlap">resolve_overlap</option>
+      <option value="add_shift">add_shift</option>
+      <option value="both">both</option>
+      <expand macro="list_string_san" name="decoy_generation_method"/>
+    </param>
+    <param argument="-method" type="select" optional="true" label="Spectrum with the highest precursor intensity or a consensus spectrum is used for assay library construction (if no fragment annotation is used)" help="">
       <option value="highest_intensity" selected="true">highest_intensity</option>
       <option value="consensus_spectrum">consensus_spectrum</option>
-      <expand macro="list_string_san"/>
+      <expand macro="list_string_san" name="method"/>
     </param>
-    <param name="use_exact_mass" argument="-use_exact_mass" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Use exact mass for fragment annotation" help=""/>
-    <param name="exclude_ms2_precursor" argument="-exclude_ms2_precursor" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Excludes precursor in ms2 from transition list" help=""/>
-    <param name="precursor_mz_distance" argument="-precursor_mz_distance" type="float" optional="true" value="0.0001" label="Max m/z distance of the precursor entries of two spectra to be merged in [Da]" help=""/>
-    <param name="precursor_rt_tolerance" argument="-precursor_rt_tolerance" type="float" optional="true" value="5.0" label="Tolerance window (left and right) for precursor selection [seconds]" help=""/>
-    <param name="use_known_unknowns" argument="-use_known_unknowns" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Use features without identification information" help=""/>
-    <param name="min_transitions" argument="-min_transitions" type="integer" optional="true" value="3" label="Minimal number of transitions" help=""/>
-    <param name="max_transitions" argument="-max_transitions" type="integer" optional="true" value="3" label="Maximal number of transitions" help=""/>
-    <param name="cosine_similarity_threshold" argument="-cosine_similarity_threshold" type="float" optional="true" value="0.98" label="Threshold for cosine similarity of MS2 spectra from the same precursor used in consensus spectrum creation" help=""/>
-    <param name="transition_threshold" argument="-transition_threshold" type="float" optional="true" value="5.0" label="Further transitions need at least x% of the maximum intensity (default 5%)" help=""/>
+    <param argument="-use_exact_mass" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Use exact mass for precursor and fragment annotations" help=""/>
+    <param argument="-exclude_ms2_precursor" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Excludes precursor in ms2 from transition list" help=""/>
+    <param argument="-precursor_mz_distance" type="float" optional="true" value="0.0001" label="Max m/z distance of the precursor entries of two spectra to be merged in [Da]" help=""/>
+    <param argument="-consensus_spectrum_precursor_rt_tolerance" type="float" optional="true" value="5.0" label="Tolerance window (left and right) for precursor selection [seconds], for consensus spectrum generation (only available without fragment annotation)" help=""/>
+    <param argument="-use_known_unknowns" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Use features without identification information" help=""/>
+    <param argument="-min_transitions" type="integer" optional="true" value="3" label="Minimal number of transitions" help=""/>
+    <param argument="-max_transitions" type="integer" optional="true" value="6" label="Maximal number of transitions" help=""/>
+    <param argument="-cosine_similarity_threshold" type="float" optional="true" value="0.98" label="Threshold for cosine similarity of MS2 spectra from the same precursor used in consensus spectrum creation" help=""/>
+    <param argument="-transition_threshold" type="float" optional="true" value="5.0" label="Further transitions need at least x% of the maximum intensity (default 5%)" help=""/>
     <section name="deisotoping" title="deisotoping" help="" expanded="false">
       <param name="use_deisotoper" argument="-deisotoping:use_deisotoper" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Use Deisotoper (if no fragment annotation is used)" help=""/>
       <param name="fragment_tolerance" argument="-deisotoping:fragment_tolerance" type="float" optional="true" value="1.0" label="Tolerance used to match isotopic peaks" help=""/>
-      <param name="fragment_unit" argument="-deisotoping:fragment_unit" display="radio" type="select" optional="false" label="Unit of the fragment tolerance" help="">
+      <param name="fragment_unit" argument="-deisotoping:fragment_unit" type="select" optional="true" label="Unit of the fragment tolerance" help="">
         <option value="ppm" selected="true">ppm</option>
         <option value="Da">Da</option>
-        <expand macro="list_string_san"/>
+        <expand macro="list_string_san" name="fragment_unit"/>
       </param>
       <param name="min_charge" argument="-deisotoping:min_charge" type="integer" optional="true" min="1" value="1" label="The minimum charge considered" help=""/>
       <param name="max_charge" argument="-deisotoping:max_charge" type="integer" optional="true" min="1" value="1" label="The maximum charge considered" help=""/>
@@ -86,79 +145,83 @@
       <param name="keep_only_deisotoped" argument="-deisotoping:keep_only_deisotoped" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Only monoisotopic peaks of fragments with isotopic pattern are retained" help=""/>
       <param name="annotate_charge" argument="-deisotoping:annotate_charge" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Annotate the charge to the peaks" help=""/>
     </section>
-    <section name="preprocessing" title="Preprocessing" help="" expanded="false">
-      <param name="filter_by_num_masstraces" argument="-preprocessing:filter_by_num_masstraces" type="integer" optional="true" min="1" value="1" label="Features have to have at least x MassTraces" help="To use this parameter feature_only is neccessary"/>
-      <param name="precursor_mz_tolerance" argument="-preprocessing:precursor_mz_tolerance" type="float" optional="true" value="0.005" label="Tolerance window for precursor selection (Feature selection in regard to the precursor)" help=""/>
-      <param name="precursor_mz_tolerance_unit" argument="-preprocessing:precursor_mz_tolerance_unit" display="radio" type="select" optional="false" label="Unit of the precursor_mz_tolerance" help="">
-        <option value="Da" selected="true">Da</option>
-        <option value="ppm">ppm</option>
-        <expand macro="list_string_san"/>
+    <section name="preprocessing" title="" help="" expanded="false">
+      <param name="filter_by_num_masstraces" argument="-preprocessing:filter_by_num_masstraces" type="integer" optional="true" min="1" value="1" label="Number of mass traces each feature has to have to be included" help="To use this parameter, setting the feature_only flag is necessary"/>
+      <param name="precursor_mz_tolerance" argument="-preprocessing:precursor_mz_tolerance" type="float" optional="true" value="10.0" label="Tolerance window for precursor selection (Feature selection in regard to the precursor)" help=""/>
+      <param name="precursor_mz_tolerance_unit" argument="-preprocessing:precursor_mz_tolerance_unit" type="select" optional="true" label="Unit of the precursor_mz_tolerance" help="">
+        <option value="Da">Da</option>
+        <option value="ppm" selected="true">ppm</option>
+        <expand macro="list_string_san" name="precursor_mz_tolerance_unit"/>
       </param>
-      <param name="precursor_rt_tolerance" argument="-preprocessing:precursor_rt_tolerance" type="integer" optional="true" value="5" label="Tolerance window (left and right) for precursor selection [seconds]" help=""/>
+      <param name="precursor_rt_tolerance" argument="-preprocessing:precursor_rt_tolerance" type="float" optional="true" value="5.0" label="Tolerance window (left and right) for precursor selection [seconds]" help=""/>
       <param name="isotope_pattern_iterations" argument="-preprocessing:isotope_pattern_iterations" type="integer" optional="true" value="3" label="Number of iterations that should be performed to extract the C13 isotope pattern" help="If no peak is found (C13 distance) the function will abort. Be careful with noisy data - since this can lead to wrong isotope patterns"/>
       <param name="feature_only" argument="-preprocessing:feature_only" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Uses the feature information from in_featureinfo to reduce the search space to MS2 associated with a feature" help=""/>
       <param name="no_masstrace_info_isotope_pattern" argument="-preprocessing:no_masstrace_info_isotope_pattern" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Use this flag if the masstrace information from a feature should be discarded and the isotope_pattern_iterations should be used instead" help=""/>
     </section>
-    <section name="sirius" title="Parameters for SIRIUS and CSI:FingerID" help="" expanded="false">
-      <param name="profile" argument="-sirius:profile" display="radio" type="select" optional="false" label="Specify the used analysis profile" help="">
+    <section name="project" title="" help="" expanded="false">
+      <param name="processors" argument="-project:processors" type="integer" optional="true" value="1" label="Number of cpu cores to use" help="If not specified SIRIUS uses all available cores"/>
+      <param name="ignore_formula" argument="-project:ignore_formula" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Ignore given molecular formula in internal .ms format, while processing" help=""/>
+      <param name="q" argument="-project:q" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Suppress shell output" help=""/>
+    </section>
+    <section name="sirius" title="" help="" expanded="false">
+      <param name="ppm_max" argument="-sirius:ppm_max" type="float" optional="true" value="10.0" label="Maximum allowed mass deviation in ppm for decomposing masses [ppm]" help=""/>
+      <param name="ppm_max_ms2" argument="-sirius:ppm_max_ms2" type="float" optional="true" value="10.0" label="Maximum allowed mass deviation in ppm for decomposing masses in MS2 [ppm].If not specified, the same value as for the MS1 is used" help=""/>
+      <param name="tree_timeout" argument="-sirius:tree_timeout" type="integer" optional="true" min="0" value="0" label="Time out in seconds per fragmentation tree computations" help="0 for an infinite amount of time"/>
+      <param name="compound_timeout" argument="-sirius:compound_timeout" type="integer" optional="true" min="0" value="100" label="Maximal computation time in seconds for a single compound" help="0 for an infinite amount of time"/>
+      <param name="no_recalibration" argument="-sirius:no_recalibration" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Disable recalibration of input spectra" help=""/>
+      <param name="profile" argument="-sirius:profile" type="select" optional="true" label="Name of the configuration profile" help="">
+        <option value="default">default</option>
         <option value="qtof" selected="true">qtof</option>
         <option value="orbitrap">orbitrap</option>
         <option value="fticr">fticr</option>
-        <expand macro="list_string_san"/>
+        <expand macro="list_string_san" name="profile"/>
+      </param>
+      <param name="formula" argument="-sirius:formula" type="text" optional="true" value="" label="Specify the neutral molecular formula of the measured compound to compute its tree or a list of candidate formulas the method should discriminate" help="Omit this option if you want to consider all possible molecular formulas">
+        <expand macro="list_string_san" name="formula"/>
+      </param>
+      <param name="ions_enforced" argument="-sirius:ions_enforced" type="text" optional="true" value="" label="The iontype/adduct of the MS/MS data" help="Example: [M+H]+, . [M-H]-, [M+Cl]-, [M+Na]+, [M]+. You can also provide a . comma separated list of adducts">
+        <expand macro="list_string_san" name="ions_enforced"/>
+      </param>
+      <param name="candidates" argument="-sirius:candidates" type="integer" optional="true" min="1" value="5" label="The number of formula candidates in the SIRIUS output" help=""/>
+      <param name="candidates_per_ion" argument="-sirius:candidates_per_ion" type="integer" optional="true" value="-1" label="Minimum number of candidates in the output for each ionization" help="Set to force output of results for each possible ionization, even if not part of highest ranked results. -1 omits parameter in Sirius"/>
+      <param name="elements_considered" argument="-sirius:elements_considered" type="text" optional="true" value="" label="Set the allowed elements for rare element detection" help="Write SBrClBSe to allow the elements S,Br,Cl,B and Se">
+        <expand macro="list_string_san" name="elements_considered"/>
       </param>
-      <param name="candidates" argument="-sirius:candidates" type="integer" optional="true" min="1" value="5" label="The number of candidates in the SIRIUS output" help=""/>
-      <param name="database" argument="-sirius:database" type="select" optional="false" label="search formulas in given database" help="">
-        <option value="all" selected="true">all</option>
-        <option value="chebi">chebi</option>
-        <option value="custom">custom</option>
-        <option value="kegg">kegg</option>
-        <option value="bio">bio</option>
-        <option value="natural products">natural products</option>
-        <option value="pubmed">pubmed</option>
-        <option value="hmdb">hmdb</option>
-        <option value="biocyc">biocyc</option>
-        <option value="hsdb">hsdb</option>
-        <option value="knapsack">knapsack</option>
-        <option value="biological">biological</option>
-        <option value="zinc bio">zinc bio</option>
-        <option value="gnps">gnps</option>
-        <option value="pubchem">pubchem</option>
-        <option value="mesh">mesh</option>
-        <option value="maconda">maconda</option>
-        <expand macro="list_string_san"/>
+      <param name="elements_enforced" argument="-sirius:elements_enforced" type="text" optional="true" value="" label="Enforce elements for molecular formula determination" help="Write CHNOPSCl to allow the elements C, H, N, O, P, S and Cl. Add numbers in brackets to restrict the minimal and maximal allowed occurrence of these elements: CHNOP[5]S[8]Cl[1-2]. When one number is given then it is interpreted as upper bound. Default is CHNOP">
+        <expand macro="list_string_san" name="elements_enforced"/>
+      </param>
+      <param name="no_isotope_score" argument="-sirius:no_isotope_score" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Disable isotope pattern score" help=""/>
+      <param name="no_isotope_filter" argument="-sirius:no_isotope_filter" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Disable molecular formula filte" help="When filtering is enabled, molecular formulas are excluded if their theoretical isotope pattern does not match the theoretical one, even if their MS/MS pattern has high score"/>
+      <param name="ions_considered" argument="-sirius:ions_considered" type="text" optional="true" value="" label="the iontype/adduct of the MS/MS data" help="Example: [M+H]+, [M-H]-, [M+Cl]-, [M+Na]+, [M]+. You can also provide a comma separated list of adducts">
+        <expand macro="list_string_san" name="ions_considered"/>
       </param>
-      <param name="noise" argument="-sirius:noise" type="integer" optional="true" min="0" value="0" label="median intensity of noise peaks" help=""/>
-      <param name="ppm_max" argument="-sirius:ppm_max" type="integer" optional="true" value="10" label="allowed ppm for decomposing masses" help=""/>
-      <param name="isotope" argument="-sirius:isotope" display="radio" type="select" optional="false" label="how to handle isotope pattern data" help="Use 'score' to use them for ranking or 'filter' if you just want to remove candidates with bad isotope pattern. With 'both' you can use isotopes for filtering and scoring. Use 'omit' to ignore isotope pattern">
-        <option value="score">score</option>
-        <option value="filter">filter</option>
-        <option value="both" selected="true">both</option>
-        <option value="omit">omit</option>
-        <expand macro="list_string_san"/>
+      <param name="db" argument="-sirius:db" type="text" optional="true" value="" label="Search formulas in the Union of the given databases db-name1,db-name2,db-name3" help="If no database is given all possible molecular formulas will be respected (no database is used). Example: possible DBs: ALL,BIO,PUBCHEM,MESH,HMDB,KNAPSACK,CHEBI,PUBMED,KEGG,HSDB,MACONDA,METACYC,GNPS,ZINCBIO,UNDP,YMDB,PLANTCYC,NORMAN,ADDITIONAL,PUBCHEMANNOTATIONBIO,PUBCHEMANNOTATIONDRUG,PUBCHEMANNOTATIONSAFETYANDTOXIC,PUBCHEMANNOTATIONFOOD,KEGGMINE,ECOCYCMINE,YMDBMINE">
+        <expand macro="list_string_san" name="db"/>
       </param>
-      <param name="elements" argument="-sirius:elements" type="text" optional="true" value="CHNOP[5]S[8]Cl[1]" label="The allowed elements" help="Write CHNOPSCl to allow the elements C, H, N, O, P, S and Cl. Add numbers in brackets to restrict the maximal allowed occurrence of these elements: CHNOP[5]S[8]Cl[1]">
-        <expand macro="list_string_san"/>
+    </section>
+    <section name="fingerid" title="" help="" expanded="false">
+      <param name="candidates" argument="-fingerid:candidates" type="integer" optional="true" min="1" value="10" label="Number of molecular structure candidates in the output" help=""/>
+      <param name="db" argument="-fingerid:db" type="text" optional="true" value="BIO" label="Search formulas in the Union of the given databases db-name1,db-name2,db-name3" help="If no database is given all possible molecular formulas will be respected (no database is used). Example: possible DBs: ALL,BIO,PUBCHEM,MESH,HMDB,KNAPSACK,CHEBI,PUBMED,KEGG,HSDB,MACONDA,METACYC,GNPS,ZINCBIO,UNDP,YMDB,PLANTCYC,NORMAN,ADDITIONAL,PUBCHEMANNOTATIONBIO,PUBCHEMANNOTATIONDRUG,PUBCHEMANNOTATIONSAFETYANDTOXIC,PUBCHEMANNOTATIONFOOD,KEGGMINE,ECOCYCMINE,YMDBMINE">
+        <expand macro="list_string_san" name="db"/>
       </param>
-      <param name="compound_timeout" argument="-sirius:compound_timeout" type="integer" optional="true" min="0" value="10" label="Time out in seconds per compound" help="To disable the timeout set the value to 0"/>
-      <param name="tree_timeout" argument="-sirius:tree_timeout" type="integer" optional="true" min="0" value="0" label="Time out in seconds per fragmentation tree computation" help=""/>
-      <param name="top_n_hits" argument="-sirius:top_n_hits" type="integer" optional="true" min="1" value="10" label="The number of top hits for each compound written to the CSI:FingerID output" help=""/>
-      <param name="auto_charge" argument="-sirius:auto_charge" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Use this option if the charge of your compounds is unknown and you do not want to assume [M+H]+ as default" help="With the auto charge option SIRIUS will not care about charges and allow arbitrary adducts for the precursor peak"/>
-      <param name="ion_tree" argument="-sirius:ion_tree" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Print molecular formulas and node labels with the ion formula instead of the neutral formula" help=""/>
-      <param name="no_recalibration" argument="-sirius:no_recalibration" type="boolean" truevalue="true" falsevalue="false" checked="false" label="If this option is set, SIRIUS will not recalibrate the spectrum during the analysis" help=""/>
-      <param name="most_intense_ms2" argument="-sirius:most_intense_ms2" type="boolean" truevalue="true" falsevalue="false" checked="false" label="SIRIUS uses the fragmentation spectrum with the most intense precursor peak (for each spectrum)" help=""/>
     </section>
     <expand macro="adv_opts_macro">
-      <param name="precursor_recalibration_window" argument="-precursor_recalibration_window" type="float" optional="true" value="0.1" label="Tolerance window for precursor selection (Annotation of precursor mz and intensity)" help=""/>
-      <param name="precursor_recalibration_window_unit" argument="-precursor_recalibration_window_unit" display="radio" type="select" optional="false" label="Unit of the precursor_mz_tolerance_annotation" help="">
+      <param argument="-ambiguity_resolution_mz_tolerance_unit" type="select" optional="true" label="Unit of the ambiguity_resolution_mz_tolerance" help="">
+        <option value="ppm" selected="true">ppm</option>
+        <option value="Da">Da</option>
+        <expand macro="list_string_san" name="ambiguity_resolution_mz_tolerance_unit"/>
+      </param>
+      <param argument="-precursor_recalibration_window" type="float" optional="true" value="0.01" label="Tolerance window for precursor selection (Annotation of precursor mz and intensity)" help=""/>
+      <param argument="-precursor_recalibration_window_unit" type="select" optional="true" label="Unit of the precursor_mz_tolerance_annotation" help="">
         <option value="Da" selected="true">Da</option>
         <option value="ppm">ppm</option>
-        <expand macro="list_string_san"/>
+        <expand macro="list_string_san" name="precursor_recalibration_window_unit"/>
       </param>
-      <param name="min_fragment_mz" argument="-min_fragment_mz" type="float" optional="true" value="0.0" label="Minimal m/z of a fragment ion choosen as a transition" help=""/>
-      <param name="max_fragment_mz" argument="-max_fragment_mz" type="float" optional="true" value="2000.0" label="Maximal m/z of a fragment ion choosen as a transition" help=""/>
-      <param name="force" argument="-force" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Overrides 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 argument="-min_fragment_mz" type="float" optional="true" value="0.0" label="Minimal m/z of a fragment ion choosen as a transition" help=""/>
+      <param argument="-max_fragment_mz" type="float" optional="true" value="2000.0" label="Maximal m/z of a fragment ion choosen as a transition" help=""/>
+      <param argument="-force" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Overrides tool-specific checks" help=""/>
+      <param argument="-test" type="hidden" optional="true" value="False" label="Enables the test mode (needed for internal use only)" help="">
+        <expand macro="list_string_san" name="test"/>
       </param>
     </expand>
     <param name="OPTIONAL_OUTPUTS" type="select" optional="true" multiple="true" label="Optional outputs">
@@ -166,9 +229,8 @@
     </param>
   </inputs>
   <outputs>
-    <data name="out" label="${tool.name} on ${on_string}: out">
+    <data name="out" label="${tool.name} on ${on_string}: out" format="pqp">
       <change_format>
-        <when input="out_type" value="pqp" format="pqp"/>
         <when input="out_type" value="traML" format="traml"/>
         <when input="out_type" value="tsv" format="tabular"/>
       </change_format>
@@ -177,13 +239,1540 @@
       <filter>OPTIONAL_OUTPUTS is not None and "ctd_out_FLAG" in OPTIONAL_OUTPUTS</filter>
     </data>
   </outputs>
-  <tests>
-    <expand macro="autotest_AssayGeneratorMetabo"/>
-    <expand macro="manutest_AssayGeneratorMetabo"/>
+  <tests><!-- UTILS_AssayGeneratorMetabo_1 -->
+    <test expect_num_outputs="2">
+      <section name="adv_opts">
+        <param name="ambiguity_resolution_mz_tolerance_unit" value="ppm"/>
+        <param name="precursor_recalibration_window" value="0.01"/>
+        <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"/>
+      </section>
+      <conditional name="in_cond">
+        <param name="in" value="AssayGeneratorMetabo_input.mzML"/>
+      </conditional>
+      <conditional name="in_id_cond">
+        <param name="in_id" value="AssayGeneratorMetabo_ffm_input.featureXML"/>
+      </conditional>
+      <param name="out_type" value="tsv"/>
+      <output name="out" file="AssayGeneratorMetabo_ffm_output.tmp.tsv" compare="sim_size" delta_frac="0.7" ftype="tabular"/>
+      <param name="fragment_annotation" value="none"/>
+      <param name="ambiguity_resolution_mz_tolerance" value="10.0"/>
+      <param name="ambiguity_resolution_rt_tolerance" value="10.0"/>
+      <param name="total_occurrence_filter" value="0.1"/>
+      <param name="fragment_annotation_score_threshold" value="0.8"/>
+      <param name="decoy_generation" value="false"/>
+      <param name="decoy_generation_method" value="original"/>
+      <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="consensus_spectrum_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"/>
+      <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.0"/>
+        <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="project">
+        <param name="processors" value="1"/>
+        <param name="ignore_formula" value="false"/>
+        <param name="q" value="false"/>
+      </section>
+      <section name="sirius">
+        <param name="ppm_max" value="10.0"/>
+        <param name="ppm_max_ms2" value="10.0"/>
+        <param name="tree_timeout" value="0"/>
+        <param name="compound_timeout" value="100"/>
+        <param name="no_recalibration" value="false"/>
+        <param name="profile" value="qtof"/>
+        <param name="formula" value=""/>
+        <param name="ions_enforced" value=""/>
+        <param name="candidates" value="5"/>
+        <param name="candidates_per_ion" value="-1"/>
+        <param name="elements_considered" value=""/>
+        <param name="elements_enforced" value=""/>
+        <param name="no_isotope_score" value="false"/>
+        <param name="no_isotope_filter" value="false"/>
+        <param name="ions_considered" value=""/>
+        <param name="db" value=""/>
+      </section>
+      <section name="fingerid">
+        <param name="candidates" value="10"/>
+        <param name="db" value="BIO"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <!-- UTILS_AssayGeneratorMetabo_2 -->
+    <test expect_num_outputs="2">
+      <section name="adv_opts">
+        <param name="ambiguity_resolution_mz_tolerance_unit" value="ppm"/>
+        <param name="precursor_recalibration_window" value="0.01"/>
+        <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"/>
+      </section>
+      <conditional name="in_cond">
+        <param name="in" value="AssayGeneratorMetabo_input.mzML"/>
+      </conditional>
+      <conditional name="in_id_cond">
+        <param name="in_id" value="AssayGeneratorMetabo_ams_input.featureXML"/>
+      </conditional>
+      <param name="out_type" value="tsv"/>
+      <output name="out" file="AssayGeneratorMetabo_ams_output.tmp.tsv" compare="sim_size" delta_frac="0.7" ftype="tabular"/>
+      <param name="fragment_annotation" value="none"/>
+      <param name="ambiguity_resolution_mz_tolerance" value="10.0"/>
+      <param name="ambiguity_resolution_rt_tolerance" value="10.0"/>
+      <param name="total_occurrence_filter" value="0.1"/>
+      <param name="fragment_annotation_score_threshold" value="0.8"/>
+      <param name="decoy_generation" value="false"/>
+      <param name="decoy_generation_method" value="original"/>
+      <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="consensus_spectrum_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"/>
+      <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.0"/>
+        <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="project">
+        <param name="processors" value="1"/>
+        <param name="ignore_formula" value="false"/>
+        <param name="q" value="false"/>
+      </section>
+      <section name="sirius">
+        <param name="ppm_max" value="10.0"/>
+        <param name="ppm_max_ms2" value="10.0"/>
+        <param name="tree_timeout" value="0"/>
+        <param name="compound_timeout" value="100"/>
+        <param name="no_recalibration" value="false"/>
+        <param name="profile" value="qtof"/>
+        <param name="formula" value=""/>
+        <param name="ions_enforced" value=""/>
+        <param name="candidates" value="5"/>
+        <param name="candidates_per_ion" value="-1"/>
+        <param name="elements_considered" value=""/>
+        <param name="elements_enforced" value=""/>
+        <param name="no_isotope_score" value="false"/>
+        <param name="no_isotope_filter" value="false"/>
+        <param name="ions_considered" value=""/>
+        <param name="db" value=""/>
+      </section>
+      <section name="fingerid">
+        <param name="candidates" value="10"/>
+        <param name="db" value="BIO"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <!-- UTILS_AssayGeneratorMetabo_3 -->
+    <test expect_num_outputs="2">
+      <section name="adv_opts">
+        <param name="ambiguity_resolution_mz_tolerance_unit" value="ppm"/>
+        <param name="precursor_recalibration_window" value="0.01"/>
+        <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"/>
+      </section>
+      <conditional name="in_cond">
+        <param name="in" value="AssayGeneratorMetabo_input.mzML"/>
+      </conditional>
+      <conditional name="in_id_cond">
+        <param name="in_id" value="AssayGeneratorMetabo_ffm_input.featureXML"/>
+      </conditional>
+      <param name="out_type" value="tsv"/>
+      <output name="out" file="AssayGeneratorMetabo_ffm_output_consensus.tmp.tsv" compare="sim_size" delta_frac="0.7" ftype="tabular"/>
+      <param name="fragment_annotation" value="none"/>
+      <param name="ambiguity_resolution_mz_tolerance" value="10.0"/>
+      <param name="ambiguity_resolution_rt_tolerance" value="10.0"/>
+      <param name="total_occurrence_filter" value="0.1"/>
+      <param name="fragment_annotation_score_threshold" value="0.8"/>
+      <param name="decoy_generation" value="false"/>
+      <param name="decoy_generation_method" value="original"/>
+      <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="consensus_spectrum_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"/>
+      <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.0"/>
+        <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="project">
+        <param name="processors" value="1"/>
+        <param name="ignore_formula" value="false"/>
+        <param name="q" value="false"/>
+      </section>
+      <section name="sirius">
+        <param name="ppm_max" value="10.0"/>
+        <param name="ppm_max_ms2" value="10.0"/>
+        <param name="tree_timeout" value="0"/>
+        <param name="compound_timeout" value="100"/>
+        <param name="no_recalibration" value="false"/>
+        <param name="profile" value="qtof"/>
+        <param name="formula" value=""/>
+        <param name="ions_enforced" value=""/>
+        <param name="candidates" value="5"/>
+        <param name="candidates_per_ion" value="-1"/>
+        <param name="elements_considered" value=""/>
+        <param name="elements_enforced" value=""/>
+        <param name="no_isotope_score" value="false"/>
+        <param name="no_isotope_filter" value="false"/>
+        <param name="ions_considered" value=""/>
+        <param name="db" value=""/>
+      </section>
+      <section name="fingerid">
+        <param name="candidates" value="10"/>
+        <param name="db" value="BIO"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <!-- UTILS_AssayGeneratorMetabo_4 -->
+    <test expect_num_outputs="2">
+      <section name="adv_opts">
+        <param name="ambiguity_resolution_mz_tolerance_unit" value="ppm"/>
+        <param name="precursor_recalibration_window" value="0.01"/>
+        <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"/>
+      </section>
+      <conditional name="in_cond">
+        <param name="in" value="AssayGeneratorMetabo_input.mzML"/>
+      </conditional>
+      <conditional name="in_id_cond">
+        <param name="in_id" value="AssayGeneratorMetabo_ams_input.featureXML"/>
+      </conditional>
+      <param name="out_type" value="tsv"/>
+      <output name="out" file="AssayGeneratorMetabo_ams_output_consensus.tmp.tsv" compare="sim_size" delta_frac="0.7" ftype="tabular"/>
+      <param name="fragment_annotation" value="none"/>
+      <param name="ambiguity_resolution_mz_tolerance" value="10.0"/>
+      <param name="ambiguity_resolution_rt_tolerance" value="10.0"/>
+      <param name="total_occurrence_filter" value="0.1"/>
+      <param name="fragment_annotation_score_threshold" value="0.8"/>
+      <param name="decoy_generation" value="false"/>
+      <param name="decoy_generation_method" value="original"/>
+      <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="consensus_spectrum_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"/>
+      <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.0"/>
+        <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="project">
+        <param name="processors" value="1"/>
+        <param name="ignore_formula" value="false"/>
+        <param name="q" value="false"/>
+      </section>
+      <section name="sirius">
+        <param name="ppm_max" value="10.0"/>
+        <param name="ppm_max_ms2" value="10.0"/>
+        <param name="tree_timeout" value="0"/>
+        <param name="compound_timeout" value="100"/>
+        <param name="no_recalibration" value="false"/>
+        <param name="profile" value="qtof"/>
+        <param name="formula" value=""/>
+        <param name="ions_enforced" value=""/>
+        <param name="candidates" value="5"/>
+        <param name="candidates_per_ion" value="-1"/>
+        <param name="elements_considered" value=""/>
+        <param name="elements_enforced" value=""/>
+        <param name="no_isotope_score" value="false"/>
+        <param name="no_isotope_filter" value="false"/>
+        <param name="ions_considered" value=""/>
+        <param name="db" value=""/>
+      </section>
+      <section name="fingerid">
+        <param name="candidates" value="10"/>
+        <param name="db" value="BIO"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <!-- UTILS_AssayGeneratorMetabo_5 -->
+    <test expect_num_outputs="2">
+      <section name="adv_opts">
+        <param name="ambiguity_resolution_mz_tolerance_unit" value="ppm"/>
+        <param name="precursor_recalibration_window" value="0.01"/>
+        <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"/>
+      </section>
+      <conditional name="in_cond">
+        <param name="in" value="AssayGeneratorMetabo_input.mzML"/>
+      </conditional>
+      <conditional name="in_id_cond">
+        <param name="in_id" value="AssayGeneratorMetabo_ams_input.featureXML"/>
+      </conditional>
+      <param name="out_type" value="tsv"/>
+      <output name="out" file="AssayGeneratorMetabo_ams_uku_output_consensus.tmp.tsv" compare="sim_size" delta_frac="0.7" ftype="tabular"/>
+      <param name="fragment_annotation" value="none"/>
+      <param name="ambiguity_resolution_mz_tolerance" value="10.0"/>
+      <param name="ambiguity_resolution_rt_tolerance" value="10.0"/>
+      <param name="total_occurrence_filter" value="0.1"/>
+      <param name="fragment_annotation_score_threshold" value="0.8"/>
+      <param name="decoy_generation" value="false"/>
+      <param name="decoy_generation_method" value="original"/>
+      <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="consensus_spectrum_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"/>
+      <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.0"/>
+        <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="project">
+        <param name="processors" value="1"/>
+        <param name="ignore_formula" value="false"/>
+        <param name="q" value="false"/>
+      </section>
+      <section name="sirius">
+        <param name="ppm_max" value="10.0"/>
+        <param name="ppm_max_ms2" value="10.0"/>
+        <param name="tree_timeout" value="0"/>
+        <param name="compound_timeout" value="100"/>
+        <param name="no_recalibration" value="false"/>
+        <param name="profile" value="qtof"/>
+        <param name="formula" value=""/>
+        <param name="ions_enforced" value=""/>
+        <param name="candidates" value="5"/>
+        <param name="candidates_per_ion" value="-1"/>
+        <param name="elements_considered" value=""/>
+        <param name="elements_enforced" value=""/>
+        <param name="no_isotope_score" value="false"/>
+        <param name="no_isotope_filter" value="false"/>
+        <param name="ions_considered" value=""/>
+        <param name="db" value=""/>
+      </section>
+      <section name="fingerid">
+        <param name="candidates" value="10"/>
+        <param name="db" value="BIO"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <!-- UTILS_AssayGeneratorMetabo_7 -->
+    <test expect_num_outputs="2">
+      <section name="adv_opts">
+        <param name="ambiguity_resolution_mz_tolerance_unit" value="ppm"/>
+        <param name="precursor_recalibration_window" value="0.01"/>
+        <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"/>
+      </section>
+      <conditional name="in_cond">
+        <param name="in" value="AssayGeneratorMetabo_input.mzML"/>
+      </conditional>
+      <conditional name="in_id_cond">
+        <param name="in_id" value="AssayGeneratorMetabo_ams_input.featureXML"/>
+      </conditional>
+      <param name="out_type" value="tsv"/>
+      <output name="out" file="AssayGeneratorMetabo_ams_sirius_output.tmp.tsv" compare="sim_size" delta_frac="0.7" ftype="tabular"/>
+      <param name="fragment_annotation" value="sirius"/>
+      <param name="ambiguity_resolution_mz_tolerance" value="10.0"/>
+      <param name="ambiguity_resolution_rt_tolerance" value="10.0"/>
+      <param name="total_occurrence_filter" value="0.1"/>
+      <param name="fragment_annotation_score_threshold" value="0.8"/>
+      <param name="decoy_generation" value="false"/>
+      <param name="decoy_generation_method" value="original"/>
+      <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="consensus_spectrum_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"/>
+      <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.0"/>
+        <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="project">
+        <param name="processors" value="1"/>
+        <param name="ignore_formula" value="false"/>
+        <param name="q" value="false"/>
+      </section>
+      <section name="sirius">
+        <param name="ppm_max" value="10.0"/>
+        <param name="ppm_max_ms2" value="10.0"/>
+        <param name="tree_timeout" value="0"/>
+        <param name="compound_timeout" value="100"/>
+        <param name="no_recalibration" value="false"/>
+        <param name="profile" value="qtof"/>
+        <param name="formula" value=""/>
+        <param name="ions_enforced" value=""/>
+        <param name="candidates" value="5"/>
+        <param name="candidates_per_ion" value="-1"/>
+        <param name="elements_considered" value=""/>
+        <param name="elements_enforced" value=""/>
+        <param name="no_isotope_score" value="false"/>
+        <param name="no_isotope_filter" value="false"/>
+        <param name="ions_considered" value=""/>
+        <param name="db" value=""/>
+      </section>
+      <section name="fingerid">
+        <param name="candidates" value="10"/>
+        <param name="db" value="BIO"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <!-- UTILS_AssayGeneratorMetabo_8 -->
+    <test expect_num_outputs="2">
+      <section name="adv_opts">
+        <param name="ambiguity_resolution_mz_tolerance_unit" value="ppm"/>
+        <param name="precursor_recalibration_window" value="0.01"/>
+        <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"/>
+      </section>
+      <conditional name="in_cond">
+        <param name="in" value="AssayGeneratorMetabo_input.mzML"/>
+      </conditional>
+      <conditional name="in_id_cond">
+        <param name="in_id" value="AssayGeneratorMetabo_ams_input.featureXML"/>
+      </conditional>
+      <param name="out_type" value="tsv"/>
+      <output name="out" file="AssayGeneratorMetabo_ams_sirius_ukn_output.tmp.tsv" compare="sim_size" delta_frac="0.7" ftype="tabular"/>
+      <param name="fragment_annotation" value="sirius"/>
+      <param name="ambiguity_resolution_mz_tolerance" value="10.0"/>
+      <param name="ambiguity_resolution_rt_tolerance" value="10.0"/>
+      <param name="total_occurrence_filter" value="0.1"/>
+      <param name="fragment_annotation_score_threshold" value="0.8"/>
+      <param name="decoy_generation" value="false"/>
+      <param name="decoy_generation_method" value="original"/>
+      <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="consensus_spectrum_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"/>
+      <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.0"/>
+        <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="project">
+        <param name="processors" value="1"/>
+        <param name="ignore_formula" value="false"/>
+        <param name="q" value="false"/>
+      </section>
+      <section name="sirius">
+        <param name="ppm_max" value="10.0"/>
+        <param name="ppm_max_ms2" value="10.0"/>
+        <param name="tree_timeout" value="0"/>
+        <param name="compound_timeout" value="100"/>
+        <param name="no_recalibration" value="false"/>
+        <param name="profile" value="qtof"/>
+        <param name="formula" value=""/>
+        <param name="ions_enforced" value=""/>
+        <param name="candidates" value="5"/>
+        <param name="candidates_per_ion" value="-1"/>
+        <param name="elements_considered" value=""/>
+        <param name="elements_enforced" value=""/>
+        <param name="no_isotope_score" value="false"/>
+        <param name="no_isotope_filter" value="false"/>
+        <param name="ions_considered" value=""/>
+        <param name="db" value="ALL"/>
+      </section>
+      <section name="fingerid">
+        <param name="candidates" value="10"/>
+        <param name="db" value="BIO"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <!-- UTILS_AssayGeneratorMetabo_9 -->
+    <test expect_num_outputs="2">
+      <section name="adv_opts">
+        <param name="ambiguity_resolution_mz_tolerance_unit" value="ppm"/>
+        <param name="precursor_recalibration_window" value="0.01"/>
+        <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"/>
+      </section>
+      <conditional name="in_cond">
+        <param name="in" value="AssayGeneratorMetabo_intsort_input.mzML"/>
+      </conditional>
+      <conditional name="in_id_cond">
+        <param name="in_id" value="AssayGeneratorMetabo_intsort_input.featureXML"/>
+      </conditional>
+      <param name="out_type" value="tsv"/>
+      <output name="out" file="AssayGeneratorMetabo_ams_sirius_intsort_output.tmp.tsv" compare="sim_size" delta_frac="0.7" ftype="tabular"/>
+      <param name="fragment_annotation" value="sirius"/>
+      <param name="ambiguity_resolution_mz_tolerance" value="10.0"/>
+      <param name="ambiguity_resolution_rt_tolerance" value="10.0"/>
+      <param name="total_occurrence_filter" value="0.1"/>
+      <param name="fragment_annotation_score_threshold" value="0.8"/>
+      <param name="decoy_generation" value="false"/>
+      <param name="decoy_generation_method" value="original"/>
+      <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="consensus_spectrum_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"/>
+      <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.0"/>
+        <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="project">
+        <param name="processors" value="1"/>
+        <param name="ignore_formula" value="false"/>
+        <param name="q" value="false"/>
+      </section>
+      <section name="sirius">
+        <param name="ppm_max" value="10.0"/>
+        <param name="ppm_max_ms2" value="10.0"/>
+        <param name="tree_timeout" value="0"/>
+        <param name="compound_timeout" value="100"/>
+        <param name="no_recalibration" value="false"/>
+        <param name="profile" value="qtof"/>
+        <param name="formula" value=""/>
+        <param name="ions_enforced" value=""/>
+        <param name="candidates" value="5"/>
+        <param name="candidates_per_ion" value="-1"/>
+        <param name="elements_considered" value=""/>
+        <param name="elements_enforced" value=""/>
+        <param name="no_isotope_score" value="false"/>
+        <param name="no_isotope_filter" value="false"/>
+        <param name="ions_considered" value=""/>
+        <param name="db" value=""/>
+      </section>
+      <section name="fingerid">
+        <param name="candidates" value="10"/>
+        <param name="db" value="BIO"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <!-- UTILS_AssayGeneratorMetabo_10 -->
+    <test expect_num_outputs="2">
+      <section name="adv_opts">
+        <param name="ambiguity_resolution_mz_tolerance_unit" value="ppm"/>
+        <param name="precursor_recalibration_window" value="0.01"/>
+        <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"/>
+      </section>
+      <conditional name="in_cond">
+        <param name="in" value="AssayGeneratorMetabo_input.mzML"/>
+      </conditional>
+      <conditional name="in_id_cond">
+        <param name="in_id" value="AssayGeneratorMetabo_ams_input.featureXML"/>
+      </conditional>
+      <param name="out_type" value="tsv"/>
+      <output name="out" file="AssayGeneratorMetabo_ams_sirius_restrict_output.tmp.tsv" compare="sim_size" delta_frac="0.7" ftype="tabular"/>
+      <param name="fragment_annotation" value="sirius"/>
+      <param name="ambiguity_resolution_mz_tolerance" value="10.0"/>
+      <param name="ambiguity_resolution_rt_tolerance" value="10.0"/>
+      <param name="total_occurrence_filter" value="0.1"/>
+      <param name="fragment_annotation_score_threshold" value="0.8"/>
+      <param name="decoy_generation" value="false"/>
+      <param name="decoy_generation_method" value="original"/>
+      <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="consensus_spectrum_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"/>
+      <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.0"/>
+        <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="project">
+        <param name="processors" value="1"/>
+        <param name="ignore_formula" value="false"/>
+        <param name="q" value="false"/>
+      </section>
+      <section name="sirius">
+        <param name="ppm_max" value="10.0"/>
+        <param name="ppm_max_ms2" value="10.0"/>
+        <param name="tree_timeout" value="0"/>
+        <param name="compound_timeout" value="100"/>
+        <param name="no_recalibration" value="false"/>
+        <param name="profile" value="qtof"/>
+        <param name="formula" value=""/>
+        <param name="ions_enforced" value=""/>
+        <param name="candidates" value="5"/>
+        <param name="candidates_per_ion" value="-1"/>
+        <param name="elements_considered" value=""/>
+        <param name="elements_enforced" value=""/>
+        <param name="no_isotope_score" value="false"/>
+        <param name="no_isotope_filter" value="false"/>
+        <param name="ions_considered" value=""/>
+        <param name="db" value=""/>
+      </section>
+      <section name="fingerid">
+        <param name="candidates" value="10"/>
+        <param name="db" value="BIO"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <!-- UTILS_AssayGeneratorMetabo_11 -->
+    <test expect_num_outputs="2">
+      <section name="adv_opts">
+        <param name="ambiguity_resolution_mz_tolerance_unit" value="ppm"/>
+        <param name="precursor_recalibration_window" value="0.01"/>
+        <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"/>
+      </section>
+      <conditional name="in_cond">
+        <param name="in" value="AssayGeneratorMetabo_input.mzML"/>
+      </conditional>
+      <conditional name="in_id_cond">
+        <param name="in_id" value="AssayGeneratorMetabo_ams_input.featureXML"/>
+      </conditional>
+      <param name="out_type" value="tsv"/>
+      <output name="out" file="AssayGeneratorMetabo_ams_sirius_restrict_decoy_output.tmp.tsv" compare="sim_size" delta_frac="0.7" ftype="tabular"/>
+      <param name="fragment_annotation" value="sirius"/>
+      <param name="ambiguity_resolution_mz_tolerance" value="10.0"/>
+      <param name="ambiguity_resolution_rt_tolerance" value="10.0"/>
+      <param name="total_occurrence_filter" value="0.1"/>
+      <param name="fragment_annotation_score_threshold" value="0.8"/>
+      <param name="decoy_generation" value="true"/>
+      <param name="decoy_generation_method" value="original"/>
+      <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="consensus_spectrum_precursor_rt_tolerance" value="5.0"/>
+      <param name="use_known_unknowns" value="false"/>
+      <param name="min_transitions" value="3"/>
+      <param name="max_transitions" value="3"/>
+      <param name="cosine_similarity_threshold" value="0.98"/>
+      <param name="transition_threshold" value="3.0"/>
+      <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.0"/>
+        <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="project">
+        <param name="processors" value="1"/>
+        <param name="ignore_formula" value="false"/>
+        <param name="q" value="false"/>
+      </section>
+      <section name="sirius">
+        <param name="ppm_max" value="10.0"/>
+        <param name="ppm_max_ms2" value="10.0"/>
+        <param name="tree_timeout" value="0"/>
+        <param name="compound_timeout" value="100"/>
+        <param name="no_recalibration" value="false"/>
+        <param name="profile" value="qtof"/>
+        <param name="formula" value=""/>
+        <param name="ions_enforced" value=""/>
+        <param name="candidates" value="5"/>
+        <param name="candidates_per_ion" value="-1"/>
+        <param name="elements_considered" value=""/>
+        <param name="elements_enforced" value=""/>
+        <param name="no_isotope_score" value="false"/>
+        <param name="no_isotope_filter" value="false"/>
+        <param name="ions_considered" value=""/>
+        <param name="db" value=""/>
+      </section>
+      <section name="fingerid">
+        <param name="candidates" value="10"/>
+        <param name="db" value="BIO"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <!-- UTILS_AssayGeneratorMetabo_12 -->
+    <test expect_num_outputs="2">
+      <section name="adv_opts">
+        <param name="ambiguity_resolution_mz_tolerance_unit" value="ppm"/>
+        <param name="precursor_recalibration_window" value="0.01"/>
+        <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"/>
+      </section>
+      <conditional name="in_cond">
+        <param name="in" value="AssayGeneratorMetabo_decoy_generation_input.mzML"/>
+      </conditional>
+      <conditional name="in_id_cond">
+        <param name="in_id" value="AssayGeneratorMetabo_decoy_generation_input.featureXML"/>
+      </conditional>
+      <param name="out_type" value="tsv"/>
+      <output name="out" file="AssayGeneratorMetabo_decoy_generation_output_original.tmp.tsv" compare="sim_size" delta_frac="0.7" ftype="tabular"/>
+      <param name="fragment_annotation" value="sirius"/>
+      <param name="ambiguity_resolution_mz_tolerance" value="10.0"/>
+      <param name="ambiguity_resolution_rt_tolerance" value="10.0"/>
+      <param name="total_occurrence_filter" value="0.1"/>
+      <param name="fragment_annotation_score_threshold" value="0.8"/>
+      <param name="decoy_generation" value="true"/>
+      <param name="decoy_generation_method" value="original"/>
+      <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="consensus_spectrum_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="3.0"/>
+      <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.0"/>
+        <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="project">
+        <param name="processors" value="1"/>
+        <param name="ignore_formula" value="false"/>
+        <param name="q" value="false"/>
+      </section>
+      <section name="sirius">
+        <param name="ppm_max" value="10.0"/>
+        <param name="ppm_max_ms2" value="10.0"/>
+        <param name="tree_timeout" value="0"/>
+        <param name="compound_timeout" value="100"/>
+        <param name="no_recalibration" value="false"/>
+        <param name="profile" value="qtof"/>
+        <param name="formula" value=""/>
+        <param name="ions_enforced" value=""/>
+        <param name="candidates" value="5"/>
+        <param name="candidates_per_ion" value="-1"/>
+        <param name="elements_considered" value=""/>
+        <param name="elements_enforced" value=""/>
+        <param name="no_isotope_score" value="false"/>
+        <param name="no_isotope_filter" value="false"/>
+        <param name="ions_considered" value=""/>
+        <param name="db" value=""/>
+      </section>
+      <section name="fingerid">
+        <param name="candidates" value="10"/>
+        <param name="db" value="BIO"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <!-- UTILS_AssayGeneratorMetabo_13 -->
+    <test expect_num_outputs="2">
+      <section name="adv_opts">
+        <param name="ambiguity_resolution_mz_tolerance_unit" value="ppm"/>
+        <param name="precursor_recalibration_window" value="0.01"/>
+        <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"/>
+      </section>
+      <conditional name="in_cond">
+        <param name="in" value="AssayGeneratorMetabo_decoy_generation_input.mzML"/>
+      </conditional>
+      <conditional name="in_id_cond">
+        <param name="in_id" value="AssayGeneratorMetabo_decoy_generation_input.featureXML"/>
+      </conditional>
+      <param name="out_type" value="tsv"/>
+      <output name="out" file="AssayGeneratorMetabo_decoy_generation_output_resolve_overlap.tmp.tsv" compare="sim_size" delta_frac="0.7" ftype="tabular"/>
+      <param name="fragment_annotation" value="sirius"/>
+      <param name="ambiguity_resolution_mz_tolerance" value="10.0"/>
+      <param name="ambiguity_resolution_rt_tolerance" value="10.0"/>
+      <param name="total_occurrence_filter" value="0.1"/>
+      <param name="fragment_annotation_score_threshold" value="0.8"/>
+      <param name="decoy_generation" value="true"/>
+      <param name="decoy_generation_method" value="resolve_overlap"/>
+      <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="consensus_spectrum_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="3.0"/>
+      <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.0"/>
+        <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="project">
+        <param name="processors" value="1"/>
+        <param name="ignore_formula" value="false"/>
+        <param name="q" value="false"/>
+      </section>
+      <section name="sirius">
+        <param name="ppm_max" value="10.0"/>
+        <param name="ppm_max_ms2" value="10.0"/>
+        <param name="tree_timeout" value="0"/>
+        <param name="compound_timeout" value="100"/>
+        <param name="no_recalibration" value="false"/>
+        <param name="profile" value="qtof"/>
+        <param name="formula" value=""/>
+        <param name="ions_enforced" value=""/>
+        <param name="candidates" value="5"/>
+        <param name="candidates_per_ion" value="-1"/>
+        <param name="elements_considered" value=""/>
+        <param name="elements_enforced" value=""/>
+        <param name="no_isotope_score" value="false"/>
+        <param name="no_isotope_filter" value="false"/>
+        <param name="ions_considered" value=""/>
+        <param name="db" value=""/>
+      </section>
+      <section name="fingerid">
+        <param name="candidates" value="10"/>
+        <param name="db" value="BIO"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <!-- UTILS_AssayGeneratorMetabo_14 -->
+    <test expect_num_outputs="2">
+      <section name="adv_opts">
+        <param name="ambiguity_resolution_mz_tolerance_unit" value="ppm"/>
+        <param name="precursor_recalibration_window" value="0.01"/>
+        <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"/>
+      </section>
+      <conditional name="in_cond">
+        <param name="in" value="AssayGeneratorMetabo_decoy_generation_input.mzML"/>
+      </conditional>
+      <conditional name="in_id_cond">
+        <param name="in_id" value="AssayGeneratorMetabo_decoy_generation_input.featureXML"/>
+      </conditional>
+      <param name="out_type" value="tsv"/>
+      <output name="out" file="AssayGeneratorMetabo_decoy_generation_output_add_shift.tmp.tsv" compare="sim_size" delta_frac="0.7" ftype="tabular"/>
+      <param name="fragment_annotation" value="sirius"/>
+      <param name="ambiguity_resolution_mz_tolerance" value="10.0"/>
+      <param name="ambiguity_resolution_rt_tolerance" value="10.0"/>
+      <param name="total_occurrence_filter" value="0.1"/>
+      <param name="fragment_annotation_score_threshold" value="0.8"/>
+      <param name="decoy_generation" value="true"/>
+      <param name="decoy_generation_method" value="add_shift"/>
+      <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="consensus_spectrum_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="3.0"/>
+      <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.0"/>
+        <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="project">
+        <param name="processors" value="1"/>
+        <param name="ignore_formula" value="false"/>
+        <param name="q" value="false"/>
+      </section>
+      <section name="sirius">
+        <param name="ppm_max" value="10.0"/>
+        <param name="ppm_max_ms2" value="10.0"/>
+        <param name="tree_timeout" value="0"/>
+        <param name="compound_timeout" value="100"/>
+        <param name="no_recalibration" value="false"/>
+        <param name="profile" value="qtof"/>
+        <param name="formula" value=""/>
+        <param name="ions_enforced" value=""/>
+        <param name="candidates" value="5"/>
+        <param name="candidates_per_ion" value="-1"/>
+        <param name="elements_considered" value=""/>
+        <param name="elements_enforced" value=""/>
+        <param name="no_isotope_score" value="false"/>
+        <param name="no_isotope_filter" value="false"/>
+        <param name="ions_considered" value=""/>
+        <param name="db" value=""/>
+      </section>
+      <section name="fingerid">
+        <param name="candidates" value="10"/>
+        <param name="db" value="BIO"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <!-- UTILS_AssayGeneratorMetabo_15 -->
+    <test expect_num_outputs="2">
+      <section name="adv_opts">
+        <param name="ambiguity_resolution_mz_tolerance_unit" value="ppm"/>
+        <param name="precursor_recalibration_window" value="0.01"/>
+        <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"/>
+      </section>
+      <conditional name="in_cond">
+        <param name="in" value="AssayGeneratorMetabo_decoy_generation_input.mzML"/>
+      </conditional>
+      <conditional name="in_id_cond">
+        <param name="in_id" value="AssayGeneratorMetabo_decoy_generation_input.featureXML"/>
+      </conditional>
+      <param name="out_type" value="tsv"/>
+      <output name="out" file="AssayGeneratorMetabo_decoy_generation_output_both.tmp.tsv" compare="sim_size" delta_frac="0.7" ftype="tabular"/>
+      <param name="fragment_annotation" value="sirius"/>
+      <param name="ambiguity_resolution_mz_tolerance" value="10.0"/>
+      <param name="ambiguity_resolution_rt_tolerance" value="10.0"/>
+      <param name="total_occurrence_filter" value="0.1"/>
+      <param name="fragment_annotation_score_threshold" value="0.8"/>
+      <param name="decoy_generation" value="true"/>
+      <param name="decoy_generation_method" value="both"/>
+      <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="consensus_spectrum_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="3.0"/>
+      <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.0"/>
+        <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="project">
+        <param name="processors" value="1"/>
+        <param name="ignore_formula" value="false"/>
+        <param name="q" value="false"/>
+      </section>
+      <section name="sirius">
+        <param name="ppm_max" value="10.0"/>
+        <param name="ppm_max_ms2" value="10.0"/>
+        <param name="tree_timeout" value="0"/>
+        <param name="compound_timeout" value="100"/>
+        <param name="no_recalibration" value="false"/>
+        <param name="profile" value="qtof"/>
+        <param name="formula" value=""/>
+        <param name="ions_enforced" value=""/>
+        <param name="candidates" value="5"/>
+        <param name="candidates_per_ion" value="-1"/>
+        <param name="elements_considered" value=""/>
+        <param name="elements_enforced" value=""/>
+        <param name="no_isotope_score" value="false"/>
+        <param name="no_isotope_filter" value="false"/>
+        <param name="ions_considered" value=""/>
+        <param name="db" value=""/>
+      </section>
+      <section name="fingerid">
+        <param name="candidates" value="10"/>
+        <param name="db" value="BIO"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <!-- UTILS_AssayGeneratorMetabo_16 -->
+    <test expect_num_outputs="2">
+      <section name="adv_opts">
+        <param name="ambiguity_resolution_mz_tolerance_unit" value="ppm"/>
+        <param name="precursor_recalibration_window" value="0.01"/>
+        <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"/>
+      </section>
+      <conditional name="in_cond">
+        <param name="in" value="AssayGeneratorMetabo_decoy_generation_input.mzML"/>
+      </conditional>
+      <conditional name="in_id_cond">
+        <param name="in_id" value="AssayGeneratorMetabo_decoy_generation_input_multids.featureXML"/>
+      </conditional>
+      <param name="out_type" value="tsv"/>
+      <output name="out" file="AssayGeneratorMetabo_decoy_generation_output_both_multids.tmp.tsv" compare="sim_size" delta_frac="0.7" ftype="tabular"/>
+      <param name="fragment_annotation" value="sirius"/>
+      <param name="ambiguity_resolution_mz_tolerance" value="10.0"/>
+      <param name="ambiguity_resolution_rt_tolerance" value="10.0"/>
+      <param name="total_occurrence_filter" value="0.1"/>
+      <param name="fragment_annotation_score_threshold" value="0.8"/>
+      <param name="decoy_generation" value="true"/>
+      <param name="decoy_generation_method" value="both"/>
+      <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="consensus_spectrum_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="3.0"/>
+      <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.0"/>
+        <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="project">
+        <param name="processors" value="1"/>
+        <param name="ignore_formula" value="false"/>
+        <param name="q" value="false"/>
+      </section>
+      <section name="sirius">
+        <param name="ppm_max" value="10.0"/>
+        <param name="ppm_max_ms2" value="10.0"/>
+        <param name="tree_timeout" value="0"/>
+        <param name="compound_timeout" value="100"/>
+        <param name="no_recalibration" value="false"/>
+        <param name="profile" value="qtof"/>
+        <param name="formula" value=""/>
+        <param name="ions_enforced" value=""/>
+        <param name="candidates" value="5"/>
+        <param name="candidates_per_ion" value="-1"/>
+        <param name="elements_considered" value=""/>
+        <param name="elements_enforced" value=""/>
+        <param name="no_isotope_score" value="false"/>
+        <param name="no_isotope_filter" value="false"/>
+        <param name="ions_considered" value=""/>
+        <param name="db" value=""/>
+      </section>
+      <section name="fingerid">
+        <param name="candidates" value="10"/>
+        <param name="db" value="BIO"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <!-- UTILS_AssayGeneratorMetabo_17 -->
+    <test expect_num_outputs="2">
+      <section name="adv_opts">
+        <param name="ambiguity_resolution_mz_tolerance_unit" value="Da"/>
+        <param name="precursor_recalibration_window" value="0.01"/>
+        <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"/>
+      </section>
+      <conditional name="in_cond">
+        <param name="in" value="AssayGeneratorMetabo_decoy_generation_input.mzML,AssayGeneratorMetabo_decoy_generation_input_2.mzML,AssayGeneratorMetabo_decoy_generation_input_3.mzML"/>
+      </conditional>
+      <conditional name="in_id_cond">
+        <param name="in_id" value="AssayGeneratorMetabo_decoy_generation_input.featureXML,AssayGeneratorMetabo_decoy_generation_input_1.featureXML,AssayGeneratorMetabo_decoy_generation_input_2.featureXML"/>
+      </conditional>
+      <param name="out_type" value="tsv"/>
+      <output name="out" file="AssayGeneratorMetabo_decoy_generation_linking_output_both.tmp.tsv" compare="sim_size" delta_frac="0.7" ftype="tabular"/>
+      <param name="fragment_annotation" value="sirius"/>
+      <param name="ambiguity_resolution_mz_tolerance" value="10.0"/>
+      <param name="ambiguity_resolution_rt_tolerance" value="10.0"/>
+      <param name="total_occurrence_filter" value="0.8"/>
+      <param name="fragment_annotation_score_threshold" value="0.8"/>
+      <param name="decoy_generation" value="true"/>
+      <param name="decoy_generation_method" value="both"/>
+      <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="consensus_spectrum_precursor_rt_tolerance" value="5.0"/>
+      <param name="use_known_unknowns" value="false"/>
+      <param name="min_transitions" value="1"/>
+      <param name="max_transitions" value="6"/>
+      <param name="cosine_similarity_threshold" value="0.98"/>
+      <param name="transition_threshold" value="3.0"/>
+      <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.0"/>
+        <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="project">
+        <param name="processors" value="1"/>
+        <param name="ignore_formula" value="false"/>
+        <param name="q" value="false"/>
+      </section>
+      <section name="sirius">
+        <param name="ppm_max" value="10.0"/>
+        <param name="ppm_max_ms2" value="10.0"/>
+        <param name="tree_timeout" value="0"/>
+        <param name="compound_timeout" value="100"/>
+        <param name="no_recalibration" value="false"/>
+        <param name="profile" value="qtof"/>
+        <param name="formula" value=""/>
+        <param name="ions_enforced" value=""/>
+        <param name="candidates" value="5"/>
+        <param name="candidates_per_ion" value="-1"/>
+        <param name="elements_considered" value=""/>
+        <param name="elements_enforced" value=""/>
+        <param name="no_isotope_score" value="false"/>
+        <param name="no_isotope_filter" value="false"/>
+        <param name="ions_considered" value=""/>
+        <param name="db" value=""/>
+      </section>
+      <section name="fingerid">
+        <param name="candidates" value="10"/>
+        <param name="db" value="BIO"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
+    <!-- UTILS_AssayGeneratorMetabo_18 -->
+    <test expect_num_outputs="2">
+      <section name="adv_opts">
+        <param name="ambiguity_resolution_mz_tolerance_unit" value="Da"/>
+        <param name="precursor_recalibration_window" value="0.01"/>
+        <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"/>
+      </section>
+      <conditional name="in_cond">
+        <param name="in" value="AssayGeneratorMetabo_decoy_generation_input.mzML,AssayGeneratorMetabo_decoy_generation_input_2.mzML,AssayGeneratorMetabo_decoy_generation_input_3.mzML"/>
+      </conditional>
+      <conditional name="in_id_cond">
+        <param name="in_id" value="AssayGeneratorMetabo_decoy_generation_input.featureXML,AssayGeneratorMetabo_decoy_generation_input_1.featureXML,AssayGeneratorMetabo_decoy_generation_input_2.featureXML"/>
+      </conditional>
+      <param name="out_type" value="tsv"/>
+      <output name="out" file="AssayGeneratorMetabo_decoy_generation_linking_moladd_output_both.tmp.tsv" compare="sim_size" delta_frac="0.7" ftype="tabular"/>
+      <param name="fragment_annotation" value="sirius"/>
+      <param name="ambiguity_resolution_mz_tolerance" value="10.0"/>
+      <param name="ambiguity_resolution_rt_tolerance" value="10.0"/>
+      <param name="total_occurrence_filter" value="0.1"/>
+      <param name="fragment_annotation_score_threshold" value="0.8"/>
+      <param name="decoy_generation" value="true"/>
+      <param name="decoy_generation_method" value="both"/>
+      <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="consensus_spectrum_precursor_rt_tolerance" value="5.0"/>
+      <param name="use_known_unknowns" value="false"/>
+      <param name="min_transitions" value="1"/>
+      <param name="max_transitions" value="6"/>
+      <param name="cosine_similarity_threshold" value="0.98"/>
+      <param name="transition_threshold" value="3.0"/>
+      <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.0"/>
+        <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="project">
+        <param name="processors" value="1"/>
+        <param name="ignore_formula" value="false"/>
+        <param name="q" value="false"/>
+      </section>
+      <section name="sirius">
+        <param name="ppm_max" value="10.0"/>
+        <param name="ppm_max_ms2" value="10.0"/>
+        <param name="tree_timeout" value="0"/>
+        <param name="compound_timeout" value="100"/>
+        <param name="no_recalibration" value="false"/>
+        <param name="profile" value="qtof"/>
+        <param name="formula" value=""/>
+        <param name="ions_enforced" value=""/>
+        <param name="candidates" value="5"/>
+        <param name="candidates_per_ion" value="-1"/>
+        <param name="elements_considered" value=""/>
+        <param name="elements_enforced" value=""/>
+        <param name="no_isotope_score" value="false"/>
+        <param name="no_isotope_filter" value="false"/>
+        <param name="ions_considered" value=""/>
+        <param name="db" value=""/>
+      </section>
+      <section name="fingerid">
+        <param name="candidates" value="10"/>
+        <param name="db" value="BIO"/>
+      </section>
+      <param name="OPTIONAL_OUTPUTS" value="ctd_out_FLAG"/>
+      <output name="ctd_out" ftype="xml">
+        <assert_contents>
+          <is_valid_xml/>
+        </assert_contents>
+      </output>
+    </test>
   </tests>
   <help><![CDATA[Assay library generation from DDA data (Metabolomics)
 
 
-For more information, visit http://www.openms.de/doxygen/release/2.6.0/html/UTILS_AssayGeneratorMetabo.html]]></help>
+For more information, visit http://www.openms.de/doxygen/release/2.8.0/html/UTILS_AssayGeneratorMetabo.html]]></help>
   <expand macro="references"/>
 </tool>