changeset 0:0f17a8816b28 draft

planemo upload for repository https://github.com/galaxyproject/tools-devteam/blob/master/tool_collections/kraken/kraken/ commit 00a7926c285bc4a339bd7deebf40b28f39c7d947-dirty
author devteam
date Thu, 23 Jul 2015 10:55:44 -0400
parents
children 7b3ef9b4af80
files README.rst kraken.xml macros.xml tool-data/kraken_databases.loc.sample tool_data_table_conf.xml.sample tool_dependencies.xml
diffstat 5 files changed, 249 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/README.rst	Thu Jul 23 10:55:44 2015 -0400
@@ -0,0 +1,92 @@
+Introduction
+============
+
+`Kraken <http://ccb.jhu.edu/software/kraken/>`__ is a taxonomic sequence
+classifier that assigns taxonomic labels to short DNA reads. It does
+this by examining the :math:`k`-mers within a read and querying a
+database with those :math:`k`-mers. This database contains a mapping of
+every :math:`k`-mer in
+`Kraken <http://ccb.jhu.edu/software/kraken/>`__'s genomic library to
+the lowest common ancestor (LCA) in a taxonomic tree of all genomes that
+contain that :math:`k`-mer. The set of LCA taxa that correspond to the
+:math:`k`-mers in a read are then analyzed to create a single taxonomic
+label for the read; this label can be any of the nodes in the taxonomic
+tree. `Kraken <http://ccb.jhu.edu/software/kraken/>`__ is designed to be
+rapid, sensitive, and highly precise. Our tests on various real and
+simulated data have shown
+`Kraken <http://ccb.jhu.edu/software/kraken/>`__ to have sensitivity
+slightly lower than Megablast with precision being slightly higher. On a
+set of simulated 100 bp reads,
+`Kraken <http://ccb.jhu.edu/software/kraken/>`__ processed over 1.3
+million reads per minute on a single core in normal operation, and over
+4.1 million reads per minute in quick operation.
+
+The latest released version of Kraken will be available at the `Kraken
+website <http://ccb.jhu.edu/software/kraken/>`__, and the latest updates
+to the Kraken source code are available at the `Kraken GitHub
+repository <https://github.com/DerrickWood/kraken>`__.
+
+If you use `Kraken <http://ccb.jhu.edu/software/kraken/>`__ in your
+research, please cite the `Kraken
+paper <http://genomebiology.com/2014/15/3/R46>`__. Thank you!
+
+System Requirements
+===================
+
+Note: Users concerned about the disk or memory requirements should read
+the paragraph about MiniKraken, below.
+
+-  **Disk space**: Construction of Kraken's standard database will
+   require at least 160 GB of disk space. Customized databases may
+   require more or less space. Disk space used is linearly proportional
+   to the number of distinct :math:`k`-mers; as of Feb. 2015, Kraken's
+   default database contains just under 6 billion (6e9) distinct
+   :math:`k`-mers.
+
+   In addition, the disk used to store the database should be
+   locally-attached storage. Storing the database on a network
+   filesystem (NFS) partition can cause Kraken's operation to be very
+   slow, or to be stopped completely. As NFS accesses are much slower
+   than local disk accesses, both preloading and database building will
+   be slowed by use of NFS.
+
+-  **Memory**: To run efficiently, Kraken requires enough free memory to
+   hold the database in RAM. While this can be accomplished using a
+   ramdisk, Kraken supplies a utility for loading the database into RAM
+   via the OS cache. The default database size is 75 GB (as of Feb.
+   2015), and so you will need at least that much RAM if you want to
+   build or run with the default database.
+
+-  **Dependencies**: Kraken currently makes extensive use of Linux
+   utilities such as sed, find, and wget. Many scripts are written using
+   the Bash shell, and the main scripts are written using Perl. Core
+   programs needed to build the database and run the classifier are
+   written in C++, and need to be compiled using g++. Multithreading is
+   handled using OpenMP. Downloads of NCBI data are performed by wget
+   and in some cases, by rsync. Most Linux systems that have any sort of
+   development package installed will have all of the above listed
+   programs and libraries available.
+
+   Finally, if you want to build your own database, you will need to
+   install the
+   `Jellyfish <http://www.cbcb.umd.edu/software/jellyfish/>`__
+   :math:`k`-mer counter. Note that Kraken only supports use of
+   Jellyfish version 1. Jellyfish version 2 is not yet compatible with
+   Kraken.
+
+-  **Network connectivity**: Kraken's standard database build and
+   download commands expect unfettered FTP and rsync access to the NCBI
+   FTP server. If you're working behind a proxy, you may need to set
+   certain environment variables (such as ``ftp_proxy`` or
+   ``RSYNC_PROXY``) in order to get these commands to work properly.
+
+-  **MiniKraken**: To allow users with low-memory computing environments
+   to use Kraken, we supply a reduced standard database that can be
+   downloaded from the Kraken web site. When Kraken is run with a
+   reduced database, we call it MiniKraken.
+
+   The database we make available is only 4 GB in size, and should run
+   well on computers with as little as 8 GB of RAM. Disk space required
+   for this database is also only 4 GB.
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kraken.xml	Thu Jul 23 10:55:44 2015 -0400
@@ -0,0 +1,113 @@
+<?xml version="1.0"?>
+<tool id="kraken" name="Kraken" version="1.1.0">
+    <description>
+        assign taxonomic labels to sequencing reads
+    </description>
+    <macros>
+        <import>macros.xml</import>
+    </macros>
+    <command>
+        <![CDATA[
+        @SET_DATABASE_PATH@ &&
+        kraken --threads \${GALAXY_SLOTS:-1} @INPUT_DATABASE@ 
+        
+        #if $input_sequences.is_of_type( 'fastq' ):
+            --fastq-input
+        #else:
+            --fasta-input
+        #end if
+
+        ${only_classified_output}
+
+        #if str( $quick_operation.quick ) == "yes":
+            --quick
+            --min-hits ${quick_operation.min_hits}
+
+        #end if
+
+        "$input_sequences"
+
+        #if $split_reads:
+            --classified-out "${classified_out}" --unclassified-out "${unclassified_out}"
+        #end if
+        --output "${output}"
+        ##kraken-translate --db ${kraken_database.fields.name} "${output}" > "${translated}"
+        ]]>
+    </command>
+    <inputs>
+        <param format="fasta,fastq" label="Input sequences" name="input_sequences" type="data" help="FASTA or FASTQ datasets"/>
+        <param label="Output classified and unclassified reads?" name="split_reads" type="boolean" help="Sets --unclassified-out and --classified-out"/>
+  
+        <conditional name="quick_operation">
+            <param name="quick" type="select" label="Enable quick operation?" help="--quick; Rather than searching all k-mers in a sequence, stop classification after a specified number of database hit">
+                <option value="yes">Yes</option>
+                <option selected="True" value="no">No</option>
+            </param>
+            <when value="yes">
+                <param name="min_hits" type="integer" value="1" label="Number of hits required for classification" help="--min-hits; min-hits will allow you to require multiple hits before declaring a sequence classified, which can be especially useful with custom databases when testing to see if sequences either do or do not belong to a particular genome; default=1"/>
+            </when>
+            <when value="no">
+                <!-- Do absolutely nothing -->
+            </when>
+        </conditional>
+
+        <param name="only_classified_output" type="boolean" checked="False" truevalue="--only-classified-output" falsevalue="" label="Print no Kraken output for unclassified sequences" help="--only-classified-output"/>
+
+        <expand macro="input_database" />
+    </inputs>
+    <outputs>
+        <data format="tabular" label="${tool.name} on ${on_string}: Classified reads" name="classified_out">
+            <filter>(split_reads)</filter>
+        </data>
+        <data format="tabular" label="${tool.name} on ${on_string}: Unclassified reads" name="unclassified_out">
+            <filter>(split_reads)</filter>
+        </data>
+        <data format="tabular" label="${tool.name} on ${on_string}: Classification" name="output" />
+        <!--<data format="tabular" label="${tool.name} on ${on_string}: Translated classification" name="translated" />-->
+    </outputs>
+    <help>
+        <![CDATA[
+**What it does**
+
+Kraken is a taxonomic sequence classifier that assigns taxonomic labels to short DNA reads. It does this by examining the k-mers within a read and querying a database with those k-mers. This database contains a mapping of every k-mer in Kraken's genomic library to the lowest common ancestor (LCA) in a taxonomic tree of all genomes that contain that k-mer. The set of LCA taxa that correspond to the k-mers in a read are then analyzed to create a single taxonomic label for the read; this label can be any of the nodes in the taxonomic tree. Kraken is designed to be rapid, sensitive, and highly precise.
+
+-----
+
+**Kraken options**
+
+The Galaxy version of Kraken implements the following options::
+
+        
+  --fasta-input             Input is FASTA format
+  --fastq-input             Input is FASTQ format
+  --quick                   Quick operation (use first hit or hits)
+  --min-hits NUM            In quick op., number of hits req'd for classification
+                            NOTE: this is ignored if --quick is not specified
+  --unclassified-out        Print unclassified sequences to filename
+  --classified-out          Print classified sequences to filename
+
+  --only-classified-output  Print no Kraken output for unclassified sequences
+                          
+------
+
+**Output Format**
+
+Each sequence classified by Kraken results in a single line of output. Output lines contain five tab-delimited fields; from left to right, they are::
+
+    1. "C"/"U": one letter code indicating that the sequence was either classified or unclassified.
+    2. The sequence ID, obtained from the FASTA/FASTQ header.
+    3. The taxonomy ID Kraken used to label the sequence; this is 0 if the sequence is unclassified.
+    4. The length of the sequence in bp.
+    5. A space-delimited list indicating the LCA mapping of each k-mer in the sequence. For example, "562:13 561:4 A:31 0:1 562:3" would indicate that:
+            a) the first 13 k-mers mapped to taxonomy ID #562
+            b) the next 4 k-mers mapped to taxonomy ID #561
+            c) the next 31 k-mers contained an ambiguous nucleotide
+            d) the next k-mer was not in the database
+            e) the last 3 k-mers mapped to taxonomy ID #562
+        ]]>
+    </help>
+    <expand macro="requirements" />
+    <expand macro="stdio" />
+    <expand macro="version_command" />
+    <expand macro="citations" />
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/macros.xml	Thu Jul 23 10:55:44 2015 -0400
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<macros>
+    <xml name="requirements">
+        <requirements>
+            <requirement type="package" version="0.10.5">kraken</requirement>
+        </requirements>
+    </xml>
+    <xml name="stdio">
+        <stdio>
+            <exit_code description="Tool exception" level="fatal" range="1:" />
+        </stdio>
+    </xml>
+    <xml name="version_command">
+        <version_command>export LC_ALL=C &amp;&amp; kraken --version</version_command>
+    </xml>
+    <xml name="input_database">
+        <param label="Select a Kraken database" name="kraken_database" type="select">
+            <options from_data_table="kraken_databases">
+                <validator message="No databases are available built-in" type="no_options" />
+            </options>
+        </param>
+    </xml>
+    <xml name="citations">
+        <citations>
+            <citation type="doi">10.1186/gb-2014-15-3-r46</citation>
+        </citations>
+    </xml>
+    <token name="@INPUT_DATABASE@">--db ${kraken_database.fields.name}</token>
+    <token name="@SET_DATABASE_PATH@">export KRAKEN_DB_PATH="${kraken_database.fields.path}"</token>
+</macros>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tool_data_table_conf.xml.sample	Thu Jul 23 10:55:44 2015 -0400
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<tables>
+    <!-- Locations of Kraken database in the required format -->
+    <table name="kraken_databases" comment_char="#">
+        <columns>value, name, path</columns>
+        <file path="tool-data/kraken_databases.loc" />
+    </table>
+</tables>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tool_dependencies.xml	Thu Jul 23 10:55:44 2015 -0400
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<tool_dependency>
+  <package name="kraken" version="0.10.5">
+      <repository changeset_revision="89a36b0f718c" name="package_kraken_0_10_5" owner="iuc" toolshed="https://toolshed.g2.bx.psu.edu" />
+    </package>
+</tool_dependency>