Mercurial > repos > peterjc > effectivet3
changeset 3:b0b927299aee draft
Uploaded v0.0.11 with automatic dependency installation.
The Python wrapper also gives specific errors for partial installation issues.
author | peterjc |
---|---|
date | Thu, 16 May 2013 04:45:41 -0400 |
parents | 5a8e09f115f8 |
children | f7ce32e13bc6 |
files | tools/effectiveT3/effectiveT3.py tools/effectiveT3/effectiveT3.txt tools/effectiveT3/effectiveT3.xml tools/effectiveT3/tool_dependencies.xml tools/protein_analysis/effectiveT3.py tools/protein_analysis/effectiveT3.txt tools/protein_analysis/effectiveT3.xml |
diffstat | 7 files changed, 404 insertions(+), 341 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/effectiveT3/effectiveT3.py Thu May 16 04:45:41 2013 -0400 @@ -0,0 +1,151 @@ +#!/usr/bin/env python +"""Wrapper for EffectiveT3 v1.0.1 for use in Galaxy. + +This script takes exactly five command line arguments: + * model name (e.g. TTSS_STD-1.0.1.jar) + * threshold (selective or sensitive) + * an input protein FASTA filename + * output tabular filename + +It then calls the standalone Effective T3 v1.0.1 program (not the +webservice), and reformats the semi-colon separated output into +tab separated output for use in Galaxy. +""" +import sys +import os +import subprocess + +#The Galaxy auto-install via tool_dependencies.xml will set this environment variable +effectiveT3_dir = os.environ.get("EFFECTIVET3", "/opt/EffectiveT3/") +effectiveT3_jar = os.path.join(effectiveT3_dir, "TTSS_GUI-1.0.1.jar") + +if "-v" in sys.argv or "--version" in sys.argv: + #TODO - Get version of the JAR file dynamically? + print "Wrapper v0.0.11, TTSS_GUI-1.0.1.jar" + sys.exit(0) + +def stop_err(msg, error_level=1): + """Print error message to stdout and quit with given error level.""" + sys.stderr.write("%s\n" % msg) + sys.exit(error_level) + +if len(sys.argv) != 5: + stop_err("Require four arguments: model, threshold, input protein FASTA file & output tabular file") + +model, threshold, fasta_file, tabular_file = sys.argv[1:] + +if not os.path.isfile(fasta_file): + stop_err("Input FASTA file not found: %s" % fasta_file) + +if threshold not in ["selective", "sensitive"] \ +and not threshold.startswith("cutoff="): + stop_err("Threshold should be selective, sensitive, or cutoff=..., not %r" % threshold) + +def clean_tabular(raw_handle, out_handle): + """Clean up Effective T3 output to make it tabular.""" + count = 0 + positive = 0 + errors = 0 + for line in raw_handle: + if not line or line.startswith("#") \ + or line.startswith("Id; Description; Score;"): + continue + assert line.count(";") >= 3, repr(line) + #Normally there will just be three semi-colons, however the + #original FASTA file's ID or description might have had + #semi-colons in it as well, hence the following hackery: + try: + id_descr, score, effective = line.rstrip("\r\n").rsplit(";",2) + #Cope when there was no FASTA description + if "; " not in id_descr and id_descr.endswith(";"): + id = id_descr[:-1] + descr = "" + else: + id, descr = id_descr.split("; ",1) + except ValueError: + stop_err("Problem parsing line:\n%s\n" % line) + parts = [s.strip() for s in [id, descr, score, effective]] + out_handle.write("\t".join(parts) + "\n") + count += 1 + if float(score) < 0: + errors += 1 + if effective.lower() == "true": + positive += 1 + return count, positive, errors + +def run(cmd): + #Avoid using shell=True when we call subprocess to ensure if the Python + #script is killed, so too is the child process. + try: + child = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + except Exception, err: + stop_err("Error invoking command:\n%s\n\n%s\n" % (" ".join(cmd), err)) + #Use .communicate as can get deadlocks with .wait(), + stdout, stderr = child.communicate() + return_code = child.returncode + if return_code: + if stderr and stdout: + stop_err("Return code %i from command:\n%s\n\n%s\n\n%s" % (return_code, err, stdout, stderr)) + else: + stop_err("Return code %i from command:\n%s\n%s" % (return_code, err, stderr)) + +if not os.path.isdir(effectiveT3_dir): + stop_err("Effective T3 folder not found: %r" % effectiveT3_dir) + +if not os.path.isfile(effectiveT3_jar): + stop_err("Effective T3 JAR file not found: %r" % effectiveT3_jar) + +if not os.path.isdir(os.path.join(effectiveT3_dir, "module")): + stop_err("Effective T3 module folder not found: %r" % os.path.join(effectiveT3_dir, "module")) + +effectiveT3_model = os.path.join(effectiveT3_dir, "module", model) +if not os.path.isfile(effectiveT3_model): + sys.stderr.write("Contents of %r is %s\n" + % (os.path.join(effectiveT3_dir, "module"), + ", ".join(repr(p) for p in os.listdir(os.path.join(effectiveT3_dir, "module"))))) + sys.stderr.write("Main JAR was found: %r\n" % effectiveT3_jar) + stop_err("Effective T3 model JAR file not found: %r" % effectiveT3_model) + +#We will have write access whereever the output should be, +temp_file = os.path.abspath(tabular_file + ".tmp") + +#Use absolute paths since will change current directory... +tabular_file = os.path.abspath(tabular_file) +fasta_file = os.path.abspath(fasta_file) + +cmd = ["java", "-jar", effectiveT3_jar, + "-f", fasta_file, + "-m", model, + "-t", threshold, + "-o", temp_file, + "-q"] + +try: + #Must run from directory above the module subfolder: + os.chdir(effectiveT3_dir) +except: + stop_err("Could not change to Effective T3 folder: %s" % effectiveT3_dir) + +run(cmd) + +if not os.path.isfile(temp_file): + stop_err("ERROR - No output file from Effective T3") + +out_handle = open(tabular_file, "w") +out_handle.write("#ID\tDescription\tScore\tEffective\n") +data_handle = open(temp_file) +count, positive, errors = clean_tabular(data_handle, out_handle) +data_handle.close() +out_handle.close() + +os.remove(temp_file) + +if errors: + print "%i sequences, %i positive, %i errors" \ + % (count, positive, errors) +else: + print "%i/%i sequences positive" % (positive, count) + +if count and count==errors: + #Galaxy will still allow them to see the output file + stop_err("All your sequences gave an error code")
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/effectiveT3/effectiveT3.txt Thu May 16 04:45:41 2013 -0400 @@ -0,0 +1,129 @@ +Galaxy wrapper for EffectiveT3 v1.0.1 +===================================== + +This wrapper is copyright 2011-2013 by Peter Cock, The James Hutton Institute +(formerly SCRI, Scottish Crop Research Institute), UK. All rights reserved. +See the licence text below. + +This is a wrapper for the command line Java tool EffectiveT3, v1.0.1, + +Jehl, Arnold and Rattei. +Effective - a database of predicted secreted bacterial proteins +Nucleic Acids Research, 39(Database issue), D591-5, 2011. +http://dx.doi.org/10.1093/nar/gkq1154 + +Arnold, Brandmaier, Kleine, Tischler, Heinz, Behrens, Niinikoski, Mewes, Horn and Rattei. +Sequence-based prediction of type III secreted proteins. +PLoS Pathog. 5(4):e1000376, 2009. +http://dx.doi.org/10.1371/journal.ppat.1000376 + +http://effectors.org/ + +This wrapper is available from the Galaxy Tool Shed at: +http://toolshed.g2.bx.psu.edu/view/peterjc/effectivet3 + + +Automated Installation +====================== + +This should be straightforward, Galaxy should automatically download and install +the Jar files for effectiveT3 v1.0.1 and the three models (animal, plant and std). + + +Manual Installation +=================== + +You can change the path by setting the environment variable EFFECTIVET3 to the +relevant folder, but by default it expects the following files to be installed +at these locations: + +/opt/EffectiveT3/TTSS_GUI-1.0.1.jar +/opt/EffectiveT3/module/TTSS_ANIMAL-1.0.1.jar +/opt/EffectiveT3/module/TTSS_PLANT-1.0.1.jar +/opt/EffectiveT3/module/TTSS_STD-1.0.1.jar + +To install the wrapper copy or move the following files under the Galaxy tools +folder, e.g. in a tools/effectiveT3 folder: + +* effectiveT3.xml (the Galaxy tool definition) +* effectiveT3.py (the Python wrapper script) +* effectiveT3.txt (this README file) + +Also copy effectiveT3.loc.sample to effectiveT3.loc in the tool-data folder +(and edit if appropriate, e.g. to add or remove a model). + +You will also need to modify the tools_conf.xml file to tell Galaxy to offer the +tool. If you are using other protein analysis tools like TMHMM or SignalP, put +it next to them. Just add the line: + +<tool file="effectiveT3/effectiveT3.xml" /> + +If you wish to run the unit tests, also add this to tools_conf.xml.sample +and move/copy the test-data files under Galaxy's test-data folder. + +$ ./run_functional_tests.sh -id effectiveT3 + +That's it. + + +History +======= + +v0.0.7 - Initial public release +v0.0.8 - Include effectiveT3.loc.sample in Tool Shed +v0.0.9 - Check the return code for errors in the XML +v0.0.10- Added unit test +v0.0.11- Automated installation + - Record version of Python script when called from Galaxy + - Link to Tool Shed added to help text and this documentation. + + +Developers +========== + +This script and related tools are being developed on the following hg branch: +http://bitbucket.org/peterjc/galaxy-central/src/tools + +For making the "Galaxy Tool Shed" http://toolshed.g2.bx.psu.edu/ tarball use +the following command from the Galaxy root folder: + +$ tar -czf effectiveT3.tar.gz tools/effectiveT3/effectiveT3.xml tools/effectiveT3/effectiveT3.py tools/effectiveT3/effectiveT3.txt tools/effectiveT3/tool_dependencies.xml tool-data/effectiveT3.loc.sample test-data/four_human_proteins.fasta test-data/four_human_proteins.effectiveT3.tabular test-data/empty.fasta test-data/empty_effectiveT3.tabular + + +Check this worked: + +$ tar -tzf effectiveT3.tar.gz +tools/effectiveT3/effectiveT3.xml +tools/effectiveT3/effectiveT3.py +tools/effectiveT3/effectiveT3.txt +tools/effectiveT3/tool_dependencies.xml +tool-data/effectiveT3.loc.sample +test-data/four_human_proteins.fasta +test-data/four_human_proteins.effectiveT3.tabular +test-data/empty.fasta +test-data/empty_effectiveT3.tabular + + +Licence (MIT/BSD style) +======================= + +Permission to use, copy, modify, and distribute this software and its +documentation with or without modifications and for any purpose and +without fee is hereby granted, provided that any copyright notices +appear in all copies and that both those copyright notices and this +permission notice appear in supporting documentation, and that the +names of the contributors or copyright holders not be used in +advertising or publicity pertaining to distribution of the software +without specific prior permission. + +THE CONTRIBUTORS AND COPYRIGHT HOLDERS OF THIS SOFTWARE DISCLAIM ALL +WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL THE +CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT +OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE +OR PERFORMANCE OF THIS SOFTWARE. + +NOTE: This is the licence for the Galaxy Wrapper only. +EffectiveT3 is available and licenced separately.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/effectiveT3/effectiveT3.xml Thu May 16 04:45:41 2013 -0400 @@ -0,0 +1,94 @@ +<tool id="effectiveT3" name="Effective T3" version="0.0.11"> + <description>Find bacterial effectors in protein sequences</description> + <requirements> + <requirement type="package" version="1.0.1">effectiveT3</requirement> + </requirements> + <version_command interpreter="python">effectiveT3.py --version</version_command> + <command interpreter="python"> +effectiveT3.py $module.fields.path +#if $restrict.type=="cutoff": + cutoff=$restrict.cutoff +#else: + $restrict.type +#end if +$fasta_file $tabular_file</command> + <stdio> + <!-- Anything other than zero is an error --> + <exit_code range="1:" /> + <exit_code range=":-1" /> + </stdio> + <inputs> + <param name="fasta_file" type="data" format="fasta" label="FASTA file of protein sequences"/> + <param name="module" type="select" display="radio" label="Classification module"> + <options from_file="effectiveT3.loc"> + <column name="value" index="0"/> + <column name="name" index="1"/> + <column name="path" index="2"/> + </options> + </param> + <conditional name="restrict"> + <param name="type" type="select" label="Cut-off setting"> + <option value="selective">Selective (threshold set in module)</option> + <option value="sensitive">Sensitive (threshold set in module)</option> + <option value="cutoff">User defined cut-off</option> + </param> + <when value="selective" /> + <when value="sensitive" /> + <when value="cutoff" > + <param name="cutoff" type="float" min="0" max="1" label="Cut-off" value="" help="Threshold cut-off between 0 and 1" /> + </when> + </conditional> + </inputs> + <outputs> + <data name="tabular_file" format="tabular" label="$module.value_label results" /> + </outputs> + <tests> + <test> + <param name="fasta_file" value="four_human_proteins.fasta" ftype="fasta" /> + <param name="module" value="animal" /> + <param name="type" value="selective" /> + <output name="tabular_file" file="four_human_proteins.effectiveT3.tabular" ftype="tabular" /> + </test> + <test> + <param name="fasta_file" value="empty.fasta" ftype="fasta" /> + <param name="module" value="plant" /> + <param name="type" value="sensistive" /> + <output name="tabular_file" file="empty_effectiveT3.tabular" ftype="tabular" /> + </test> + </tests> + <help> + +**What it does** + +This calls the command line Effective T3 v1.0.1 tool for prediction of bacterial effector proteins. + +The input is a FASTA file of protein sequences, and the output is tabular with four columns (one row per protein): + +====== ============================================================================== +Column Description +------ ------------------------------------------------------------------------------ + 1 Sequence identifier + 2 Sequence description (from the FASTA file) + 3 Score (between 0 and 1, or negative for an error such as a very short peptide) + 4 Predicted effector (true/false) +====== ============================================================================== + + +**References** + +Jehl, Arnold and Rattei. +Effective - a database of predicted secreted bacterial proteins +Nucleic Acids Research, 39(Database issue), D591-5, 2011. +http://dx.doi.org/10.1093/nar/gkq1154 + +Arnold, Brandmaier, Kleine, Tischler, Heinz, Behrens, Niinikoski, Mewes, Horn and Rattei. +Sequence-based prediction of type III secreted proteins. +PLoS Pathog. 5(4):e1000376, 2009. +http://dx.doi.org/10.1371/journal.ppat.1000376 + +http://effectors.org/ + +This wrapper is available to install into other Galaxy Instances via the Galaxy +Tool Shed at http://toolshed.g2.bx.psu.edu/view/peterjc/effectivet3 + </help> +</tool>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/effectiveT3/tool_dependencies.xml Thu May 16 04:45:41 2013 -0400 @@ -0,0 +1,30 @@ +<?xml version="1.0"?> +<tool_dependency> + <package name="effectiveT3" version="1.0.1"> + <install version="1.0"> + <actions> + <!-- Set environment variable so Python script knows where to look --> + <action type="set_environment"> + <environment_variable name="EFFECTIVET3" action="set_to">$INSTALL_DIR</environment_variable> + </action> + <!-- Main JAR file --> + <action type="shell_command">wget http://effectors.org/download/version/TTSS_GUI-1.0.1.jar</action> + <!-- If using action type download_file will need to move the file, + <action type="move_file"><source>TTSS_GUI-1.0.1.jar</source><destination>$INSTALL_DIR/</destination></action> + --> + <!-- Three model JAR files --> + <action type="make_directory">$INSTALL_DIR/module</action> + <action type="shell_command">wget http://effectors.org/download/module/TTSS_ANIMAL-1.0.1.jar</action> + <action type="move_file"><source>TTSS_ANIMAL-1.0.1.jar</source><destination>$INSTALL_DIR/module/</destination></action> + <action type="shell_command">wget http://effectors.org/download/module/TTSS_PLANT-1.0.1.jar</action> + <action type="move_file"><source>TTSS_PLANT-1.0.1.jar</source><destination>$INSTALL_DIR/module/</destination></action> + <action type="shell_command">wget http://effectors.org/download/module/TTSS_STD-1.0.1.jar</action> + <action type="move_file"><source>TTSS_STD-1.0.1.jar</source><destination>$INSTALL_DIR/module/</destination></action> + </actions> + </install> + <readme> +Downloads effectiveT3 v1.0.1 and the three models from http://effectors.org/ + </readme> + </package> +</tool_dependency> +
--- a/tools/protein_analysis/effectiveT3.py Wed Apr 17 05:26:26 2013 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,140 +0,0 @@ -#!/usr/bin/env python -"""Wrapper for EffectiveT3 v1.0.1 for use in Galaxy. - -This script takes exactly five command line arguments: - * model name (e.g. TTSS_STD-1.0.1.jar) - * threshold (selective or sensitive) - * an input protein FASTA filename - * output tabular filename - -It then calls the standalone Effective T3 v1.0.1 program (not the -webservice), and reformats the semi-colon separated output into -tab separated output for use in Galaxy. -""" -import sys -import os -import subprocess - -#You may need to edit this to match your local setup, -effectiveT3_jar = "/opt/EffectiveT3/TTSS_GUI-1.0.1.jar" - - -def stop_err(msg, error_level=1): - """Print error message to stdout and quit with given error level.""" - sys.stderr.write("%s\n" % msg) - sys.exit(error_level) - -if len(sys.argv) != 5: - stop_err("Require four arguments: model, threshold, input protein FASTA file & output tabular file") - -model, threshold, fasta_file, tabular_file = sys.argv[1:] - -if not os.path.isfile(fasta_file): - stop_err("Input FASTA file not found: %s" % fasta_file) - -if threshold not in ["selective", "sensitive"] \ -and not threshold.startswith("cutoff="): - stop_err("Threshold should be selective, sensitive, or cutoff=..., not %r" % threshold) - -def clean_tabular(raw_handle, out_handle): - """Clean up Effective T3 output to make it tabular.""" - count = 0 - positive = 0 - errors = 0 - for line in raw_handle: - if not line or line.startswith("#") \ - or line.startswith("Id; Description; Score;"): - continue - assert line.count(";") >= 3, repr(line) - #Normally there will just be three semi-colons, however the - #original FASTA file's ID or description might have had - #semi-colons in it as well, hence the following hackery: - try: - id_descr, score, effective = line.rstrip("\r\n").rsplit(";",2) - #Cope when there was no FASTA description - if "; " not in id_descr and id_descr.endswith(";"): - id = id_descr[:-1] - descr = "" - else: - id, descr = id_descr.split("; ",1) - except ValueError: - stop_err("Problem parsing line:\n%s\n" % line) - parts = [s.strip() for s in [id, descr, score, effective]] - out_handle.write("\t".join(parts) + "\n") - count += 1 - if float(score) < 0: - errors += 1 - if effective.lower() == "true": - positive += 1 - return count, positive, errors - -def run(cmd): - #Avoid using shell=True when we call subprocess to ensure if the Python - #script is killed, so too is the child process. - try: - child = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - except Exception, err: - stop_err("Error invoking command:\n%s\n\n%s\n" % (" ".join(cmd), err)) - #Use .communicate as can get deadlocks with .wait(), - stdout, stderr = child.communicate() - return_code = child.returncode - if return_code: - if stderr and stdout: - stop_err("Return code %i from command:\n%s\n\n%s\n\n%s" % (return_code, err, stdout, stderr)) - else: - stop_err("Return code %i from command:\n%s\n%s" % (return_code, err, stderr)) - -if not os.path.isfile(effectiveT3_jar): - stop_err("Effective T3 JAR file not found: %s" % effectiveT3_jar) - -effectiveT3_dir = os.path.dirname(effectiveT3_jar) -if not os.path.isdir(effectiveT3_dir): - stop_err("Effective T3 folder not found: %s" % effectiveT3_dir) - -effectiveT3_model = os.path.join(effectiveT3_dir, "module", model) -if not os.path.isfile(effectiveT3_model): - stop_err("Effective T3 model JAR file not found: %s" % effectiveT3_model) - -#We will have write access whereever the output should be, -temp_file = os.path.abspath(tabular_file + ".tmp") - -#Use absolute paths since will change current directory... -tabular_file = os.path.abspath(tabular_file) -fasta_file = os.path.abspath(fasta_file) - -cmd = ["java", "-jar", effectiveT3_jar, - "-f", fasta_file, - "-m", model, - "-t", threshold, - "-o", temp_file, - "-q"] - -try: - #Must run from directory above the module subfolder: - os.chdir(effectiveT3_dir) -except: - stop_err("Could not change to Effective T3 folder: %s" % effectiveT3_dir) - -run(cmd) - -if not os.path.isfile(temp_file): - stop_err("ERROR - No output file from Effective T3") - -out_handle = open(tabular_file, "w") -out_handle.write("#ID\tDescription\tScore\tEffective\n") -data_handle = open(temp_file) -count, positive, errors = clean_tabular(data_handle, out_handle) -data_handle.close() -out_handle.close() - -os.remove(temp_file) - -if errors: - print "%i sequences, %i positive, %i errors" \ - % (count, positive, errors) -else: - print "%i/%i sequences positive" % (positive, count) - -if count and count==errors: - #Galaxy will still allow them to see the output file - stop_err("All your sequences gave an error code")
--- a/tools/protein_analysis/effectiveT3.txt Wed Apr 17 05:26:26 2013 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,113 +0,0 @@ -Galaxy wrapper for EffectiveT3 v1.0.1 -===================================== - -This wrapper is copyright 2011 by Peter Cock, The James Hutton Institute -(formerly SCRI, Scottish Crop Research Institute), UK. All rights reserved. -See the licence text below. - -This is a wrapper for the command line Java tool EffectiveT3, v1.0.1, - -Jehl, Arnold and Rattei. -Effective - a database of predicted secreted bacterial proteins -Nucleic Acids Research, 39(Database issue), D591-5, 2011. -http://dx.doi.org/10.1093/nar/gkq1154 - -Arnold, Brandmaier, Kleine, Tischler, Heinz, Behrens, Niinikoski, Mewes, Horn and Rattei. -Sequence-based prediction of type III secreted proteins. -PLoS Pathog. 5(4):e1000376, 2009. -http://dx.doi.org/10.1371/journal.ppat.1000376 - -http://effectors.org/ - - -Installation -============ - -You can change the path by editing the definition near the start of the Python -script effectiveT3.py, but by default it expects the following files to be -installed at these locations: - -/opt/EffectiveT3/TTSS_GUI-1.0.1.jar -/opt/EffectiveT3/module/TTSS_ANIMAL-1.0.1.jar -/opt/EffectiveT3/module/TTSS_PLANT-1.0.1.jar -/opt/EffectiveT3/module/TTSS_STD-1.0.1.jar - -To install the wrapper copy or move the following files under the Galaxy tools -folder, e.g. in a tools/protein_analysis folder: - -* effectiveT3.xml (the Galaxy tool definition) -* effectiveT3.py (the Python wrapper script) -* effectiveT3.txt (this README file) - -Also copy effectiveT3.loc.sample to effectiveT3.loc in the tool-data folder -(and edit if appropriate, e.g. to add or remove a model). - -You will also need to modify the tools_conf.xml file to tell Galaxy to offer the -tool. If you are using other protein analysis tools like TMHMM or SignalP, put -it next to them. Just add the line: - -<tool file="protein_analysis/effectiveT3.xml" /> - -If you wish to run the unit tests, also add this to tools_conf.xml.sample -and move/copy the test-data files under Galaxy's test-data folder. - -That's it. - - -History -======= - -v0.0.7 - Initial public release -v0.0.8 - Include effectiveT3.loc.sample in Tool Shed -v0.0.9 - Check the return code for errors in the XML -v0.0.10- Added unit test - - -Developers -========== - -This script and related tools are being developed on the following hg branch: -http://bitbucket.org/peterjc/galaxy-central/src/tools - -For making the "Galaxy Tool Shed" http://toolshed.g2.bx.psu.edu/ tarball use -the following command from the Galaxy root folder: - -$ tar -czf effectiveT3.tar.gz tools/protein_analysis/effectiveT3.xml tools/protein_analysis/effectiveT3.py tools/protein_analysis/effectiveT3.txt tool-data/effectiveT3.loc.sample test-data/four_human_proteins.fasta test-data/four_human_proteins.effectiveT3.tabular test-data/empty.fasta test-data/empty_effectiveT3.tabular - - -Check this worked: - -$ tar -tzf effectiveT3.tar.gz -tools/protein_analysis/effectiveT3.xml -tools/protein_analysis/effectiveT3.py -tools/protein_analysis/effectiveT3.txt -tool-data/effectiveT3.loc.sample -test-data/four_human_proteins.fasta -test-data/four_human_proteins.effectiveT3.tabular -test-data/empty.fasta -test-data/empty_effectiveT3.tabular - - -Licence (MIT/BSD style) -======================= - -Permission to use, copy, modify, and distribute this software and its -documentation with or without modifications and for any purpose and -without fee is hereby granted, provided that any copyright notices -appear in all copies and that both those copyright notices and this -permission notice appear in supporting documentation, and that the -names of the contributors or copyright holders not be used in -advertising or publicity pertaining to distribution of the software -without specific prior permission. - -THE CONTRIBUTORS AND COPYRIGHT HOLDERS OF THIS SOFTWARE DISCLAIM ALL -WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL THE -CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT -OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS -OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE -OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE -OR PERFORMANCE OF THIS SOFTWARE. - -NOTE: This is the licence for the Galaxy Wrapper only. -EffectiveT3 is available and licenced separately.
--- a/tools/protein_analysis/effectiveT3.xml Wed Apr 17 05:26:26 2013 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,88 +0,0 @@ -<tool id="effectiveT3" name="Effective T3" version="0.0.10"> - <description>Find bacterial effectors in protein sequences</description> - <command interpreter="python"> -effectiveT3.py $module.fields.path -#if $restrict.type=="cutoff": - cutoff=$restrict.cutoff -#else: - $restrict.type -#end if -$fasta_file $tabular_file</command> - <stdio> - <!-- Anything other than zero is an error --> - <exit_code range="1:" /> - <exit_code range=":-1" /> - </stdio> - <inputs> - <param name="fasta_file" type="data" format="fasta" label="FASTA file of protein sequences"/> - <param name="module" type="select" display="radio" label="Classification module"> - <options from_file="effectiveT3.loc"> - <column name="value" index="0"/> - <column name="name" index="1"/> - <column name="path" index="2"/> - </options> - </param> - <conditional name="restrict"> - <param name="type" type="select" label="Cut-off setting"> - <option value="selective">Selective (threshold set in module)</option> - <option value="sensitive">Sensitive (threshold set in module)</option> - <option value="cutoff">User defined cut-off</option> - </param> - <when value="selective" /> - <when value="sensitive" /> - <when value="cutoff" > - <param name="cutoff" type="float" min="0" max="1" label="Cut-off" value="" help="Threshold cut-off between 0 and 1" /> - </when> - </conditional> - </inputs> - <outputs> - <data name="tabular_file" format="tabular" label="$module.value_label results" /> - </outputs> - <tests> - <test> - <param name="fasta_file" value="four_human_proteins.fasta" ftype="fasta" /> - <param name="module" value="animal" /> - <param name="type" value="selective" /> - <output name="tabular_file" file="four_human_proteins.effectiveT3.tabular" ftype="tabular" /> - </test> - <test> - <param name="fasta_file" value="empty.fasta" ftype="fasta" /> - <param name="module" value="plant" /> - <param name="type" value="sensistive" /> - <output name="tabular_file" file="empty_effectiveT3.tabular" ftype="tabular" /> - </test> - </tests> - <help> - -**What it does** - -This calls the command line Effective T3 v1.0.1 tool for prediction of bacterial effector proteins. - -The input is a FASTA file of protein sequences, and the output is tabular with four columns (one row per protein): - -====== ============================================================================== -Column Description ------- ------------------------------------------------------------------------------ - 1 Sequence identifier - 2 Sequence description (from the FASTA file) - 3 Score (between 0 and 1, or negative for an error such as a very short peptide) - 4 Predicted effector (true/false) -====== ============================================================================== - - -**References** - -Jehl, Arnold and Rattei. -Effective - a database of predicted secreted bacterial proteins -Nucleic Acids Research, 39(Database issue), D591-5, 2011. -http://dx.doi.org/10.1093/nar/gkq1154 - -Arnold, Brandmaier, Kleine, Tischler, Heinz, Behrens, Niinikoski, Mewes, Horn and Rattei. -Sequence-based prediction of type III secreted proteins. -PLoS Pathog. 5(4):e1000376, 2009. -http://dx.doi.org/10.1371/journal.ppat.1000376 - -http://effectors.org/ - - </help> -</tool>