changeset 9:df0c77da6c87 draft default tip

planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/openms commit 5c080b1e2b99f1c88f4557e9fec8c45c9d23b906
author galaxyp
date Fri, 14 Jun 2024 21:35:36 +0000
parents e75929491905
children
files CometAdapter.xml fill_ctd_clargs.py generate-foo.sh get_tests.py macros.xml prepare_test_data_manual.sh readme.md test-data.sh
diffstat 8 files changed, 641 insertions(+), 515 deletions(-) [+]
line wrap: on
line diff
--- a/CometAdapter.xml	Thu Dec 01 19:11:13 2022 +0000
+++ b/CometAdapter.xml	Fri Jun 14 21:35:36 2024 +0000
@@ -1,8 +1,7 @@
-<?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: [Identification]-->
+<!--Proposed Tool Section: [Identification of Proteins/Peptides (SearchEngines)]-->
 <tool id="CometAdapter" name="CometAdapter" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="21.05">
-  <description>Annotates MS/MS spectra using Comet.</description>
+  <description>Annotates MS/MS spectra using Comet</description>
   <macros>
     <token name="@EXECUTABLE@">CometAdapter</token>
     <import>macros.xml</import>
@@ -15,16 +14,16 @@
 
 ## Preprocessing
 mkdir in &&
-ln -s '$in' 'in/${re.sub("[^\w\-_]", "_", $in.element_identifier)}.$gxy2omsext($in.ext)' &&
+cp '$in' 'in/${re.sub("[^\w\-_]", "_", $in.element_identifier)}.$gxy2omsext($in.ext)' &&
 mkdir out &&
 mkdir database &&
-ln -s '$database' 'database/${re.sub("[^\w\-_]", "_", $database.element_identifier)}.$gxy2omsext($database.ext)' &&
+cp '$database' 'database/${re.sub("[^\w\-_]", "_", $database.element_identifier)}.$gxy2omsext($database.ext)' &&
 #if "pin_out_FLAG" in str($OPTIONAL_OUTPUTS).split(',')
   mkdir pin_out &&
 #end if
 #if $default_params_file:
   mkdir default_params_file &&
-  ln -s '$default_params_file' 'default_params_file/${re.sub("[^\w\-_]", "_", $default_params_file.element_identifier)}.$gxy2omsext($default_params_file.ext)' &&
+  cp '$default_params_file' 'default_params_file/${re.sub("[^\w\-_]", "_", $default_params_file.element_identifier)}.$gxy2omsext($default_params_file.ext)' &&
 #end if
 
 ## Main program call
@@ -64,17 +63,17 @@
     <configfile name="hardcoded_json"><![CDATA[{"comet_executable": "comet", "log": "log.txt", "threads": "\${GALAXY_SLOTS:-1}", "no_progress": true}]]></configfile>
   </configfiles>
   <inputs>
-    <param argument="-in" type="data" format="mzml" optional="false" label="Input file" help=" select mzml data sets(s)"/>
-    <param argument="-database" type="data" format="fasta" optional="false" label="FASTA file" help=" select fasta data sets(s)"/>
+    <param argument="-in" type="data" format="mzml" label="Input file" help=" select mzml data sets(s)"/>
+    <param argument="-database" type="data" format="fasta" label="FASTA file" help=" select fasta data sets(s)"/>
     <param argument="-default_params_file" type="data" format="txt" optional="true" label="Default Comet params file" help="All parameters of this take precedence. A template file can be generated using 'comet.exe -p' select txt data sets(s)"/>
-    <param argument="-precursor_mass_tolerance" type="float" optional="true" value="10.0" label="Precursor monoisotopic mass tolerance (Comet parameter: peptide_mass_tolerance)" help="See also precursor_error_units to set the unit"/>
-    <param argument="-precursor_error_units" type="select" optional="true" label="Unit of precursor monoisotopic mass tolerance for parameter precursor_mass_tolerance (Comet parameter: peptide_mass_units)" help="">
+    <param argument="-precursor_mass_tolerance" type="float" value="10.0" label="Precursor monoisotopic mass tolerance (Comet parameter: peptide_mass_tolerance)" help="See also precursor_error_units to set the unit"/>
+    <param argument="-precursor_error_units" type="select" label="Unit of precursor monoisotopic mass tolerance for parameter precursor_mass_tolerance (Comet parameter: peptide_mass_units)" help="">
       <option value="amu">amu</option>
       <option value="ppm" selected="true">ppm</option>
       <option value="Da">Da</option>
       <expand macro="list_string_san" name="precursor_error_units"/>
     </param>
-    <param argument="-isotope_error" type="select" optional="true" label="This parameter controls whether the peptide_mass_tolerance takes into account possible isotope errors in the precursor mass measurement" help="Use -8/-4/0/4/8 only for SILAC">
+    <param argument="-isotope_error" type="select" label="This parameter controls whether the peptide_mass_tolerance takes into account possible isotope errors in the precursor mass measurement" help="Use -8/-4/0/4/8 only for SILAC">
       <option value="off" selected="true">off</option>
       <option value="0/1">0/1</option>
       <option value="0/1/2">0/1/2</option>
@@ -83,54 +82,55 @@
       <option value="-1/0/1/2/3">-1/0/1/2/3</option>
       <expand macro="list_string_san" name="isotope_error"/>
     </param>
-    <param argument="-fragment_mass_tolerance" type="float" optional="true" min="0.0001" value="0.01" label="This is half the bin size, which is used to segment the MS/MS spectrum" help="Thus, the value should be a bit higher than for other search engines, since the bin might not be centered around the peak apex (see 'fragment_bin_offset').CAUTION: Low tolerances have heavy impact on RAM usage (since Comet uses a lot of bins in this case). Consider using use_sparse_matrix and/or spectrum_batch_size"/>
-    <param argument="-fragment_error_units" type="select" optional="true" label="Fragment monoisotopic mass error units" help="">
+    <param argument="-fragment_mass_tolerance" type="float" min="0.0001" value="0.01" label="This is half the bin size, which is used to segment the MS/MS spectrum" help="Thus, the value should be a bit higher than for other search engines, since the bin might not be centered around the peak apex (see 'fragment_bin_offset').CAUTION: Low tolerances have heavy impact on RAM usage (since Comet uses a lot of bins in this case). Consider using use_sparse_matrix and/or spectrum_batch_size"/>
+    <param argument="-fragment_error_units" type="select" label="Fragment monoisotopic mass error units" help="">
       <option value="Da" selected="true">Da</option>
       <expand macro="list_string_san" name="fragment_error_units"/>
     </param>
-    <param argument="-fragment_bin_offset" type="float" optional="true" min="0.0" max="1.0" value="0.0" label="Offset of fragment bins" help="Recommended by Comet: low-res: 0.4, high-res: 0.0"/>
-    <param argument="-instrument" type="select" optional="true" label="Comets theoretical_fragment_ions parameter: theoretical fragment ion peak representation, high-res: sum of intensities plus flanking bins, ion trap (low-res) ms/ms: sum of intensities of central M bin only" help="">
+    <param argument="-fragment_bin_offset" type="float" min="0.0" max="1.0" value="0.0" label="Offset of fragment bins" help="Recommended by Comet: low-res: 0.4, high-res: 0.0"/>
+    <param argument="-instrument" type="select" label="Comets theoretical_fragment_ions parameter: theoretical fragment ion peak representation, high-res: sum of intensities plus flanking bins, ion trap (low-res) ms/ms: sum of intensities of central M bin only" help="">
       <option value="low_res">low_res</option>
       <option value="high_res" selected="true">high_res</option>
       <expand macro="list_string_san" name="instrument"/>
     </param>
-    <param argument="-enzyme" type="select" optional="true" label="The enzyme used for peptide digestion" help="">
+    <param argument="-enzyme" type="select" label="The enzyme used for peptide digestion" help="">
+      <option value="Asp-N">Asp-N</option>
+      <option value="glutamyl endopeptidase">glutamyl endopeptidase</option>
+      <option value="Trypsin" selected="true">Trypsin</option>
+      <option value="Arg-C">Arg-C</option>
+      <option value="no cleavage">no cleavage</option>
+      <option value="unspecific cleavage">unspecific cleavage</option>
+      <option value="Chymotrypsin">Chymotrypsin</option>
       <option value="CNBr">CNBr</option>
       <option value="Lys-C">Lys-C</option>
-      <option value="Trypsin" selected="true">Trypsin</option>
-      <option value="Arg-C">Arg-C</option>
-      <option value="Chymotrypsin">Chymotrypsin</option>
-      <option value="Asp-N">Asp-N</option>
-      <option value="unspecific cleavage">unspecific cleavage</option>
       <option value="Lys-N">Lys-N</option>
       <option value="PepsinA">PepsinA</option>
       <option value="Trypsin/P">Trypsin/P</option>
-      <option value="glutamyl endopeptidase">glutamyl endopeptidase</option>
       <expand macro="list_string_san" name="enzyme"/>
     </param>
-    <param argument="-num_enzyme_termini" type="select" optional="true" label="Specify the termini where the cleavage rule has to match" help="">
+    <param argument="-num_enzyme_termini" type="select" label="Specify the termini where the cleavage rule has to match" help="">
       <option value="semi">semi</option>
       <option value="fully" selected="true">fully</option>
       <option value="C-term unspecific">C-term unspecific</option>
       <option value="N-term unspecific">N-term unspecific</option>
       <expand macro="list_string_san" name="num_enzyme_termini"/>
     </param>
-    <param argument="-missed_cleavages" type="integer" optional="true" min="0" max="5" value="1" label="Number of possible cleavage sites missed by the enzyme" help="It has no effect if enzyme is unspecific cleavage"/>
-    <param argument="-min_peptide_length" type="integer" optional="true" min="5" max="63" value="5" label="Minimum peptide length to conside" help=""/>
-    <param argument="-max_peptide_length" type="integer" optional="true" min="5" max="63" value="63" label="Maximum peptide length to conside" help=""/>
-    <param argument="-num_hits" type="integer" optional="true" value="1" label="Number of peptide hits in output file" help=""/>
-    <param argument="-precursor_charge" type="text" optional="true" value="0:0" label="Precursor charge range to search (if spectrum is not annotated with a charge or if override_charge!=keep any known): 0:[num] == search all charges, 2:6 == from +2 to +6, 3:3 == +3" help="">
+    <param argument="-missed_cleavages" type="integer" min="0" max="5" value="1" label="Number of possible cleavage sites missed by the enzyme" help="It has no effect if enzyme is unspecific cleavage"/>
+    <param argument="-min_peptide_length" type="integer" min="5" max="63" value="5" label="Minimum peptide length to conside" help=""/>
+    <param argument="-max_peptide_length" type="integer" min="5" max="63" value="63" label="Maximum peptide length to conside" help=""/>
+    <param argument="-num_hits" type="integer" value="1" label="Number of peptide hits (PSMs) per spectrum in output file" help=""/>
+    <param argument="-precursor_charge" type="text" value="0:0" label="Precursor charge range to search (if spectrum is not annotated with a charge or if override_charge!=keep any known): 0:[num] == search all charges, 2:6 == from +2 to +6, 3:3 == +3" help="">
       <expand macro="list_string_san" name="precursor_charge"/>
     </param>
-    <param argument="-override_charge" type="select" optional="true" label="_keep any known_: keep any precursor charge state (from input), _ignore known_: ignore known precursor charge state and use precursor_charge parameter, _ignore outside range_: ignore precursor charges outside precursor_charge range, _keep known search unknown_: keep any known precursor charge state" help="For unknown charge states, search as singly charged if there is no signal above the precursor m/z or use the precursor_charge range">
+    <param argument="-override_charge" type="select" label="_keep any known_: keep any precursor charge state (from input), _ignore known_: ignore known precursor charge state and use precursor_charge parameter, _ignore outside range_: ignore precursor charges outside precursor_charge range, _keep known search unknown_: keep any known precursor charge state" help="For unknown charge states, search as singly charged if there is no signal above the precursor m/z or use the precursor_charge range">
       <option value="keep any known">keep any known</option>
       <option value="ignore known">ignore known</option>
       <option value="ignore outside range">ignore outside range</option>
       <option value="keep known search unknown" selected="true">keep known search unknown</option>
       <expand macro="list_string_san" name="override_charge"/>
     </param>
-    <param argument="-ms_level" type="integer" optional="true" min="2" max="3" value="2" label="MS level to analyze, valid are levels 2 (default) or 3" help=""/>
-    <param argument="-activation_method" type="select" optional="true" label="If not ALL, only searches spectra of the given method" help="">
+    <param argument="-ms_level" type="integer" min="2" max="3" value="2" label="MS level to analyze, valid are levels 2 (default) or 3" help=""/>
+    <param argument="-activation_method" type="select" label="If not ALL, only searches spectra of the given method" help="">
       <option value="ALL" selected="true">ALL</option>
       <option value="CID">CID</option>
       <option value="ECD">ECD</option>
@@ -140,9 +140,9 @@
       <option value="IRMPD">IRMPD</option>
       <expand macro="list_string_san" name="activation_method"/>
     </param>
-    <param argument="-max_fragment_charge" type="integer" optional="true" min="1" max="5" value="3" label="Set maximum fragment charge state to analyze as long as still lower than precursor charge - 1" help="(Allowed max 5)"/>
+    <param argument="-max_fragment_charge" type="integer" min="1" max="5" value="3" label="Set maximum fragment charge state to analyze as long as still lower than precursor charge - 1" help="(Allowed max 5)"/>
     <param argument="-clip_nterm_methionine" type="boolean" truevalue="true" falsevalue="false" checked="false" label="If set to true, also considers the peptide sequence w/o N-term methionine separately and applies appropriate N-term mods to it" help=""/>
-    <param argument="-fixed_modifications" multiple="true" type="select" optional="true" label="Fixed modifications, specified using Unimod (www.unimod.org) terms" help="e.g. 'Carbamidomethyl (C)' or 'Oxidation (M)'">
+    <param argument="-fixed_modifications" type="select" multiple="true" optional="false" label="Fixed modifications, specified using Unimod (www.unimod.org) terms" help="e.g. 'Carbamidomethyl (C)' or 'Oxidation (M)'">
       <option value="15N-oxobutanoic (N-term C)">15N-oxobutanoic (N-term C)</option>
       <option value="15N-oxobutanoic (Protein N-term S)">15N-oxobutanoic (Protein N-term S)</option>
       <option value="15N-oxobutanoic (Protein N-term T)">15N-oxobutanoic (Protein N-term T)</option>
@@ -152,6 +152,10 @@
       <option value="2-succinyl (C)">2-succinyl (C)</option>
       <option value="2HPG (R)">2HPG (R)</option>
       <option value="3-deoxyglucosone (R)">3-deoxyglucosone (R)</option>
+      <option value="3-hydroxybenzyl-phosphate (K)">3-hydroxybenzyl-phosphate (K)</option>
+      <option value="3-hydroxybenzyl-phosphate (S)">3-hydroxybenzyl-phosphate (S)</option>
+      <option value="3-hydroxybenzyl-phosphate (T)">3-hydroxybenzyl-phosphate (T)</option>
+      <option value="3-hydroxybenzyl-phosphate (Y)">3-hydroxybenzyl-phosphate (Y)</option>
       <option value="3-phosphoglyceryl (K)">3-phosphoglyceryl (K)</option>
       <option value="3sulfo (N-term)">3sulfo (N-term)</option>
       <option value="4-ONE (C)">4-ONE (C)</option>
@@ -241,6 +245,7 @@
       <option value="AMTzHexNAc2 (N)">AMTzHexNAc2 (N)</option>
       <option value="AMTzHexNAc2 (S)">AMTzHexNAc2 (S)</option>
       <option value="AMTzHexNAc2 (T)">AMTzHexNAc2 (T)</option>
+      <option value="Andro-H2O (C)">Andro-H2O (C)</option>
       <option value="Archaeol (C)">Archaeol (C)</option>
       <option value="Arg (N-term)">Arg (N-term)</option>
       <option value="Arg-&gt;Ala (R)">Arg-&gt;Ala (R)</option>
@@ -344,6 +349,7 @@
       <option value="Biotin-phenacyl (H)">Biotin-phenacyl (H)</option>
       <option value="Biotin-phenacyl (S)">Biotin-phenacyl (S)</option>
       <option value="Biotin-tyramide (Y)">Biotin-tyramide (Y)</option>
+      <option value="Biotin:Aha-DADPS (M)">Biotin:Aha-DADPS (M)</option>
       <option value="Biotin:Cayman-10013 (C)">Biotin:Cayman-10013 (C)</option>
       <option value="Biotin:Cayman-10141 (C)">Biotin:Cayman-10141 (C)</option>
       <option value="Biotin:Invitrogen-M1602 (C)">Biotin:Invitrogen-M1602 (C)</option>
@@ -376,7 +382,6 @@
       <option value="BITC (N-term)">BITC (N-term)</option>
       <option value="BMP-piperidinol (C)">BMP-piperidinol (C)</option>
       <option value="BMP-piperidinol (M)">BMP-piperidinol (M)</option>
-      <option value="Bodipy (C)">Bodipy (C)</option>
       <option value="Brij35 (N-term)">Brij35 (N-term)</option>
       <option value="Brij58 (N-term)">Brij58 (N-term)</option>
       <option value="Bromo (F)">Bromo (F)</option>
@@ -808,9 +813,9 @@
       <option value="Dehydrated (T)">Dehydrated (T)</option>
       <option value="Dehydrated (Y)">Dehydrated (Y)</option>
       <option value="Dehydro (C)">Dehydro (C)</option>
+      <option value="Delta:H(-1)N(-1)18O(1) (N)">Delta:H(-1)N(-1)18O(1) (N)</option>
       <option value="Delta:H(-4)O(2) (W)">Delta:H(-4)O(2) (W)</option>
       <option value="Delta:H(-4)O(3) (W)">Delta:H(-4)O(3) (W)</option>
-      <option value="Delta:H(1)N(-1)18O(1) (N)">Delta:H(1)N(-1)18O(1) (N)</option>
       <option value="Delta:H(10)C(8)O(1) (K)">Delta:H(10)C(8)O(1) (K)</option>
       <option value="Delta:H(2)C(2) (H)">Delta:H(2)C(2) (H)</option>
       <option value="Delta:H(2)C(2) (K)">Delta:H(2)C(2) (K)</option>
@@ -820,7 +825,6 @@
       <option value="Delta:H(2)C(3)O(1) (K)">Delta:H(2)C(3)O(1) (K)</option>
       <option value="Delta:H(2)C(3)O(1) (R)">Delta:H(2)C(3)O(1) (R)</option>
       <option value="Delta:H(2)C(5) (K)">Delta:H(2)C(5) (K)</option>
-      <option value="Delta:H(3)C(3)O(2) (K)">Delta:H(3)C(3)O(2) (K)</option>
       <option value="Delta:H(4)C(2) (H)">Delta:H(4)C(2) (H)</option>
       <option value="Delta:H(4)C(2) (K)">Delta:H(4)C(2) (K)</option>
       <option value="Delta:H(4)C(2) (N-term)">Delta:H(4)C(2) (N-term)</option>
