diff extract_kraken_reads.xml @ 0:519e0835abd7 draft

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/krakentools commit 92c58a65005708fbd56b27b86969c01a1258ddb9
author iuc
date Wed, 15 Mar 2023 18:18:27 +0000
parents
children f329328da134
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/extract_kraken_reads.xml	Wed Mar 15 18:18:27 2023 +0000
@@ -0,0 +1,251 @@
+<tool id="krakentools_extract_kraken_reads" name="Krakentools: Extract Kraken Reads By ID" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="@PROFILE@">
+    <description>
+        Extract reads that were classified by the Kraken family at specified taxonomic IDs
+    </description>
+    <macros>
+        <import>macros.xml</import>
+    </macros>
+    <expand macro="requirements">
+        <requirement type="package" version="1.12">gzip</requirement>
+    </expand>
+    <command detect_errors="exit_code">
+        <![CDATA[
+
+        ##set input
+        #if $library.type == 'paired':
+            #set input_1 = $library.input_1
+            #set input_2 = $library.input_2
+        #else if $library.type == 'paired_collection'
+            #set input_1 = $library.input_1.forward
+            #set input_2 = $library.input_1.reverse
+        #else
+            #set input_1 = $library.input_1
+        #end if
+
+        ## name output according to --fastq_output param
+        ## tests fails if file does not have correct ending
+        #if str($fastq_output) == '':
+            #set temp_output_1 = 'output_1.fasta'
+            #set temp_output_2 = 'output_2.fasta'
+        #else:
+            #set temp_output_1 = 'output_1.fastq'
+            #set temp_output_2 = 'output_2.fastq'
+        #end if
+
+        ## do not quote $taxid
+        extract_kraken_reads.py
+        -k '$results'
+        -s '$input_1'
+        -o '$temp_output_1'
+        --taxid $taxid
+        --max '$max'
+        $include_parents
+        $include_children
+        $exclude
+        $fastq_output
+
+        #if str( $library.type ) != "single":
+        -s2 '$input_2'
+        -o2 '$temp_output_2'
+        #end if
+        #if $include_parents or $include_children:
+        --report '$report'
+        #end if
+
+        ##compress output
+        && gzip -cvf '$temp_output_1' > output_1.gz
+
+        #if str( $library.type ) != "single":
+        && gzip -cvf '$temp_output_2' > output_2.gz
+        #end if
+
+        ]]>
+    </command>
+    <inputs>
+        <!-- Reads -->
+        <conditional name="library">
+            <param name="type" type="select" label="Single or paired reads?">
+                <option value="single">
+                    Single
+                </option>
+                <option value="paired">
+                    Paired
+                </option>
+                <option value="paired_collection">
+                    Paired Collection
+                </option>
+            </param>
+            <when value="single">
+                <param name="input_1" format="fastq,fasta" type="data" label="FASTQ/A file" help="FASTQ or FASTQ input reads (may be gzipped)" />
+            </when>
+            <when value="paired">
+                <param name="input_1" format="fastq,fasta" type="data" label="FASTQ/A forward file" help="FASTQ or FASTQ input reads (may be gzipped)" />
+                <param name="input_2" format="fastq,fasta" type="data" label="FASTQ/A reverse file" help="FASTQ or FASTQ input reads (for paired reads, may be gzipped)" />
+            </when>
+            <when value="paired_collection">
+                <param name="input_1" format="fastq,fasta" type="data_collection" collection_type="paired" label="Paired Collection" help="FASTQ or FASTA read pair collection (may be gzipped)" />
+            </when>
+        </conditional>
+        <param name="results" argument="-k" format="tabular" type="data" label="Results" help="Results (classification) file from Kraken/KrakenUniq/Kraken2" />
+        <param argument="--report" format="tabular" type="data" label="Report" optional="true" help="Report file from Kraken/KrakenUniq/Kraken2" />
+        <param  argument="--taxid" type="text" value="" label="Taxonomic ID(s) to match" help="Space-delimited list of taxonomic IDs for which to extract matching reads">
+            <validator type="regex" message="Enter a space-separated list of numeric tax IDs">^\d+[\d ]*$</validator>
+        </param>
+        <param argument="--max" type="integer" value="100000000" min="1" label="Maximum reads to save" help="Maximum number of reads to save for each ID" />
+        <param argument="--exclude" type="boolean" value="False" truevalue="--exclude" falsevalue="" label="Invert output" help="Instead of finding reads that match given taxonomic IDs, find all reads that DO NOT match given IDs" />
+        <param argument="--fastq_output" type="boolean" value="False" truevalue="--fastq-output" falsevalue="" label="Output as FASTQ" help="Write output as FASTQ instead of the default FASTA" />
+        <param argument="--include_parents" type="boolean" value="False" truevalue="--include-parents" falsevalue="" label="Include parents" help="Include reads classified at parent levels of the specified tax IDs" />
+        <param argument="--include_children" type="boolean" value="False" truevalue="--include-children" falsevalue="" label="Include children" help="Include reads classified more specifically than the specified tax IDs" />
+    </inputs>
+    <outputs>
+        <data name="output_1" format="fasta.gz" from_work_dir="output_1.gz" metadata_source="input_1" label="${tool.name} on ${on_string}: forward reads">
+            <filter>
+                (library['type'] == 'single' or library['type'] == 'paired')
+            </filter>
+            <change_format>
+                <when input="fastq_output" value="--fastq-output" format="fastq.gz" />
+            </change_format>
+        </data>
+        <data name="output_2" format="fasta.gz" from_work_dir="output_2.gz" metadata_source="input_2" label="${tool.name} on ${on_string}: reverse reads">
+            <filter>
+                (library['type'] == 'paired')
+            </filter>
+            <change_format>
+                <when input="fastq_output" value="--fastq-output" format="fastq.gz" />
+            </change_format>
+        </data>
+        <collection type="paired" name="output_collection" label="${tool.name} on ${on_string}: collection">
+            <filter>(library['type'] == 'paired_collection')</filter>
+            <data name="forward" format="fasta.gz" metadata_source="input_1" from_work_dir="output_1.gz" >
+            <change_format>
+                <when input="fastq_output" value="--fastq-output" format="fastq.gz" />
+            </change_format>
+            </data>
+            <data name="reverse" format="fasta.gz" metadata_source="input_2" from_work_dir="output_2.gz" >
+            <change_format>
+                <when input="fastq_output" value="--fastq-output" format="fastq.gz" />
+            </change_format>
+            </data>
+        </collection>
+    </outputs>
+    <tests>
+        <!-- test Kraken2 input, single input -->
+        <test expect_num_outputs="1">
+            <param name="input_1" value="extract_kraken_reads/R1.fq.gz" ftype="fastqsanger" />
+            <param name="library|type" value="single" />
+            <param name="results" value="extract_kraken_reads/kraken2.results" ftype="tabular" />
+            <param name="taxid" value="11176" />
+            <output name="output_1" file="extract_kraken_reads/out1.k2.11176.fa" decompress="true" ftype="fasta.gz"  />
+        </test>
+        <!-- test paired input -->
+        <test expect_num_outputs="2">
+            <param name="input_1" value="extract_kraken_reads/R1.fq.gz" ftype="fastqsanger" />
+            <param name="input_2" value="extract_kraken_reads/R2.fq.gz" ftype="fastqsanger" />
+            <param name="library|type" value="paired" />
+            <param name="results" value="extract_kraken_reads/kraken2.results" ftype="tabular" />
+            <param name="taxid" value="11176" />
+            <output name="output_1" file="extract_kraken_reads/out1.k2.11176.fa" decompress="true" ftype="fasta.gz" />
+            <output name="output_2" file="extract_kraken_reads/out2.k2.11176.fa" decompress="true" ftype="fasta.gz" />
+        </test>
+        <!-- test paired collection input -->
+        <test expect_num_outputs="3">
+            <param name="input_1">
+                <collection type="paired">
+                    <element name="forward" value="extract_kraken_reads/R1.fq.gz" ftype="fastqsanger" />
+                    <element name="reverse" value="extract_kraken_reads/R2.fq.gz" ftype="fastqsanger" />
+                </collection>
+            </param>
+            <param name="library|type" value="paired_collection" />
+            <param name="results" value="extract_kraken_reads/kraken2.results" ftype="tabular" />
+            <param name="taxid" value="11176" />
+            <output_collection name="output_collection" type="paired">
+                <element name="forward" file="extract_kraken_reads/out1.k2.11176.fa" decompress="true" ftype="fasta.gz" />
+                <element name="reverse" file="extract_kraken_reads/out2.k2.11176.fa" decompress="true" ftype="fasta.gz" />
+            </output_collection>
+        </test>
+        <!-- test Kraken1 input, include children -->
+        <test expect_num_outputs="1">
+            <param name="input_1" value="extract_kraken_reads/R1.fq.gz" ftype="fastqsanger" />
+            <param name="library|type" value="single" />
+            <param name="results" value="extract_kraken_reads/kraken1.results" ftype="tabular" />
+            <param name="report" value="extract_kraken_reads/kraken1.report" ftype="tabular" />
+            <param name="taxid" value="11176" />
+            <param name="include_children" value="True" />
+            <output name="output_1" file="extract_kraken_reads/out1.k1.11176.children.fa" decompress="true" ftype="fasta.gz" />
+        </test>
+        <!-- test exclude -->
+        <test expect_num_outputs="1">
+            <param name="input_1" value="extract_kraken_reads/R1.fq.gz" ftype="fastqsanger" />
+            <param name="library|type" value="single" />
+            <param name="results" value="extract_kraken_reads/kraken1.results" ftype="tabular" />
+            <param name="report" value="extract_kraken_reads/kraken1.report" ftype="tabular" />
+            <param name="taxid" value="10386" />
+            <param name="include_children" value="True" />
+            <param name="exclude" value="True" />
+            <output name="output_1" file="extract_kraken_reads/out1.k1.e10386.children.fa" decompress="true" ftype="fasta.gz" />
+        </test>
+        <!-- test max -->
+        <test expect_num_outputs="1">
+            <param name="input_1" value="extract_kraken_reads/R1.fq.gz" ftype="fastqsanger" />
+            <param name="library|type" value="single" />
+            <param name="results" value="extract_kraken_reads/kraken2.results" ftype="tabular" />
+            <param name="taxid" value="11176" />
+            <param name="max" value="2" />
+            <output name="output_1" file="extract_kraken_reads/out1.k2.11176.max2.fa" decompress="true" ftype="fasta.gz" />
+        </test>
+        <!-- test include parents -->
+        <test expect_num_outputs="1">
+            <param name="input_1" value="extract_kraken_reads/R1.fq.gz" ftype="fastqsanger" />
+            <param name="library|type" value="single" />
+            <param name="results" value="extract_kraken_reads/kraken2.results" ftype="tabular" />
+            <param name="taxid" value="11176" />
+            <param name="include_parents" value="True" />
+            <param name="report" value="extract_kraken_reads/kraken2.report" ftype="tabular" />
+            <output name="output_1" file="extract_kraken_reads/out1.k2.11176.parents.fa" decompress="true" ftype="fasta.gz" />
+        </test>
+        <!-- test multiple tax IDs -->
+        <test expect_num_outputs="1">
+            <param name="input_1" value="extract_kraken_reads/R1.fq.gz" ftype="fastqsanger" />
+            <param name="library|type" value="single" />
+            <param name="results" value="extract_kraken_reads/kraken2.results" ftype="tabular" />
+            <param name="taxid" value="10386 11176" />
+            <param name="exclude" value="True" />
+            <param name="include_parents" value="True" />
+            <param name="report" value="extract_kraken_reads/kraken2.report" ftype="tabular" />
+            <output name="output_1" file="extract_kraken_reads/out1.k2.exclude_both.fa" decompress="true" ftype="fasta.gz" />
+        </test>
+        <!-- test multiple tax IDs -->
+        <test expect_failure="true">
+            <param name="input_1" value="extract_kraken_reads/R1.fq.gz" ftype="fastqsanger" />
+            <param name="library|type" value="single" />
+            <param name="results" value="extract_kraken_reads/kraken2.results" ftype="tabular" />
+            <param name="taxid" value="10386 f5" />
+        </test>
+        <!-- test FASTQ output -->
+        <test expect_num_outputs="1">
+            <param name="input_1" value="extract_kraken_reads/R1.fq.gz" ftype="fastqsanger" />
+            <param name="library|type" value="single" />
+            <param name="results" value="extract_kraken_reads/kraken2.results" ftype="tabular" />
+            <param name="taxid" value="11176" />
+            <param name="fastq_output" value="true" />
+            <output name="output_1" file="extract_kraken_reads/out1.k2.11176.fq" decompress="true" ftype="fastq.gz" />
+        </test>
+    </tests>
+    <help>
+        <![CDATA[
+**What it does**
+-------------------
+After running Kraken, Kraken2, or KrakenUniq, users may use the
+`extract_kraken_reads.py` program to extract the FASTA or FASTQ reads
+classified as a specific taxonomy ID. For example, this program can be used to
+extract all bacterial reads or only reads assigned to Escherichia coli. Users
+must provide (at minimum) the original sequence file(s), at least one taxonomy
+ID, and the Kraken output file.
+        ]]>
+    </help>
+    <expand macro="citations" />
+    <creator>
+        <person givenName="Jeremy" familyName="Volkening" url="https://github.com/jvolkening" />
+        <person givenName="Paul" familyName="Zierep" email="zierep@informatik.uni-freiburg.de" />
+    </creator>
+</tool>