diff searchgui.xml @ 0:8b99cb00e1c4 draft

planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/peptideshaker commit 3c83b8f8ca60d6399bc5dd7096b830ca1f1c457e-dirty
author jjohnson
date Tue, 15 May 2018 14:50:35 -0400
parents
children fa76abf69433
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchgui.xml	Tue May 15 14:50:35 2018 -0400
@@ -0,0 +1,285 @@
+<tool id="search_gui" name="Search GUI" version="@SEARCHGUI_VERSION@.0">
+    <description>
+        Perform protein identification using various search engines and prepare results for input to Peptide Shaker
+    </description>
+    <macros>
+        <import>macros_basic.xml</import>
+    </macros>
+    <requirements>
+	<requirement type="package" version="@SEARCHGUI_VERSION@">searchgui</requirement>
+	<requirement type="package" version="3.0">zip</requirement>
+  <requirement type="package">JQ</requirement>
+    </requirements>
+    <expand macro="stdio" />
+    <command>
+<![CDATA[
+        #from datetime import datetime
+        #import json
+        #import os;
+        #set $exp_str = "Galaxy_Experiment_%s" % datetime.now().strftime("%Y%m%d%H%M%s")
+        #set $samp_str = "Sample_%s" % datetime.now().strftime("%Y%m%d%H%M%s")
+        #set $temp_stderr = "searchgui_stderr"
+        #set $bin_dir = "bin"
+
+        mkdir output;
+        mkdir output_reports;
+        cwd=`pwd`;
+        export HOME=\$cwd;
+
+        ## echo the search engines to run
+        echo "$search_engines_options.engines";
+
+        ##Create a searchgui.properties file for the version, which will be added to the searchgui_results if not already present
+        echo "searchgui.version=@SEARCHGUI_VERSION@" >> searchgui.properties;
+
+        #for $mgf in $peak_lists:
+            #set $input_name = $mgf.display_name.split('/')[-1].replace(".mgf", "") + ".mgf"
+            ln -s -f '${mgf}' '${input_name}';
+            #set $encoded_id = $__app__.security.encode_id($mgf.id)
+            echo "Spectrums:${mgf.display_name}(API:${encoded_id}) ";
+        #end for
+
+
+
+        ## Necessary for executing tests. The FASTA file has to be manually copied from the test-data folder to the working directory in order it can be found when using the PAR file.
+        cp '$__tool_directory__/test-data/searchgui_tinydb1_concatenated_target_decoy.fasta' "\$cwd/searchgui_tinydb1_concatenated_target_decoy.fasta";
+
+
+
+        ## copy the input .par file to the working folder
+        cp "${input_par}" "\$cwd/SEARCHGUI_IdentificationParameters.par";
+        echo "-.par source file:";
+        echo "${input_par}";
+
+        ## (local) PAR file points to a FASTA file with .dat extension, which gives problems with many search engines. We should rename it to a .fasta file before passing it to SearchGUI
+        #set $par_target_path = "$cwd/SEARCHGUI_IdentificationParameters.par";
+        echo "-.par target file:";
+        echo $par_target_path;
+
+        ## reading from the original .par file the path of the source .dat (fasta) file  to be used
+        content_par_target_path=`cat $par_target_path`;
+        dat_path=`jq -r '.searchParameters.fastaFile.path' <<< "\$content_par_target_path"`;
+        echo "-.dat file path from target .par: ";
+        echo "\$dat_path";
+
+        ## copy original .data fasta file to a local .fasta file
+        new_fasta_file_path="\$cwd/input_database.fasta";
+        cp "\$dat_path" "\$new_fasta_file_path";
+        echo "-new .fasta file path copied from source .dat file: ";
+        echo "\$new_fasta_file_path";
+
+        ## modifying the .par file!!
+        ## First we establish the new content for the path: .searchParameters.fastaFile.path
+        new_content_par_target_path=`jq '.searchParameters.fastaFile.path = \$newVal' --arg newVal "\$new_fasta_file_path" <<< "\$content_par_target_path"`;
+        ## Secondly, for .proteinInferencePreferences.proteinSequenceDatabase.path
+        new_content_par_target_path=`jq '.proteinInferencePreferences.proteinSequenceDatabase.path = \$newVal' --arg newVal "\$new_fasta_file_path" <<< "\$new_content_par_target_path"`;
+
+        ## we generate a new .par file filled with the new fasta path.
+        #set $new_par_target_path = "$cwd/SEARCHGUI_IdentificationParameters_new.par";
+        echo "\$new_content_par_target_path" >> $new_par_target_path;
+        echo "-new par target path: ";
+        echo $new_par_target_path;
+
+        ## As PeptideShaker waits for "SEARCHGUI_IdentificationParameters.par" name, we overwrite the original file with the "_new" file
+        ##mv "\$cwd/SEARCHGUI_IdentificationParameters_new.par" "\$cwd/SEARCHGUI_IdentificationParameters.par"
+        rm $par_target_path;
+        mv $new_par_target_path $par_target_path;
+
+
+        ################
+        ## Search CLI ##
+        ################
+        (searchgui -Djava.awt.headless=true eu.isas.searchgui.cmd.SearchCLI
+            --exec_dir="\$cwd/${bin_dir}"
+            -temp_folder `pwd`
+            -spectrum_files \$cwd
+            -output_folder \$cwd/output
+            -id_params $par_target_path
+
+            -threads "\${GALAXY_SLOTS:-12}"
+
+            #if $searchgui_advanced.searchgui_advanced_selector == 'advanced'
+                -correct_titles "${searchgui_advanced.correct_titles}"
+                $searchgui_advanced.missing_titles
+                -mgf_splitting "${searchgui_advanced.mgf_splitting}"
+                -mgf_spectrum_count "${searchgui_advanced.mgf_spectrum_count}"
+            #end if
+
+            ## Turn of the protein tree generation as it can produce errors if the search is finished before the tree is created
+            ## the tree is generated afterwards in PeptideShaker
+            ## -protein_index 0
+
+            ##-makeblastdb_folder \$BLAST_ROOT_DIR
+
+            #set $engines_list = str($search_engines_options.engines).split(',')
+            #if 'X!Tandem' in $engines_list:
+                -xtandem 1
+            #else
+                -xtandem 0
+            #end if
+
+            #if 'MyriMatch' in $engines_list:
+                -myrimatch 1
+            #else
+                -myrimatch 0
+            #end if
+
+            #if 'MSGF' in $engines_list:
+                -msgf 1
+            #else
+                -msgf 0
+            #end if
+
+            #if 'OMSSA' in $engines_list:
+                -omssa 1
+            #else
+                -omssa 0
+            #end if
+
+            #if 'Comet' in $engines_list:
+                -comet 1
+            #else
+                -comet 0
+            #end if
+
+            #if 'Tide' in $engines_list:
+                -tide 1
+            #else
+                -tide 0
+            #end if
+
+            #if 'MS_Amanda' in $engines_list:
+                -ms_amanda 1
+            #else
+                -ms_amanda 0
+            #end if
+
+            #if 'Andromeda' in $engines_list:
+                -andromeda 1
+            #else
+                -andromeda 0
+            #end if
+
+            #if 'Novor' in $engines_list:
+                -novor 1
+            #else
+                -novor 0
+            #end if
+
+            #if 'DirecTag' in $engines_list:
+                -directag 1
+            #else
+                -directag 0
+            #end if
+
+            ## single zip file
+            -output_option 0
+
+            ## mgf and database in output
+            -output_data 1
+
+        2>> $temp_stderr)
+
+        &&
+
+        (mv output/searchgui_out.zip searchgui_out.zip 2>> $temp_stderr)
+
+        &&
+
+        (zip -u searchgui_out.zip searchgui.properties 2>> $temp_stderr);
+
+        exit_code_for_galaxy=\$?;
+        cat $temp_stderr 2>&1;
+        (exit \$exit_code_for_galaxy)
+]]>
+    </command>
+    <inputs>
+        <param format="par" name="input_par" type="data" label="Identification Parameters file"
+          help="Select PAR file from history"/>
+
+        <param name="peak_lists" format="mgf" type="data" multiple="true" label="Input Peak Lists (mgf)"
+            help="Select appropriate MGF dataset(s) from history" />
+
+        <!-- Search Engine Selection -->
+        <section name="search_engines_options" expanded="true" title="Search Engine Options">
+            <param name="engines" type="select" display="checkboxes" multiple="True" label="DB-Search Engines">
+                <help>Comet and Tide shouldn't both be selected since they use a similar algoritm.</help>
+                <option value="X!Tandem" selected="True">X!Tandem</option>
+                <option value="MSGF" selected="True">MS-GF+</option>
+                <option value="OMSSA" selected="True">OMSSA</option>
+                <option value="Comet">Comet</option>
+                <option value="Tide">Tide</option>
+                <option value="MyriMatch">MyriMatch</option>
+                <option value="MS_Amanda">MS_Amanda</option>
+                <!-- Windows only
+                <option value="Andromeda">Andromeda</option>
+                -->
+                <!-- New with version 3.0
+                -->
+                <!--working in tests
+                -->
+                <option value="DirecTag">DirecTag</option>
+                <option value="Novor">Novor (Select for non-commercial use only)</option>
+                <validator type="no_options" message="Please select at least one output file" />
+            </param>
+        </section>
+
+        <conditional name="searchgui_advanced">
+            <param name="searchgui_advanced_selector" type="select" label="SearchGUI Options">
+                <option value="basic" selected="True">Default</option>
+                <option value="advanced">Advanced</option>
+            </param>
+            <when value="basic" />
+            <when value="advanced">
+            <param name="correct_titles" type="select" label="How should PeptideShaker deal with duplicate spectra?"
+                help="Unless you suspect some input files to be genuine duplicates then rename spectra is the safest option">
+                <option value="0">no correction</option>
+                <option value="1" selected="True">rename spectra</option>
+                <option value="2">delete spectra</option>
+            </param>
+
+            <param name="missing_titles" type="boolean" checked="false" truevalue="-missing_titles 1" falsevalue="-missing_titles 0"
+                label="Add missing spectrum titles" help="(-missing_titles)"/>
+
+            <param name="mgf_splitting" type="integer" value="1000" label="The maximum mgf file size in MB before splitting the mgf"
+                help="Choose a smaller value if you are running on a machine with limited memory"/>
+
+            <param name="mgf_spectrum_count" type="integer" value="25000" label="The maximum number of spectra per mgf file when splitting"
+                help="Choose a smaller value if you are running on a machine with limited memory"/>
+            </when>
+        </conditional>
+
+    </inputs>
+    <outputs>
+        <data name="searchgui_results" format="searchgui_archive" from_work_dir="searchgui_out.zip" label="${tool.name} on ${on_string}" />
+    </outputs>
+    <tests>
+
+        <!-- Test that specifying non-default search engines works -->
+        <test>
+            <param name="peak_lists" value="searchgui_tinyspectra1.mgf"/>
+            <param name="input_par" value="Identification_Parameters_specific.par"/>
+            <param name="engines" value="X!Tandem,MSGF,MyriMatch,OMSSA,Comet"/>
+            <output name="output" file="tiny_searchgui_result1.zip" ftype="searchgui_archive" compare="sim_size" delta="30000" />
+        </test>
+        <!-- Test that search works with MSAmanda -->
+        <test>
+            <param name="peak_lists" value="searchgui_smallspectra.mgf"/>
+            <param name="input_par" value="Identification_Parameters_default.par"/>
+            <param name="engines" value="MS_Amanda"/>
+            <output name="output" file="smallsearch_result_amandaonly.zip" ftype="searchgui_archive" compare="sim_size" delta="5000" />
+        </test>
+
+    </tests>
+    <help>
+**What it does**
+
+Runs multiple search engines on any number of MGF peak lists using the SearchGUI.
+
+Default:     X! Tandem, OMSSA and MS-GF+ are executed.
+
+Optional:     MyriMatch, MS-Amanda, Comet and Tide can be executed.
+
+    </help>
+    <expand macro="citations" />
+</tool>