@@ -832,6 +836,7 @@
       <option value="Delta:H(4)C(3)O(1) (H)">Delta:H(4)C(3)O(1) (H)</option>
       <option value="Delta:H(4)C(3)O(1) (K)">Delta:H(4)C(3)O(1) (K)</option>
       <option value="Delta:H(4)C(3)O(1) (R)">Delta:H(4)C(3)O(1) (R)</option>
+      <option value="Delta:H(4)C(3)O(2) (K)">Delta:H(4)C(3)O(2) (K)</option>
       <option value="Delta:H(4)C(5)O(1) (R)">Delta:H(4)C(5)O(1) (R)</option>
       <option value="Delta:H(4)C(6) (K)">Delta:H(4)C(6) (K)</option>
       <option value="Delta:H(5)C(2) (P)">Delta:H(5)C(2) (P)</option>
@@ -1404,7 +1409,6 @@
       <option value="Ethanolyl (C)">Ethanolyl (C)</option>
       <option value="Ethanolyl (K)">Ethanolyl (K)</option>
       <option value="Ethanolyl (R)">Ethanolyl (R)</option>
-      <option value="Ethoxyformyl (H)">Ethoxyformyl (H)</option>
       <option value="Ethyl (C-term)">Ethyl (C-term)</option>
       <option value="Ethyl (D)">Ethyl (D)</option>
       <option value="Ethyl (E)">Ethyl (E)</option>
@@ -1498,6 +1502,7 @@
       <option value="Gln-&gt;Xle (Q)">Gln-&gt;Xle (Q)</option>
       <option value="Glu (E)">Glu (E)</option>
       <option value="Glu (Protein C-term)">Glu (Protein C-term)</option>
+      <option value="Glu+O(2) (H)">Glu+O(2) (H)</option>
       <option value="Glu-&gt;Ala (E)">Glu-&gt;Ala (E)</option>
       <option value="Glu-&gt;Arg (E)">Glu-&gt;Arg (E)</option>
       <option value="Glu-&gt;Asn (E)">Glu-&gt;Asn (E)</option>
@@ -1512,7 +1517,6 @@
       <option value="Glu-&gt;Pro (E)">Glu-&gt;Pro (E)</option>
       <option value="Glu-&gt;pyro-Glu (N-term E)">Glu-&gt;pyro-Glu (N-term E)</option>
       <option value="Glu-&gt;pyro-Glu+Methyl (N-term E)">Glu-&gt;pyro-Glu+Methyl (N-term E)</option>
-      <option value="Glu-&gt;pyro-Glu+Methyl:2H(2)13C (N-term E)">Glu-&gt;pyro-Glu+Methyl:2H(2)13C (N-term E)</option>
       <option value="Glu-&gt;pyro-Glu+Methyl:2H(2)13C(1) (N-term E)">Glu-&gt;pyro-Glu+Methyl:2H(2)13C(1) (N-term E)</option>
       <option value="Glu-&gt;Ser (E)">Glu-&gt;Ser (E)</option>
       <option value="Glu-&gt;Thr (E)">Glu-&gt;Thr (E)</option>
@@ -1536,6 +1540,7 @@
       <option value="Gly (K)">Gly (K)</option>
       <option value="Gly (S)">Gly (S)</option>
       <option value="Gly (T)">Gly (T)</option>
+      <option value="Gly+O(2) (H)">Gly+O(2) (H)</option>
       <option value="Gly-&gt;Ala (G)">Gly-&gt;Ala (G)</option>
       <option value="Gly-&gt;Arg (G)">Gly-&gt;Arg (G)</option>
       <option value="Gly-&gt;Asn (G)">Gly-&gt;Asn (G)</option>
@@ -1926,6 +1931,7 @@
       <option value="Hex(6)HexNAc(4)Me(3) (N)">Hex(6)HexNAc(4)Me(3) (N)</option>
       <option value="Hex(6)HexNAc(4)Me(3)Pent(1) (N)">Hex(6)HexNAc(4)Me(3)Pent(1) (N)</option>
       <option value="Hex(6)HexNAc(5) (N)">Hex(6)HexNAc(5) (N)</option>
+      <option value="Hex(6)HexNAc(5)NeuAc(3) (N)">Hex(6)HexNAc(5)NeuAc(3) (N)</option>
       <option value="Hex(6)Phos(1) (S)">Hex(6)Phos(1) (S)</option>
       <option value="Hex(6)Phos(1) (T)">Hex(6)Phos(1) (T)</option>
       <option value="Hex(6)Phos(3) (S)">Hex(6)Phos(3) (S)</option>
@@ -1937,6 +1943,9 @@
       <option value="Hex(7)HexNAc(3) (N)">Hex(7)HexNAc(3) (N)</option>
       <option value="Hex(7)HexNAc(3)Phos(1) (N)">Hex(7)HexNAc(3)Phos(1) (N)</option>
       <option value="Hex(7)HexNAc(4) (N)">Hex(7)HexNAc(4) (N)</option>
+      <option value="Hex(7)HexNAc(6) (N)">Hex(7)HexNAc(6) (N)</option>
+      <option value="Hex(7)HexNAc(6) (S)">Hex(7)HexNAc(6) (S)</option>
+      <option value="Hex(7)HexNAc(6) (T)">Hex(7)HexNAc(6) (T)</option>
       <option value="Hex(7)Phos(3) (S)">Hex(7)Phos(3) (S)</option>
       <option value="Hex(7)Phos(3) (T)">Hex(7)Phos(3) (T)</option>
       <option value="Hex(8)HexNAc(1) (N)">Hex(8)HexNAc(1) (N)</option>
@@ -1992,6 +2001,7 @@
       <option value="HexNAc(4) (T)">HexNAc(4) (T)</option>
       <option value="HexNAc(5) (S)">HexNAc(5) (S)</option>
       <option value="HexNAc(5) (T)">HexNAc(5) (T)</option>
+      <option value="His+O(2) (H)">His+O(2) (H)</option>
       <option value="His-&gt;Ala (H)">His-&gt;Ala (H)</option>
       <option value="His-&gt;Arg (H)">His-&gt;Arg (H)</option>
       <option value="His-&gt;Asn (H)">His-&gt;Asn (H)</option>
@@ -2129,11 +2139,14 @@
       <option value="iTRAQ8plex:13C(6)15N(2) (K)">iTRAQ8plex:13C(6)15N(2) (K)</option>
       <option value="iTRAQ8plex:13C(6)15N(2) (N-term)">iTRAQ8plex:13C(6)15N(2) (N-term)</option>
       <option value="iTRAQ8plex:13C(6)15N(2) (Y)">iTRAQ8plex:13C(6)15N(2) (Y)</option>
+      <option value="Kdo (S)">Kdo (S)</option>
+      <option value="Kdo (T)">Kdo (T)</option>
       <option value="Label:13C(1)2H(3) (M)">Label:13C(1)2H(3) (M)</option>
       <option value="Label:13C(1)2H(3)+Oxidation (M)">Label:13C(1)2H(3)+Oxidation (M)</option>
       <option value="Label:13C(2)15N(2) (K)">Label:13C(2)15N(2) (K)</option>
       <option value="Label:13C(3) (A)">Label:13C(3) (A)</option>
       <option value="Label:13C(3)15N(1) (A)">Label:13C(3)15N(1) (A)</option>
+      <option value="Label:13C(3)15N(1) (S)">Label:13C(3)15N(1) (S)</option>
       <option value="Label:13C(4) (M)">Label:13C(4) (M)</option>
       <option value="Label:13C(4)+Oxidation (M)">Label:13C(4)+Oxidation (M)</option>
       <option value="Label:13C(4)15N(1) (D)">Label:13C(4)15N(1) (D)</option>
@@ -2218,13 +2231,16 @@
       <option value="LG-lactam-K (K)">LG-lactam-K (K)</option>
       <option value="LG-lactam-K (Protein N-term)">LG-lactam-K (Protein N-term)</option>
       <option value="LG-lactam-R (R)">LG-lactam-R (R)</option>
+      <option value="LG-pyrrole (C)">LG-pyrrole (C)</option>
       <option value="LG-pyrrole (K)">LG-pyrrole (K)</option>
       <option value="LG-pyrrole (N-term)">LG-pyrrole (N-term)</option>
       <option value="Lipoyl (K)">Lipoyl (K)</option>
       <option value="LRGG (K)">LRGG (K)</option>
       <option value="LRGG+dimethyl (K)">LRGG+dimethyl (K)</option>
       <option value="LRGG+methyl (K)">LRGG+methyl (K)</option>
+      <option value="LTX+Lophotoxin (Y)">LTX+Lophotoxin (Y)</option>
       <option value="Lys (N-term)">Lys (N-term)</option>
+      <option value="Lys+O(2) (H)">Lys+O(2) (H)</option>
       <option value="Lys-&gt;Ala (K)">Lys-&gt;Ala (K)</option>
       <option value="Lys-&gt;Allysine (K)">Lys-&gt;Allysine (K)</option>
       <option value="Lys-&gt;AminoadipicAcid (K)">Lys-&gt;AminoadipicAcid (K)</option>
@@ -2259,6 +2275,7 @@
       <option value="Malonyl (C)">Malonyl (C)</option>
       <option value="Malonyl (K)">Malonyl (K)</option>
       <option value="Malonyl (S)">Malonyl (S)</option>
+      <option value="MBS+peptide (C)">MBS+peptide (C)</option>
       <option value="MDCC (C)">MDCC (C)</option>
       <option value="MeMePhosphorothioate (S)">MeMePhosphorothioate (S)</option>
       <option value="Menadione (C)">Menadione (C)</option>
@@ -2270,6 +2287,7 @@
       <option value="MesitylOxide (H)">MesitylOxide (H)</option>
       <option value="MesitylOxide (K)">MesitylOxide (K)</option>
       <option value="MesitylOxide (Protein N-term)">MesitylOxide (Protein N-term)</option>
+      <option value="Met+O(2) (H)">Met+O(2) (H)</option>
       <option value="Met-&gt;Aha (M)">Met-&gt;Aha (M)</option>
       <option value="Met-&gt;Ala (M)">Met-&gt;Ala (M)</option>
       <option value="Met-&gt;Arg (M)">Met-&gt;Arg (M)</option>
@@ -2453,7 +2471,6 @@
       <option value="Nmethylmaleimide+water (C)">Nmethylmaleimide+water (C)</option>
       <option value="NO_SMX_SEMD (C)">NO_SMX_SEMD (C)</option>
       <option value="NO_SMX_SIMD (C)">NO_SMX_SIMD (C)</option>
-      <option value="NO_SMX_SMCT (C)">NO_SMX_SMCT (C)</option>
       <option value="NP40 (N-term)">NP40 (N-term)</option>
       <option value="NQIGG (K)">NQIGG (K)</option>
       <option value="O-Dimethylphosphate (S)">O-Dimethylphosphate (S)</option>
@@ -2541,6 +2558,10 @@
       <option value="Phe-&gt;Tyr (F)">Phe-&gt;Tyr (F)</option>
       <option value="Phe-&gt;Val (F)">Phe-&gt;Val (F)</option>
       <option value="Phe-&gt;Xle (F)">Phe-&gt;Xle (F)</option>
+      <option value="phenyl-phosphate (K)">phenyl-phosphate (K)</option>
+      <option value="phenyl-phosphate (S)">phenyl-phosphate (S)</option>
+      <option value="phenyl-phosphate (T)">phenyl-phosphate (T)</option>
+      <option value="phenyl-phosphate (Y)">phenyl-phosphate (Y)</option>
       <option value="Phenylisocyanate (N-term)">Phenylisocyanate (N-term)</option>
       <option value="Phenylisocyanate:2H(5) (N-term)">Phenylisocyanate:2H(5) (N-term)</option>
       <option value="phenylsulfonylethyl (C)">phenylsulfonylethyl (C)</option>
@@ -2555,6 +2576,7 @@
       <option value="Phospho (Y)">Phospho (Y)</option>
       <option value="Phosphoadenosine (H)">Phosphoadenosine (H)</option>
       <option value="Phosphoadenosine (K)">Phosphoadenosine (K)</option>
+      <option value="Phosphoadenosine (S)">Phosphoadenosine (S)</option>
       <option value="Phosphoadenosine (T)">Phosphoadenosine (T)</option>
       <option value="Phosphoadenosine (Y)">Phosphoadenosine (Y)</option>
       <option value="PhosphoCytidine (S)">PhosphoCytidine (S)</option>
@@ -2586,6 +2608,7 @@
       <option value="Phytochromobilin (C)">Phytochromobilin (C)</option>
       <option value="Piperidine (K)">Piperidine (K)</option>
       <option value="Piperidine (N-term)">Piperidine (N-term)</option>
+      <option value="Pro+O(2) (H)">Pro+O(2) (H)</option>
       <option value="Pro-&gt;Ala (P)">Pro-&gt;Ala (P)</option>
       <option value="Pro-&gt;Arg (P)">Pro-&gt;Arg (P)</option>
       <option value="Pro-&gt;Asn (P)">Pro-&gt;Asn (P)</option>
@@ -2663,18 +2686,30 @@
       <option value="QTGG (K)">QTGG (K)</option>
       <option value="Quinone (W)">Quinone (W)</option>
       <option value="Quinone (Y)">Quinone (Y)</option>
+      <option value="RBS-ID_Uridine (A)">RBS-ID_Uridine (A)</option>
+      <option value="RBS-ID_Uridine (C)">RBS-ID_Uridine (C)</option>
+      <option value="RBS-ID_Uridine (D)">RBS-ID_Uridine (D)</option>
+      <option value="RBS-ID_Uridine (E)">RBS-ID_Uridine (E)</option>
+      <option value="RBS-ID_Uridine (F)">RBS-ID_Uridine (F)</option>
+      <option value="RBS-ID_Uridine (G)">RBS-ID_Uridine (G)</option>
+      <option value="RBS-ID_Uridine (H)">RBS-ID_Uridine (H)</option>
+      <option value="RBS-ID_Uridine (I)">RBS-ID_Uridine (I)</option>
+      <option value="RBS-ID_Uridine (K)">RBS-ID_Uridine (K)</option>
+      <option value="RBS-ID_Uridine (L)">RBS-ID_Uridine (L)</option>
+      <option value="RBS-ID_Uridine (M)">RBS-ID_Uridine (M)</option>
+      <option value="RBS-ID_Uridine (N)">RBS-ID_Uridine (N)</option>
+      <option value="RBS-ID_Uridine (P)">RBS-ID_Uridine (P)</option>
+      <option value="RBS-ID_Uridine (Q)">RBS-ID_Uridine (Q)</option>
+      <option value="RBS-ID_Uridine (R)">RBS-ID_Uridine (R)</option>
+      <option value="RBS-ID_Uridine (S)">RBS-ID_Uridine (S)</option>
+      <option value="RBS-ID_Uridine (T)">RBS-ID_Uridine (T)</option>
+      <option value="RBS-ID_Uridine (V)">RBS-ID_Uridine (V)</option>
+      <option value="RBS-ID_Uridine (W)">RBS-ID_Uridine (W)</option>
+      <option value="RBS-ID_Uridine (Y)">RBS-ID_Uridine (Y)</option>
       <option value="Retinylidene (K)">Retinylidene (K)</option>
       <option value="RNPXL (N-term K)">RNPXL (N-term K)</option>
       <option value="RNPXL (N-term R)">RNPXL (N-term R)</option>
       <option value="RNPXlink1 (C)">RNPXlink1 (C)</option>
-      <option value="RNPXlink2 (F)">RNPXlink2 (F)</option>
-      <option value="RNPXlink2 (K)">RNPXlink2 (K)</option>
-      <option value="RNPXlink2 (L)">RNPXlink2 (L)</option>
-      <option value="RNPXlink3 (C)">RNPXlink3 (C)</option>
-      <option value="RNPXlink3 (F)">RNPXlink3 (F)</option>
-      <option value="RNPXlink4 (C)">RNPXlink4 (C)</option>
-      <option value="RNPXlink5 (F)">RNPXlink5 (F)</option>
-      <option value="RNPXlink5 (Y)">RNPXlink5 (Y)</option>
       <option value="s-GlcNAc (S)">s-GlcNAc (S)</option>
       <option value="s-GlcNAc (T)">s-GlcNAc (T)</option>
       <option value="Saligenin (H)">Saligenin (H)</option>
@@ -2702,6 +2737,9 @@
       <option value="shTMT (K)">shTMT (K)</option>
       <option value="shTMT (N-term)">shTMT (N-term)</option>
       <option value="shTMT (Protein N-term)">shTMT (Protein N-term)</option>
+      <option value="shTMTpro (K)">shTMTpro (K)</option>
+      <option value="shTMTpro (N-term)">shTMTpro (N-term)</option>
+      <option value="shTMTpro (Protein N-term)">shTMTpro (Protein N-term)</option>
       <option value="SMA (K)">SMA (K)</option>
       <option value="SMA (N-term)">SMA (N-term)</option>
       <option value="spermidine (Q)">spermidine (Q)</option>
@@ -2877,7 +2915,6 @@
       <option value="Tyr-&gt;Trp (Y)">Tyr-&gt;Trp (Y)</option>
       <option value="Tyr-&gt;Val (Y)">Tyr-&gt;Val (Y)</option>
       <option value="Tyr-&gt;Xle (Y)">Tyr-&gt;Xle (Y)</option>
-      <option value="Ub-amide (C)">Ub-amide (C)</option>
       <option value="Ub-Br2 (C)">Ub-Br2 (C)</option>
       <option value="Ub-fluorescein (C)">Ub-fluorescein (C)</option>
       <option value="Ub-VME (C)">Ub-VME (C)</option>
@@ -3072,7 +3109,7 @@
       <option value="ZQG (K)">ZQG (K)</option>
       <expand macro="list_string_san" name="fixed_modifications"/>
     </param>
-    <param argument="-variable_modifications" multiple="true" type="select" optional="true" label="Variable modifications, specified using Unimod (www.unimod.org) terms" help="e.g. 'Carbamidomethyl (C)' or 'Oxidation (M)'">
+    <param argument="-variable_modifications" type="select" multiple="true" optional="false" label="Variable modifications, specified using Unimod (www.unimod.org) terms" help="e.g. 'Carbamidomethyl (C)' or 'Oxidation (M)'">
       <option value="15N-oxobutanoic (N-term C)">15N-oxobutanoic (N-term C)</option>
       <option value="15N-oxobutanoic (Protein N-term S)">15N-oxobutanoic (Protein N-term S)</option>
       <option value="15N-oxobutanoic (Protein N-term T)">15N-oxobutanoic (Protein N-term T)</option>
@@ -3082,6 +3119,10 @@
       <option value="2-succinyl (C)">2-succinyl (C)</option>
       <option value="2HPG (R)">2HPG (R)</option>
       <option value="3-deoxyglucosone (R)">3-deoxyglucosone (R)</option>
