changeset 3:812383b5d3b8 draft default tip

v0.0.5 - galaxy_sequence_utils dependency and other cleanups inc using MIT license
author peterjc
date Fri, 03 Feb 2017 05:32:34 -0500
parents 5b552b3005f2
children
files test-data/blastp_four_human_vs_rhodopsin.tabular test-data/four_human_proteins.fasta test-data/four_human_proteins_filter_a.fasta test-data/four_human_proteins_filter_b.fasta tools/fasta_filter_by_id/README.rst tools/fasta_filter_by_id/fasta_filter_by_id.py tools/fasta_filter_by_id/fasta_filter_by_id.xml tools/fasta_filter_by_id/tool_dependencies.xml tools/fasta_tools/fasta_filter_by_id.py tools/fasta_tools/fasta_filter_by_id.txt tools/fasta_tools/fasta_filter_by_id.xml
diffstat 11 files changed, 385 insertions(+), 271 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/blastp_four_human_vs_rhodopsin.tabular	Fri Feb 03 05:32:34 2017 -0500
@@ -0,0 +1,6 @@
+sp|P08100|OPSD_HUMAN	gi|57163783|ref|NP_001009242.1|	96.55	348	12	0	1	348	1	348	0.0	 701
+sp|P08100|OPSD_HUMAN	gi|3024260|sp|P56514.1|OPSD_BUFBU	84.80	342	51	1	1	341	1	342	0.0	 619
+sp|P08100|OPSD_HUMAN	gi|283855846|gb|ADB45242.1|	94.82	328	17	0	11	338	1	328	0.0	 653
+sp|P08100|OPSD_HUMAN	gi|283855823|gb|ADB45229.1|	94.82	328	17	0	11	338	1	328	0.0	 631
+sp|P08100|OPSD_HUMAN	gi|223523|prf||0811197A	93.10	348	23	1	1	348	1	347	0.0	 673
+sp|P08100|OPSD_HUMAN	gi|12583665|dbj|BAB21486.1|	82.16	342	60	1	1	341	1	342	0.0	 599
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/four_human_proteins.fasta	Fri Feb 03 05:32:34 2017 -0500
@@ -0,0 +1,61 @@
+>sp|Q9BS26|ERP44_HUMAN Endoplasmic reticulum resident protein 44 OS=Homo sapiens GN=ERP44 PE=1 SV=1
+MHPAVFLSLPDLRCSLLLLVTWVFTPVTTEITSLDTENIDEILNNADVALVNFYADWCRF
+SQMLHPIFEEASDVIKEEFPNENQVVFARVDCDQHSDIAQRYRISKYPTLKLFRNGMMMK
+REYRGQRSVKALADYIRQQKSDPIQEIRDLAEITTLDRSKRNIIGYFEQKDSDNYRVFER
+VANILHDDCAFLSAFGDVSKPERYSGDNIIYKPPGHSAPDMVYLGAMTNFDVTYNWIQDK
+CVPLVREITFENGEELTEEGLPFLILFHMKEDTESLEIFQNEVARQLISEKGTINFLHAD
+CDKFRHPLLHIQKTPADCPVIAIDSFRHMYVFGDFKDVLIPGKLKQFVFDLHSGKLHREF
+HHGPDPTDTAPGEQAQDVASSPPESSFQKLAPSEYRYTLLRDRDEL
+>sp|Q9NSY1|BMP2K_HUMAN BMP-2-inducible protein kinase OS=Homo sapiens GN=BMP2K PE=1 SV=2
+MKKFSRMPKSEGGSGGGAAGGGAGGAGAGAGCGSGGSSVGVRVFAVGRHQVTLEESLAEG
+GFSTVFLVRTHGGIRCALKRMYVNNMPDLNVCKREITIMKELSGHKNIVGYLDCAVNSIS
+DNVWEVLILMEYCRAGQVVNQMNKKLQTGFTEPEVLQIFCDTCEAVARLHQCKTPIIHRD
+LKVENILLNDGGNYVLCDFGSATNKFLNPQKDGVNVVEEEIKKYTTLSYRAPEMINLYGG
+KPITTKADIWALGCLLYKLCFFTLPFGESQVAICDGNFTIPDNSRYSRNIHCLIRFMLEP
+DPEHRPDIFQVSYFAFKFAKKDCPVSNINNSSIPSALPEPMTASEAAARKSQIKARITDT
+IGPTETSIAPRQRPKANSATTATPSVLTIQSSATPVKVLAPGEFGNHRPKGALRPGNGPE
+ILLGQGPPQQPPQQHRVLQQLQQGDWRLQQLHLQHRHPHQQQQQQQQQQQQQQQQQQQQQ
+QQQQQQHHHHHHHHLLQDAYMQQYQHATQQQQMLQQQFLMHSVYQPQPSASQYPTMMPQY
+QQAFFQQQMLAQHQPSQQQASPEYLTSPQEFSPALVSYTSSLPAQVGTIMDSSYSANRSV
+ADKEAIANFTNQKNISNPPDMSGWNPFGEDNFSKLTEEELLDREFDLLRSNRLEERASSD
+KNVDSLSAPHNHPPEDPFGSVPFISHSGSPEKKAEHSSINQENGTANPIKNGKTSPASKD
+QRTGKKTSVQGQVQKGNDESESDFESDPPSPKSSEEEEQDDEEVLQGEQGDFNDDDTEPE
+NLGHRPLLMDSEDEEEEEKHSSDSDYEQAKAKYSDMSSVYRDRSGSGPTQDLNTILLTSA
+QLSSDVAVETPKQEFDVFGAVPFFAVRAQQPQQEKNEKNLPQHRFPAAGLEQEEFDVFTK
+APFSKKVNVQECHAVGPEAHTIPGYPKSVDVFGSTPFQPFLTSTSKSESNEDLFGLVPFD
+EITGSQQQKVKQRSLQKLSSRQRRTKQDMSKSNGKRHHGTPTSTKKTLKPTYRTPERARR
+HKKVGRRDSQSSNEFLTISDSKENISVALTDGKDRGNVLQPEESLLDPFGAKPFHSPDLS
+WHPPHQGLSDIRADHNTVLPGRPRQNSLHGSFHSADVLKMDDFGAVPFTELVVQSITPHQ
+SQQSQPVELDPFGAAPFPSKQ
+>sp|P06213|INSR_HUMAN Insulin receptor OS=Homo sapiens GN=INSR PE=1 SV=4
+MATGGRRGAAAAPLLVAVAALLLGAAGHLYPGEVCPGMDIRNNLTRLHELENCSVIEGHL
+QILLMFKTRPEDFRDLSFPKLIMITDYLLLFRVYGLESLKDLFPNLTVIRGSRLFFNYAL
+VIFEMVHLKELGLYNLMNITRGSVRIEKNNELCYLATIDWSRILDSVEDNYIVLNKDDNE
+ECGDICPGTAKGKTNCPATVINGQFVERCWTHSHCQKVCPTICKSHGCTAEGLCCHSECL
+GNCSQPDDPTKCVACRNFYLDGRCVETCPPPYYHFQDWRCVNFSFCQDLHHKCKNSRRQG
+CHQYVIHNNKCIPECPSGYTMNSSNLLCTPCLGPCPKVCHLLEGEKTIDSVTSAQELRGC
+TVINGSLIINIRGGNNLAAELEANLGLIEEISGYLKIRRSYALVSLSFFRKLRLIRGETL
+EIGNYSFYALDNQNLRQLWDWSKHNLTITQGKLFFHYNPKLCLSEIHKMEEVSGTKGRQE
+RNDIALKTNGDQASCENELLKFSYIRTSFDKILLRWEPYWPPDFRDLLGFMLFYKEAPYQ
+NVTEFDGQDACGSNSWTVVDIDPPLRSNDPKSQNHPGWLMRGLKPWTQYAIFVKTLVTFS
+DERRTYGAKSDIIYVQTDATNPSVPLDPISVSNSSSQIILKWKPPSDPNGNITHYLVFWE
+RQAEDSELFELDYCLKGLKLPSRTWSPPFESEDSQKHNQSEYEDSAGECCSCPKTDSQIL
+KELEESSFRKTFEDYLHNVVFVPRKTSSGTGAEDPRPSRKRRSLGDVGNVTVAVPTVAAF
+PNTSSTSVPTSPEEHRPFEKVVNKESLVISGLRHFTGYRIELQACNQDTPEERCSVAAYV
+SARTMPEAKADDIVGPVTHEIFENNVVHLMWQEPKEPNGLIVLYEVSYRRYGDEELHLCV
+SRKHFALERGCRLRGLSPGNYSVRIRATSLAGNGSWTEPTYFYVTDYLDVPSNIAKIIIG
+PLIFVFLFSVVIGSIYLFLRKRQPDGPLGPLYASSNPEYLSASDVFPCSVYVPDEWEVSR
+EKITLLRELGQGSFGMVYEGNARDIIKGEAETRVAVKTVNESASLRERIEFLNEASVMKG
+FTCHHVVRLLGVVSKGQPTLVVMELMAHGDLKSYLRSLRPEAENNPGRPPPTLQEMIQMA
+AEIADGMAYLNAKKFVHRDLAARNCMVAHDFTVKIGDFGMTRDIYETDYYRKGGKGLLPV
+RWMAPESLKDGVFTTSSDMWSFGVVLWEITSLAEQPYQGLSNEQVLKFVMDGGYLDQPDN
+CPERVTDLMRMCWQFNPKMRPTFLEIVNLLKDDLHPSFPEVSFFHSEENKAPESEELEME
+FEDMENVPLDRSSHCQREEAGGRDGGSSLGFKRSYEEHIPYTHMNGGKKNGRILTLPRSN
+PS
+>sp|P08100|OPSD_HUMAN Rhodopsin OS=Homo sapiens GN=RHO PE=1 SV=1
+MNGTEGPNFYVPFSNATGVVRSPFEYPQYYLAEPWQFSMLAAYMFLLIVLGFPINFLTLY
+VTVQHKKLRTPLNYILLNLAVADLFMVLGGFTSTLYTSLHGYFVFGPTGCNLEGFFATLG
+GEIALWSLVVLAIERYVVVCKPMSNFRFGENHAIMGVAFTWVMALACAAPPLAGWSRYIP
+EGLQCSCGIDYYTLKPEVNNESFVIYMFVVHFTIPMIIIFFCYGQLVFTVKEAAAQQQES
+ATTQKAEKEVTRMVIIMVIAFLICWVPYASVAFYIFTHQGSNFGPIFMTIPAFFAKSAAI
+YNPVIYIMMNKQFRNCMLTTICCGKNPLGDDEASATVSKTETSQVAPA
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/four_human_proteins_filter_a.fasta	Fri Feb 03 05:32:34 2017 -0500
@@ -0,0 +1,2 @@
+>sp|P08100|OPSD_HUMAN Rhodopsin OS=Homo sapiens GN=RHO PE=1 SV=1
+MNGTEGPNFYVPFSNATGVVRSPFEYPQYYLAEPWQFSMLAAYMFLLIVLGFPINFLTLYVTVQHKKLRTPLNYILLNLAVADLFMVLGGFTSTLYTSLHGYFVFGPTGCNLEGFFATLGGEIALWSLVVLAIERYVVVCKPMSNFRFGENHAIMGVAFTWVMALACAAPPLAGWSRYIPEGLQCSCGIDYYTLKPEVNNESFVIYMFVVHFTIPMIIIFFCYGQLVFTVKEAAAQQQESATTQKAEKEVTRMVIIMVIAFLICWVPYASVAFYIFTHQGSNFGPIFMTIPAFFAKSAAIYNPVIYIMMNKQFRNCMLTTICCGKNPLGDDEASATVSKTETSQVAPA
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/four_human_proteins_filter_b.fasta	Fri Feb 03 05:32:34 2017 -0500
@@ -0,0 +1,6 @@
+>sp|Q9BS26|ERP44_HUMAN Endoplasmic reticulum resident protein 44 OS=Homo sapiens GN=ERP44 PE=1 SV=1
+MHPAVFLSLPDLRCSLLLLVTWVFTPVTTEITSLDTENIDEILNNADVALVNFYADWCRFSQMLHPIFEEASDVIKEEFPNENQVVFARVDCDQHSDIAQRYRISKYPTLKLFRNGMMMKREYRGQRSVKALADYIRQQKSDPIQEIRDLAEITTLDRSKRNIIGYFEQKDSDNYRVFERVANILHDDCAFLSAFGDVSKPERYSGDNIIYKPPGHSAPDMVYLGAMTNFDVTYNWIQDKCVPLVREITFENGEELTEEGLPFLILFHMKEDTESLEIFQNEVARQLISEKGTINFLHADCDKFRHPLLHIQKTPADCPVIAIDSFRHMYVFGDFKDVLIPGKLKQFVFDLHSGKLHREFHHGPDPTDTAPGEQAQDVASSPPESSFQKLAPSEYRYTLLRDRDEL
+>sp|Q9NSY1|BMP2K_HUMAN BMP-2-inducible protein kinase OS=Homo sapiens GN=BMP2K PE=1 SV=2
+MKKFSRMPKSEGGSGGGAAGGGAGGAGAGAGCGSGGSSVGVRVFAVGRHQVTLEESLAEGGFSTVFLVRTHGGIRCALKRMYVNNMPDLNVCKREITIMKELSGHKNIVGYLDCAVNSISDNVWEVLILMEYCRAGQVVNQMNKKLQTGFTEPEVLQIFCDTCEAVARLHQCKTPIIHRDLKVENILLNDGGNYVLCDFGSATNKFLNPQKDGVNVVEEEIKKYTTLSYRAPEMINLYGGKPITTKADIWALGCLLYKLCFFTLPFGESQVAICDGNFTIPDNSRYSRNIHCLIRFMLEPDPEHRPDIFQVSYFAFKFAKKDCPVSNINNSSIPSALPEPMTASEAAARKSQIKARITDTIGPTETSIAPRQRPKANSATTATPSVLTIQSSATPVKVLAPGEFGNHRPKGALRPGNGPEILLGQGPPQQPPQQHRVLQQLQQGDWRLQQLHLQHRHPHQQQQQQQQQQQQQQQQQQQQQQQQQQQHHHHHHHHLLQDAYMQQYQHATQQQQMLQQQFLMHSVYQPQPSASQYPTMMPQYQQAFFQQQMLAQHQPSQQQASPEYLTSPQEFSPALVSYTSSLPAQVGTIMDSSYSANRSVADKEAIANFTNQKNISNPPDMSGWNPFGEDNFSKLTEEELLDREFDLLRSNRLEERASSDKNVDSLSAPHNHPPEDPFGSVPFISHSGSPEKKAEHSSINQENGTANPIKNGKTSPASKDQRTGKKTSVQGQVQKGNDESESDFESDPPSPKSSEEEEQDDEEVLQGEQGDFNDDDTEPENLGHRPLLMDSEDEEEEEKHSSDSDYEQAKAKYSDMSSVYRDRSGSGPTQDLNTILLTSAQLSSDVAVETPKQEFDVFGAVPFFAVRAQQPQQEKNEKNLPQHRFPAAGLEQEEFDVFTKAPFSKKVNVQECHAVGPEAHTIPGYPKSVDVFGSTPFQPFLTSTSKSESNEDLFGLVPFDEITGSQQQKVKQRSLQKLSSRQRRTKQDMSKSNGKRHHGTPTSTKKTLKPTYRTPERARRHKKVGRRDSQSSNEFLTISDSKENISVALTDGKDRGNVLQPEESLLDPFGAKPFHSPDLSWHPPHQGLSDIRADHNTVLPGRPRQNSLHGSFHSADVLKMDDFGAVPFTELVVQSITPHQSQQSQPVELDPFGAAPFPSKQ
+>sp|P06213|INSR_HUMAN Insulin receptor OS=Homo sapiens GN=INSR PE=1 SV=4
+MATGGRRGAAAAPLLVAVAALLLGAAGHLYPGEVCPGMDIRNNLTRLHELENCSVIEGHLQILLMFKTRPEDFRDLSFPKLIMITDYLLLFRVYGLESLKDLFPNLTVIRGSRLFFNYALVIFEMVHLKELGLYNLMNITRGSVRIEKNNELCYLATIDWSRILDSVEDNYIVLNKDDNEECGDICPGTAKGKTNCPATVINGQFVERCWTHSHCQKVCPTICKSHGCTAEGLCCHSECLGNCSQPDDPTKCVACRNFYLDGRCVETCPPPYYHFQDWRCVNFSFCQDLHHKCKNSRRQGCHQYVIHNNKCIPECPSGYTMNSSNLLCTPCLGPCPKVCHLLEGEKTIDSVTSAQELRGCTVINGSLIINIRGGNNLAAELEANLGLIEEISGYLKIRRSYALVSLSFFRKLRLIRGETLEIGNYSFYALDNQNLRQLWDWSKHNLTITQGKLFFHYNPKLCLSEIHKMEEVSGTKGRQERNDIALKTNGDQASCENELLKFSYIRTSFDKILLRWEPYWPPDFRDLLGFMLFYKEAPYQNVTEFDGQDACGSNSWTVVDIDPPLRSNDPKSQNHPGWLMRGLKPWTQYAIFVKTLVTFSDERRTYGAKSDIIYVQTDATNPSVPLDPISVSNSSSQIILKWKPPSDPNGNITHYLVFWERQAEDSELFELDYCLKGLKLPSRTWSPPFESEDSQKHNQSEYEDSAGECCSCPKTDSQILKELEESSFRKTFEDYLHNVVFVPRKTSSGTGAEDPRPSRKRRSLGDVGNVTVAVPTVAAFPNTSSTSVPTSPEEHRPFEKVVNKESLVISGLRHFTGYRIELQACNQDTPEERCSVAAYVSARTMPEAKADDIVGPVTHEIFENNVVHLMWQEPKEPNGLIVLYEVSYRRYGDEELHLCVSRKHFALERGCRLRGLSPGNYSVRIRATSLAGNGSWTEPTYFYVTDYLDVPSNIAKIIIGPLIFVFLFSVVIGSIYLFLRKRQPDGPLGPLYASSNPEYLSASDVFPCSVYVPDEWEVSREKITLLRELGQGSFGMVYEGNARDIIKGEAETRVAVKTVNESASLRERIEFLNEASVMKGFTCHHVVRLLGVVSKGQPTLVVMELMAHGDLKSYLRSLRPEAENNPGRPPPTLQEMIQMAAEIADGMAYLNAKKFVHRDLAARNCMVAHDFTVKIGDFGMTRDIYETDYYRKGGKGLLPVRWMAPESLKDGVFTTSSDMWSFGVVLWEITSLAEQPYQGLSNEQVLKFVMDGGYLDQPDNCPERVTDLMRMCWQFNPKMRPTFLEIVNLLKDDLHPSFPEVSFFHSEENKAPESEELEMEFEDMENVPLDRSSHCQREEAGGRDGGSSLGFKRSYEEHIPYTHMNGGKKNGRILTLPRSNPS
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/fasta_filter_by_id/README.rst	Fri Feb 03 05:32:34 2017 -0500
@@ -0,0 +1,114 @@
+Obsolete
+========
+
+This tool is now obsolete, having been replaced	by a more general version
+covering the FASTA, FASTQ and SFF sequence formats in a single tool. You
+should only install this tool if you need to support existing workflows
+which used it.
+
+
+Galaxy tool to filter FASTA sequences by ID
+===========================================
+
+This tool is copyright 2010-2017 by Peter Cock, The James Hutton Institute
+(formerly SCRI, Scottish Crop Research Institute), UK. All rights reserved.
+See the licence text below (MIT licence).
+
+This tool is a short Python script (using the Galaxy library functions) which
+divides a FASTA file in two, those sequences with or without an ID present in
+the specified column(s) of a tabular file. Example uses include filtering based
+on search results from a tool like NCBI BLAST, TMHMM or SignalP.
+
+There are just two files to install:
+
+* fasta_filter_by_id.py (the Python script)
+* fasta_filter_by_id.xml (the Galaxy tool definition)
+
+The suggested location is next to the similarly named fasta_filter_by_length.py
+and fasta_filter_by_length.xml files which are included with Galaxy, i.e.
+in the Galaxy folder tools/fasta_tools
+
+You will also need to modify the tools_conf.xml file to tell Galaxy to offer
+the tool. The suggested location is next to the fasta_filter_by_length.xml
+entry. Simply add the line:
+
+<tool file="fasta_tools/fasta_filter_by_id.xml" />
+
+That's it.
+
+
+History
+=======
+
+======= ======================================================================
+Version Changes
+------- ----------------------------------------------------------------------
+v0.0.1  - Initial version (not publicly released)
+v0.0.2  - Allow both, just pos or just neg output files
+v0.0.3  - Include FASTA in tool name
+v0.0.4  - Deprecated, marked as hidden in the XML
+v0.0.5  - Explicit dependency on ``galaxy_sequence_utils``.
+        - Citation information (Cock et al. 2013).
+        - Explicitly record version via ``<version_command>``.
+        - Use standard MIT license (was previously using the MIT/BSD style
+          Biopython Licence Agreement).
+======= ======================================================================
+
+
+Developers
+==========
+
+This script and other tools for filtering FASTA, FASTQ and SFF files were
+initially developed on the following hg branches:
+http://bitbucket.org/peterjc/galaxy-central/src/tools
+http://bitbucket.org/peterjc/galaxy-central/src/fasta_filter
+
+It is now under GitHub https://github.com/peterjc/pico_galaxy/
+
+For pushing a release to the test or main "Galaxy Tool Shed", use the following
+Planemo commands (which requires you have set your Tool Shed access details in
+``~/.planemo.yml`` and that you have access rights on the Tool Shed)::
+
+    $ planemo shed_update -t testtoolshed --check_diff tools/fasta_filter_by_id/
+    ...
+
+or::
+
+    $ planemo shed_update -t toolshed --check_diff tools/fasta_filter_by_id/
+    ...
+
+To just build and check the tar ball, use::
+
+    $ planemo shed_upload --tar_only tools/fasta_filter_by_id/
+    ...
+    $ tar -tzf shed_upload.tar.gz
+    tools/fasta_filter_by_id/README.rst
+    tools/fasta_filter_by_id/fasta_filter_by_id.py
+    tools/fasta_filter_by_id/fasta_filter_by_id.xml
+    tools/fasta_filter_by_id/tool_dependencies.xml
+    test-data/four_human_proteins.fasta
+    test-data/blastp_four_human_vs_rhodopsin.tabular
+    test-data/four_human_proteins_filter_a.fasta
+    test-data/four_human_proteins_filter_b.fasta
+
+
+Licence (MIT)
+=============
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/fasta_filter_by_id/fasta_filter_by_id.py	Fri Feb 03 05:32:34 2017 -0500
@@ -0,0 +1,95 @@
+#!/usr/bin/env python
+"""Filter a FASTA file with IDs from a tabular file, e.g. from BLAST.
+
+NOTE - This script is now OBSOLETE, having been replaced by a new verion
+which handles FASTA, FASTQ and SFF all in one.
+
+Takes five command line options, tabular filename, ID column numbers
+(comma separated list using one based counting), input FASTA filename, and
+two output FASTA filenames (for records with and without the given IDs).
+
+If either output filename is just a minus sign, that file is not created.
+This is intended to allow output for just the matched (or just the non-matched)
+records.
+
+Note in the default NCBI BLAST+ tabular output, the query sequence ID is
+in column one, and the ID of the match from the database is in column two.
+Here sensible values for the column numbers would therefore be "1" or "2".
+
+This tool is copyright 2010-2017 by Peter Cock, The James Hutton Institute
+(formerly SCRI, Scottish Crop Research Institute), UK. All rights reserved.
+See accompanying text file for licence details (MIT license).
+"""
+import sys
+
+if "-v" in sys.argv or "--version" in sys.argv:
+    print "v0.0.5"
+    sys.exit(0)
+
+from galaxy_utils.sequence.fasta import fastaReader, fastaWriter
+
+# Parse Command Line
+try:
+    tabular_file, cols_arg, in_file, out_positive_file, out_negative_file = sys.argv[1:]
+except ValueError:
+    sys.exit("Expected five arguments, got %i:\n%s" % (len(sys.argv)-1, " ".join(sys.argv)))
+try:
+    columns = [int(arg)-1 for arg in cols_arg.split(",")]
+except ValueError:
+    sys.exit("Expected list of columns (comma separated integers), got %s" % cols_arg)
+
+# Read tabular file and record all specified identifiers
+ids = set()
+handle = open(tabular_file, "rU")
+if len(columns) > 1:
+    # General case of many columns
+    for line in handle:
+        if line.startswith("#"):
+            # Ignore comments
+            continue
+        parts = line.rstrip("\n").split("\t")
+        for col in columns:
+            ids.add(parts[col])
+    print "Using %i IDs from %i columns of tabular file" % (len(ids), len(columns))
+else:
+    # Single column, special case speed up
+    col = columns[0]
+    for line in handle:
+        if not line.startswith("#"):
+            ids.add(line.rstrip("\n").split("\t")[col])
+    print "Using %i IDs from tabular file" % (len(ids))
+handle.close()
+
+# Write filtered FASTA file based on IDs from tabular file
+reader = fastaReader(open(in_file, "rU"))
+if out_positive_file != "-" and out_negative_file != "-":
+    print "Generating two FASTA files"
+    positive_writer = fastaWriter(open(out_positive_file, "w"))
+    negative_writer = fastaWriter(open(out_negative_file, "w"))
+    for record in reader:
+        # The [1:] is because the fastaReader leaves the > on the identifer.
+        if record.identifier and record.identifier.split()[0][1:] in ids:
+            positive_writer.write(record)
+        else:
+            negative_writer.write(record)
+    positive_writer.close()
+    negative_writer.close()
+elif out_positive_file != "-":
+    print "Generating matching FASTA file"
+    positive_writer = fastaWriter(open(out_positive_file, "w"))
+    for record in reader:
+        # The [1:] is because the fastaReader leaves the > on the identifer.
+        if record.identifier and record.identifier.split()[0][1:] in ids:
+            positive_writer.write(record)
+    positive_writer.close()
+elif out_negative_file != "-":
+    print "Generating non-matching FASTA file"
+    negative_writer = fastaWriter(open(out_negative_file, "w"))
+    for record in reader:
+        # The [1:] is because the fastaReader leaves the > on the identifer.
+        if not record.identifier or record.identifier.split()[0][1:] not in ids:
+            negative_writer.write(record)
+    negative_writer.close()
+else:
+    sys.exit("Neither output file requested")
+reader.close()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/fasta_filter_by_id/fasta_filter_by_id.xml	Fri Feb 03 05:32:34 2017 -0500
@@ -0,0 +1,95 @@
+<tool id="fasta_filter_by_id" name="Filter FASTA by ID" version="0.0.5" hidden="true">
+    <description>from a tabular file</description>
+    <requirements>
+        <requirement type="package" version="1.0.1">galaxy_sequence_utils</requirement>
+    </requirements>
+    <version_command interpreter="python">fasta_filter_by_id.py --version</version_command>
+    <command interpreter="python">
+fasta_filter_by_id.py $input_tabular $columns $input_fasta
+#if $output_choice_cond.output_choice=="both"
+ $output_pos $output_neg
+#elif $output_choice_cond.output_choice=="pos"
+ $output_pos -
+#elif $output_choice_cond.output_choice=="neg"
+ - $output_neg
+#end if
+    </command>
+    <inputs>
+        <param name="input_fasta" type="data" format="fasta" label="FASTA file to filter on the identifiers"/>
+        <param name="input_tabular" type="data" format="tabular" label="Tabular file containing FASTA identifiers"/>
+        <param name="columns" type="data_column" data_ref="input_tabular" multiple="True" numerical="False" label="Column(s) containing FASTA identifiers" help="Multi-select list - hold the appropriate key while clicking to select multiple columns">
+            <validator type="no_options" message="Pick at least one column"/>
+        </param>
+        <conditional name="output_choice_cond">
+            <param name="output_choice" type="select" label="Output positive matches, negative matches, or both?">
+                <option value="both">Both positive matches (ID on list) and negative matches (ID not on list), as two FASTA files</option>
+                <option value="pos">Just positive matches (ID on list), as a single FASTA file</option>
+                <option value="neg">Just negative matches (ID not on list), as a single FASTA file</option>
+            </param>
+            <!-- Seems need these dummy entries here, compare this to indels/indel_sam2interval.xml -->
+            <when value="both" />
+            <when value="pos" />
+            <when value="neg" />
+        </conditional>
+    </inputs>
+    <outputs>
+        <data name="output_pos" format="fasta" label="With matched ID">
+            <filter>output_choice_cond["output_choice"] != "neg"</filter>
+        </data>
+        <data name="output_neg" format="fasta" label="Without matched ID">
+            <filter>output_choice_cond["output_choice"] != "pos"</filter>
+        </data>
+    </outputs>
+    <tests>
+        <test>
+            <param name="input_fasta" value="four_human_proteins.fasta" ftype="fasta" />
+            <param name="input_tabular" value="blastp_four_human_vs_rhodopsin.tabular" ftype="tabular" />
+            <param name="columns" value="1" />
+            <param name="output_choice" value="both" />
+            <output name="output_pos" file="four_human_proteins_filter_a.fasta" ftype="fasta" />
+            <output name="output_neg" file="four_human_proteins_filter_b.fasta" ftype="fasta" />
+        </test>
+        <test>
+            <param name="input_fasta" value="four_human_proteins.fasta" ftype="fasta" />
+            <param name="input_tabular" value="blastp_four_human_vs_rhodopsin.tabular" ftype="tabular" />
+            <param name="columns" value="1" />
+            <param name="output_choice" value="pos" />
+            <output name="output_pos" file="four_human_proteins_filter_a.fasta" ftype="fasta" />
+        </test>
+        <test>
+            <param name="input_fasta" value="four_human_proteins.fasta" ftype="fasta" />
+            <param name="input_tabular" value="blastp_four_human_vs_rhodopsin.tabular" ftype="tabular" />
+            <param name="columns" value="1" />
+            <param name="output_choice" value="neg" />
+            <output name="output_neg" file="four_human_proteins_filter_b.fasta" ftype="fasta" />
+        </test>
+    </tests>
+    <help>
+
+**Deprecated**
+
+This tool is now obsolete, and should not be used in future. It has been
+replaced by a more general version covering FASTA, FASTQ and SFF in one
+single tool.
+
+**What it does**
+
+By default it divides a FASTA file in two, those sequences with or without an
+ID present in the tabular file column(s) specified. You can opt to have a
+single output file of just the matching records, or just the non-matching ones.
+
+Note that the order of sequences in the original FASTA file is preserved.
+Also, if any sequences share an identifier, duplicates are not removed.
+
+**Example Usage**
+
+Given a FASTA file of proteins you might run a signal peptide search (e.g.
+via the SignalP wrapper for Galaxy), then filtered these tabular results to
+select just those with a signal peptide. You could then use this tool to get
+a FASTA file of only the proteins with predicted signal peptides.
+
+    </help>
+    <citations>
+        <citation type="doi">10.7717/peerj.167</citation>
+    </citations>
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/fasta_filter_by_id/tool_dependencies.xml	Fri Feb 03 05:32:34 2017 -0500
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<tool_dependency>
+    <package name="galaxy_sequence_utils" version="1.0.1">
+        <repository changeset_revision="c1ab450748ba" name="package_galaxy_sequence_utils_1_0_1" owner="iuc" toolshed="https://toolshed.g2.bx.psu.edu" />
+    </package>
+</tool_dependency>
--- a/tools/fasta_tools/fasta_filter_by_id.py	Tue Jun 07 17:23:07 2011 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-#!/usr/bin/env python
-"""Filter a FASTA file with IDs from a tabular file, e.g. from BLAST.
-
-Takes five command line options, tabular filename, ID column numbers
-(comma separated list using one based counting), input FASTA filename, and
-two output FASTA filenames (for records with and without the given IDs).
-
-If either output filename is just a minus sign, that file is not created.
-This is intended to allow output for just the matched (or just the non-matched)
-records.
-
-Note in the default NCBI BLAST+ tabular output, the query sequence ID is
-in column one, and the ID of the match from the database is in column two.
-Here sensible values for the column numbers would therefore be "1" or "2".
-
-This script is copyright 2010 by Peter Cock, SCRI, UK. All rights reserved.
-See accompanying text file for licence details (MIT/BSD style).
-
-This is version 0.0.3 of the script.
-"""
-import sys
-from galaxy_utils.sequence.fasta import fastaReader, fastaWriter
-
-def stop_err( msg ):
-    sys.stderr.write( msg )
-    sys.exit()
-
-#Parse Command Line
-try:
-    tabular_file, cols_arg, in_file, out_positive_file, out_negative_file = sys.argv[1:]
-except ValueError:
-    stop_err("Expected five arguments, got %i:\n%s" % (len(sys.argv)-1, " ".join(sys.argv)))
-try:
-    columns = [int(arg)-1 for arg in cols_arg.split(",")]
-except ValueError:
-    stop_err("Expected list of columns (comma separated integers), got %s" % cols_arg)
-
-#Read tabular file and record all specified identifiers
-ids = set()
-handle = open(tabular_file, "rU")
-if len(columns)>1:
-    #General case of many columns
-    for line in handle:
-        if line.startswith("#"):
-            #Ignore comments
-            continue
-        parts = line.rstrip("\n").split("\t")
-        for col in columns:
-            ids.add(parts[col])
-    print "Using %i IDs from %i columns of tabular file" % (len(ids), len(columns))
-else:
-    #Single column, special case speed up
-    col = columns[0]
-    for line in handle:
-        if not line.startswith("#"):
-            ids.add(line.rstrip("\n").split("\t")[col])
-    print "Using %i IDs from tabular file" % (len(ids))
-handle.close()
-
-#Write filtered FASTA file based on IDs from tabular file
-reader = fastaReader(open(in_file, "rU"))
-if out_positive_file != "-" and out_negative_file != "-":
-    print "Generating two FASTA files"
-    positive_writer = fastaWriter(open(out_positive_file, "w"))
-    negative_writer = fastaWriter(open(out_negative_file, "w"))
-    for record in reader:
-        #The [1:] is because the fastaReader leaves the > on the identifer.
-        if record.identifier and record.identifier.split()[0][1:] in ids:
-            positive_writer.write(record)
-        else:
-            negative_writer.write(record)
-    positive_writer.close()
-    negative_writer.close()
-elif out_positive_file != "-":
-    print "Generating matching FASTA file"
-    positive_writer = fastaWriter(open(out_positive_file, "w"))
-    for record in reader:
-        #The [1:] is because the fastaReader leaves the > on the identifer.
-        if record.identifier and record.identifier.split()[0][1:] in ids:
-            positive_writer.write(record)
-    positive_writer.close()
-elif out_negative_file != "-":
-    print "Generating non-matching FASTA file"
-    negative_writer = fastaWriter(open(out_negative_file, "w"))
-    for record in reader:
-        #The [1:] is because the fastaReader leaves the > on the identifer.
-        if not record.identifier or record.identifier.split()[0][1:] not in ids:
-            negative_writer.write(record)
-    negative_writer.close()
-else:
-    stop_err("Neither output file requested")
-reader.close()
--- a/tools/fasta_tools/fasta_filter_by_id.txt	Tue Jun 07 17:23:07 2011 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-Obsolete
-========
-
-This tool is now obsolete, having been replaced	by a more general version
-covering the FASTA, FASTQ and SFF sequence formats in a single tool. You
-should only install this tool if you need to support existing workflows
-which used it.
-
-
-Galaxy tool to filter FASTA sequences by ID
-===========================================
-
-This tool is copyright 2010 by Peter Cock, SCRI, UK. All rights reserved.
-See the licence text below.
-
-This tool is a short Python script (using the Galaxy library functions) which
-divides a FASTA file in two, those sequences with or without an ID present in
-the specified column(s) of a tabular file. Example uses include filtering based
-on search results from a tool like NCBI BLAST, TMHMM or SignalP.
-
-There are just two files to install:
-
-* fasta_filter_by_id.py (the Python script)
-* fasta_filter_by_id.xml (the Galaxy tool definition)
-
-The suggested location is next to the similarly named fasta_filter_by_length.py
-and fasta_filter_by_length.xml files which are included with Galaxy, i.e.
-in the Galaxy folder tools/fasta_tools
-
-You will also need to modify the tools_conf.xml file to tell Galaxy to offer
-the tool. The suggested location is next to the fasta_filter_by_length.xml
-entry. Simply add the line:
-
-<tool file="fasta_tools/fasta_filter_by_id.xml" />
-
-That's it.
-
-
-History
-=======
-
-v0.0.1 - Initial version (not publicly released)
-v0.0.2 - Allow both, just pos or just neg output files
-v0.0.3 - Include FASTA in tool name
-v0.0.4 - Deprecated, marked as hidden in the XML
-
-
-Developers
-==========
-
-This script and related tools are being developed on the following hg branch:
-http://bitbucket.org/peterjc/galaxy-central/src/tools
-
-This incorporates the previously used hg branch:
-http://bitbucket.org/peterjc/galaxy-central/src/fasta_filter
-
-For making the "Galaxy Tool Shed" http://community.g2.bx.psu.edu/ tarball use
-the following command from the Galaxy root folder:
-
-tar -czf fasta_filter_by_id.tar.gz tools/fasta_tools/fasta_filter_by_id.*
-
-Check this worked:
-
-$ tar -tzf fasta_filter_by_id.tar.gz
-fasta_tools/fasta_filter_by_id.py
-fasta_tools/fasta_filter_by_id.txt
-fasta_tools/fasta_filter_by_id.xml
-
-
-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.
--- a/tools/fasta_tools/fasta_filter_by_id.xml	Tue Jun 07 17:23:07 2011 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,90 +0,0 @@
-<tool id="fasta_filter_by_id" name="Filter FASTA by ID" version="0.0.4" hidden="true">
-	<description>from a tabular file</description>
-	<command interpreter="python">
-fasta_filter_by_id.py $input_tabular $columns $input_fasta
-#if $output_choice_cond.output_choice=="both"
- $output_pos $output_neg
-#elif $output_choice_cond.output_choice=="pos"
- $output_pos -
-#elif $output_choice_cond.output_choice=="neg"
- - $output_neg
-#end if
-	</command>
-	<inputs>
-		<param name="input_fasta" type="data" format="fasta" label="FASTA file to filter on the identifiers"/>
-		<param name="input_tabular" type="data" format="tabular" label="Tabular file containing FASTA identifiers"/>
-		<param name="columns" type="data_column" data_ref="input_tabular" multiple="True" numerical="False" label="Column(s) containing FASTA identifiers" help="Multi-select list - hold the appropriate key while clicking to select multiple columns">
-			<validator type="no_options" message="Pick at least one column"/>
-		</param>
-		<conditional name="output_choice_cond">
-			<param name="output_choice" type="select" label="Output positive matches, negative matches, or both?">
-				<option value="both">Both positive matches (ID on list) and negative matches (ID not on list), as two FASTA files</option>
-				<option value="pos">Just positive matches (ID on list), as a single FASTA file</option>
-				<option value="neg">Just negative matches (ID not on list), as a single FASTA file</option>
-			</param>
-			<!-- Seems need these dummy entries here, compare this to indels/indel_sam2interval.xml -->
-			<when value="both" />
-			<when value="pos" />
-			<when value="neg" />
-		</conditional>
-	</inputs>
-	<outputs>
-		<data name="output_pos" format="fasta" label="With matched ID">
-			<filter>output_choice_cond["output_choice"] != "neg"</filter>
-		</data>
-		<data name="output_neg" format="fasta" label="Without matched ID">
-			<filter>output_choice_cond["output_choice"] != "pos"</filter>
-		</data>
-	</outputs>
-	<tests>
-	<!-- Can't get these unit tests to run, may be a Galaxy problem
-	<test>
-		<param name="input_fasta" value="four_human_proteins.fasta" ftype="fasta" />
-		<param name="input_tabular" value="blastp_four_human_vs_rhodopsin.tabular" ftype="tabular" />
-		<param name="columns" value="1" />
-		<param name="output_choice" value="both" />
-		<output name="output_pos" file="four_human_proteins_filter_a.fasta" ftype="fasta" />
-		<output name="output_neg" file="four_human_proteins_filter_b.fasta" ftype="fasta" />
-	</test>
-	<test>
-		<param name="input_fasta" value="four_human_proteins.fasta" ftype="fasta" />
-		<param name="input_tabular" value="blastp_four_human_vs_rhodopsin.tabular" ftype="tabular" />
-		<param name="columns" value="1" />
-		<param name="output_choice" value="pos" />
-		<output name="output_pos" file="four_human_proteins_filter_a.fasta" ftype="fasta" />
-	</test>
-	<test>
-		<param name="input_fasta" value="four_human_proteins.fasta" ftype="fasta" />
-		<param name="input_tabular" value="blastp_four_human_vs_rhodopsin.tabular" ftype="tabular" />
-		<param name="columns" value="1" />
-		<param name="output_choice" value="neg" />
-		<output name="output_neg" file="four_human_proteins_filter_b.fasta" ftype="fasta" />
-	</test>
-	-->
-	</tests>
-	<help>
-
-**Deprecated**
-
-This tool is now obsolete, and should not be used in future. It has been
-replaced by a more general version covering FASTA, FASTQ and SFF in one
-single tool.
-
-**What it does**
-
-By default it divides a FASTA file in two, those sequences with or without an
-ID present in the tabular file column(s) specified. You can opt to have a
-single output file of just the matching records, or just the non-matching ones.
-
-Note that the order of sequences in the original FASTA file is preserved.
-Also, if any sequences share an identifier, duplicates are not removed.
-
-**Example Usage**
-
-Given a FASTA file of proteins you might run a signal peptide search (e.g.
-via the SignalP wrapper for Galaxy), then filtered these tabular results to
-select just those with a signal peptide. You could then use this tool to get
-a FASTA file of only the proteins with predicted signal peptides.
-
-	</help>
-</tool>