changeset 2:e67b0cc10377 draft

planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/spectrast commit af2d54a900c86c6b9926b87b514517c0f0f0a975-dirty
author jjohnson
date Wed, 20 Jun 2018 12:58:33 -0400
parents 390a3c4a7f6b
children 7f02fc51bddf
files spectrast_params.py spectrast_search.xml
diffstat 2 files changed, 168 insertions(+), 46 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spectrast_params.py	Wed Jun 20 12:58:33 2018 -0400
@@ -0,0 +1,111 @@
+#!/usr/bin/env python
+
+from __future__ import print_function
+
+import argparse
+import re
+import sys
+
+search_opts = [
+    'libraryFile',
+    'databaseFile',
+    'databaseType',
+    'indexCacheAll',
+    # 'filterSelectedListFileName',
+    'precursorMzTolerance',
+    'precursorMzUseAverage',
+    'searchAllCharges',
+    'detectHomologs',
+    'fvalFractionDelta',
+    'useSp4Scoring',
+    'fvalUseDotBias',
+    'usePValue',
+    'useTierwiseOpenModSearch',
+    # 'expectedCysteineMod',
+    # 'ignoreSpectraWithUnmodCysteine',
+    # 'ignoreChargeOneLibSpectra',
+    # 'ignoreAbnormalSpectra',
+    'outputExtension',
+    'outputDirectory',
+    'hitListTopHitFvalThreshold',
+    'hitListLowerHitsFvalThreshold',
+    'hitListShowHomologs',
+    'hitListShowMaxRank',
+    'hitListOnlyTopHit',
+    'hitListExcludeNoMatch',
+    'enzymeForPepXMLOutput',
+    'printFingerprintingSummary',
+    'filterMinPeakCount',
+    'filterAllPeaksBelowMz',
+    'filterMaxIntensityBelow',
+    'filterMinMzRange',
+    'filterCountPeakIntensityThreshold',
+    'filterRemovePeakIntensityThreshold',
+    'filterMaxPeaksUsed',
+    'filterMaxDynamicRange',
+    'peakScalingMzPower',
+    'peakScalingIntensityPower',
+    'peakScalingUnassignedPeaks',
+    'peakNoBinning',
+    'peakBinningNumBinsPerMzUnit',
+    'peakBinningFractionToNeighbor',
+    'filterLibMaxPeaksUsed',
+    'filterLightIonsMzThreshold',
+    'filterITRAQReporterPeaks',
+    'filterTMTReporterPeaks',
+    # 'filterRemoveHuge515Threshold',
+]
+
+
+def __main__():
+    parser = argparse.ArgumentParser(
+        description='Parse SpectraST search.params files' +
+                    ' to create an updated search.params')
+    parser.add_argument(
+        'param_files', nargs='*',
+        help='A SpectraST search.params files')
+    parser.add_argument(
+        '-o', '--output',
+        help='Output file  (-) for stdout')
+    args = parser.parse_args()
+
+    output_wtr = open(args.output, 'w')\
+        if args.output and args.output != '-' else sys.stdout
+
+    optpat = re.compile('^([a-z]\w+)\s*[=:]\s*([^=]+)$')
+    search_params = dict()
+
+    # Collect all search_params
+    def parse_params(param_file, fh):
+        for i, line in enumerate(fh):
+            try:
+                m = optpat.match(line.rstrip())
+                if m:
+                    k, v = m.groups()
+                    if k in search_opts:
+                        search_params[k] = v
+            except Exception, e:
+                print('%s(%d): %s %s' % (param_file, i, line, e),
+                      file=sys.stderr)
+
+    if args.param_files:
+        for param_file in args.param_files:
+            try:
+                with open(param_file, 'r') as fh:
+                    parse_params(param_file, fh)
+            except Exception, e:
+                print('parse_params: %s' % e, file=sys.stderr)
+    else:
+        try:
+            parse_params('stdin', sys.stdin)
+        except Exception, e:
+            print('parse_params: %s' % e, file=sys.stderr)
+
+    # Write search_params
+    for search_opt in search_opts:
+        if search_opt in search_params:
+            print('%s = %s' % (search_opt, search_params[search_opt]), file=output_wtr)
+
+
+if __name__ == "__main__":
+    __main__()
--- a/spectrast_search.xml	Mon Jun 18 10:08:02 2018 -0400
+++ b/spectrast_search.xml	Wed Jun 20 12:58:33 2018 -0400
@@ -3,62 +3,64 @@
     <macros>
         <import>macros.xml</import>
     </macros>