+      <option value="3-hydroxybenzyl-phosphate (K)">3-hydroxybenzyl-phosphate (K)</option>
+      <option value="3-hydroxybenzyl-phosphate (S)">3-hydroxybenzyl-phosphate (S)</option>
+      <option value="3-hydroxybenzyl-phosphate (T)">3-hydroxybenzyl-phosphate (T)</option>
+      <option value="3-hydroxybenzyl-phosphate (Y)">3-hydroxybenzyl-phosphate (Y)</option>
       <option value="3-phosphoglyceryl (K)">3-phosphoglyceryl (K)</option>
       <option value="3sulfo (N-term)">3sulfo (N-term)</option>
       <option value="4-ONE (C)">4-ONE (C)</option>
@@ -3171,6 +3212,7 @@
       <option value="AMTzHexNAc2 (N)">AMTzHexNAc2 (N)</option>
       <option value="AMTzHexNAc2 (S)">AMTzHexNAc2 (S)</option>
       <option value="AMTzHexNAc2 (T)">AMTzHexNAc2 (T)</option>
+      <option value="Andro-H2O (C)">Andro-H2O (C)</option>
       <option value="Archaeol (C)">Archaeol (C)</option>
       <option value="Arg (N-term)">Arg (N-term)</option>
       <option value="Arg-&gt;Ala (R)">Arg-&gt;Ala (R)</option>
@@ -3274,6 +3316,7 @@
       <option value="Biotin-phenacyl (H)">Biotin-phenacyl (H)</option>
       <option value="Biotin-phenacyl (S)">Biotin-phenacyl (S)</option>
       <option value="Biotin-tyramide (Y)">Biotin-tyramide (Y)</option>
+      <option value="Biotin:Aha-DADPS (M)">Biotin:Aha-DADPS (M)</option>
       <option value="Biotin:Cayman-10013 (C)">Biotin:Cayman-10013 (C)</option>
       <option value="Biotin:Cayman-10141 (C)">Biotin:Cayman-10141 (C)</option>
       <option value="Biotin:Invitrogen-M1602 (C)">Biotin:Invitrogen-M1602 (C)</option>
@@ -3306,7 +3349,6 @@
       <option value="BITC (N-term)">BITC (N-term)</option>
       <option value="BMP-piperidinol (C)">BMP-piperidinol (C)</option>
       <option value="BMP-piperidinol (M)">BMP-piperidinol (M)</option>
-      <option value="Bodipy (C)">Bodipy (C)</option>
       <option value="Brij35 (N-term)">Brij35 (N-term)</option>
       <option value="Brij58 (N-term)">Brij58 (N-term)</option>
       <option value="Bromo (F)">Bromo (F)</option>
@@ -3738,9 +3780,9 @@
       <option value="Dehydrated (T)">Dehydrated (T)</option>
       <option value="Dehydrated (Y)">Dehydrated (Y)</option>
       <option value="Dehydro (C)">Dehydro (C)</option>
+      <option value="Delta:H(-1)N(-1)18O(1) (N)">Delta:H(-1)N(-1)18O(1) (N)</option>
       <option value="Delta:H(-4)O(2) (W)">Delta:H(-4)O(2) (W)</option>
       <option value="Delta:H(-4)O(3) (W)">Delta:H(-4)O(3) (W)</option>
-      <option value="Delta:H(1)N(-1)18O(1) (N)">Delta:H(1)N(-1)18O(1) (N)</option>
       <option value="Delta:H(10)C(8)O(1) (K)">Delta:H(10)C(8)O(1) (K)</option>
       <option value="Delta:H(2)C(2) (H)">Delta:H(2)C(2) (H)</option>
       <option value="Delta:H(2)C(2) (K)">Delta:H(2)C(2) (K)</option>
@@ -3750,7 +3792,6 @@
       <option value="Delta:H(2)C(3)O(1) (K)">Delta:H(2)C(3)O(1) (K)</option>
       <option value="Delta:H(2)C(3)O(1) (R)">Delta:H(2)C(3)O(1) (R)</option>
       <option value="Delta:H(2)C(5) (K)">Delta:H(2)C(5) (K)</option>
-      <option value="Delta:H(3)C(3)O(2) (K)">Delta:H(3)C(3)O(2) (K)</option>
       <option value="Delta:H(4)C(2) (H)">Delta:H(4)C(2) (H)</option>
       <option value="Delta:H(4)C(2) (K)">Delta:H(4)C(2) (K)</option>
       <option value="Delta:H(4)C(2) (N-term)">Delta:H(4)C(2) (N-term)</option>
@@ -3762,6 +3803,7 @@
       <option value="Delta:H(4)C(3)O(1) (H)">Delta:H(4)C(3)O(1) (H)</option>
       <option value="Delta:H(4)C(3)O(1) (K)">Delta:H(4)C(3)O(1) (K)</option>
       <option value="Delta:H(4)C(3)O(1) (R)">Delta:H(4)C(3)O(1) (R)</option>
+      <option value="Delta:H(4)C(3)O(2) (K)">Delta:H(4)C(3)O(2) (K)</option>
       <option value="Delta:H(4)C(5)O(1) (R)">Delta:H(4)C(5)O(1) (R)</option>
       <option value="Delta:H(4)C(6) (K)">Delta:H(4)C(6) (K)</option>
       <option value="Delta:H(5)C(2) (P)">Delta:H(5)C(2) (P)</option>
@@ -4334,7 +4376,6 @@
       <option value="Ethanolyl (C)">Ethanolyl (C)</option>
       <option value="Ethanolyl (K)">Ethanolyl (K)</option>
       <option value="Ethanolyl (R)">Ethanolyl (R)</option>
-      <option value="Ethoxyformyl (H)">Ethoxyformyl (H)</option>
       <option value="Ethyl (C-term)">Ethyl (C-term)</option>
       <option value="Ethyl (D)">Ethyl (D)</option>
       <option value="Ethyl (E)">Ethyl (E)</option>
@@ -4428,6 +4469,7 @@
       <option value="Gln-&gt;Xle (Q)">Gln-&gt;Xle (Q)</option>
       <option value="Glu (E)">Glu (E)</option>
       <option value="Glu (Protein C-term)">Glu (Protein C-term)</option>
+      <option value="Glu+O(2) (H)">Glu+O(2) (H)</option>
       <option value="Glu-&gt;Ala (E)">Glu-&gt;Ala (E)</option>
       <option value="Glu-&gt;Arg (E)">Glu-&gt;Arg (E)</option>
       <option value="Glu-&gt;Asn (E)">Glu-&gt;Asn (E)</option>
@@ -4442,7 +4484,6 @@
       <option value="Glu-&gt;Pro (E)">Glu-&gt;Pro (E)</option>
       <option value="Glu-&gt;pyro-Glu (N-term E)">Glu-&gt;pyro-Glu (N-term E)</option>
       <option value="Glu-&gt;pyro-Glu+Methyl (N-term E)">Glu-&gt;pyro-Glu+Methyl (N-term E)</option>
-      <option value="Glu-&gt;pyro-Glu+Methyl:2H(2)13C (N-term E)">Glu-&gt;pyro-Glu+Methyl:2H(2)13C (N-term E)</option>
       <option value="Glu-&gt;pyro-Glu+Methyl:2H(2)13C(1) (N-term E)">Glu-&gt;pyro-Glu+Methyl:2H(2)13C(1) (N-term E)</option>
       <option value="Glu-&gt;Ser (E)">Glu-&gt;Ser (E)</option>
       <option value="Glu-&gt;Thr (E)">Glu-&gt;Thr (E)</option>
@@ -4466,6 +4507,7 @@
       <option value="Gly (K)">Gly (K)</option>
       <option value="Gly (S)">Gly (S)</option>
       <option value="Gly (T)">Gly (T)</option>
+      <option value="Gly+O(2) (H)">Gly+O(2) (H)</option>
       <option value="Gly-&gt;Ala (G)">Gly-&gt;Ala (G)</option>
       <option value="Gly-&gt;Arg (G)">Gly-&gt;Arg (G)</option>
       <option value="Gly-&gt;Asn (G)">Gly-&gt;Asn (G)</option>
@@ -4856,6 +4898,7 @@
       <option value="Hex(6)HexNAc(4)Me(3) (N)">Hex(6)HexNAc(4)Me(3) (N)</option>
       <option value="Hex(6)HexNAc(4)Me(3)Pent(1) (N)">Hex(6)HexNAc(4)Me(3)Pent(1) (N)</option>
       <option value="Hex(6)HexNAc(5) (N)">Hex(6)HexNAc(5) (N)</option>
+      <option value="Hex(6)HexNAc(5)NeuAc(3) (N)">Hex(6)HexNAc(5)NeuAc(3) (N)</option>
       <option value="Hex(6)Phos(1) (S)">Hex(6)Phos(1) (S)</option>
       <option value="Hex(6)Phos(1) (T)">Hex(6)Phos(1) (T)</option>
       <option value="Hex(6)Phos(3) (S)">Hex(6)Phos(3) (S)</option>
@@ -4867,6 +4910,9 @@
       <option value="Hex(7)HexNAc(3) (N)">Hex(7)HexNAc(3) (N)</option>
       <option value="Hex(7)HexNAc(3)Phos(1) (N)">Hex(7)HexNAc(3)Phos(1) (N)</option>
       <option value="Hex(7)HexNAc(4) (N)">Hex(7)HexNAc(4) (N)</option>
+      <option value="Hex(7)HexNAc(6) (N)">Hex(7)HexNAc(6) (N)</option>
+      <option value="Hex(7)HexNAc(6) (S)">Hex(7)HexNAc(6) (S)</option>
+      <option value="Hex(7)HexNAc(6) (T)">Hex(7)HexNAc(6) (T)</option>
       <option value="Hex(7)Phos(3) (S)">Hex(7)Phos(3) (S)</option>
       <option value="Hex(7)Phos(3) (T)">Hex(7)Phos(3) (T)</option>
       <option value="Hex(8)HexNAc(1) (N)">Hex(8)HexNAc(1) (N)</option>
@@ -4922,6 +4968,7 @@
       <option value="HexNAc(4) (T)">HexNAc(4) (T)</option>
       <option value="HexNAc(5) (S)">HexNAc(5) (S)</option>
       <option value="HexNAc(5) (T)">HexNAc(5) (T)</option>
+      <option value="His+O(2) (H)">His+O(2) (H)</option>
       <option value="His-&gt;Ala (H)">His-&gt;Ala (H)</option>
       <option value="His-&gt;Arg (H)">His-&gt;Arg (H)</option>
       <option value="His-&gt;Asn (H)">His-&gt;Asn (H)</option>
@@ -5059,11 +5106,14 @@
       <option value="iTRAQ8plex:13C(6)15N(2) (K)">iTRAQ8plex:13C(6)15N(2) (K)</option>
       <option value="iTRAQ8plex:13C(6)15N(2) (N-term)">iTRAQ8plex:13C(6)15N(2) (N-term)</option>
       <option value="iTRAQ8plex:13C(6)15N(2) (Y)">iTRAQ8plex:13C(6)15N(2) (Y)</option>
+      <option value="Kdo (S)">Kdo (S)</option>
+      <option value="Kdo (T)">Kdo (T)</option>
       <option value="Label:13C(1)2H(3) (M)">Label:13C(1)2H(3) (M)</option>
       <option value="Label:13C(1)2H(3)+Oxidation (M)">Label:13C(1)2H(3)+Oxidation (M)</option>
       <option value="Label:13C(2)15N(2) (K)">Label:13C(2)15N(2) (K)</option>
       <option value="Label:13C(3) (A)">Label:13C(3) (A)</option>
       <option value="Label:13C(3)15N(1) (A)">Label:13C(3)15N(1) (A)</option>
+      <option value="Label:13C(3)15N(1) (S)">Label:13C(3)15N(1) (S)</option>
       <option value="Label:13C(4) (M)">Label:13C(4) (M)</option>
       <option value="Label:13C(4)+Oxidation (M)">Label:13C(4)+Oxidation (M)</option>
       <option value="Label:13C(4)15N(1) (D)">Label:13C(4)15N(1) (D)</option>
@@ -5148,13 +5198,16 @@
       <option value="LG-lactam-K (K)">LG-lactam-K (K)</option>
       <option value="LG-lactam-K (Protein N-term)">LG-lactam-K (Protein N-term)</option>
       <option value="LG-lactam-R (R)">LG-lactam-R (R)</option>
+      <option value="LG-pyrrole (C)">LG-pyrrole (C)</option>
       <option value="LG-pyrrole (K)">LG-pyrrole (K)</option>
       <option value="LG-pyrrole (N-term)">LG-pyrrole (N-term)</option>
       <option value="Lipoyl (K)">Lipoyl (K)</option>
       <option value="LRGG (K)">LRGG (K)</option>
       <option value="LRGG+dimethyl (K)">LRGG+dimethyl (K)</option>
       <option value="LRGG+methyl (K)">LRGG+methyl (K)</option>
+      <option value="LTX+Lophotoxin (Y)">LTX+Lophotoxin (Y)</option>
       <option value="Lys (N-term)">Lys (N-term)</option>
+      <option value="Lys+O(2) (H)">Lys+O(2) (H)</option>
       <option value="Lys-&gt;Ala (K)">Lys-&gt;Ala (K)</option>
       <option value="Lys-&gt;Allysine (K)">Lys-&gt;Allysine (K)</option>
       <option value="Lys-&gt;AminoadipicAcid (K)">Lys-&gt;AminoadipicAcid (K)</option>
@@ -5189,6 +5242,7 @@
       <option value="Malonyl (C)">Malonyl (C)</option>
       <option value="Malonyl (K)">Malonyl (K)</option>
       <option value="Malonyl (S)">Malonyl (S)</option>
+      <option value="MBS+peptide (C)">MBS+peptide (C)</option>
       <option value="MDCC (C)">MDCC (C)</option>
       <option value="MeMePhosphorothioate (S)">MeMePhosphorothioate (S)</option>
       <option value="Menadione (C)">Menadione (C)</option>
@@ -5200,6 +5254,7 @@
       <option value="MesitylOxide (H)">MesitylOxide (H)</option>
       <option value="MesitylOxide (K)">MesitylOxide (K)</option>
       <option value="MesitylOxide (Protein N-term)">MesitylOxide (Protein N-term)</option>
+      <option value="Met+O(2) (H)">Met+O(2) (H)</option>
       <option value="Met-&gt;Aha (M)">Met-&gt;Aha (M)</option>
       <option value="Met-&gt;Ala (M)">Met-&gt;Ala (M)</option>
       <option value="Met-&gt;Arg (M)">Met-&gt;Arg (M)</option>
@@ -5383,7 +5438,6 @@
       <option value="Nmethylmaleimide+water (C)">Nmethylmaleimide+water (C)</option>
       <option value="NO_SMX_SEMD (C)">NO_SMX_SEMD (C)</option>
       <option value="NO_SMX_SIMD (C)">NO_SMX_SIMD (C)</option>
-      <option value="NO_SMX_SMCT (C)">NO_SMX_SMCT (C)</option>
       <option value="NP40 (N-term)">NP40 (N-term)</option>
       <option value="NQIGG (K)">NQIGG (K)</option>
       <option value="O-Dimethylphosphate (S)">O-Dimethylphosphate (S)</option>
@@ -5471,6 +5525,10 @@
       <option value="Phe-&gt;Tyr (F)">Phe-&gt;Tyr (F)</option>
       <option value="Phe-&gt;Val (F)">Phe-&gt;Val (F)</option>
       <option value="Phe-&gt;Xle (F)">Phe-&gt;Xle (F)</option>
+      <option value="phenyl-phosphate (K)">phenyl-phosphate (K)</option>
+      <option value="phenyl-phosphate (S)">phenyl-phosphate (S)</option>
+      <option value="phenyl-phosphate (T)">phenyl-phosphate (T)</option>
+      <option value="phenyl-phosphate (Y)">phenyl-phosphate (Y)</option>
       <option value="Phenylisocyanate (N-term)">Phenylisocyanate (N-term)</option>
       <option value="Phenylisocyanate:2H(5) (N-term)">Phenylisocyanate:2H(5) (N-term)</option>
       <option value="phenylsulfonylethyl (C)">phenylsulfonylethyl (C)</option>
@@ -5485,6 +5543,7 @@
       <option value="Phospho (Y)">Phospho (Y)</option>
       <option value="Phosphoadenosine (H)">Phosphoadenosine (H)</option>
       <option value="Phosphoadenosine (K)">Phosphoadenosine (K)</option>
+      <option value="Phosphoadenosine (S)">Phosphoadenosine (S)</option>
       <option value="Phosphoadenosine (T)">Phosphoadenosine (T)</option>
       <option value="Phosphoadenosine (Y)">Phosphoadenosine (Y)</option>
       <option value="PhosphoCytidine (S)">PhosphoCytidine (S)</option>
@@ -5516,6 +5575,7 @@
       <option value="Phytochromobilin (C)">Phytochromobilin (C)</option>
       <option value="Piperidine (K)">Piperidine (K)</option>
       <option value="Piperidine (N-term)">Piperidine (N-term)</option>
+      <option value="Pro+O(2) (H)">Pro+O(2) (H)</option>
       <option value="Pro-&gt;Ala (P)">Pro-&gt;Ala (P)</option>
       <option value="Pro-&gt;Arg (P)">Pro-&gt;Arg (P)</option>
       <option value="Pro-&gt;Asn (P)">Pro-&gt;Asn (P)</option>
@@ -5593,18 +5653,30 @@
       <option value="QTGG (K)">QTGG (K)</option>
       <option value="Quinone (W)">Quinone (W)</option>
       <option value="Quinone (Y)">Quinone (Y)</option>
+      <option value="RBS-ID_Uridine (A)">RBS-ID_Uridine (A)</option>
+      <option value="RBS-ID_Uridine (C)">RBS-ID_Uridine (C)</option>
+      <option value="RBS-ID_Uridine (D)">RBS-ID_Uridine (D)</option>
+      <option value="RBS-ID_Uridine (E)">RBS-ID_Uridine (E)</option>
+      <option value="RBS-ID_Uridine (F)">RBS-ID_Uridine (F)</option>
+      <option value="RBS-ID_Uridine (G)">RBS-ID_Uridine (G)</option>
+      <option value="RBS-ID_Uridine (H)">RBS-ID_Uridine (H)</option>
+      <option value="RBS-ID_Uridine (I)">RBS-ID_Uridine (I)</option>
+      <option value="RBS-ID_Uridine (K)">RBS-ID_Uridine (K)</option>
+      <option value="RBS-ID_Uridine (L)">RBS-ID_Uridine (L)</option>
+      <option value="RBS-ID_Uridine (M)">RBS-ID_Uridine (M)</option>
+      <option value="RBS-ID_Uridine (N)">RBS-ID_Uridine (N)</option>
+      <option value="RBS-ID_Uridine (P)">RBS-ID_Uridine (P)</option>
+      <option value="RBS-ID_Uridine (Q)">RBS-ID_Uridine (Q)</option>
+      <option value="RBS-ID_Uridine (R)">RBS-ID_Uridine (R)</option>
+      <option value="RBS-ID_Uridine (S)">RBS-ID_Uridine (S)</option>
+      <option value="RBS-ID_Uridine (T)">RBS-ID_Uridine (T)</option>
+      <option value="RBS-ID_Uridine (V)">RBS-ID_Uridine (V)</option>
+      <option value="RBS-ID_Uridine (W)">RBS-ID_Uridine (W)</option>
+      <option value="RBS-ID_Uridine (Y)">RBS-ID_Uridine (Y)</option>
       <option value="Retinylidene (K)">Retinylidene (K)</option>
       <option value="RNPXL (N-term K)">RNPXL (N-term K)</option>
       <option value="RNPXL (N-term R)">RNPXL (N-term R)</option>
       <option value="RNPXlink1 (C)">RNPXlink1 (C)</option>
