diff macros.xml @ 0:e8d7b7dc55fc draft

"planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/metamorpheus commit 7a40b99b4124b0c032a16067741fd55a60b48cb0-dirty"
author galaxyp
date Wed, 26 May 2021 15:42:20 +0000
parents
children 975f857ad9b8
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/macros.xml	Wed May 26 15:42:20 2021 +0000
@@ -0,0 +1,713 @@
+<macros>
+    <token name="@PROFILE@">21.01</token>
+    <token name="@TOOL_VERSION@">0.0.316</token>
+    <token name="@VERSION_SUFFIX@">0</token>
+    <xml name="requirements">
+        <requirements>
+            <requirement type="package" version="@TOOL_VERSION@">metamorpheus</requirement>
+            <yield/>
+        </requirements>
+    </xml>
+
+    <token name="@DEFAULT_COMMON_TOML@">
+[CommonParameters]
+# MaxThreadsToUsePerFile = 11
+ListOfModsFixed = "Common Fixed\tCarbamidomethyl on C\t\tCommon Fixed\tCarbamidomethyl on U"
+ListOfModsVariable = "Common Variable\tOxidation on M"
+DoPrecursorDeconvolution = true # Calibration false
+UseProvidedPrecursorInfo = true
+DeconvolutionIntensityRatio = 3.0
+DeconvolutionMaxAssumedChargeState = 12
+DeconvolutionMassTolerance = "±4.0000 PPM"
+TotalPartitions = 1
+ProductMassTolerance = "±20.0000 PPM" # Calibration 25.0000
+PrecursorMassTolerance = "±5.0000 PPM" # Calibration 15.0000
+AddCompIons = false
+ScoreCutoff = 5.0
+ReportAllAmbiguity = true
+NumberOfPeaksToKeepPerWindow = 200
+MinimumAllowedIntensityRatioToBasePeak = 0.01
+NormalizePeaksAccrossAllWindows = false
+TrimMs1Peaks = false
+TrimMsMsPeaks = true # Calibration false
+UseDeltaScore = false
+QValueOutputFilter = 1.0
+CustomIons = []
+AssumeOrphanPeaksAreZ1Fragments = true
+MaxHeterozygousVariants = 4
+MinVariantDepth = 1
+DissociationType = "HCD"
+SeparationType = "HPLC"
+MS2ChildScanDissociationType = "Unknown"
+MS3ChildScanDissociationType = "Unknown"
+</token>
+
+    <token name="@DEFAULT_DIGESTION_TOML@">
+[CommonParameters.DigestionParams]
+MaxMissedCleavages = 2
+InitiatorMethionineBehavior = "Variable"
+MinPeptideLength = 7
+MaxPeptideLength = 2147483647
+MaxModificationIsoforms = 1024
+MaxModsForPeptide = 2
+Protease = "trypsin"
+SearchModeType = "Full"
+FragmentationTerminus = "Both"
+SpecificProtease = "trypsin"
+GeneratehUnlabeledProteinsForSilac = true
+</token>
+
+    <token name="@DEFAULT_CALIBRATION_TOML@"><![CDATA[
+TaskType = "Calibrate"
+
+[CalibrationParameters]
+WriteIntermediateFiles = false
+WriteIndexedMzml = true
+MinMS1IsotopicPeaksNeededForConfirmedIdentification = 3
+MinMS2IsotopicPeaksNeededForConfirmedIdentification = 2
+NumFragmentsNeededForEveryIdentification = 10
+
+[CommonParameters]
+MaxThreadsToUsePerFile = 11
+ListOfModsFixed = "Common Fixed\tCarbamidomethyl on C\t\tCommon Fixed\tCarbamidomethyl on U"
+ListOfModsVariable = "Common Variable\tOxidation on M"
+DoPrecursorDeconvolution = false
+UseProvidedPrecursorInfo = true
+DeconvolutionIntensityRatio = 3.0
+DeconvolutionMaxAssumedChargeState = 12
+DeconvolutionMassTolerance = "±4.0000 PPM"
+TotalPartitions = 1
+ProductMassTolerance = "±25.0000 PPM"
+PrecursorMassTolerance = "±15.0000 PPM"
+AddCompIons = false
+ScoreCutoff = 5.0
+ReportAllAmbiguity = true
+NumberOfPeaksToKeepPerWindow = 200
+MinimumAllowedIntensityRatioToBasePeak = 0.01
+NormalizePeaksAccrossAllWindows = false
+TrimMs1Peaks = false
+TrimMsMsPeaks = false
+UseDeltaScore = false
+QValueOutputFilter = 1.0
+CustomIons = []
+AssumeOrphanPeaksAreZ1Fragments = true
+MaxHeterozygousVariants = 4
+MinVariantDepth = 1
+DissociationType = "HCD"
+SeparationType = "HPLC"
+MS2ChildScanDissociationType = "Unknown"
+MS3ChildScanDissociationType = "Unknown"
+
+@DEFAULT_DIGESTION_TOML@
+]]></token>
+
+    <token name="@DEFAULT_GPTMD_TOML@"><![CDATA[
+TaskType = "Gptmd"
+
+[GptmdParameters]
+ListOfModsGptmd = "Common Biological\tAcetylation on K\t\tCommon Biological\tAcetylation on X\t\tCommon Biological\tADP-ribosylation on S\t\tCommon Artifact\tAmmonia loss on C\t\tCommon Artifact\tAmmonia loss on N\t\tCommon Biological\tButyrylation on K\t\tMetal\tCalcium on D\t\tMetal\tCalcium on E\t\tCommon Artifact\tCarbamyl on C\t\tCommon Artifact\tCarbamyl on K\t\tCommon Artifact\tCarbamyl on M\t\tCommon Artifact\tCarbamyl on R\t\tCommon Artifact\tCarbamyl on X\t\tCommon Biological\tCarboxylation on D\t\tCommon Biological\tCarboxylation on E\t\tCommon Biological\tCarboxylation on K\t\tCommon Biological\tCitrullination on R\t\tCommon Biological\tCrotonylation on K\t\tMetal\tCu[I] on D\t\tMetal\tCu[I] on E\t\tCommon Artifact\tDeamidation on N\t\tCommon Artifact\tDeamidation on Q\t\tCommon Biological\tDimethylation on K\t\tCommon Biological\tDimethylation on R\t\tMetal\tFe[II] on D\t\tMetal\tFe[II] on E\t\tMetal\tFe[III] on D\t\tMetal\tFe[III] on E\t\tCommon Biological\tFormylation on K\t\tCommon Biological\tGlu to PyroGlu on Q\t\tCommon Biological\tGlutarylation on K\t\tCommon Biological\tHexNAc on Nxs\t\tCommon Biological\tHexNAc on Nxt\t\tCommon Biological\tHexNAc on S\t\tCommon Biological\tHexNAc on T\t\tCommon Biological\tHydroxybutyrylation on K\t\tCommon Biological\tHydroxylation on K\t\tCommon Biological\tHydroxylation on N\t\tCommon Biological\tHydroxylation on P\t\tMetal\tMagnesium on D\t\tMetal\tMagnesium on E\t\tCommon Biological\tMalonylation on K\t\tCommon Biological\tMethylation on K\t\tCommon Biological\tMethylation on R\t\tCommon Biological\tNitrosylation on C\t\tCommon Biological\tNitrosylation on Y\t\tCommon Biological\tPhosphorylation on S\t\tCommon Biological\tPhosphorylation on T\t\tCommon Biological\tPhosphorylation on Y\t\tMetal\tPotassium on D\t\tMetal\tPotassium on E\t\tCommon Biological\tPyridoxal phosphate on K\t\tMetal\tSodium on D\t\tMetal\tSodium on E\t\tCommon Biological\tSuccinylation on K\t\tCommon Biological\tSulfonation on Y\t\tCommon Biological\tTrimethylation on K\t\tCommon Artifact\tWater Loss on E\t\tMetal\tZinc on D\t\tMetal\tZinc on E"
+
+@DEFAULT_COMMON_TOML@
+
+@DEFAULT_DIGESTION_TOML@
+]]></token>
+
+    <token name="@DEFAULT_SEARCH_TOML@"><![CDATA[
+TaskType = "Search"
+
+[SearchParameters]
+DisposeOfFileWhenDone = true
+DoParsimony = true
+ModPeptidesAreDifferent = false
+NoOneHitWonders = false
+MatchBetweenRuns = false
+Normalize = false
+QuantifyPpmTol = 5.0
+DoHistogramAnalysis = false
+SearchTarget = true
+DecoyType = "Reverse"
+MassDiffAcceptorType = "OneMM"
+WritePrunedDatabase = false
+KeepAllUniprotMods = true
+DoLocalizationAnalysis = true
+DoQuantification = true
+SearchType = "Classic"
+LocalFdrCategories = ["FullySpecific"]
+MaxFragmentSize = 30000.0
+HistogramBinTolInDaltons = 0.003
+MaximumMassThatFragmentIonScoreIsDoubled = 0.0
+WriteMzId = true
+WritePepXml = false
+WriteDecoys = true
+WriteContaminants = true
+WriteIndividualFiles = true
+CompressIndividualFiles = false
+TCAmbiguity = "RemoveContaminant"
+
+[SearchParameters.ModsToWriteSelection]
+'N-linked glycosylation' = 3
+'O-linked glycosylation' = 3
+'Other glycosylation' = 3
+'Common Biological' = 3
+'Less Common' = 3
+Metal = 3
+'2+ nucleotide substitution' = 3
+'1 nucleotide substitution' = 3
+UniProt = 2
+
+@DEFAULT_COMMON_TOML@
+
+@DEFAULT_DIGESTION_TOML@
+]]></token>
+
+    <xml name="input_spectrums" token_multiple="false" token_filetype="Spectrum">
+        <param name="spectrums" type="data" format="mzml" multiple="@MULTIPLE@" label="MS/MS @FILETYPE@ files"/>
+    </xml>
+    <xml name="calib_toml">
+        <param name="calib_tomls" type="data" format="toml" multiple="true" optional="true" label="Calibrated Spectrum TOML files"/>
+    </xml>
+    <xml name="input_databases">
+        <param name="databases" type="data" format="uniprotxml,fasta" multiple="true" label="Reference Protein Databases"/>
+    </xml>
+    <xml name="input_toml">
+        <param name="input_toml" type="data" format="toml" optional="true" label="Optional Config toml from history"/>
+    </xml>
+    <token name="@CMD_IMPORTS@">
+#import re
+#def identifier_or_name($input1)
+    #if hasattr($input1, 'element_identifier')
+        #return $input1.element_identifier
+    #else
+        #return $input1.name
+    #end if
+#end def
+#def clean($name1)
+    #set $name_clean = $re.sub('[^\w\-_]', '_', $re.sub('(?i)[.](fa|fasta|xml|imzml|mzml|raw|mgf)$','', $re.sub('.*/','', $name1.rstrip('.gz'))))
+    #return $name_clean
+#end def
+#def ln_name($ds)
+    #set $ext = ''
+    #if $ds.is_of_type('mzml') or $ds.is_of_type('imzml')
+        #set $ext = ".mzML"
+    #else if $ds.is_of_type('thermo.raw')
+        #set $ext = ".raw"
+    #else if $ds.is_of_type('toml')
+        #set $ext = ".toml"
+    #else if $ds.is_of_type('uniprotxml')
+        #set $ext = ".xml"
+    #else if $ds.is_of_type('fasta')
+        #set $ext = ".fasta"
+    #end if
+    #set $name = "%s%s" % ($clean($identifier_or_name($ds)),$ext)
+    #return $name
+#end def
+    </token>
+
+    <token name="@PREPARE_INPUTS@"><![CDATA[
+    @CMD_IMPORTS@
+    #set $spectrum_names = []
+    #set $database_names = []
+    #set $inputs_dir = 'inputs'
+    mkdir -p $inputs_dir &&
+    #for $sf in $spectrums
+      #set $i_name = $ln_name($sf)
+      $spectrum_names.append($i_name)
+      ln -s '${sf}' '${inputs_dir}/${i_name}' &&
+    #end for
+    #for $db in $databases
+      #set $d_name = $ln_name($db)
+      $database_names.append($d_name)
+      ln -s '${db}' '${d_name}' &&
+    #end for
+]]></token>
+    <token name="@LN_CALIB_TOML@"><![CDATA[
+    #for $tf in $calib_tomls
+      #set $t_name = $ln_name($tf)
+      ln -s '${tf}' '${inputs_dir}/${t_name}' &&
+    #end for
+]]></token>
+    
+    <token name="@MERGE_TOMLS@"><![CDATA[
+#def merge_tomls($tomls, $merged):
+    #import re
+    #set $config = dict()
+    #set $config['categories'] = []
+    #set $category = ' ' 
+    #for $toml in $tomls
+        #set $fh = open(toml,'r')
+        #for $line in $fh:
+            #set $entry = $line.rstrip()
+            #if $entry.strip() == '':
+                #continue
+            #end if
+            #set $m = $re.match('^((TaskType)\s*=\s*(.*))$', $entry)
+            #if $m:
+                #if $m.groups()[0] not in $config:
+                    #set $config['TaskType'] = $entry
+                    #continue
+                #end if 
+            #end if
+            #set $m = $re.match('^(\[.+\])$', $entry)
+            #if $m:
+                #set $category = $m.groups()[0]
+                #if $category not in $config['categories']:
+                    $config['categories'].append($category)
+                    #set $config[$category] = []
+                    #continue
+                #end if
+            #end if
+            #set $m = $re.match('^(\S+)\s*=\s*(.*)$',$entry)
+            #if $m:
+                #set $pname = $m.groups()[0]
+                #set $pval = $m.groups()[1]
+                #if $pname not in $config[$category]:
+                    $config[$category].append($pname)
+                #end if
+                #set $config[$pname] = $pval
+            #end if
+#*
+*#
+        #end for
+        $fh.close()
+    #end for
+    #set $wfh = open($merged,'w')
+    #if 'TaskType' in $config:
+        #silent $wfh.write('%s\n' % $config['TaskType'])
+    #end if
+    #for $category in $config['categories']:
+        #silent $wfh.write('\n')
+        #silent $wfh.write('%s\n' % $category)
+        #for $pname in $config[$category]:
+            #set $pval = $config[$pname]
+            #silent $wfh.write('%s = %s\n' % ($pname, $pval))
+        #end for
+    #end for
+    $wfh.close()
+#*
+*#
+#*
+    #echo $config 
+*#
+#end def
+#if $input_toml 
+    $merge_tomls([$default_toml,str($input_toml),$user_toml], $task_settings_toml)
+#else
+    $merge_tomls([$default_toml,$user_toml], $task_settings_toml)
+#end if
+ln -s '$task_settings_toml' tasksettings.toml &&
+
+]]></token>
+
+    <xml name="calibrate_params">
+        <conditional name="calibration">
+            <param name="set_calibration" type="select" label="Set Calibration Parameters">
+                <option value="no">no</option>
+                <option value="yes">yes</option>
+            </param>
+            <when value="no"/>
+            <when value="yes">
+                <param argument="MinMS1IsotopicPeaksNeededForConfirmedIdentification" type="integer" value="3" label="MinMS1IsotopicPeaksNeededForConfirmedIdentification"/>
+                <param argument="MinMS2IsotopicPeaksNeededForConfirmedIdentification" type="integer" value="2" label="MinMS2IsotopicPeaksNeededForConfirmedIdentification"/>
+                <param argument="NumFragmentsNeededForEveryIdentification" type="integer" value="10" label="NumFragmentsNeededForEveryIdentification"/>
+            </when>
+        </conditional>
+    </xml>
+    <token name="@CALIBRATE_CONFIG@"><![CDATA[
+#if $calibration.set_calibration == 'yes'
+[CalibrationParameters]
+WriteIntermediateFiles = false
+MinMS1IsotopicPeaksNeededForConfirmedIdentification = $calibration.MinMS1IsotopicPeaksNeededForConfirmedIdentification
+MinMS2IsotopicPeaksNeededForConfirmedIdentification = $calibration.MinMS2IsotopicPeaksNeededForConfirmedIdentification
+NumFragmentsNeededForEveryIdentification = $calibration.NumFragmentsNeededForEveryIdentification
+#end if
+]]></token>
+    <xml name="gptmd_params">
+
+    </xml>
+    <token name="@GPTMD_CONFIG@">
+TaskType = "Gptmd"
+
+[GptmdParameters]
+ListOfModsGptmd = "Common Biological\tAcetylation on K\t\tCommon Biological\tAcetylation on X\t\tCommon Biological\tADP-ribosylation on S\t\tCommon Biological\tButyrylation on K\t\tCommon Biological\tCarboxylation on D\t\tCommon Biological\tCarboxylation on E\t\tCommon Biological\tCarboxylation on K\t\tCommon Biological\tCitrullination on R\t\tCommon Biological\tCrotonylation on K\t\tCommon Biological\tDimethylation on K\t\tCommon Biological\tDimethylation on R\t\tCommon Biological\tFormylation on K\t\tCommon Biological\tGlu to PyroGlu on Q\t\tCommon Biological\tGlutarylation on K\t\tCommon Biological\tHexNAc on Nxs\t\tCommon Biological\tHexNAc on Nxt\t\tCommon Biological\tHexNAc on S\t\tCommon Biological\tHexNAc on T\t\tCommon Biological\tHydroxybutyrylation on K\t\tCommon Biological\tHydroxylation on K\t\tCommon Biological\tHydroxylation on N\t\tCommon Biological\tHydroxylation on P\t\tCommon Biological\tMalonylation on K\t\tCommon Biological\tMethylation on K\t\tCommon Biological\tMethylation on R\t\tCommon Biological\tNitrosylation on C\t\tCommon Biological\tNitrosylation on Y\t\tCommon Biological\tPhosphorylation on S\t\tCommon Biological\tPhosphorylation on T\t\tCommon Biological\tPhosphorylation on Y\t\tCommon Biological\tPyridoxal phosphate on K\t\tCommon Biological\tSuccinylation on K\t\tCommon Biological\tSulfonation on Y\t\tCommon Biological\tTrimethylation on K\t\tCommon Artifact\tAmmonia loss on C\t\tCommon Artifact\tAmmonia loss on N\t\tCommon Artifact\tCarbamyl on C\t\tCommon Artifact\tCarbamyl on K\t\tCommon Artifact\tCarbamyl on M\t\tCommon Artifact\tCarbamyl on R\t\tCommon Artifact\tCarbamyl on X\t\tCommon Artifact\tDeamidation on N\t\tCommon Artifact\tDeamidation on Q\t\tCommon Artifact\tWater Loss on E\t\tMetal\tCalcium on D\t\tMetal\tCalcium on E\t\tMetal\tCu[I] on D\t\tMetal\tCu[I] on E\t\tMetal\tFe[II] on D\t\tMetal\tFe[II] on E\t\tMetal\tFe[III] on D\t\tMetal\tFe[III] on E\t\tMetal\tMagnesium on D\t\tMetal\tMagnesium on E\t\tMetal\tPotassium on D\t\tMetal\tPotassium on E\t\tMetal\tSodium on D\t\tMetal\tSodium on E\t\tMetal\tZinc on D\t\tMetal\tZinc on E"
+    </token>
+
+    <xml name="search_params">
+        <conditional name="search_params">
+            <param name="set_search_params" type="select" label="Set Search Parameters">
+                <option value="no">no</option>
+                <option value="yes">yes</option>
+            </param>
+            <when value="no"/>
+            <when value="yes">
+                <param argument="DoParsimony" type="boolean" truevalue="true" falsevalue="false" checked="true" label="DoParsimony"/>
+                <param argument="ModPeptidesAreDifferent" type="boolean" truevalue="true" falsevalue="false" checked="false" label="ModPeptidesAreDifferent"/>
+                <param argument="NoOneHitWonders" type="boolean" truevalue="true" falsevalue="false" checked="false" label="NoOneHitWonders"/>
+                <param argument="MatchBetweenRuns" type="boolean" truevalue="true" falsevalue="false" checked="false" label="MatchBetweenRuns"/>
+                <param argument="Normalize" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Normalize"/>
+                <param argument="QuantifyPpmTol" type="float" value="5.0" label="QuantifyPpmTol"/>
+                <param argument="DoHistogramAnalysis" type="boolean" truevalue="true" falsevalue="false" checked="false" label="DoHistogramAnalysis"/>
+                <param argument="SearchTarget" type="boolean" truevalue="true" falsevalue="false" checked="true" label="SearchTarget"/>
+                <param argument="DecoyType" type="select" label="DecoyType">
+                    <option value="Reverse" selected="true">Reverse</option>
+                    <option value="Slide">Slide</option>
+                    <option value="None">None</option>
+                </param>
+                <param argument="MassDiffAcceptorType" type="select" label="MassDiffAcceptorType">
+                    <option value="Exact">Exact</option>
+                    <option value="OneMM" selected="true">OneMM</option>
+                    <option value="TwoMM">TwoMM</option>
+                    <option value="ThreeMM">ThreeMM</option>
+                    <option value="PlusOrMinusThreeMM">PlusOrMinusThreeMM</option>
+                    <option value="ModOpen">ModOpen</option>
+                    <option value="Open">Open</option>
+                </param>
+                <param argument="KeepAllUniprotMods" type="boolean" truevalue="true" falsevalue="false" checked="true" label="KeepAllUniprotMods"/>
+                <param argument="DoLocalizationAnalysis" type="boolean" truevalue="true" falsevalue="false" checked="true" label="DoLocalizationAnalysis"/>
+                <param argument="DoQuantification" type="boolean" truevalue="true" falsevalue="false" checked="true" label="DoQuantification"/>
+                <param argument="SearchType" type="select" label="SearchType">
+                    <option value="Classic" selected="true">Classic</option>
+                    <option value="Modern">Modern</option>
+                    <option value="NonSpecific">NonSpecific</option>
+                </param>
+                <param argument="LocalFdrCategories" type="select" label="LocalFdrCategories">
+                    <option value="FullySpecific" selected="true">FullySpecific</option>
+                    <option value="SemiSpecific">SemiSpecific</option>
+                    <option value="NonSpecific">NonSpecific</option>
+                </param>
+                <param argument="MaxFragmentSize" type="float" value="30000.0" label="MaxFragmentSize"/>
+                <param argument="HistogramBinTolInDaltons" type="float" value="0.003" label="HistogramBinTolInDaltons"/>
+                <param argument="MaximumMassThatFragmentIonScoreIsDoubled" type="float" value="0.0" label="MaximumMassThatFragmentIonScoreIsDoubled"/>
+            </when>
+        </conditional>
+        <param name="search_outputs" type="select" multiple="true" label="Select Optional Search Outputs">
+            <option value="WriteMzId" selected="true">WriteMzId</option>
+            <option value="WritePepXml" selected="false">WritePepXml</option>
+            <option value="WritePrunedDatabase" selected="true">WritePrunedDatabase</option>
+            <option value="WriteDecoys" selected="false">WriteDecoys</option>
+            <option value="WriteContaminants" selected="false">WriteContaminants</option>
+        </param> 
+    </xml>
+    <token name="@SEARCH_CONFIG@"><![CDATA[
+[SearchParameters]
+#if $search_params.set_search_params == 'yes'
+DisposeOfFileWhenDone = true
+DoParsimony = $search_params.DoParsimony
+ModPeptidesAreDifferent = $search_params.ModPeptidesAreDifferent
+NoOneHitWonders = $search_params.NoOneHitWonders
+MatchBetweenRuns = $search_params.MatchBetweenRuns
+Normalize = $search_params.Normalize
+QuantifyPpmTol = $search_params.QuantifyPpmTol
+DoHistogramAnalysis = $search_params.DoHistogramAnalysis
+SearchTarget = $search_params.SearchTarget
+DecoyType = "$search_params.DecoyType"
+MassDiffAcceptorType = "$search_params.MassDiffAcceptorType"
+KeepAllUniprotMods = $search_params.KeepAllUniprotMods
+DoLocalizationAnalysis = $search_params.DoLocalizationAnalysis
+DoQuantification = $search_params.DoQuantification
+SearchType = "$search_params.SearchType"
+LocalFdrCategories = ["$search_params.LocalFdrCategories"]
+MaxFragmentSize = $search_params.MaxFragmentSize
+HistogramBinTolInDaltons = $search_params.HistogramBinTolInDaltons
+MaximumMassThatFragmentIonScoreIsDoubled = $search_params.MaximumMassThatFragmentIonScoreIsDoubled
+#end if
+WritePrunedDatabase = #echo str('WritePrunedDatabase' in $search_outputs).lower()
+WriteMzId = #echo str('WriteMzId' in $search_outputs).lower()
+WritePepXml = #echo str('WritePepXml' in $search_outputs).lower()
+WritePepXml = #echo str('WritePepXml' in $search_outputs).lower()
+WriteDecoys = #echo str('WriteDecoys' in $search_outputs).lower()
+WriteContaminants = #echo str('WriteContaminants' in $search_outputs).lower()
+
+[SearchParameters.ModsToWriteSelection]
+'N-linked glycosylation' = 3
+'O-linked glycosylation' = 3
+'Other glycosylation' = 3
+'Common Biological' = 3
+'Less Common' = 3
+Metal = 3
+'2+ nucleotide substitution' = 3
+'1 nucleotide substitution' = 3
+UniProt = 2
+]]></token>
+
+    <xml name="dissociation_options">
+                    <option value="Any">Any</option>
+                    <option value="CID">CID</option>
+                    <option value="LowCID">LowCID</option>
+                    <option value="ISCID">ISCID</option>
+                    <option value="MPD">MPD</option>
+                    <option value="ECD">ECD</option>
+                    <option value="PQD">PQD</option>
+                    <option value="ETD">ETD</option>
+                    <option value="HCD" selected="true">HCD</option>
+                    <option value="EThcD">EThcD</option>
+                    <option value="Custom">Custom</option>
+    </xml>
+
+    <xml name="common_params">
+        <conditional name="common">
+            <param name="set_common" type="select" label="Set Common Parameters">
+                <option value="no">no</option>
+                <option value="yes">yes</option>
+            </param>
+            <when value="no"/>
+            <when value="yes">
+                <param argument="UseProvidedPrecursorInfo" type="boolean" truevalue="true" falsevalue="false" checked="true" label="Use Provided Precursor"/>
+                <param argument="DoPrecursorDeconvolution" type="boolean" truevalue="true" falsevalue="false" checked="true" label="Deconvolute Precursor"/>
+                <param argument="DeconvolutionMaxAssumedChargeState" type="integer" value="12" label="Deconvolution Max Assumed Charge State"/>
+                <param argument="DeconvolutionIntensityRatio" type="float" value="3.0" label="DeconvolutionIntensityRatio"/>
+                <param argument="DeconvolutionMassTolerance" type="float" value="4.0000" label="DeconvolutionMassTolerance in PPM"/>
+                <param argument="TotalPartitions" type="integer" value="1" label="TotalPartitions"/>
+                <param argument="PrecursorMassTolerance" type="float" value="15.0000" label="PrecursorMassTolerance in PPM"/>
+                <param argument="ProductMassTolerance" type="float" value="25.0000" label="ProductMassTolerance in PPM"/>
+                <param argument="AddCompIons" type="boolean" truevalue="true" falsevalue="false" checked="false" label="AddCompIons"/>
+                <param argument="ScoreCutoff" type="float" value="5.0" label="ScoreCutoff"/>
+                <param argument="ReportAllAmbiguity" type="boolean" truevalue="true" falsevalue="false" checked="true" label="ReportAllAmbiguity"/>
+                <param argument="NumberOfPeaksToKeepPerWindow" type="integer" value="200" label="NumberOfPeaksToKeepPerWindow"/>
+                <param argument="MinimumAllowedIntensityRatioToBasePeak" type="float" value="0.01" label="MinimumAllowedIntensityRatioToBasePeak"/>
+                <param argument="NormalizePeaksAccrossAllWindows" type="boolean" truevalue="true" falsevalue="false" checked="false" label="NormalizePeaksAccrossAllWindows"/>
+                <param argument="TrimMs1Peaks" type="boolean" truevalue="true" falsevalue="false" checked="false" label="TrimMs1Peaks"/>
+                <param argument="TrimMsMsPeaks" type="boolean" truevalue="true" falsevalue="false" checked="true" label="TrimMsMsPeaks"/>
+                <param argument="UseDeltaScore" type="boolean" truevalue="true" falsevalue="false" checked="false" label="UseDeltaScore"/>
+                <param argument="QValueOutputFilter" type="float" value="1.0" label="QValueOutputFilter"/>
+                <param argument="MaxHeterozygousVariants" type="integer" value="4" label="MaxHeterozygousVariants"/>
+                <param argument="MinVariantDepth" type="integer" value="1" label="MinVariantDepth"/>
+                <param argument="SeparationType" type="select" label="SeparationType">
+                    <option value="HPLC" selected="true">HPLC</option>
+                    <option value="CZE">CZE</option>
+                </param>
+                <param argument="DissociationType" type="select" label="DissociationType">
+                    <expand macro="dissociation_options"/>
+                </param>
+                <param argument="MS2ChildScanDissociationType" type="select" label="MS2ChildScanDissociationType">
+                    <expand macro="dissociation_options"/>
+                </param>
+                <param argument="MS3ChildScanDissociationType" type="select" label="MS2ChildScanDissociationType">
+                    <expand macro="dissociation_options"/>
+                </param>
+            </when>
+        </conditional>
+    </xml>
+    <token name="@COMMON_CONFIG@">
+[CommonParameters]
+TaskDescriptor = "CalibrateTask"
+MaxThreadsToUsePerFile = 11
+#if $common.set_common == 'yes' 
+DoPrecursorDeconvolution = $common.DoPrecursorDeconvolution
+UseProvidedPrecursorInfo = $common.UseProvidedPrecursorInfo
+DeconvolutionIntensityRatio = $common.DeconvolutionIntensityRatio
+DeconvolutionMaxAssumedChargeState = $common.DeconvolutionMaxAssumedChargeState
+DeconvolutionMassTolerance = "±${common.DeconvolutionMassTolerance} PPM"
+TotalPartitions = $common.TotalPartitions
+ProductMassTolerance = "±${common.ProductMassTolerance} PPM"
+PrecursorMassTolerance = "±${common.PrecursorMassTolerance} PPM"
+AddCompIons = $common.AddCompIons
+ScoreCutoff = $common.ScoreCutoff
+ReportAllAmbiguity = $common.ReportAllAmbiguity
+NumberOfPeaksToKeepPerWindow = $common.NumberOfPeaksToKeepPerWindow
+MinimumAllowedIntensityRatioToBasePeak = $common.MinimumAllowedIntensityRatioToBasePeak
+NormalizePeaksAccrossAllWindows = $common.NormalizePeaksAccrossAllWindows
+TrimMs1Peaks = $common.TrimMs1Peaks
+TrimMsMsPeaks = $common.TrimMsMsPeaks
+UseDeltaScore = $common.UseDeltaScore
+QValueOutputFilter = $common.QValueOutputFilter
+## CustomIons = $common.CustomIons
+AssumeOrphanPeaksAreZ1Fragments = $common.AssumeOrphanPeaksAreZ1Fragments
+MaxHeterozygousVariants = $common.MaxHeterozygousVariants
+MinVariantDepth = $common.MinVariantDepth
+DissociationType = $common.DissociationType
+SeparationType = $common.SeparationType
+MS2ChildScanDissociationType = $common.MS2ChildScanDissociationType
+MS3ChildScanDissociationType = $common.MS3ChildScanDissociationType
+#else
+DoPrecursorDeconvolution = true
+UseProvidedPrecursorInfo = true
+DeconvolutionIntensityRatio = 3.0
+DeconvolutionMaxAssumedChargeState = 12
+DeconvolutionMassTolerance = "±4.0000 PPM"
+TotalPartitions = 1
+ProductMassTolerance = "±25.0000 PPM"
+PrecursorMassTolerance = "±15.0000 PPM"
+AddCompIons = false
+ScoreCutoff = 5.0
+ReportAllAmbiguity = true
+NumberOfPeaksToKeepPerWindow = 200
+MinimumAllowedIntensityRatioToBasePeak = 0.01
+NormalizePeaksAccrossAllWindows = false
+TrimMs1Peaks = false
+TrimMsMsPeaks = true
+UseDeltaScore = false
+QValueOutputFilter = 1.0
+CustomIons = []
+AssumeOrphanPeaksAreZ1Fragments = true
+MaxHeterozygousVariants = 4
+MinVariantDepth = 1
+DissociationType = "HCD"
+SeparationType = "HPLC"
+MS2ChildScanDissociationType = "Unknown"
+MS3ChildScanDissociationType = "Unknown"
+#end if
+    </token>
+    <xml name="mods_params">
+    </xml>
+    <token name="@MODS_CONFIG@">
+ListOfModsFixed = "Common Fixed\tCarbamidomethyl on C\t\tCommon Fixed\tCarbamidomethyl on U"
+ListOfModsVariable = "Common Variable\tOxidation on M"
+    </token>
+    <xml name="digest_params">
+        <conditional name="digest">
+            <param name="set_digest" type="select" label="Set Digest Parameters">
+                <option value="no">no</option>
+                <option value="yes">yes</option>
+            </param>
+            <when value="no"/>
+            <when value="yes">
+                <param name="Protease" type="select" label="Protease">
+                    <option value="Any">Any</option>
+                    <option value="Arg-C">Arg-C</option>
+                    <option value="Asp-N">Asp-N</option>
+                    <option value="chymotrypsin (don't cleave before proline)">chymotrypsin (don't cleave before proline)</option>
+                    <option value="chymotrypsin (cleave before proline)">chymotrypsin (cleave before proline)</option>
+                    <option value="CNBr">CNBr</option>
+                    <option value="Glu-C">Glu-C</option>
+                    <option value="Glu-C (with asp)">Glu-C (with asp)</option>
+                    <option value="Lys-C (don't cleave before proline)">Lys-C (don't cleave before proline)</option>
+                    <option value="Lys-C (cleave before proline)">Lys-C (cleave before proline)</option>
+                    <option value="Lys-N">Lys-N</option>
+                    <option value="semi-trypsin">semi-trypsin</option>
+                    <option value="trypsin" selected="true">trypsin</option>
+                    <option value="tryptophan oxidation">tryptophan oxidation</option>
+                    <option value="non-specific">non-specific</option>
+                    <option value="top-down">top-down</option>
+                    <option value="singleN">singleN</option>
+                    <option value="singleC">singleC</option>
+                    <option value="collagenase">collagenase</option>
+                </param>
+                <param name="SpecificProtease" type="select" label="SpecificProtease">
+                    <option value="Any">Any</option>
+                    <option value="Arg-C">Arg-C</option>
+                    <option value="Asp-N">Asp-N</option>
+                    <option value="chymotrypsin (don't cleave before proline)">chymotrypsin (don't cleave before proline)</option>
+                    <option value="chymotrypsin (cleave before proline)">chymotrypsin (cleave before proline)</option>
+                    <option value="CNBr">CNBr</option>
+                    <option value="Glu-C">Glu-C</option>
+                    <option value="Glu-C (with asp)">Glu-C (with asp)</option>
+                    <option value="Lys-C (don't cleave before proline)">Lys-C (don't cleave before proline)</option>
+                    <option value="Lys-C (cleave before proline)">Lys-C (cleave before proline)</option>
+                    <option value="Lys-N">Lys-N</option>
+                    <option value="semi-trypsin">semi-trypsin</option>
+                    <option value="trypsin" selected="true">trypsin</option>
+                    <option value="tryptophan oxidation">tryptophan oxidation</option>
+                    <option value="non-specific">non-specific</option>
+                    <option value="top-down">top-down</option>
+                    <option value="singleN">singleN</option>
+                    <option value="singleC">singleC</option>
+                    <option value="collagenase">collagenase</option>
+                </param>
+                <param name="InitiatorMethionineBehavior" type="select" label="InitiatorMethionineBehavior">
+                    <option value="Variable" selected="true">Variable</option>
+                    <option value="Undefined">Undefined</option>
+                    <option value="Retain">Retain</option>
+                    <option value="Cleave">Cleave</option>
+                </param>
+                <param name="SearchModeType" type="select" label="SearchModeType">
+                    <option value="Full" selected="true">Full</option>
+                    <option value="None">None</option>
+                    <option value="Semi">Semi</option>
+                    <option value="SingleN">SingleN</option>
+                    <option value="SingleC">SingleC</option>
+                </param>
+                <param name="FragmentationTerminus" type="select" label="FragmentationTerminus">
+                    <option value="Both" selected="true">Both</option>
+                    <option value="None">None</option>
+                    <option value="N">N</option>
+                    <option value="C">C</option>
+                </param>
+                <param name="MaxMissedCleavages" type="integer" value="2" min="0" max="5" label="MaxMissedCleavages"/>
+                <param name="MinPeptideLength" type="integer" value="7" min="4" label="MinPeptideLength"/>
+                <param name="MaxPeptideLength" type="integer" value="2147483647" max="2147483647" label="MaxPeptideLength"/>
+                <param name="MaxModificationIsoforms" type="integer" value="1024" min="0" max="5000" label="MaxModificationIsoforms"/>
+                <param name="MaxModsForPeptide" type="integer" value="2" min="0" max="10" label="MaxModsForPeptide"/>
+                <param name="GeneratehUnlabeledProteinsForSilac" type="boolean" truevalue="true" falsevalue="false" checked="false" label="GeneratehUnlabeledProteinsForSilac"/>
+            </when>
+        </conditional>
+    </xml>
+    <token name="@DIGEST_CONFIG@">
+[CommonParameters.DigestionParams]
+#if $digest.set_digest == 'yes'
+MaxMissedCleavages = $digest.MaxMissedCleavages
+InitiatorMethionineBehavior = "$digest.InitiatorMethionineBehavior"
+MinPeptideLength = $digest.MinPeptideLength
+MaxPeptideLength = $digest.MaxPeptideLength
+MaxModificationIsoforms = $digest.MaxModificationIsoforms
+MaxModsForPeptide = $digest.MaxModsForPeptide
+Protease = "$digest.Protease"
+SearchModeType = "$digest.SearchModeType"
+FragmentationTerminus = "$digest.FragmentationTerminus"
+SpecificProtease = "$digest.SpecificProtease"
+GeneratehUnlabeledProteinsForSilac = $digest.GeneratehUnlabeledProteinsForSilac
+#else
+MaxMissedCleavages = 2
+InitiatorMethionineBehavior = "Variable"
+MinPeptideLength = 7
+MaxPeptideLength = 2147483647
+MaxModificationIsoforms = 1024
+MaxModsForPeptide = 2
+Protease = "trypsin"
+SearchModeType = "Full"
+FragmentationTerminus = "Both"
+SpecificProtease = "trypsin"
+GeneratehUnlabeledProteinsForSilac = false
+#end if
+    </token>
+
+    
+    <xml name="output_settings_toml">
+        <data name="settings_toml" format="toml" label="${tool.name} on ${on_string} tasksettings.toml" from_work_dir="tasksettings.toml" />
+    </xml>
+    <xml name="calibrated_outputs">
+        <collection name="calibrated_scans" type="list" label="${tool.name} on ${on_string} Calibrated Spectrums">
+            <discover_datasets pattern="^(?P&lt;name&gt;.+\.mzML)$" ext="mzml" directory="output/Task1CalibrationTask" />
+        </collection>
+        <collection name="calibratation_toml" type="list" label="${tool.name} on ${on_string} Calibration TOMLs">
+            <discover_datasets pattern="^(?P&lt;name&gt;.+\.toml)$" ext="toml" directory="output/Task1CalibrationTask" />
+        </collection>
+    </xml>
+    <xml name="search_collection_outputs">
+        <collection name="mzids" type="list" label="${tool.name} on ${on_string} Spectrum Search mzIdent">
+            <filter>search_outputs and 'WriteMzId' in search_outputs</filter>
+            <discover_datasets pattern="^(?P&lt;name&gt;.+\.mzID)$" ext="mzid" directory="output/Task1SearchTask/Individual File Results" />
+        </collection>
+        <collection name="pepxmls" type="list" label="${tool.name} on ${on_string} Spectrum Search pep.xml">
+            <filter>search_outputs and 'WritePepXml' in search_outputs</filter>
+            <discover_datasets pattern="^(?P&lt;name&gt;.+\.pep\.XML)$" ext="pepxml" directory="output/Task1SearchTask/Individual File Results" />
+        </collection>
+    </xml>
+
+    <token name="@METAMORPHEUS_HELP@"><![CDATA[
+**MetaMorpheus**
+
+MetaMorpheus_ is a bottom-up proteomics database search software with integrated post-translational modification (PTM) discovery capability. 
+See the wiki page for details:  https://github.com/smith-chem-wisc/MetaMorpheus/wiki
+
+Typical MetaMorpheus Workflow:
+
+  1. MetaMorpheus Calibration - of MassSpec Spectrum files using a reference protein database (preferably in Uniprot XML format)
+  2. MetaMorpheus G-PTM-D - Post-translational modification (PTM) discovery from the Calibrated Spectrum files
+  3. MetaMorpheus Database Search - Proetomics Search using the Calibrated Spectrum files and the GPTMD protein database
+
+.. image:: MetaMorpheusWorkflow.png
+  :width: 823
+  :height: 759
+
+.. _MetaMorpheus: https://github.com/smith-chem-wisc/MetaMorpheus
+
+]]></token>    
+
+    <xml name="citations">
+        <citations>
+            <citation type="doi">10.1021/acs.jproteome.7b00873</citation>
+            <yield />
+        </citations>
+    </xml>
+
+</macros>