-    <expand macro="requirements" />
+    <expand macro="requirements">
+    </expand>
     <command detect_errors="exit_code"><![CDATA[
         ## Need to symlink to data using name with extension that spectrast recognizes 
         #import re
         ## spectrum datasets
-        #set $exts = {'mgf':'MGF', 'mzml':'mzML', 'mzxml':'mzXML', 'msp': 'msp', 'mzdata':'mzData'}
-        #set $input_files = []
+        #set global $exts = {'mgf':'MGF', 'mzml':'mzML', 'mzxml':'mzXML', 'msp': 'msp', 'mzdata':'mzData'}
+        #set global $input_files = []
         #def ln_scan($sf):
-            #set $ext = $exts[$sf.extension.lower()]
-            #set $input_name = $re.sub('[.]([^.]*)$','$ext',$sf.display_name.split('/')[-1]) 
+            #set $ext = '.' + $exts[$sf.extension.lower()]
+            #set $input_name = $re.sub('[.]([^.]*)$',$ext,$sf.display_name.split('/')[-1]) 
             #silent $input_files.append($input_name)
             ln -s -f '${sf}' '${input_name}' &&
             #set $encoded_id = $__app__.security.encode_id($sf.id)
             echo "Spectrums:${sf.display_name}(API:${encoded_id}) ";
         #end def
         #if $collection.collection_selector == 'dataset':
-            ln_scan($collection.spectrum_file)
+            $ln_scan($collection.spectrum_file)
         #else:
-            #for $spectrum_file in $spectrum_files:
-                ln_scan($collection.spectrum_file)
+            #for $spectrum_file in $collection.spectrum_files:
+                $ln_scan($spectrum_file)
             #end for
         #end if
         python $__tool_directory__/spectrast_params.py 
-           #if def $spectrastParams:
+           #if $spectrastParams:
                '$spectrastParams'
            #end if
-           $spectrast_params' -o spectrast.params &&
+           '$spectrast_params' -o spectrast.params &&
         mkdir out &&
-        spectrast -sFspectrast.params -sL'${libraryFile.files_path}/library.splib' -sE $output_format
+        spectrast -sFspectrast.params -sL'${libraryFile.extra_files_path}/library.splib' -sO out -sE $outputExtension
         #echo ' '.join($input_files)
+        && ls -l out
         #if $collection.collection_selector == 'dataset':
             && cp out/* $output
         #end if
     ]]></command>
     <configfiles>
         <configfile name="spectrast_params"><![CDATA[#slurp
-libraryFile = $libraryFile
-#if $databaseFile is not None:
-databaseFile = $databaseFile
+libraryFile = ${libraryFile.extra_files_path}/library.splib
+#if str($general.databaseFile) != 'None':
+databaseFile = $general.databaseFile
+#if $general.databaseType is not None:
+databaseType = $general.databaseType
 #end if
-#if $databaseType is not None:
-databaseType = $databaseType
 #end if
-#if $indexCacheAll is not None:
-indexCacheAll = $indexCacheAll
+#if $general.indexCacheAll is not None:
+indexCacheAll = $general.indexCacheAll
 #end if
-#if $filterSelectedListFileName is not None:
-filterSelectedListFileName = $filterSelectedListFileName
-#end if
+## #if $filterSelectedListFileName is not None:
+## filterSelectedListFileName = $filterSelectedListFileName
+## #end if
 #if $candidate_selection_and_scoring.precursorMzTolerance is not None:
 precursorMzTolerance = $candidate_selection_and_scoring.precursorMzTolerance
 #end if
-#if $candidate_selection_and_scoring.precursorMzUseAverage is not None:
+#if str($candidate_selection_and_scoring.precursorMzUseAverage) != 'None':
 precursorMzUseAverage = $candidate_selection_and_scoring.precursorMzUseAverage
 #end if
-#if $candidate_selection_and_scoring.searchAllCharges is not None:
+#if str($candidate_selection_and_scoring.searchAllCharges) != 'None':
 searchAllCharges = $candidate_selection_and_scoring.searchAllCharges
 #end if
 #if $candidate_selection_and_scoring.detectHomologs is not None:
@@ -67,46 +69,46 @@
 #if $candidate_selection_and_scoring.fvalFractionDelta is not None:
 fvalFractionDelta = $candidate_selection_and_scoring.fvalFractionDelta
 #end if
-#if $candidate_selection_and_scoring.useSp4Scoring is not None:
+#if str($candidate_selection_and_scoring.useSp4Scoring) != 'None':
 useSp4Scoring = $candidate_selection_and_scoring.useSp4Scoring
 #end if
-#if $candidate_selection_and_scoring.fvalUseDotBias is not None:
+#if str($candidate_selection_and_scoring.fvalUseDotBias) != 'None':
 fvalUseDotBias = $candidate_selection_and_scoring.fvalUseDotBias
 #end if
-#if $candidate_selection_and_scoring.usePValue is not None:
+#if str($candidate_selection_and_scoring.usePValue) != 'None':
 usePValue = $candidate_selection_and_scoring.usePValue
 #end if
-#if $candidate_selection_and_scoring.useTierwiseOpenModSearch is not None:
+#if str($candidate_selection_and_scoring.useTierwiseOpenModSearch) != 'None':
 useTierwiseOpenModSearch = $candidate_selection_and_scoring.useTierwiseOpenModSearch
 #end if
 #if $outputExtension is not None:
 outputExtension = $outputExtension
 #end if
-#if $outputDirectory is not None:
-outputDirectory = $outputDirectory
-#end if
+## #if $outputDirectory is not None:
+## outputDirectory = $outputDirectory
+## #end if
 #if $output_and_display.hitListTopHitFvalThreshold is not None:
 hitListTopHitFvalThreshold = $output_and_display.hitListTopHitFvalThreshold
 #end if
 #if $output_and_display.hitListLowerHitsFvalThreshold is not None:
 hitListLowerHitsFvalThreshold = $output_and_display.hitListLowerHitsFvalThreshold
 #end if
-#if $output_and_display.hitListShowHomologs is not None:
+#if str($output_and_display.hitListShowHomologs) != 'None':
 hitListShowHomologs = $output_and_display.hitListShowHomologs
 #end if
 #if $output_and_display.hitListShowMaxRank is not None:
 hitListShowMaxRank = $output_and_display.hitListShowMaxRank
 #end if
-#if $output_and_display.hitListOnlyTopHit is not None:
+#if str($output_and_display.hitListOnlyTopHit) != 'None':
 hitListOnlyTopHit = $output_and_display.hitListOnlyTopHit
 #end if
-#if $output_and_display.hitListExcludeNoMatch is not None:
+#if str($output_and_display.hitListExcludeNoMatch) != 'None':
 hitListExcludeNoMatch = $output_and_display.hitListExcludeNoMatch
 #end if
 #if $output_and_display.enzymeForPepXMLOutput is not None:
 enzymeForPepXMLOutput = $output_and_display.enzymeForPepXMLOutput
 #end if
-#if $printFingerprintingSummary is not None:
+#if str($printFingerprintingSummary) != 'None':
 printFingerprintingSummary = $printFingerprintingSummary
 #end if
 #if $spectrum_filtering.filterMinPeakCount is not None:
@@ -142,7 +144,7 @@
 #if $spectrum_processing.peakScalingUnassignedPeaks is not None:
 peakScalingUnassignedPeaks = $spectrum_processing.peakScalingUnassignedPeaks
 #end if
-#if $spectrum_processing.peakNoBinning is not None:
+#if str($spectrum_processing.peakNoBinning) != 'None':
 peakNoBinning = $spectrum_processing.peakNoBinning
 #end if
 #if $spectrum_processing.peakBinningNumBinsPerMzUnit is not None:
@@ -157,10 +159,10 @@
 #if $spectrum_processing.filterLightIonsMzThreshold is not None:
 filterLightIonsMzThreshold = $spectrum_processing.filterLightIonsMzThreshold
 #end if
-#if $spectrum_processing.filterITRAQReporterPeaks is not None:
+#if str($spectrum_processing.filterITRAQReporterPeaks) != 'None':
 filterITRAQReporterPeaks = $spectrum_processing.filterITRAQReporterPeaks
 #end if
-#if $spectrum_processing.filterTMTReporterPeaks is not None:
+#if str($spectrum_processing.filterTMTReporterPeaks) != 'None':
 filterTMTReporterPeaks = $spectrum_processing.filterTMTReporterPeaks
 #end if
 ]]>        
@@ -346,7 +348,7 @@
             </param>
         </section>
         
-        <param name="output_format" type="select" label="Output format">
+        <param name="outputExtension" type="select" label="Output format">
             <option value="pep.xml">pep.xml</option>
             <option value="xls">xls (tabular)</option>
             <option value="txt">txt (fixed width text)</option>
@@ -363,22 +365,31 @@
         <data name="fingerprint_summary" format="txt" label="fingerprint.summary" from_work_dir="fingerprint.summary">
             <filter>printFingerprintingSummary and printFingerprintingSummary == 'fingerprint.summary'</filter>
         </data>
-        <data name="output" format="pep.xml" label="${tool.name} on ${on_string}: ${output_format}">
+        <data name="output" format="pepxml" label="${tool.name} on ${on_string}: ${outputExtension}">
+            <filter>collection['collection_selector'] == 'dataset'</filter>
             <change_format>
-                <when input="output_format" value="xls" format="tabular" />
-                <when input="output_format" value="txt" format="txt" />
+                <when input="outputExtension" value="xls" format="tabular" />
+                <when input="outputExtension" value="txt" format="txt" />
             </change_format>
             <actions>
-                <conditional name="output_format">
+                <conditional name="outputExtension">
                    <when value="xls">
                        <action name="column_names" type="metadata" default="Geneid,${','.join([a.name for a in $input_files])}" />
                    </when>
                 </conditional>
             </actions>
         </data>
-        <collection name="output_set" type="list" label="${tool.name} on ${on_string}: ${output_format}">
-            <discover_datasets pattern="(?P&lt;designation&gt;.+)\.xls" ext="tabular" directory="out" visible="true" />
-            <discover_datasets pattern="__designation_and_ext__" directory="out" visible="true" />
+        <collection name="output_pepxml" type="list" label="${tool.name} on ${on_string}: ${outputExtension} collection">
+            <filter>collection['collection_selector'] == 'collection' and outputExtension == 'pep.xml'</filter>
+            <discover_datasets pattern="(?P&lt;designation&gt;.+\.pep.xml)" ext="pepxml" directory="out" visible="false" />
+        </collection>
+        <collection name="output_xls" type="list" label="${tool.name} on ${on_string}: ${outputExtension} collection">
+            <filter>collection['collection_selector'] == 'collection' and outputExtension == 'xls'</filter>
+            <discover_datasets pattern="(?P&lt;designation&gt;.+\.xls)" ext="tabular" directory="out" visible="false" />
+        </collection>
+        <collection name="output_txt" type="list" label="${tool.name} on ${on_string}: ${outputExtension} collection">
+            <filter>collection['collection_selector'] == 'collection' and outputExtension == 'txt'</filter>
+            <discover_datasets pattern="(?P&lt;designation&gt;.+\.txt)" ext="txt" directory="out" visible="false" />
         </collection>
     </outputs>
     <tests>
@@ -389,7 +400,7 @@
                 <composite_data value="splib/library.spidx"/>
                 <composite_data value="splib/library.pepidx"/>
             </param>
-            <param name="output_format" value="xls"/>
+            <param name="outputExtension" value="xls"/>
             <output name="output">
                 <assert_contents>
                     <has_text text="FKWNGTDTNSAAEK" />