-      <option value="RNPXlink2 (F)">RNPXlink2 (F)</option>
-      <option value="RNPXlink2 (K)">RNPXlink2 (K)</option>
-      <option value="RNPXlink2 (L)">RNPXlink2 (L)</option>
-      <option value="RNPXlink3 (C)">RNPXlink3 (C)</option>
-      <option value="RNPXlink3 (F)">RNPXlink3 (F)</option>
-      <option value="RNPXlink4 (C)">RNPXlink4 (C)</option>
-      <option value="RNPXlink5 (F)">RNPXlink5 (F)</option>
-      <option value="RNPXlink5 (Y)">RNPXlink5 (Y)</option>
       <option value="s-GlcNAc (S)">s-GlcNAc (S)</option>
       <option value="s-GlcNAc (T)">s-GlcNAc (T)</option>
       <option value="Saligenin (H)">Saligenin (H)</option>
@@ -5632,6 +5704,9 @@
       <option value="shTMT (K)">shTMT (K)</option>
       <option value="shTMT (N-term)">shTMT (N-term)</option>
       <option value="shTMT (Protein N-term)">shTMT (Protein N-term)</option>
+      <option value="shTMTpro (K)">shTMTpro (K)</option>
+      <option value="shTMTpro (N-term)">shTMTpro (N-term)</option>
+      <option value="shTMTpro (Protein N-term)">shTMTpro (Protein N-term)</option>
       <option value="SMA (K)">SMA (K)</option>
       <option value="SMA (N-term)">SMA (N-term)</option>
       <option value="spermidine (Q)">spermidine (Q)</option>
@@ -5807,7 +5882,6 @@
       <option value="Tyr-&gt;Trp (Y)">Tyr-&gt;Trp (Y)</option>
       <option value="Tyr-&gt;Val (Y)">Tyr-&gt;Val (Y)</option>
       <option value="Tyr-&gt;Xle (Y)">Tyr-&gt;Xle (Y)</option>
-      <option value="Ub-amide (C)">Ub-amide (C)</option>
       <option value="Ub-Br2 (C)">Ub-Br2 (C)</option>
       <option value="Ub-fluorescein (C)">Ub-fluorescein (C)</option>
       <option value="Ub-VME (C)">Ub-VME (C)</option>
@@ -6010,12 +6084,12 @@
       <param name="decoy_string" argument="-PeptideIndexing:decoy_string" type="text" optional="true" value="" label="String that was appended (or prefixed - see 'decoy_string_position' flag below) to the accessions in the protein database to indicate decoy proteins" help="If empty (default), it's determined automatically (checking for common terms, both as prefix and suffix)">
         <expand macro="list_string_san" name="decoy_string"/>
       </param>
-      <param name="decoy_string_position" argument="-PeptideIndexing:decoy_string_position" type="select" optional="true" label="Is the 'decoy_string' prepended (prefix) or appended (suffix) to the protein accession" help="(ignored if decoy_string is empty)">
+      <param name="decoy_string_position" argument="-PeptideIndexing:decoy_string_position" type="select" label="Is the 'decoy_string' prepended (prefix) or appended (suffix) to the protein accession" help="(ignored if decoy_string is empty)">
         <option value="prefix" selected="true">prefix</option>
         <option value="suffix">suffix</option>
         <expand macro="list_string_san" name="decoy_string_position"/>
       </param>
-      <param name="missing_decoy_action" argument="-PeptideIndexing:missing_decoy_action" type="select" optional="true" label="Action to take if NO peptide was assigned to a decoy protein (which indicates wrong database or decoy string): 'error' (exit with error, no output), 'warn' (exit with success, warning message), 'silent' (no action is taken, not even a warning)" help="">
+      <param name="missing_decoy_action" argument="-PeptideIndexing:missing_decoy_action" type="select" label="Action to take if NO peptide was assigned to a decoy protein (which indicates wrong database or decoy string): 'error' (exit with error, no output), 'warn' (exit with success, warning message), 'silent' (no action is taken, not even a warning)" help="">
         <option value="error">error</option>
         <option value="warn" selected="true">warn</option>
         <option value="silent">silent</option>
@@ -6024,19 +6098,29 @@
       <param name="write_protein_sequence" argument="-PeptideIndexing:write_protein_sequence" type="boolean" truevalue="true" falsevalue="false" checked="false" label="If set, the protein sequences are stored as well" help=""/>
       <param name="write_protein_description" argument="-PeptideIndexing:write_protein_description" type="boolean" truevalue="true" falsevalue="false" checked="false" label="If set, the protein description is stored as well" help=""/>
       <param name="keep_unreferenced_proteins" argument="-PeptideIndexing:keep_unreferenced_proteins" type="boolean" truevalue="true" falsevalue="false" checked="false" label="If set, protein hits which are not referenced by any peptide are kept" help=""/>
-      <param name="unmatched_action" argument="-PeptideIndexing:unmatched_action" type="select" optional="true" label="If peptide sequences cannot be matched to any protein: 1) raise an error; 2) warn (unmatched PepHits will miss target/decoy annotation with downstream problems); 3) remove the hit" help="">
+      <param name="unmatched_action" argument="-PeptideIndexing:unmatched_action" type="select" label="If peptide sequences cannot be matched to any protein: 1) raise an error; 2) warn (unmatched PepHits will miss target/decoy annotation with downstream problems); 3) remove the hit" help="">
         <option value="error" selected="true">error</option>
         <option value="warn">warn</option>
         <option value="remove">remove</option>
         <expand macro="list_string_san" name="unmatched_action"/>
       </param>
-      <param name="aaa_max" argument="-PeptideIndexing:aaa_max" type="integer" optional="true" min="0" max="10" value="3" label="Maximal number of ambiguous amino acids (AAAs) allowed when matching to a protein database with AAAs" help="AAAs are 'B', 'J', 'Z' and 'X'"/>
-      <param name="mismatches_max" argument="-PeptideIndexing:mismatches_max" type="integer" optional="true" min="0" max="10" value="0" label="Maximal number of mismatched (mm) amino acids allowed when matching to a protein database" help="The required runtime is exponential in the number of mm's; apply with care. MM's are allowed in addition to AAA's"/>
+      <param name="aaa_max" argument="-PeptideIndexing:aaa_max" type="integer" min="0" max="10" value="3" label="Maximal number of ambiguous amino acids (AAAs) allowed when matching to a protein database with AAAs" help="AAAs are 'B', 'J', 'Z' and 'X'"/>
+      <param name="mismatches_max" argument="-PeptideIndexing:mismatches_max" type="integer" min="0" max="10" value="0" label="Maximal number of mismatched (mm) amino acids allowed when matching to a protein database" help="The required runtime is exponential in the number of mm's; apply with care. MM's are allowed in addition to AAA's"/>
       <param name="IL_equivalent" argument="-PeptideIndexing:IL_equivalent" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Treat the isobaric amino acids isoleucine ('I') and leucine ('L') as equivalent (indistinguishable)" help="Also occurrences of 'J' will be treated as 'I' thus avoiding ambiguous matching"/>
+      <param name="allow_nterm_protein_cleavage" argument="-PeptideIndexing:allow_nterm_protein_cleavage" type="boolean" truevalue="true" falsevalue="false" checked="true" label="Allow the protein N-terminus amino acid to clip" help=""/>
       <section name="enzyme" title="" help="" expanded="false">
-        <param name="name" argument="-PeptideIndexing:enzyme:name" type="select" optional="true" label="Enzyme which determines valid cleavage sites -" help="e.g. trypsin cleaves after lysine (K) or arginine (R), but not before proline (P). Default: deduce from input">
+        <param name="name" argument="-PeptideIndexing:enzyme:name" type="select" label="Enzyme which determines valid cleavage sites -" help="e.g. trypsin cleaves after lysine (K) or arginine (R), but not before proline (P). Default: deduce from input">
           <option value="auto" selected="true">auto</option>
+          <option value="Arg-C">Arg-C</option>
+          <option value="Arg-C/P">Arg-C/P</option>
+          <option value="Asp-N">Asp-N</option>
+          <option value="Asp-N/B">Asp-N/B</option>
+          <option value="Asp-N_ambic">Asp-N_ambic</option>
           <option value="Trypsin">Trypsin</option>
+          <option value="Chymotrypsin">Chymotrypsin</option>
+          <option value="Chymotrypsin/P">Chymotrypsin/P</option>
+          <option value="CNBr">CNBr</option>
+          <option value="Formic_acid">Formic_acid</option>
           <option value="proline-endopeptidase/HKR">proline-endopeptidase/HKR</option>
           <option value="Glu-C+P">Glu-C+P</option>
           <option value="PepsinA + P">PepsinA + P</option>
@@ -6044,34 +6128,25 @@
           <option value="Clostripain/P">Clostripain/P</option>
           <option value="elastase-trypsin-chymotrypsin">elastase-trypsin-chymotrypsin</option>
           <option value="no cleavage">no cleavage</option>
+          <option value="unspecific cleavage">unspecific cleavage</option>
+          <option value="TrypChymo">TrypChymo</option>
+          <option value="Trypsin/P">Trypsin/P</option>
+          <option value="V8-DE">V8-DE</option>
+          <option value="V8-E">V8-E</option>
+          <option value="leukocyte elastase">leukocyte elastase</option>
           <option value="proline endopeptidase">proline endopeptidase</option>
           <option value="glutamyl endopeptidase">glutamyl endopeptidase</option>
           <option value="Alpha-lytic protease">Alpha-lytic protease</option>
           <option value="2-iodobenzoate">2-iodobenzoate</option>
           <option value="iodosobenzoate">iodosobenzoate</option>
           <option value="staphylococcal protease/D">staphylococcal protease/D</option>
-          <option value="Trypsin/P">Trypsin/P</option>
-          <option value="V8-DE">V8-DE</option>
-          <option value="V8-E">V8-E</option>
-          <option value="leukocyte elastase">leukocyte elastase</option>
-          <option value="PepsinA">PepsinA</option>
-          <option value="TrypChymo">TrypChymo</option>
-          <option value="Asp-N">Asp-N</option>
-          <option value="unspecific cleavage">unspecific cleavage</option>
-          <option value="Asp-N/B">Asp-N/B</option>
-          <option value="Asp-N_ambic">Asp-N_ambic</option>
-          <option value="Chymotrypsin">Chymotrypsin</option>
-          <option value="Chymotrypsin/P">Chymotrypsin/P</option>
-          <option value="CNBr">CNBr</option>
-          <option value="Arg-C/P">Arg-C/P</option>
+          <option value="Lys-C">Lys-C</option>
           <option value="Lys-N">Lys-N</option>
           <option value="Lys-C/P">Lys-C/P</option>
-          <option value="Formic_acid">Formic_acid</option>
-          <option value="Lys-C">Lys-C</option>
-          <option value="Arg-C">Arg-C</option>
+          <option value="PepsinA">PepsinA</option>
           <expand macro="list_string_san" name="name"/>
         </param>
-        <param name="specificity" argument="-PeptideIndexing:enzyme:specificity" type="select" optional="true" label="Specificity of the enzyme" help="Default: deduce from input..   'full': both internal cleavage sites must match..   'semi': one of two internal cleavage sites must match..   'none': allow all peptide hits no matter their context (enzyme is irrelevant)">
+        <param name="specificity" argument="-PeptideIndexing:enzyme:specificity" type="select" label="Specificity of the enzyme" help="Default: deduce from input..   'full': both internal cleavage sites must match..   'semi': one of two internal cleavage sites must match..   'none': allow all peptide hits no matter their context (enzyme is irrelevant)">
           <option value="auto" selected="true">auto</option>
           <option value="full">full</option>
           <option value="semi">semi</option>
@@ -6089,44 +6164,45 @@
       <param argument="-use_Z_ions" type="boolean" truevalue="true" falsevalue="false" checked="false" label="use Z ions for PSM" help=""/>
       <param argument="-use_NL_ions" type="boolean" truevalue="true" falsevalue="false" checked="false" label="use neutral loss (NH3, H2O) ions from b/y for PSM" help=""/>
       <param argument="-second_enzyme" type="select" optional="true" label="Additional enzyme used for peptide digestion" help="">
-        <option value="CNBr">CNBr</option>
-        <option value="Lys-C">Lys-C</option>
+        <option value="Asp-N">Asp-N</option>
+        <option value="glutamyl endopeptidase">glutamyl endopeptidase</option>
         <option value="Trypsin">Trypsin</option>
         <option value="Arg-C">Arg-C</option>
+        <option value="no cleavage">no cleavage</option>
+        <option value="unspecific cleavage">unspecific cleavage</option>
         <option value="Chymotrypsin">Chymotrypsin</option>
-        <option value="Asp-N">Asp-N</option>
-        <option value="unspecific cleavage">unspecific cleavage</option>
+        <option value="CNBr">CNBr</option>
+        <option value="Lys-C">Lys-C</option>
         <option value="Lys-N">Lys-N</option>
         <option value="PepsinA">PepsinA</option>
         <option value="Trypsin/P">Trypsin/P</option>
-        <option value="glutamyl endopeptidase">glutamyl endopeptidase</option>
         <expand macro="list_string_san" name="second_enzyme"/>
       </param>
-      <param argument="-digest_mass_range" type="text" optional="true" value="600:5000" label="MH+ peptide mass range to analyze" help="">
+      <param argument="-digest_mass_range" type="text" value="600:5000" label="MH+ peptide mass range to analyze" help="">
         <expand macro="list_string_san" name="digest_mass_range"/>
       </param>
-      <param argument="-max_precursor_charge" type="integer" optional="true" min="1" max="9" value="5" label="set maximum precursor charge state to analyze (allowed max 9)" help=""/>
-      <param argument="-spectrum_batch_size" type="integer" optional="true" min="0" value="20000" label="max" help="number of spectra to search at a time; use 0 to search the entire scan range in one batch"/>
-      <param argument="-mass_offsets" type="text" optional="true" value="0.0" label="One or more mass offsets to search (values subtracted from deconvoluted precursor mass)" help="Has to include 0.0 if you want the default mass to be searched (space separated list, in order to allow for spaces in list items surround them by single quotes)">
+      <param argument="-max_precursor_charge" type="integer" min="1" max="9" value="5" label="set maximum precursor charge state to analyze (allowed max 9)" help=""/>
+      <param argument="-spectrum_batch_size" type="integer" min="0" value="20000" label="max" help="number of spectra to search at a time; use 0 to search the entire scan range in one batch"/>
+      <param argument="-mass_offsets" type="text" value="0.0" label="One or more mass offsets to search (values subtracted from deconvoluted precursor mass)" help="Has to include 0.0 if you want the default mass to be searched (space separated list, in order to allow for spaces in list items surround them by single quotes)">
         <expand macro="list_float_valsan" name="mass_offsets"/>
       </param>
-      <param argument="-minimum_peaks" type="integer" optional="true" value="10" label="Required minimum number of peaks in spectrum to search (default 10)" help=""/>
-      <param argument="-minimum_intensity" type="float" optional="true" min="0.0" value="0.0" label="Minimum intensity value to read in" help=""/>
-      <param argument="-remove_precursor_peak" type="select" optional="true" label="no = no removal, yes = remove all peaks around precursor m/z, charge_reduced = remove all charge reduced precursor peaks (for ETD/ECD)" help="phosphate_loss = remove the HPO3 (-80) and H3PO4 (-98) precursor phosphate neutral loss peaks. See also remove_precursor_tolerance">
+      <param argument="-minimum_peaks" type="integer" value="10" label="Required minimum number of peaks in spectrum to search (default 10)" help=""/>
+      <param argument="-minimum_intensity" type="float" min="0.0" value="0.0" label="Minimum intensity value to read in" help=""/>
+      <param argument="-remove_precursor_peak" type="select" label="no = no removal, yes = remove all peaks around precursor m/z, charge_reduced = remove all charge reduced precursor peaks (for ETD/ECD)" help="phosphate_loss = remove the HPO3 (-80) and H3PO4 (-98) precursor phosphate neutral loss peaks. See also remove_precursor_tolerance">
         <option value="no" selected="true">no</option>
         <option value="yes">yes</option>
         <option value="charge_reduced">charge_reduced</option>
         <option value="phosphate_loss">phosphate_loss</option>
         <expand macro="list_string_san" name="remove_precursor_peak"/>
       </param>
-      <param argument="-remove_precursor_tolerance" type="float" optional="true" value="1.5" label="one-sided tolerance for precursor removal in Thompson" help=""/>
-      <param argument="-clear_mz_range" type="text" optional="true" value="0:0" label="for iTRAQ/TMT type data; will clear out all peaks in the specified m/z range, if not 0:0" help="">
+      <param argument="-remove_precursor_tolerance" type="float" value="1.5" label="one-sided tolerance for precursor removal in Thompson" help=""/>
+      <param argument="-clear_mz_range" type="text" value="0:0" label="for iTRAQ/TMT type data; will clear out all peaks in the specified m/z range, if not 0:0" help="">
         <expand macro="list_string_san" name="clear_mz_range"/>
       </param>
-      <param argument="-max_variable_mods_in_peptide" type="integer" optional="true" value="5" label="Set a maximum number of variable modifications per peptide" help=""/>
+      <param argument="-max_variable_mods_in_peptide" type="integer" value="5" label="Set a maximum number of variable modifications per peptide" help=""/>
       <param argument="-require_variable_mod" type="boolean" truevalue="true" falsevalue="false" checked="false" label="If true, requires at least one variable modification per peptide" 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="">
+      <param argument="-test" type="hidden" value="False" label="Enables the test mode (needed for internal use only)" help="" optional="true">
         <expand macro="list_string_san" name="test"/>
       </param>
     </expand>
@@ -6144,7 +6220,8 @@
       <filter>OPTIONAL_OUTPUTS is not None and "ctd_out_FLAG" in OPTIONAL_OUTPUTS</filter>
     </data>
   </outputs>
-  <tests><!-- TOPP_CometAdapter_1 -->
+  <tests>
+    <!-- TOPP_CometAdapter_1 -->
     <test expect_num_outputs="3">
       <section name="adv_opts">
         <param name="use_A_ions" value="false"/>
@@ -6154,7 +6231,6 @@
         <param name="use_Y_ions" value="true"/>
         <param name="use_Z_ions" value="false"/>
         <param name="use_NL_ions" value="false"/>
-        <param name="second_enzyme"/>
         <param name="digest_mass_range" value="600:5000"/>
         <param name="max_precursor_charge" value="5"/>
         <param name="spectrum_batch_size" value="1000"/>
@@ -6170,9 +6246,9 @@
         <param name="test" value="true"/>
       </section>
       <param name="in" value="spectra_comet.mzML"/>
-      <output name="out" file="CometAdapter_1_out.idXML" compare="sim_size" delta_frac="0.7" ftype="idxml"/>
+      <output name="out" value="CometAdapter_1_out.idXML" compare="sim_size" delta_frac="0.7" ftype="idxml"/>
       <param name="database" value="proteins.fasta"/>
-      <output name="pin_out" file="CometAdapter_1_out2.tmp.tsv" compare="sim_size" delta_frac="0.7" ftype="tabular"/>
+      <output name="pin_out" value="CometAdapter_1_out2.tmp.tsv" compare="sim_size" delta_frac="0.7" ftype="tabular"/>
       <param name="precursor_mass_tolerance" value="3.0"/>
       <param name="precursor_error_units" value="ppm"/>
       <param name="isotope_error" value="off"/>
@@ -6192,9 +6268,6 @@
       <param name="activation_method" value="ALL"/>
       <param name="max_fragment_charge" value="3"/>
       <param name="clip_nterm_methionine" value="false"/>
-      <param name="fixed_modifications"/>
-      <param name="variable_modifications"/>
-      <param name="binary_modifications" value=""/>
       <param name="reindex" value="true"/>
       <section name="PeptideIndexing">
         <param name="decoy_string" value=""/>
@@ -6207,6 +6280,7 @@
         <param name="aaa_max" value="3"/>
         <param name="mismatches_max" value="0"/>
         <param name="IL_equivalent" value="false"/>
+        <param name="allow_nterm_protein_cleavage" value="true"/>
         <section name="enzyme">
           <param name="name" value="auto"/>
           <param name="specificity" value="auto"/>
@@ -6218,6 +6292,9 @@
           <is_valid_xml/>
         </assert_contents>
       </output>
+      <assert_stdout>
+        <has_text_matching expression="@EXECUTABLE@ took .* \(wall\), .* \(CPU\), .* \(system\), .* \(user\)(; Peak Memory Usage: 32 MB)?."/>
+      </assert_stdout>
     </test>
     <!-- TOPP_CometAdapter_2 -->
     <test expect_num_outputs="3">
@@ -6229,7 +6306,6 @@
         <param name="use_Y_ions" value="true"/>
         <param name="use_Z_ions" value="false"/>
         <param name="use_NL_ions" value="false"/>
-        <param name="second_enzyme"/>
         <param name="digest_mass_range" value="600:5000"/>
         <param name="max_precursor_charge" value="5"/>
         <param name="spectrum_batch_size" value="1000"/>
@@ -6245,9 +6321,9 @@
         <param name="test" value="true"/>
       </section>
       <param name="in" value="CometAdapter_2_prepared.mzML"/>
-      <output name="out" file="CometAdapter_2_out.idXML" compare="sim_size" delta_frac="0.7" ftype="idxml"/>
+      <output name="out" value="CometAdapter_2_out.idXML" compare="sim_size" delta_frac="0.7" ftype="idxml"/>
       <param name="database" value="CometAdapter_2_in.fasta"/>
-      <output name="pin_out" file="CometAdapter_2_out2.tmp.tsv" compare="sim_size" delta_frac="0.7" ftype="tabular"/>
+      <output name="pin_out" value="CometAdapter_2_out2.tmp.tsv" compare="sim_size" delta_frac="0.7" ftype="tabular"/>
       <param name="precursor_mass_tolerance" value="3.0"/>
       <param name="precursor_error_units" value="Da"/>
       <param name="isotope_error" value="off"/>
@@ -6267,9 +6343,6 @@
       <param name="activation_method" value="ALL"/>
       <param name="max_fragment_charge" value="3"/>
       <param name="clip_nterm_methionine" value="false"/>
-      <param name="fixed_modifications"/>
-      <param name="variable_modifications"/>
-      <param name="binary_modifications" value=""/>
       <param name="reindex" value="true"/>
       <section name="PeptideIndexing">
         <param name="decoy_string" value=""/>
@@ -6282,6 +6355,7 @@
         <param name="aaa_max" value="3"/>
         <param name="mismatches_max" value="0"/>
         <param name="IL_equivalent" value="false"/>
+        <param name="allow_nterm_protein_cleavage" value="true"/>
         <section name="enzyme">
           <param name="name" value="auto"/>
           <param name="specificity" value="auto"/>
@@ -6293,6 +6367,9 @@
           <is_valid_xml/>
         </assert_contents>
       </output>
+      <assert_stdout>
+        <has_text_matching expression="@EXECUTABLE@ took .* \(wall\), .* \(CPU\), .* \(system\), .* \(user\)(; Peak Memory Usage: 32 MB)?."/>
+      </assert_stdout>
     </test>
     <!-- TOPP_CometAdapter_3 -->
     <test expect_num_outputs="3">
@@ -6304,7 +6381,6 @@
         <param name="use_Y_ions" value="true"/>
         <param name="use_Z_ions" value="false"/>
         <param name="use_NL_ions" value="false"/>
-        <param name="second_enzyme"/>
         <param name="digest_mass_range" value="600:5000"/>
         <param name="max_precursor_charge" value="5"/>
         <param name="spectrum_batch_size" value="20000"/>
@@ -6320,9 +6396,9 @@
         <param name="test" value="true"/>
       </section>
       <param name="in" value="CometAdapter_3.mzML"/>
-      <output name="out" file="CometAdapter_3_out.idXML" compare="sim_size" delta_frac="0.7" ftype="idxml"/>
+      <output name="out" value="CometAdapter_3_out.idXML" compare="sim_size" delta_frac="0.7" ftype="idxml"/>
       <param name="database" value="CometAdapter_3.fasta"/>
-      <output name="pin_out" file="CometAdapter_3_out2.tmp.tsv" compare="sim_size" delta_frac="0.7" ftype="tabular"/>
+      <output name="pin_out" value="CometAdapter_3_out2.tmp.tsv" compare="sim_size" delta_frac="0.7" ftype="tabular"/>
       <param name="precursor_mass_tolerance" value="5.0"/>
       <param name="precursor_error_units" value="ppm"/>
       <param name="isotope_error" value="off"/>
@@ -6344,7 +6420,6 @@
       <param name="clip_nterm_methionine" value="false"/>
       <param name="fixed_modifications" value="Carbamidomethyl (C)"/>
       <param name="variable_modifications" value="Acetyl (Protein N-term),Carbamidomethyl (N-term),Phospho (S),Phospho (T),Phospho (Y)"/>
-      <param name="binary_modifications" value=""/>
       <param name="reindex" value="true"/>
       <section name="PeptideIndexing">
         <param name="decoy_string" value=""/>
@@ -6357,6 +6432,7 @@
         <param name="aaa_max" value="3"/>
         <param name="mismatches_max" value="0"/>
         <param name="IL_equivalent" value="false"/>
+        <param name="allow_nterm_protein_cleavage" value="true"/>
         <section name="enzyme">
           <param name="name" value="auto"/>
           <param name="specificity" value="auto"/>
@@ -6368,6 +6444,9 @@
           <is_valid_xml/>
         </assert_contents>
       </output>
+      <assert_stdout>
+        <has_text_matching expression="@EXECUTABLE@ took .* \(wall\), .* \(CPU\), .* \(system\), .* \(user\)(; Peak Memory Usage: 32 MB)?."/>
+      </assert_stdout>
     </test>
     <!-- TOPP_CometAdapter_4 -->
     <test expect_num_outputs="2">
@@ -6379,7 +6458,6 @@
         <param name="use_Y_ions" value="true"/>
         <param name="use_Z_ions" value="false"/>
         <param name="use_NL_ions" value="false"/>
-        <param name="second_enzyme"/>
         <param name="digest_mass_range" value="600:1200"/>
         <param name="max_precursor_charge" value="5"/>
         <param name="spectrum_batch_size" value="20000"/>
@@ -6395,7 +6473,7 @@
         <param name="test" value="true"/>
       </section>
       <param name="in" value="examples/FRACTIONS/BSA1_F1.mzML"/>
-      <output name="out" file="CometAdapter_4_out.idXML" compare="sim_size" delta_frac="0.7" ftype="idxml"/>
+      <output name="out" value="CometAdapter_4_out.idXML" compare="sim_size" delta_frac="0.7" ftype="idxml"/>
       <param name="database" value="examples/TOPPAS/data/BSA_Identification/18Protein_SoCe_Tr_detergents_trace_target_decoy.fasta"/>
       <param name="precursor_mass_tolerance" value="5.0"/>
       <param name="precursor_error_units" value="ppm"/>
@@ -6418,7 +6496,6 @@
       <param name="clip_nterm_methionine" value="false"/>
       <param name="fixed_modifications" value="Carbamidomethyl (C)"/>
       <param name="variable_modifications" value="Met-loss (Protein N-term M)"/>
-      <param name="binary_modifications" value=""/>
       <param name="reindex" value="true"/>
       <section name="PeptideIndexing">
         <param name="decoy_string" value=""/>
@@ -6431,6 +6508,7 @@
         <param name="aaa_max" value="3"/>
         <param name="mismatches_max" value="0"/>
         <param name="IL_equivalent" value="false"/>
+        <param name="allow_nterm_protein_cleavage" value="true"/>
         <section name="enzyme">
           <param name="name" value="auto"/>
           <param name="specificity" value="auto"/>
@@ -6442,11 +6520,14 @@
           <is_valid_xml/>
         </assert_contents>
       </output>
+      <assert_stdout>
+        <has_text_matching expression="@EXECUTABLE@ took .* \(wall\), .* \(CPU\), .* \(system\), .* \(user\)(; Peak Memory Usage: 32 MB)?."/>
+      </assert_stdout>
     </test>
   </tests>
   <help><![CDATA[Annotates MS/MS spectra using Comet.
 
 
-For more information, visit http://www.openms.de/doxygen/release/2.8.0/html/TOPP_CometAdapter.html]]></help>
+For more information, visit https://openms.de/doxygen/release/3.1.0/html/TOPP_CometAdapter.html]]></help>
   <expand macro="references"/>
 </tool>
--- a/fill_ctd_clargs.py	Thu Dec 01 19:11:13 2022 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-#!/usr/bin/env python3
-
-import operator
-from argparse import ArgumentParser
-from functools import reduce  # forward compatibility for Python 3
-from io import StringIO
-
-from CTDopts.CTDopts import (
-    _Null,
-    CTDModel,
-    ModelTypeError,
-    Parameters
-)
-
-
-def getFromDict(dataDict, mapList):
-    return reduce(operator.getitem, mapList, dataDict)
-
-
-def setInDict(dataDict, mapList, value):
-    getFromDict(dataDict, mapList[:-1])[mapList[-1]] = value
-
-
-if __name__ == "__main__":
-    # note add_help=False since otherwise arguments starting with -h will
-    # trigger an error (despite allow_abbreviate)
-    parser = ArgumentParser(prog="fill_ctd_clargs",
-                            description="fill command line arguments"
-                            "into a CTD file and write the CTD file to stdout",
-                            add_help=False, allow_abbrev=False)
-    parser.add_argument("--ini_file", dest="ini_file", help="input ini file",
-                        metavar='INI', default=None, required=True)
-    parser.add_argument("--ctd_file", dest="ctd_file", help="input ctd file"
-                        "if given then optional parameters from the ini file"
-                        "will be filled with the defaults from this CTD file",
-                        metavar='CTD', default=None, required=False)
-    args, cliargs = parser.parse_known_args()
-
-    # load CTDModel
-    ini_model = None
-    try:
-        ini_model = CTDModel(from_file=args.ini_file)
-    except ModelTypeError:
-        pass
-    try:
-        ini_model = Parameters(from_file=args.ini_file)
-    except ModelTypeError:
-        pass
-    assert ini_model is not None, "Could not parse %s, seems to be no CTD/PARAMS" % (args.ini_file)
-
-    # get a dictionary of the ctd arguments where the values of the parameters
-    # given on the command line are overwritten
-    ini_values = ini_model.parse_cl_args(cl_args=cliargs, ignore_required=True)
-
-    if args.ctd_file:
-        ctd_model = CTDModel(from_file=args.ctd_file)
-        ctd_values = ctd_model.get_defaults()
-        for param in ini_model.get_parameters():
-            if not param.required and (param.default is None or type(param.default) is _Null):
-                lineage = param.get_lineage(name_only=True)
-                try:
-                    default = getFromDict(ctd_values, lineage)
-                except KeyError:
-                    continue
-                setInDict(ini_values, lineage, default)
-
-    # write the ctd with the values taken from the dictionary
-    out = StringIO()
-    ctd_tree = ini_model.write_ctd(out, ini_values)
-    print(out.getvalue())
--- a/generate-foo.sh	Thu Dec 01 19:11:13 2022 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,215 +0,0 @@
-#!/usr/bin/env bash
-
-# parse test definitions from OpenMS sources for a tool with a given id
-function get_tests2 {
-    id=$1
-    >&2 echo "generate tests for $id"
-    echo '<xml name="autotest_'"$id"'">'
-
-    # get the tests from the CMakeLists.txt
-    # 1st remove some tests
-    # - OpenSwathMzMLFileCacher with -convert_back argument https://github.com/OpenMS/OpenMS/issues/4399
-    # - IDRipper PATH gets empty causing problems. TODO But overall the option needs to be handled differentlt
-    # - several tools with duplicated input (leads to conflict when linking)
-    # - MaRaCluster with -consensus_out (parameter blacklister: https://github.com/OpenMS/OpenMS/issues/4456)
-    # - FileMerger with mixed dta dta2d input (ftype can not be specified in the test, dta can not be sniffed)
-    # - some input files are originally in a subdir (degenerated cases/), but not in test-data
-    # - OpenSwathAnalyzer 9/10: cachedMzML (not supported yet)
-    # - SiriusAdapter_4 depends on online service which may timeout .. so keep disabled https://github.com/OpenMS/OpenMS/pull/5010
-    # - SiriusAdapter_10 should work in >2.8 https://github.com/OpenMS/OpenMS/issues/5869
-    CMAKE=$(cat $OPENMSGIT/src/tests/topp/CMakeLists.txt $OPENMSGIT/src/tests/topp/THIRDPARTY/third_party_tests.cmake  |
-        sed 's@${DATA_DIR_SHARE}/@@g' |
-        grep -v 'OpenSwathMzMLFileCacher .*-convert_back' |
-        sed 's/${TMP_RIP_PATH}/""/' |
-        grep -v "MaRaClusterAdapter.*-consensus_out"|
-        grep -v "FileMerger_1_input1.dta2d.*FileMerger_1_input2.dta " |
-        sed 's@degenerate_cases/@@g' |
-        egrep -v 'TOPP_OpenSwathAnalyzer_test_3"|TOPP_OpenSwathAnalyzer_test_4"' |
-        sed 's/\("TOPP_SiriusAdapter_4".*\)-sirius:database all\(.*\)/\1-sirius:database pubchem\2/' |
-        grep -v '"TOPP_SiriusAdapter_10"')
-
-    # 1st part is a dirty hack to join lines containing a single function call, e.g.
-    # addtest(....
-    #         ....)
-    echo "$CMAKE" | sed 's/#.*//; s/^\s*//; s/\s*$//' | grep -v "^#" | grep -v "^$"  | awk '{printf("%s@NEWLINE@", $0)}' | sed 's/)@NEWLINE@/)\n/g' | sed 's/@NEWLINE@/ /g' | 
-        grep -iE "add_test\(\"(TOPP|UTILS)_.*/$id " | egrep -v "_prepare\"|_convert|WRITEINI|WRITECTD|INVALIDVALUE"  | while read -r line
-    do
-        line=$(echo "$line" | sed 's/add_test("\([^"]\+\)"/\1/; s/)$//; s/\${TOPP_BIN_PATH}\///g;s/\${DATA_DIR_TOPP}\///g; s#THIRDPARTY/##g')
-        # >&2 echo $line
-        test_id=$(echo "$line" | cut -d" " -f 1)
-        tool_id=$(echo "$line" | cut -d" " -f 2)
-        # >&2 echo "test_id $test_id"
-        if [[ $test_id =~ _out_?[0-9]? ]]; then
-            >&2 echo "    skip $test_id $line"
-            continue
-        fi
-        if [[ ${id,,} != ${tool_id,,} ]]; then
-            >&2 echo "    skip $test_id ($id != $tool_id) $line"
-            continue
-        fi
-
-        #remove tests with set_tests_properties(....PROPERTIES WILL_FAIL 1)
-        if grep -lq "$test_id"'\".* PROPERTIES WILL_FAIL 1' $OPENMSGIT/src/tests/topp/CMakeLists.txt $OPENMSGIT/src/tests/topp/THIRDPARTY/third_party_tests.cmake; then
-            >&2 echo "    skip failing "$test_id
-            continue
-        fi
-        tes="  <test>\n"
-        line=$(fix_tmp_files "$line")
-        line=$(unique_files "$line")
-        # >&2 echo LINE $line
-        #if there is an ini file then we use this to generate the test
-        #otherwise the ctd file is used
-        #other command line parameters are inserted later into this xml
-        if grep -lq "\-ini" <<<"$line"; then
-            ini=$(echo $line | sed 's/.*-ini \([^ ]\+\).*/\1/')
-            ini="test-data/$ini"
-        else
-            ini="ctd/$tool_id.ctd"
-        fi
-        # >&2 echo "========================================================"
-        # >&2 echo "USING ini $ini"
-        cli=$(echo $line |cut -d" " -f3- | sed 's/-ini [^ ]\+//')
-
-        ctdtmp=$(mktemp)
-        # using eval: otherwise for some reason quoted values are not used properly ('A B' -> ["'A", "B'"])
-        # >&2 echo "python3 fill_ctd_clargs.py --ini_file $ini $cli" 
-        eval "python3 fill_ctd_clargs.py --ini_file $ini $cli" > "$ctdtmp"
-        # >&2 echo $ctdtmp
-        # >&2 cat $ctdtmp
-        testtmp=$(mktemp)
-        # >&2 echo CTDConverter galaxy -i $ctdtmp -o $testtmp -s aux/tools_blacklist.txt -f "$FILETYPES" -m macros.xml -t tool.conf  -p aux/hardcoded_params.json --tool-version $VERSION --test-only --test-unsniffable csv tsv txt dta dta2d edta mrm splib --test-condition "compare=sim_size" "delta_frac=0.7"
-        CTDConverter galaxy -i $ctdtmp -o $testtmp -s aux/tools_blacklist.txt -f "$FILETYPES" -m macros.xml -t tool.conf  -p aux/hardcoded_params.json --tool-version $VERSION --test-only --test-unsniffable csv tsv txt dta dta2d edta mrm splib --test-condition "compare=sim_size" "delta_frac=0.7" > /dev/null
-        echo "<!-- $test_id -->"
-        cat $testtmp | grep -v '<output.*file=""' # | grep -v 'CHEMISTRY/'
-
-        rm "$ctdtmp" "$testtmp"
-
-        #> /dev/null
-
-        #rm $testtmp
-    done 
-    echo '</xml>'
-}
-
-#some tests use the same file twice which does not work in planemo tests
-#hence we create symlinks for each file used twice
-function unique_files {
-    line=$@
-    for arg in $@
-    do
-        if [[ ! -f "test-data/$arg" ]]; then
-            continue
-        fi
-        cnt=$(grep -c $arg <<< $(echo "$line" | tr ' ' '\n'))
-        while [[ $cnt -gt 1 ]]; do
-            new_arg=$(echo $arg | sed "s/\(.*\)\./\1_$cnt./")
-            ln -fs $arg test-data/$new_arg
-            line=$(echo $line | sed "s/\($arg.*\)$arg/\1$new_arg/")
-            cnt=$(grep -c $arg <<< $(echo "$line" | tr ' ' '\n'))
-        done
-    done
-
-    echo $line
-}
-
-# options of out_type selects need to be fixed to Galaxy data types
-function fix_out_type {
-    grep "^$1" "$2" | awk '{print $2}'
-}
-
-#OpenMS tests output to tmp files and compare with FuzzyDiff to the expected file.
-#problem: the extension of the tmp files is unusable for test generation.
-#unfortunately the extensions used in the DIFF lines are not always usable for the CLI
-#(e.g. for prepare_test_data, e.g. CLI expects csv but test file is txt)
-#this function replaces the tmp file by the expected file. 
-function fix_tmp_files {
-    # >&2 echo "FIX $line"
-    ret=""
-    for a in $@; do
-        # >&2 echo "    a "$a
-        if [[ ! $a =~ .tmp$ ]] && [[ ! $a =~ _tmp_ ]]; then
-            ret="$ret $a"
-            continue
-        fi
-        diff_line=$(cat $OPENMSGIT/src/tests/topp/CMakeLists.txt $OPENMSGIT/src/tests/topp/THIRDPARTY/third_party_tests.cmake | awk '{printf("%s@NEWLINE@", $0)}' | sed 's/)@NEWLINE@/)\n/g' | sed 's/@NEWLINE@/ /g' | grep '\${DIFF}.*'"$a")
-        # >&2 echo "    diff_line "$diff_line
-        in1=$(sed 's/.*-in1 \([^ ]\+\).*/\1/' <<<$diff_line)
-        # >&2 echo "    in1 "$in1
-        if [[  "$a" != "$in1" ]]; then
-            ret="$ret $a"
-            continue
-        fi
-        in2=$(sed 's/.*-in2 \([^ ]\+\).*/\1/' <<<$diff_line)
-        in2=$(basename $in2 | sed 's/)$//')
-        # >&2 echo "    in2 "$in2
-        if [[ -f "test-data/$in2" ]]; then
-            ln -fs "$in1" "test-data/$in2"
-            ret="$ret $in2"
-        else
-            ret="$ret $a"
-        fi
-    done
-#    >&2 echo "--> $ret"
-    echo "$ret"
-}
-
-function link_tmp_files {
-    # note this also considers commented lines (starting with a #)
-    # because of tests where the diff command is commented and we
-    # still want to use the extension of these files
-    cat $OPENMSGIT/src/tests/topp/CMakeLists.txt $OPENMSGIT/src/tests/topp/THIRDPARTY/third_party_tests.cmake | sed 's/^\s*//; s/\s*$//' | grep -v "^$"  | awk '{printf("%s@NEWLINE@", $0)}' | sed 's/)@NEWLINE@/)\n/g' | sed 's/@NEWLINE@/ /g' | grep "\${DIFF}" | while read -r line
-    do
-        in1=$(sed 's/.*-in1 \([^ ]\+\).*/\1/' <<<$line)
-        in1=$(basename $in1 | sed 's/)$//')
-        in2=$(sed 's/.*-in2 \([^ ]\+\).*/\1/' <<<$line)
-        in2=$(basename $in2 | sed 's/)$//')
-        if [[ "$in1" == "$in2" ]]; then
-            >&2 echo "not linking equal $in1 $in2"
-            continue
-        fi
-        ln -f -s $in1 test-data/$in2
-    done
-    
-    find test-data/ -name "*.tmp" -print0 | 
-    while IFS= read -r -d '' i; do 
-        if [ ! -e test-data/$(basename $i .tmp) ]; then
-            ln -s $(basename $i) test-data/$(basename $i .tmp)
-        else
-            ln -fs $(basename $i) test-data/$(basename $i .tmp)
-        fi
-    done
-}
-
-
-
-# parse data preparation calls from OpenMS sources for a tool with a given id
-function prepare_test_data {
-#     id=$1
-# | egrep -i "$id\_.*[0-9]+(_prepare\"|_convert)?"
-
-    # TODO SiriusAdapter depends on online service which may timeout .. so keep disabled https://github.com/OpenMS/OpenMS/pull/5010
-    cat $OPENMSGIT/src/tests/topp/CMakeLists.txt  $OPENMSGIT/src/tests/topp/THIRDPARTY/third_party_tests.cmake | sed 's/#.*$//'| sed 's/^\s*//; s/\s*$//' | grep -v "^$"  | awk '{printf("%s@NEWLINE@", $0)}' | sed 's/)@NEWLINE@/)\n/g' | sed 's/@NEWLINE@/ /g' | 
-        sed 's/degenerate_cases\///' | 
-        egrep -v "WRITEINI|WRITECTD|INVALIDVALUE|DIFF" | 
-        grep add_test | 
-        egrep "TOPP|UTILS" |
-        sed 's@${DATA_DIR_SHARE}/@@g;'|
-        sed 's@${TMP_RIP_PATH}@./@g'|
-        sed 's@TOFCalibration_ref_masses @TOFCalibration_ref_masses.txt @g; s@TOFCalibration_const @TOFCalibration_const.csv @'| 
-	sed 's/\("TOPP_SiriusAdapter_4".*\)-sirius:database all\(.*\)/\1-sirius:database pubchem\2/' |
-    while read line
-    do
-        test_id=$(echo "$line" | sed 's/add_test(//; s/"//g;  s/)[^)]*$//; s/\${TOPP_BIN_PATH}\///g;s/\${DATA_DIR_TOPP}\///g; s#THIRDPARTY/##g' | cut -d" " -f1)
-
-        if grep -lq "$test_id"'\".* PROPERTIES WILL_FAIL 1' $OPENMSGIT/src/tests/topp/CMakeLists.txt $OPENMSGIT/src/tests/topp/THIRDPARTY/third_party_tests.cmake; then
-            >&2 echo "    skip failing "$test_id
-            continue
-        fi
-
-        line=$(echo "$line" | sed 's/add_test("//; s/)[^)]*$//; s/\${TOPP_BIN_PATH}\///g;s/\${DATA_DIR_TOPP}\///g; s#THIRDPARTY/##g' | cut -d" " -f2-)
-        # line="$(fix_tmp_files $line)"
-        echo 'echo executing "'$test_id'"'
-	echo "$line > $test_id.stdout 2> $test_id.stderr"
-        echo "if [[ \"\$?\" -ne \"0\" ]]; then >&2 echo '$test_id failed'; >&2 echo -e \"stderr:\n\$(cat $test_id.stderr | sed 's/^/    /')\"; echo -e \"stdout:\n\$(cat $test_id.stdout)\";fi"    
-    done
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/get_tests.py	Fri Jun 14 21:35:36 2024 +0000
@@ -0,0 +1,344 @@
+#!/usr/bin/env python
+
+import argparse
+import os.path
+import re
+import shlex
+import sys
+import tempfile
+from typing import (
+    Dict,
+    List,
+    Optional,
+    TextIO,
+    Tuple,
+)
+
+from ctdconverter.common.utils import (
+    ParameterHardcoder,
+    parse_hardcoded_parameters,
+    parse_input_ctds,
+)
+from ctdconverter.galaxy.converter import convert_models
+from CTDopts.CTDopts import (
+    CTDModel,
+    ModelTypeError,
+    Parameters,
+)
+
+SKIP_LIST = [
+    r"_prepare\"",
+    r"_convert",
+    r"WRITEINI",
+    r"WRITECTD",
+    r"INVALIDVALUE",
+    r"\.ini\.json",
+    r"OpenSwathMzMLFileCacher .*-convert_back",  # - OpenSwathMzMLFileCacher with -convert_back argument https://github.com/OpenMS/OpenMS/issues/4399
+    r"MaRaClusterAdapter.*-consensus_out",  # - MaRaCluster with -consensus_out (parameter blacklister: https://github.com/OpenMS/OpenMS/issues/4456)
+    r"FileMerger_1_input1.dta2d.*FileMerger_1_input2.dta ",  # - FileMerger with mixed dta dta2d input (ftype can not be specified in the test, dta can not be sniffed)
+    r'^(TOPP_OpenSwathAnalyzer_test_3|TOPP_OpenSwathAnalyzer_test_4)$',  # no  suppert for cached mzML
+    r'TOPP_SiriusAdapter_[0-9]+$',  # Do not test SiriusAdapter https://github.com/OpenMS/OpenMS/issues/7000 .. will be removed anyway
+    r'TOPP_AssayGeneratorMetabo_(7|8|9|10|11|12|13|14|15|16|17|18)$'  # Skip AssayGeneratorMetabo tests using Sirius  https://github.com/OpenMS/OpenMS/issues/7150 (will be replaced by two tools)
+]
+
+
+def get_failing_tests(cmake: List[str]) -> List[str]:
+    failing_tests = []
+    re_fail = re.compile(r"set_tests_properties\(\"([^\"]+)\" PROPERTIES WILL_FAIL 1\)")
+
+    for cmake in args.cmake:
+        with open(cmake) as cmake_fh:
+            for line in cmake_fh:
+                match = re_fail.search(line)
+                if match:
+                    failing_tests.append(match.group(1))
+    return failing_tests
+
+
+def fix_tmp_files(line: str, diff_pairs: Dict[str, str]) -> str:
+    """
+    OpenMS tests output to tmp files and compare with FuzzyDiff to the expected file.
+    problem: the extension of the tmp files is unusable for test generation.
+    unfortunately the extensions used in the DIFF lines are not always usable for the CLI
+    (e.g. for prepare_test_data, e.g. CLI expects csv but test file is txt)
+    this function replaces the tmp file by the expected file.
+    """
+    cmd = shlex.split(line)
+    for i, e in enumerate(cmd):
+        if e in diff_pairs:
+            dst = os.path.join("test-data", diff_pairs[e])
+            if os.path.exists(dst):
+                os.unlink(dst)
+            sys.stderr.write(f"symlink {e} {dst}\n")
+            os.symlink(e, dst)
+            cmd[i] = diff_pairs[e]
+    return shlex.join(cmd)
+
+
+def get_ini(line: str, tool_id: str) -> Tuple[str, str]:
+    """
+    if there is an ini file then we use this to generate the test
+    otherwise the ctd file is used
+    other command line parameters are inserted later into this xml
+    """
+    cmd = shlex.split(line)
+    ini = None
+    for i, e in enumerate(cmd):
+        if e == "-ini":
+            ini = cmd[i + 1]
+            cmd = cmd[:i] + cmd[i + 2:]
+    if ini:
+        return os.path.join("test-data", ini), shlex.join(cmd)
+    else:
+        return os.path.join("ctd", f"{tool_id}.ctd"), line
+
+
+def unique_files(line: str):
+    """
+    some tests use the same file twice which does not work in planemo tests
+    hence we create symlinks for each file used twice
+    """
+    cmd = shlex.split(line)
+    # print(f"{cmd}")
+    files = {}
+    # determine the list of indexes where each file argument (anything appearing in test-data/) appears
+    for idx, e in enumerate(cmd):
+        p = os.path.join("test-data", e)
+        if not os.path.exists(p) and not os.path.islink(p):
+            continue
+        try:
+            files[e].append(idx)
+        except KeyError:
+            files[e] = [idx]
+    # print(f"{files=}")
+    for f in files:
+        if len(files[f]) < 2:
+            continue
+        for i, idx in enumerate(files[f]):
+            f_parts = f.split(".")
+            f_parts[0] = f"{f_parts[0]}_{i}"
+            new_f = ".".join(f_parts)
+            # if os.path.exists(os.path.join("test-data", new_f)):
+            #     os.unlink(os.path.join("test-data", new_f))
+            sys.stderr.write(
+                f'\tsymlink {os.path.join("test-data", new_f)} {f}\n'
+            )
+            try:
+                os.symlink(f, os.path.join("test-data", new_f))
+            except FileExistsError:
+                pass
+            cmd[idx] = new_f
+    return shlex.join(cmd)
+
+
+def fill_ctd_clargs(ini: str, line: str, ctd_tmp: TextIO) -> None:
+    cmd = shlex.split(line)
+
+    # load CTDModel
+    ini_model = None
+    try:
+        ini_model = CTDModel(from_file=ini)
+    except ModelTypeError:
+        pass
+    try:
+        ini_model = Parameters(from_file=ini)
+    except ModelTypeError:
+        pass
+    assert ini_model is not None, "Could not parse %s, seems to be no CTD/PARAMS" % (
+        args.ini_file
+    )
+
+    # get a dictionary of the ctd arguments where the values of the parameters
+    # given on the command line are overwritten
+    ini_values = ini_model.parse_cl_args(cl_args=cmd, ignore_required=True)
+    ini_model.write_ctd(ctd_tmp, ini_values)
+
+
+def process_test_line(
+    id: str,
+    line: str,
+    failing_tests: List[str],
+    skip_list: List[str],
+    diff_pairs: Dict[str, str],
+) -> Optional[str]:
+
+    re_test_id = re.compile(r"add_test\(\"([^\"]+)\" ([^ ]+) (.*)")
+    re_id_out_test = re.compile(r"_out_?[0-9]?")
+
+    # TODO auto extract from  set(OLD_OSW_PARAM ... lin
+    line = line.replace(
+        "${OLD_OSW_PARAM}",
+        " -test -mz_extraction_window 0.05 -mz_extraction_window_unit Th -ms1_isotopes 0 -Scoring:TransitionGroupPicker:compute_peak_quality -Scoring:Scores:use_ms1_mi false -Scoring:Scores:use_mi_score false",
+    )
+
+    line = line.replace("${TOPP_BIN_PATH}/", "")
+    line = line.replace("${DATA_DIR_TOPP}/", "")
+    line = line.replace("THIRDPARTY/", "")
+    line = line.replace("${DATA_DIR_SHARE}/", "")
+    # IDRipper PATH gets empty causing problems. TODO But overall the option needs to be handled differently
+    line = line.replace("${TMP_RIP_PATH}/", "")
+    # some input files are originally in a subdir (degenerated cases/), but not in test-data
+    line = line.replace("degenerate_cases/", "")
+    # determine the test and tool ids and remove the 1) add_test("TESTID" 2) trailing )
+    match = re_test_id.match(line)
+    if not match:
+        sys.exit(f"Ill formated test line {line}\n")
+    test_id = match.group(1)
+    tool_id = match.group(2)
+
+    line = f"{match.group(2)} {match.group(3)}"
+
+    if test_id in failing_tests:
+        sys.stderr.write(f"    skip failing {test_id} {line}\n")
+        return
+
+    if id != tool_id:
+        sys.stderr.write(f"    skip {test_id} ({id} != {tool_id}) {line}\n")
+        return
+
+    if re_id_out_test.search(test_id):
+        sys.stderr.write(f"    skip {test_id} {line}\n")
+        return
+
+    for skip in skip_list:
+        if re.search(skip, line):
+            return
+        if re.search(skip, test_id):
+            return
+
+    line = fix_tmp_files(line, diff_pairs)
+    # print(f"fix {line=}")
+    line = unique_files(line)
+    # print(f"unq {line=}")
+    ini, line = get_ini(line, tool_id)
+
+    from dataclasses import dataclass, field
+
+    @dataclass
+    class CTDConverterArgs:
+        input_files: list
+        output_destination: str
+        default_executable_path: Optional[str] = None
+        hardcoded_parameters: Optional[str] = None
+        parameter_hardcoder: Optional[ParameterHardcoder] = None
+        xsd_location: Optional[str] = None
+        formats_file: Optional[str] = None
+        add_to_command_line: str = ""
+        required_tools_file: Optional[str] = None
+        skip_tools_file: Optional[str] = None
+        macros_files: Optional[List[str]] = field(default_factory=list)
+        test_macros_files: Optional[List[str]] = field(default_factory=list)
+        test_macros_prefix: Optional[List[str]] = field(default_factory=list)
+        test_test: bool = False
+        test_only: bool = False
+        test_unsniffable: Optional[List[str]] = field(default_factory=list)
+        test_condition: Optional[List[str]] = ("compare=sim_size", "delta_frac=0.05")
+        tool_version: str = None
+        tool_profile: str = None
+        bump_file: str = None
+
+    # create an ini/ctd file where the values are equal to the arguments from the command line
+    # and transform it to xml
+    test = [f"<!-- {test_id} -->\n"]
+    with tempfile.NamedTemporaryFile(
+        mode="w+", delete_on_close=False
+    ) as ctd_tmp, tempfile.NamedTemporaryFile(
+        mode="w+", delete_on_close=False
+    ) as xml_tmp:
+        fill_ctd_clargs(ini, line, ctd_tmp)
+        ctd_tmp.close()
+        xml_tmp.close()
+        parsed_ctd = parse_input_ctds(None, [ctd_tmp.name], xml_tmp.name, "xml")
+        ctd_args = CTDConverterArgs(
+            input_files=[ctd_tmp.name],
+            output_destination=xml_tmp.name,
+            macros_files=["macros.xml"],
+            skip_tools_file="aux/tools_blacklist.txt",
+            formats_file="aux/filetypes.txt",
+            # tool_conf_destination = "tool.conf",
+            hardcoded_parameters="aux/hardcoded_params.json",
+            tool_version="3.1",
+            test_only=True,
+            test_unsniffable=[
+                "csv",
+                "tsv",
+                "txt",
+                "dta",
+                "dta2d",
+                "edta",
+                "mrm",
+                "splib",
+            ],
+            test_condition=["compare=sim_size", "delta_frac=0.7"],
+        )
+        ctd_args.parameter_hardcoder = parse_hardcoded_parameters(
+            ctd_args.hardcoded_parameters
+        )
+        convert_models(ctd_args, parsed_ctd)
+        xml_tmp = open(xml_tmp.name, "r")
+        for l in xml_tmp:
+            test.append(l)
+
+    return "".join(test)
+
+
+parser = argparse.ArgumentParser(description="Create Galaxy tests for a OpenMS tools")
+parser.add_argument("--id", dest="id", help="tool id")
+parser.add_argument("--cmake", nargs="+", help="OpenMS test CMake files")
+args = parser.parse_args()
+sys.stderr.write(f"generate tests for {args.id}\n")
+
+re_comment = re.compile("#.*")
+re_empty_prefix = re.compile(r"^\s*")
+re_empty_suffix = re.compile(r"\s*$")
+re_add_test = re.compile(r"add_test\(\"(TOPP|UTILS)_.*/" + args.id)
+re_diff = re.compile(r"\$\{DIFF\}.* -in1 ([^ ]+) -in2 ([^ ]+)")
+failing_tests = get_failing_tests(args.cmake)
+tests = []
+
+# process the given CMake files and compile lists of
+# - test lines .. essentially add_test(...)
+# - and pairs of files that are diffed
+jline = ""
+test_lines = []
+diff_pairs = {}
+for cmake in args.cmake:
+    with open(cmake) as cmake_fh:
+        for line in cmake_fh:
+            # remove comments, empty prefixes and suffixes
+            line = re_comment.sub("", line)
+            line = re_empty_prefix.sub("", line)
+            line = re_empty_suffix.sub("", line)
+            # skip empty lines
+            if line == "":
+                continue
+
+            # join test statements that are split over multiple lines
+            if line.endswith(")"):
+                jline += " " + line[:-1]
+            else:
+                jline = line
+                continue
+            line, jline = jline.strip(), ""
+            match = re_diff.search(line)
+            if match:
+                in1 = match.group(1).split("/")[-1]
+                in2 = match.group(2).split("/")[-1]
+                if in1 != in2:
+                    diff_pairs[in1] = in2
+            elif re_add_test.match(line):
+                test_lines.append(line)
+
+for line in test_lines:
+    test = process_test_line(args.id, line, failing_tests, SKIP_LIST, diff_pairs)
+    if test:
+        tests.append(test)
+
+tests = "\n".join(tests)
+print(
+    f"""
+<xml name="autotest_{args.id}">
+{tests}
+</xml>
+"""
+)
--- a/macros.xml	Thu Dec 01 19:11:13 2022 +0000
+++ b/macros.xml	Fri Jun 14 21:35:36 2024 +0000
@@ -3,19 +3,19 @@
      You can edit this file to add your own macros, if you so desire, or you can
      add additional macro files using the m/macros parameter -->
 <macros>
-  <token name="@TOOL_VERSION@">2.8</token>
+  <token name="@TOOL_VERSION@">3.1</token>
   <token name="@VERSION_SUFFIX@">0</token>
+  <token name="@TEST_DATA_LOCATION@"/>
   <xml name="requirements">
     <requirements>
       <requirement type="package" version="@TOOL_VERSION@">openms</requirement>
       <requirement type="package" version="@TOOL_VERSION@">openms-thirdparty</requirement>
       <!-- omssa (which has been excluded from 3rdparty) and makeblastdb for OMSSAAdapter -->
-      <requirement type="package" version="2.1.9">omssa</requirement>
-      <requirement type="package" version="2.13.0">blast</requirement>
+      <requirement type="package" version="2.14.1">blast</requirement>
       <!--<requirement type="package" version="5.0.0">tpp</requirement>-->
       <!-- for realpath (used e.g. in LuciphorAdapter) -->
 	  <!--<requirement type="package" version="8.25">coreutils</requirement>-->
-	  <requirement type="package" version="1.4">ctdopts</requirement>
+	  <requirement type="package" version="1.5">ctdopts</requirement>
       <yield/>
     </requirements>
   </xml>
@@ -26,6 +26,8 @@
       <regex match="Could not allocate metaspace" level="fatal_oom" description="Java memory Exception"/>
       <regex match="Cannot create VM thread" level="fatal_oom" description="Java memory Exception"/>
       <regex match="qUncompress: could not allocate enough memory to uncompress data" level="fatal_oom" description="Java memory Exception"/>
+      <regex match="OMSSA ran out of RAM" level="fatal_oom" description="Could not allocate memory"/>
+      <regex match="comet' crashed hard (segfault-like). Please check the log." level="fatal_oom" description="Could not allocate memory"/>
     </stdio>
   </xml>
   <xml name="references">
@@ -113,11 +115,11 @@
   </token>
 
 <token name="@EXT_FOO@"><![CDATA[#def oms2gxyext(o)
-    #set m={'txt': 'txt', 'tsv': 'tabular', 'bioml': 'xml', 'consensusXML': 'consensusxml', 'csv': 'csv', 'dta': 'dta', 'dta2d': 'dta2d', 'edta': 'edta', 'fa': 'fasta', 'fas': 'fasta', 'fasta': 'fasta', 'FASTA': 'fasta', 'featureXML': 'featurexml', 'featurexml': 'featurexml', 'html': 'html', 'HTML': 'html', 'idXML': 'idxml', 'json': 'json', 'kroenik': 'kroenik', 'mascotXML': 'mascotxml', 'mgf': 'mgf', 'mrm': 'mrm', 'ms': 'sirius.ms', 'ms2': 'ms2', 'msp': 'msp', 'mzData': 'mzdata', 'mzid': 'mzid', 'mzML': 'mzml', 'mzml': 'mzml', 'mzq': 'mzq', 'mzQC': 'mzqc', 'mzTab': 'mztab', 'mzXML': 'mzxml', 'novor': 'txt', 'obo': 'obo', 'oms': 'sqlite', 'omssaXML': 'idxml', 'osw': 'osw', 'OSW': 'osw', 'params': 'txt', 'paramXML': 'paramxml', 'peplist': 'peplist', 'pep.xml': 'pepxml', 'pepXML': 'pepxml', 'png': 'png', 'PNG': 'png', 'protXML': 'protxml', 'psms': 'psms', 'pqp': 'pqp', 'qcML': 'qcml', 'spec.xml': 'spec.xml', 'splib': 'splib', 'sqMass': 'sqmass', 'tandem.xml': 'tandem', 'trafoXML': 'trafoxml', 'traML': 'traml', 'TraML': 'traml', 'tab': 'tabular', 'raw': 'thermo.raw', 'xls': 'tsv', 'XML': 'xml', 'xml': 'xml', 'xquest.xml': 'xquest.xml', 'xsd': 'xml'}
+    #set m={'txt': 'txt', 'tsv': 'tabular', 'bioml': 'xml', 'consensusXML': 'consensusxml', 'csv': 'csv', 'dta': 'dta', 'dta2d': 'dta2d', 'edta': 'edta', 'fa': 'fasta', 'fas': 'fasta', 'fasta': 'fasta', 'FASTA': 'fasta', 'featureXML': 'featurexml', 'featurexml': 'featurexml', 'html': 'html', 'HTML': 'html', 'idXML': 'idxml', 'json': 'json', 'kroenik': 'kroenik', 'mascotXML': 'mascotxml', 'mgf': 'mgf', 'mrm': 'mrm', 'ms': 'sirius.ms', 'ms2': 'ms2', 'msp': 'msp', 'mzData': 'mzdata', 'mzid': 'mzid', 'mzML': 'mzml', 'mzml': 'mzml', 'mzq': 'mzq', 'mzQC': 'mzqc', 'mzTab': 'mztab', 'mzXML': 'mzxml', 'novor': 'txt', 'obo': 'obo', 'oms': 'sqlite', 'omssaXML': 'idxml', 'osw': 'osw', 'OSW': 'osw', 'params': 'txt', 'paramXML': 'paramxml', 'peplist': 'peplist', 'pep.xml': 'pepxml', 'pepXML': 'pepxml', 'png': 'png', 'PNG': 'png', 'protXML': 'protxml', 'psms': 'psms', 'pqp': 'pqp', 'qcML': 'qcml', 'spec.xml': 'spec.xml', 'splib': 'splib', 'sqMass': 'sqmass', 'tandem.xml': 'tandem', 'trafoXML': 'trafoxml', 'traML': 'traml', 'TraML': 'traml', 'tab': 'tabular', 'raw': 'thermo.raw', 'xls': 'tsv', 'XML': 'xml', 'xml': 'xml', 'xquest.xml': 'xquest.xml', 'xsd': 'xsd', 'zip': 'zip'}
     #return m[o]
 #end def
 #def gxy2omsext(g)
-    #set m={'txt': 'txt', 'tabular': 'tsv', 'xml': 'bioml', 'consensusxml': 'consensusXML', 'csv': 'csv', 'dta': 'dta', 'dta2d': 'dta2d', 'edta': 'edta', 'fasta': 'fa', 'featurexml': 'featureXML', 'html': 'html', 'idxml': 'idXML', 'json': 'json', 'kroenik': 'kroenik', 'mascotxml': 'mascotXML', 'mgf': 'mgf', 'mrm': 'mrm', 'sirius.ms': 'ms', 'ms2': 'ms2', 'msp': 'msp', 'mzdata': 'mzData', 'mzid': 'mzid', 'mzml': 'mzML', 'mzq': 'mzq', 'mzqc': 'mzQC', 'mztab': 'mzTab', 'mzxml': 'mzXML', 'obo': 'obo', 'sqlite': 'oms', 'osw': 'osw', 'paramxml': 'paramXML', 'peff': 'fasta', 'peplist': 'peplist', 'pepxml': 'pep.xml', 'png': 'png', 'protxml': 'protXML', 'psms': 'psms', 'pqp': 'pqp', 'qcml': 'qcML', 'spec.xml': 'spec.xml', 'splib': 'splib', 'sqmass': 'sqMass', 'tandem': 'tandem.xml', 'trafoxml': 'trafoXML', 'traml': 'traML', 'thermo.raw': 'raw', 'tsv': 'xls', 'xquest.xml': 'xquest.xml'}
+    #set m={'txt': 'txt', 'tabular': 'tsv', 'xml': 'bioml', 'consensusxml': 'consensusXML', 'csv': 'csv', 'dta': 'dta', 'dta2d': 'dta2d', 'edta': 'edta', 'fasta': 'fa', 'featurexml': 'featureXML', 'html': 'html', 'idxml': 'idXML', 'json': 'json', 'kroenik': 'kroenik', 'mascotxml': 'mascotXML', 'mgf': 'mgf', 'mrm': 'mrm', 'sirius.ms': 'ms', 'ms2': 'ms2', 'msp': 'msp', 'mzdata': 'mzData', 'mzid': 'mzid', 'mzml': 'mzML', 'mzq': 'mzq', 'mzqc': 'mzQC', 'mztab': 'mzTab', 'mzxml': 'mzXML', 'obo': 'obo', 'sqlite': 'oms', 'osw': 'osw', 'paramxml': 'paramXML', 'peff': 'fasta', 'peplist': 'peplist', 'pepxml': 'pep.xml', 'png': 'png', 'protxml': 'protXML', 'psms': 'psms', 'pqp': 'pqp', 'qcml': 'qcML', 'spec.xml': 'spec.xml', 'splib': 'splib', 'sqmass': 'sqMass', 'tandem': 'tandem.xml', 'trafoxml': 'trafoXML', 'traml': 'traML', 'thermo.raw': 'raw', 'tsv': 'xls', 'xquest.xml': 'xquest.xml', 'xsd': 'xsd', 'zip': 'zip'}
     #return m[g]
 #end def
 ]]></token></macros>
--- a/prepare_test_data_manual.sh	Thu Dec 01 19:11:13 2022 +0000
+++ b/prepare_test_data_manual.sh	Fri Jun 14 21:35:36 2024 +0000
@@ -1,8 +1,3 @@
-MSSimulator -test -in DecoyDatabase_1.fasta -out MSsimulator.mzml -algorithm:RandomNumberGenerators:biological reproducible -algorithm:RandomNumberGenerators:technical reproducible > MSSimulator_1.stdout 2> stderr
-if [[ "$?" -ne "0" ]]; then >&2 echo 'MSSimulator_1 failed'; >&2 echo -e "stderr:\n$(cat stderr | sed 's/^/    /')"; fi
-
-MSSimulator -test -in DecoyDatabase_1.fasta -out MSsimulator_MALDI.mzml -algorithm:RandomNumberGenerators:biological reproducible -algorithm:RandomNumberGenerators:technical reproducible -algorithm:MSSim:Global:ionization_type MALDI > MSSimulator_2.stdout 2> stderr
-if [[ "$?" -ne "0" ]]; then >&2 echo 'MSSimulator_2 failed'; >&2 echo -e "stderr:\n$(cat stderr | sed 's/^/    /')"; fi
 
 ClusterMassTracesByPrecursor -test -in_ms1 ConsensusMapNormalizer_input.consensusXML -in_swath ConsensusMapNormalizer_input.consensusXML -out ClusterMassTracesByPrecursor.mzml > ClusterMassTracesByPrecursor.stdout 2> stderr
 if [[ "$?" -ne "0" ]]; then >&2 echo 'ClusterMassTracesByPrecursor failed'; >&2 echo -e "stderr:\n$(cat stderr | sed 's/^/    /')"; fi
@@ -13,8 +8,7 @@
 CVInspector -test -cv_files CHEMISTRY/XLMOD.obo -cv_names XLMOD -mapping_file MAPPING/ms-mapping.xml -html CVInspector.html > CVInspector.stdout 2> stderr
 if [[ "$?" -ne "0" ]]; then >&2 echo 'CVInspector failed'; >&2 echo -e "stderr:\n$(cat stderr | sed 's/^/    /')"; fi
 
-DeMeanderize -test -in MSsimulator_MALDI.mzml -out DeMeanderize.mzml > DeMeanderize.stdout 2> stderr
-if [[ "$?" -ne "0" ]]; then >&2 echo 'DeMeanderize failed'; >&2 echo -e "stderr:\n$(cat stderr | sed 's/^/    /')"; fi
+# TODO DeMeanderize
 
 # TODO DigestorMotif
 
@@ -30,26 +24,17 @@
 if [[ "$?" -ne "0" ]]; then >&2 echo 'FeatureFinderIsotopeWavelet failed'; >&2 echo -e "stderr:\n$(cat stderr | sed 's/^/    /')"; fi
 
 
-FFEval -test -in  FeatureFinderCentroided_1_output.featureXML -truth  FeatureFinderCentroided_1_output.featureXML -out  FFEval.featureXML -out_roc FFEval_roc.csv  > FFEval.stdout 2> stderr
-if [[ "$?" -ne "0" ]]; then >&2 echo 'FFEval failed'; >&2 echo -e "stderr:\n$(cat stderr | sed 's/^/    /')"; fi
-
 # TODO? deprecated IDDecoyProbability
 
 IDExtractor -test -in MSGFPlusAdapter_1_out.idXML -best_hits -number_of_peptides  1 -out  IDExtractor.idXML   > IDExtractor.stdout 2> stderr
 if [[ "$?" -ne "0" ]]; then >&2 echo 'IDExtractor failed'; >&2 echo -e "stderr:\n$(cat stderr | sed 's/^/    /')"; fi
 
-LabeledEval -test -in  FeatureLinkerLabeled_1_input.featureXML -truth  FeatureLinkerLabeled_1_output.consensusXML> LabeledEval.txt > LabeledEval.stdout 2> stderr
-if [[ "$?" -ne "0" ]]; then >&2 echo 'LabeledEval failed'; >&2 echo -e "stderr:\n$(cat stderr | sed 's/^/    /')"; fi
-
 MapStatistics -test -in SiriusAdapter_3_input.featureXML -out MapStatistics.txt > MapStatistics_1.stdout 2> stderr
 if [[ "$?" -ne "0" ]]; then >&2 echo 'MapStatistics_1 failed'; >&2 echo -e "stderr:\n$(cat stderr | sed 's/^/    /')"; fi
 
 MapStatistics -test -in ConsensusXMLFile_1.consensusXML -out MapStatistics2.txt > MapStatistics_2.stdout 2> stderr
 if [[ "$?" -ne "0" ]]; then >&2 echo 'MapStatistics_2 failed'; >&2 echo -e "stderr:\n$(cat stderr | sed 's/^/    /')"; fi
 
-MetaboliteAdductDecharger -test -in Decharger_input.featureXML -out_cm MetaboliteAdductDecharger_cm.consensusXML -out_fm MetaboliteAdductDecharger_fm.featureXML -outpairs MetaboliteAdductDecharger_pairs.consensusXML > MetaboliteAdductDecharger.stdout 2> stderr
-if [[ "$?" -ne "0" ]]; then >&2 echo 'MetaboliteAdductDecharger failed'; >&2 echo -e "stderr:\n$(cat stderr | sed 's/^/    /')"; fi
-
 MetaboliteSpectralMatcher -test -in spectra.mzML -database MetaboliteSpectralDB.mzML -out MetaboliteSpectralMatcher.mzTab > MetaboliteSpectralMatcher.stdout 2> stderr
 if [[ "$?" -ne "0" ]]; then >&2 echo 'MetaboliteSpectralMatcher failed'; >&2 echo -e "stderr:\n$(cat stderr | sed 's/^/    /')"; fi
 
@@ -68,20 +53,6 @@
 OpenSwathRewriteToFeatureXML -featureXML OpenSwathFeatureXMLToTSV_input.featureXML -out OpenSwathRewriteToFeatureXML.featureXML > OpenSwathRewriteToFeatureXML.stdout 2> stderr
 # if [[ "$?" -ne "0" ]]; then >&2 echo 'OpenSwathRewriteToFeatureXML failed'; >&2 echo -e "stderr:\n$(cat stderr | sed 's/^/    /')"; fi
 
-# adapted from the commented tests in OpenMS TODO may be removed later https://github.com/OpenMS/OpenMS/issues/4719
-FileConverter -in PepNovo.mzXML -out PepNovo_1.mzML > /dev/null 2> stderr
-if [[ "$?" -ne "0" ]]; then >&2 echo 'FileConverter failed'; >&2 echo -e "stderr:\n$(cat stderr | sed 's/^/    /')"; fi
-
-PepNovoAdapter -ini PepNovoAdapter_1_parameters.ini -in PepNovo_1.mzML -out PepNovoAdapter_3_output.idXML -model_directory pepnovo_models/ -pepnovo_executable pepnovo > PepNovo_1.stdout 2> stderr
-if [[ "$?" -ne "0" ]]; then >&2 echo 'PhosphoScoring failed'; >&2 echo -e "stderr:\n$(cat stderr | sed 's/^/    /')"; fi
-
-FileConverter -in PepNovo.mzData -out PepNovo_4.mzML > /dev/null 2> stderr
-if [[ "$?" -ne "0" ]]; then >&2 echo 'FileConverter failed'; >&2 echo -e "stderr:\n$(cat stderr | sed 's/^/    /')"; fi
-PepNovoAdapter -ini PepNovoAdapter_1_parameters.ini -in PepNovo_4.mzML -out PepNovoAdapter_4_output.idXML -model_directory pepnovo_models/ -pepnovo_executable pepnovo > PepNovo_1.stdout 2> stderr
-if [[ "$?" -ne "0" ]]; then >&2 echo 'PhosphoScoring failed'; >&2 echo -e "stderr:\n$(cat stderr | sed 's/^/    /')"; fi
-
-#PepNovoAdapter -ini PepNovoAdapter_5_parameters.ini -in PepNovoAdapter_5_output.pepnovo_out -out PepNovoAdapter_5_output.idXML -model_directory pepnovo_models/ 
-
 # TODO PhosphoScoring 
 PhosphoScoring -in spectra.mzML -id MSGFPlusAdapter_1_out1.tmp -out PhosphoScoring.idxml > PhosphoScoring.stdout 2> stderr
 if [[ "$?" -ne "0" ]]; then >&2 echo 'PhosphoScoring failed'; >&2 echo -e "stderr:\n$(cat stderr | sed 's/^/    /')"; fi
@@ -118,9 +89,6 @@
 RNPxlXICFilter -test -control FileFilter_1_input.mzML -treatment FileFilter_1_input.mzML -out RNPxlXICFilter.mzML > RNPxlXICFilter.stdout 2> stderr
 if [[ "$?" -ne "0" ]]; then >&2 echo 'RNPxlXICFilter failed'; >&2 echo -e "stderr:\n$(cat stderr | sed 's/^/    /')"; fi
 
-RTEvaluation -in PeptideIndexer_1.idXML -out RTEvaluation.tsv > RTEvaluation.stdout 2> stderr
-if [[ "$?" -ne "0" ]]; then >&2 echo 'RTEvaluation failed'; >&2 echo -e "stderr:\n$(cat stderr | sed 's/^/    /')"; fi
-
 SemanticValidator -test -in FileFilter_1_input.mzML -mapping_file MAPPING/ms-mapping.xml > SemanticValidator.stdout 2> stderr
 if [[ "$?" -ne "0" ]]; then >&2 echo 'SemanticValidator failed'; >&2 echo -e "stderr:\n$(cat stderr | sed 's/^/    /')"; fi
 
@@ -152,13 +120,8 @@
 SpectraFilterThresholdMower -test -in  SpectraFilterSqrtMower_1_input.mzML -out  SpectraFilterThresholdMower.mzML > SpectraFilterThresholdMower.stdout 2> stderr
 if [[ "$?" -ne "0" ]]; then >&2 echo 'SpectraFilterThresholdMower failed'; >&2 echo -e "stderr:\n$(cat stderr | sed 's/^/    /')"; fi
 
-SpectraMerger -test -in NovorAdapter_in.mzML -out SpectraMerger_1.mzML > SpectraMerger.stdout 2> stderr
+SpectraMerger -test -in NovorAdapter_in.mzML -out SpectraMerger_1.mzML -algorithm:average_gaussian:ms_level 2 > SpectraMerger.stdout 2> stderr
 if [[ "$?" -ne "0" ]]; then >&2 echo 'SpectraMerger failed'; >&2 echo -e "stderr:\n$(cat stderr | sed 's/^/    /')"; fi
 
-# TODO SvmTheoreticalSpectrumGeneratorTrainer
-
-TransformationEvaluation -test -in FileInfo_16_input.trafoXML -out TransformationEvaluation.trafoXML > TransformationEvaluation.stdout 2> stderr
-if [[ "$?" -ne "0" ]]; then >&2 echo 'TransformationEvaluation failed'; >&2 echo -e "stderr:\n$(cat stderr | sed 's/^/    /')"; fi
-
 XMLValidator -test -in FileFilter_1_input.mzML > XMLValidator.stdout 2> stderr
 if [[ "$?" -ne "0" ]]; then >&2 echo 'XMLValidator failed'; >&2 echo -e "stderr:\n$(cat stderr | sed 's/^/    /')"; fi
--- a/readme.md	Thu Dec 01 19:11:13 2022 +0000
+++ b/readme.md	Fri Jun 14 21:35:36 2024 +0000
@@ -11,7 +11,7 @@
  * https://www.openms.de/
 
 The wrappers for these tools and most of their tests are automatically
-generated using the `generate.sh` script. The generation of the tools is
+generated using the `./aux/generate.sh` script. The generation of the tools is
 based on the CTDConverter (https://github.com/WorkflowConversion/CTDConverter)
 which can be fine tuned via the `hardcoded_params.json` file. This file allows
 to blacklist and hardcode parameters and to modify or set arbitrary
@@ -129,15 +129,6 @@
 Open problems
 =============
 
-Some tools stall in CI testing using `--biocontainers` which is why the OpenMS
-tools are currently listed in `.tt_biocontainer_skip`. This is
-
-- AssayGeneratorMetabo and SiriusAdapter (both depend on sirius)
-- OMSSAAdapter
-
-Using `docker -t` seems to solve the problem (see
-https://github.com/galaxyproject/galaxy/issues/10153).
-
 Licence (MIT)
 =============
 
--- a/test-data.sh	Thu Dec 01 19:11:13 2022 +0000
+++ b/test-data.sh	Fri Jun 14 21:35:36 2024 +0000
@@ -1,11 +1,10 @@
 #!/usr/bin/env bash
 
-VERSION=2.8
+# set -x
+
+VERSION=3.1
 FILETYPES="aux/filetypes.txt"
-CONDAPKG="https://anaconda.org/bioconda/openms/2.8.0/download/linux-64/openms-2.8.0-h7ca0330_0.tar.bz2"
-
-# import the magic
-. ./generate-foo.sh
+CONDAPKG="https://anaconda.org/bioconda/openms/3.1.0/download/linux-64/openms-3.1.0-h8964181_1.tar.bz2"
 
 # install conda
 if [ -z "$tmp" ]; then
@@ -45,17 +44,20 @@
 
 echo "Clone OpenMS $VERSION sources"
 if [[ ! -d $OPENMSGIT ]]; then
-    # TODO >2.8 reenable original release branch .. also in else branch
-    # the plus branch contains commits from https://github.com/OpenMS/OpenMS/pull/5920 and https://github.com/OpenMS/OpenMS/pull/5917
-    # git clone -b release/$VERSION.0 https://github.com/OpenMS/OpenMS.git $OPENMSGIT
-    git clone -b release/$VERSION.0-plus https://github.com/bernt-matthias/OpenMS.git $OPENMSGIT
-    cd $OPENMSGIT
-    git submodule init
-    git submodule update
-    cd -
+    if [[ "$created" == "yes" ]]; then
+        GIT_DIR=$(mktemp -d --dry-run)
+        GIT_EXTRA_OPTS="--separate-git-dir=$GIT_DIR"
+    fi
+    git clone -b release/$VERSION.0 --depth 1 --recurse-submodules=THIRDPARTY --shallow-submodules $GIT_EXTRA_OPTS https://github.com/OpenMS/OpenMS.git $OPENMSGIT
+    ## save some space by just keeping the needed binaries
+    find $OPENMSGIT/THIRDPARTY/ -type f -not \( -name maracluster -o -name spectrast \) -delete
+    find $OPENMSGIT/THIRDPARTY/ -empty -type d -delete
+    if [[ "$created" == "yes" ]]; then
+        rm -rf $GIT_DIR
+    fi
 else
     cd $OPENMSGIT
-    git pull origin release/$VERSION.0-plus
+    git pull origin release/$VERSION.0
     cd -
 fi
 
@@ -65,7 +67,7 @@
 if conda env list | grep "$OPENMSENV"; then
     true
 else
-    conda create -y --quiet --override-channels --channel iuc --channel conda-forge --channel bioconda --channel defaults -n $OPENMSENV openms=$VERSION openms-thirdparty=$VERSION omssa=2.1.9 ctdopts=1.5 lxml
+    conda create -y --quiet --solver libmamba --override-channels --strict-channel-priority --channel conda-forge --channel bioconda -n $OPENMSENV openms=$VERSION openms-thirdparty=$VERSION ctdopts=1.5 lxml
 # chmod -R u-w $OPENMSENV 
 fi
 ###############################################################################
@@ -101,33 +103,34 @@
 conda deactivate
 
 
-# ###############################################################################
-# ## copy all the test data files to test-data
-# ## most of it (outputs) will be overwritten later, but its needed for
-# ## prepare_test_data
-# ###############################################################################
+# # ###############################################################################
+# # ## copy all the test data files to test-data
+# # ## most of it (outputs) will be overwritten later, but its needed for
+# # ## prepare_test_data
+# # ###############################################################################
 echo "Get test data"
-find test-data -type f,l,d ! -name "*fa" ! -name "*loc" ! -name "test-data" -delete
+find test-data -type f,l,d ! -name "*fa" ! -name "*loc" ! -name "test-data" ! -name MetaboliteSpectralDB.mzML -delete
 
 cp $(find $OPENMSGIT/src/tests/topp/ -type f | grep -Ev "third_party_tests.cmake|CMakeLists.txt|check_ini") test-data/
 cp -r $OPENMSGIT/share/OpenMS/MAPPING/ test-data/
 cp -r $OPENMSGIT/share/OpenMS/CHEMISTRY test-data/
 cp -r $OPENMSGIT/share/OpenMS/examples/ test-data/
 if [ ! -f test-data/MetaboliteSpectralDB.mzML ]; then 
-    wget -nc https://abibuilder.cs.uni-tuebingen.de/archive/openms/Tutorials/Data/latest/Example_Data/Metabolomics/databases/MetaboliteSpectralDB.mzML
+    wget -nc https://raw.githubusercontent.com/sneumann/OpenMS/master/share/OpenMS/CHEMISTRY/MetaboliteSpectralDB.mzML
+    # wget -nc https://abibuilder.cs.uni-tuebingen.de/archive/openms/Tutorials/Data/latest/Example_Data/Metabolomics/databases/MetaboliteSpectralDB.mzML
     mv MetaboliteSpectralDB.mzML test-data/
 fi
 ln -fs TOFCalibration_ref_masses test-data/TOFCalibration_ref_masses.txt
 ln -fs TOFCalibration_const test-data/TOFCalibration_const.csv
 
-if [ ! -d test-data/pepnovo_models/ ]; then
-    mkdir -p /tmp/pepnovo
-    wget -nc http://proteomics.ucsd.edu/Software/PepNovo/PepNovo.20120423.zip
-    unzip PepNovo.20120423.zip -d /tmp/pepnovo/
-    mv /tmp/pepnovo/Models test-data/pepnovo_models/
-    rm PepNovo.20120423.zip
-    rm -rf /tmp/pepnovo
-fi
+# if [ ! -d test-data/pepnovo_models/ ]; then
+#     mkdir -p /tmp/pepnovo
+#     wget -nc http://proteomics.ucsd.edu/Software/PepNovo/PepNovo.20120423.zip
+#     unzip PepNovo.20120423.zip -d /tmp/pepnovo/
+#     mv /tmp/pepnovo/Models test-data/pepnovo_models/
+#     rm PepNovo.20120423.zip
+#     rm -rf /tmp/pepnovo
+# fi
 ###############################################################################
 ## generate ctd files using the binaries in the conda package 
 ###############################################################################
@@ -170,6 +173,47 @@
 ###############################################################################
 ## create script to create results for the tests and run it
 ###############################################################################
+# parse data preparation calls from OpenMS sources for a tool with a given id
+function prepare_test_data {
+#     id=$1
+# | egrep -i "$id\_.*[0-9]+(_prepare\"|_convert)?"
+
+    OLD_OSW_PARAM=$(cat $OPENMSGIT/src/tests/topp/CMakeLists.txt |sed 's/#.*$//'| sed 's/^\s*//; s/\s*$//' |awk '{printf("%s@NEWLINE@", $0)}' |  sed 's/)@NEWLINE@/)\n/g' | sed 's/@NEWLINE@/ /g' | grep OLD_OSW_PARAM | head -n 1 | sed 's/^[^"]\+//; s/)$//; s/"//g')
+    # TODO SiriusAdapter depends on online service which may timeout .. so keep disabled https://github.com/OpenMS/OpenMS/pull/5010
+    cat $OPENMSGIT/src/tests/topp/CMakeLists.txt  $OPENMSGIT/src/tests/topp/THIRDPARTY/third_party_tests.cmake |
+        sed "s/\${OLD_OSW_PARAM}/$OLD_OSW_PARAM/" |
+        grep -v "\.ini\.json" |
+        sed 's/.ini.json /ini /' | 
+        sed 's/#.*$//'| 
+        sed 's/^\s*//; s/\s*$//' | 
+        grep -v "^$"  | 
+        awk '{printf("%s@NEWLINE@", $0)}' | 
+        sed 's/)@NEWLINE@/)\n/g' | sed 's/@NEWLINE@/ /g' | 
+        sed 's/degenerate_cases\///' | 
+        egrep -v "WRITEINI|WRITECTD|INVALIDVALUE|DIFF" | 
+        grep add_test | 
+        egrep "TOPP|UTILS" |
+        sed 's@${DATA_DIR_SHARE}/@@g;'|
+        sed 's@${TMP_RIP_PATH}@./@g'|
+        sed 's@TOFCalibration_ref_masses @TOFCalibration_ref_masses.txt @g; s@TOFCalibration_const @TOFCalibration_const.csv @'| 
+	sed 's/\("TOPP_SiriusAdapter_4".*\)-sirius:database all\(.*\)/\1-sirius:database pubchem\2/' |
+    while read line
+    do
+        test_id=$(echo "$line" | sed 's/add_test(//; s/"//g;  s/)[^)]*$//; s/\${TOPP_BIN_PATH}\///g;s/\${DATA_DIR_TOPP}\///g; s#THIRDPARTY/##g' | cut -d" " -f1)
+
+        if grep -lq "$test_id"'\".* PROPERTIES WILL_FAIL 1' $OPENMSGIT/src/tests/topp/CMakeLists.txt $OPENMSGIT/src/tests/topp/THIRDPARTY/third_party_tests.cmake; then
+            >&2 echo "    skip failing "$test_id
+            continue
+        fi
+
+        line=$(echo "$line" | sed 's/add_test("//; s/)[^)]*$//; s/\${TOPP_BIN_PATH}\///g;s/\${DATA_DIR_TOPP}\///g; s#THIRDPARTY/##g' | cut -d" " -f2-)
+        # line="$(fix_tmp_files $line)"
+        echo 'echo executing "'$test_id'"'
+        echo "$line > $test_id.stdout 2> $test_id.stderr"
+        echo "if [[ \"\$?\" -ne \"0\" ]]; then >&2 echo '$test_id failed'; >&2 echo -e \"stderr:\n\$(cat $test_id.stderr | sed 's/^/    /')\"; echo -e \"stdout:\n\$(cat $test_id.stdout)\";fi"    
+    done
+}
+
 echo "Create test shell script"
 
 echo -n "" > prepare_test_data.sh
@@ -180,31 +224,19 @@
 echo 'export LUCIPHOR_BINARY="$(dirname $(realpath $(which luciphor2)))/luciphor2.jar"' >> prepare_test_data.sh
 
 echo 'export MARACLUSTER_BINARY="'"$OPENMSGIT"'/THIRDPARTY/Linux/64bit/MaRaCluster/maracluster"'>> prepare_test_data.sh
-echo 'export MSFRAGGER_BINARY="/home/berntm/Downloads/MSFragger-20171106/MSFragger-20171106.jar"'>> prepare_test_data.sh
+echo 'export MSFRAGGER_BINARY="/home/berntm/Downloads/MSFragger-3.5/MSFragger-3.5.jar"'>> prepare_test_data.sh
 echo 'export MSGFPLUS_BINARY="$(msgf_plus -get_jar_path)"' >> prepare_test_data.sh
 echo 'export MYRIMATCH_BINARY="myrimatch"'>> prepare_test_data.sh
 echo 'export NOVOR_BINARY="/home/berntm/Downloads/novor/lib/novor.jar"' >> prepare_test_data.sh
-echo 'export OMSSA_BINARY="$(dirname $(realpath $(which omssacl)))/omssacl"'>> prepare_test_data.sh
 echo 'export PERCOLATOR_BINARY="percolator"'>> prepare_test_data.sh
 echo 'export SIRIUS_BINARY="$(which sirius)"' >> prepare_test_data.sh
 echo 'export SPECTRAST_BINARY="'"$OPENMSGIT"'/THIRDPARTY/Linux/64bit/SpectraST/spectrast"' >> prepare_test_data.sh
 echo 'export XTANDEM_BINARY="xtandem"' >> prepare_test_data.sh
 echo 'export THERMORAWFILEPARSER_BINARY="ThermoRawFileParser.exe"' >> prepare_test_data.sh
+echo 'export SAGE_BINARY=sage' >> prepare_test_data.sh
 
 prepare_test_data >> prepare_test_data.sh #tmp_test_data.sh
 
-## prepare_test_data > tmp_test_data.sh
-## # remove calls not needed for the tools listed in any .list file
-## echo LIST $LIST
-## if [ ! -z "$LIST" ]; then
-##     REX=$(echo $LIST | sed 's/ /\n/g' | sed 's@.*/\([^/]\+\).xml$@\1@' | tr '\n' '|' | sed 's/|$//')
-## else
-##     REX=".*"
-## fi
-## echo REX $REX
-## cat tmp_test_data.sh | egrep "($REX)" >> prepare_test_data.sh
-## rm tmp_test_data.sh
-
 echo "Execute test shell script"
 chmod u+x prepare_test_data.sh
 cd ./test-data || exit
@@ -234,14 +266,11 @@
 for i in $(ls ctd/*ctd)
 do
     b=$(basename "$i" .ctd)
-    get_tests2 "$b" >> "$autotests"
+    ./get_tests.py --id "$b" --cmake "$OPENMSGIT"/src/tests/topp/CMakeLists.txt "$OPENMSGIT"/src/tests/topp/THIRDPARTY/third_party_tests.cmake >> "$autotests"
+    wc -l "$autotests"
 done
 echo "</macros>" >> "$autotests"
 
-# echo "Create test data links"
-# Breaks DecoyDatabase
-# link_tmp_files
-
 # tests for tools using output_prefix parameters can not be auto generated
 # hence we output the tests for manual curation in macros_test.xml
 # and remove them from the autotests
@@ -255,6 +284,7 @@
 #
 # not able to specify composite test data  
 # -> SpectraSTSearchAdapter 
+echo "Discard some tests"
 if [[ ! -z "$1" ]]; then
     echo "" > macros_discarded_auto.xml
     for i in OpenSwathFileSplitter IDRipper MzMLSplitter SeedListGenerator MSFraggerAdapter MaRaClusterAdapter NovorAdapter SpectraSTSearchAdapter
@@ -272,7 +302,7 @@
 ## remove broken symlinks in test-data
 find test-data/ -xtype l -delete
 
-if [ ! -z "$created" ]; then
+if [[ "$created" == "yes" ]]; then
     echo "Removing temporary directory"
     rm -rf "$tmp"
 fi