diff velvetoptimiser.xml @ 1:7db5615f4621 draft

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/velvetoptimiser commit 86047b0de9e8a4d26d756049543f87e94e3ec3ae
author iuc
date Thu, 21 Dec 2017 18:23:10 -0500
parents d81360ea69d8
children 0e2b4e3f9ca1
line wrap: on
line diff
--- a/velvetoptimiser.xml	Tue Jun 28 17:30:32 2016 -0400
+++ b/velvetoptimiser.xml	Thu Dec 21 18:23:10 2017 -0500
@@ -1,150 +1,138 @@
-<tool id="velvetoptimiser" name="VelvetOptimiser" version="1.1.0">
+<tool id="velvetoptimiser" name="VelvetOptimiser" version="2.2.5">
+    <description>Automatically optimize Velvet assemblies</description>
     <requirements>
-      <requirement type="package" version="1.2.10">velvet</requirement>
-      <requirement type="package" version="2.2.5">velvetoptimiser</requirement>
+        <requirement type="package" version="1.2.10">velvet</requirement>
+        <requirement type="package" version="2.2.5">perl-velvetoptimiser</requirement>
     </requirements>
-    <stdio>
-        <exit_code range="1:" />
-    </stdio>
+    <version_command>VelvetOptimiser.pl --version</version_command>
+    <command detect_errors="exit_code"><![CDATA[
+        export OMP_NUM_THREADS=2 &&
+        export OMP_THREAD_LIMIT=2 &&
+        VelvetOptimiser.pl
+            -t "\${GALAXY_SLOTS:-1}"
+            -s $start_kmer
+            -e $end_kmer
+            -d out
+            -f "
+            #for $i in $files:
+                -${i.filetype}
 
-    <command><![CDATA[
-      export OMP_NUM_THREADS=2 &&
-      VelvetOptimiser.pl
-        -t \${GALAXY_SLOTS:-2}
-        -s $start_kmer
-        -e $end_kmer
-        -d out
-        -f "
-        #for $i in $files:
-          -${i.filetype}
+                #if str($i.paired_type.paired_type_selector) == "paired":
 
-          #if str($i.paired_type.paired_type_selector) == "paired":
+                    #if $i.__index__ > 1:
+                        -shortPaired$i.__index__
+                    #else
+                        -shortPaired
+                    #end if
 
-            #if $i.__index__ > 1:
-              -shortPaired$i.__index__
-            #else
-            -shortPaired
-            #end if
+                    -separate '$i.paired_type.input1' '$i.paired_type.input2'
+                #end if
 
-            -separate $i.paired_type.input1 $i.paired_type.input2
-          #end if
-
-          #if str($i.paired_type.paired_type_selector) == "single"
+                #if str($i.paired_type.paired_type_selector) == "single"
 
-            #if $i.__index__ > 1
-              -short$i.__index__
-            #else
-              -short
-            #end if
+                    #if $i.__index__ > 1
+                        -short$i.__index__
+                    #else
+                        -short
+                    #end if
 
-            $i.paired_type.input1
-          #end if
+                    '$i.paired_type.input1'
+                #end if
 
-          #if str($i.paired_type.paired_type_selector) == "paired_collection"
-            #if $i.__index__ > 1
-              -shortPaired$i.__index__
-            #else
-              -shortPaired
-            #end if
-            -separate $i.paired_type.input1.forward $i.paired_type.input1.reverse
-          #end if
-          #if str($i.paired_type.paired_type_selector) == "paired_iv"
-            #if $i.__index__ > 1
-              -shortPaired$i.__index__
-            #else
-              -shortPaired
-            #end if
-            $i.paired_type.input1
-          #end if
-        #end for
-        "
+                #if str($i.paired_type.paired_type_selector) == "paired_collection"
+                    #if $i.__index__ > 1
+                        -shortPaired$i.__index__
+                    #else
+                        -shortPaired
+                    #end if
+                        -separate '$i.paired_type.input1.forward' '$i.paired_type.input1.reverse'
+                #end if
+                #if str($i.paired_type.paired_type_selector) == "paired_iv"
+                    #if $i.__index__ > 1
+                        -shortPaired$i.__index__
+                    #else
+                        -shortPaired
+                    #end if
+                    '$i.paired_type.input1'
+                #end if
+            #end for
+            "
 
-        #if str($advanced.advanced_select) == "advanced"
-          $advanced.verbose
-          -k $advanced.optFuncKmer
-          -c $advanced.optFuncCov
-          #if str($advanced.velvetg_opts) != ""
-            -o "$advanced.velvetg_opts"
-          #end if
-          -m $advanced.minCovCutoff
-          -z $advanced.maxCovCutoff
-        #end if
-          ##&> $stderr
+            ##if str($advanced.advanced_select) == "advanced"
+                $advanced.verbose
+                -k '$advanced.optFuncKmer'
+                -c '$advanced.optFuncCov'
+                #if str($advanced.velvetg_opts) != ""
+                    -o '$advanced.velvetg_opts'
+                #end if
+                -m $advanced.minCutoff
+                -z $advanced.maxCutoff
+            ##end if
 
     ]]></command>
     <inputs>
-      <param name="start_kmer" type="integer" value="31" label="Start k-mer size" help="Odd integer, Lower limit of k-mer size range to search for optimum value" />
-      <param name="end_kmer" type="integer" value="191" label="End k-mer size" help="Odd integer, Upper limit of k-mer size range to search for optimum value" />
-      <param name="kmer_step" type="integer" value="2" label="K-mer search step size" help="Even integer, the k-mer value step size when searching the range" />
+        <param name="start_kmer" type="integer" value="31" label="Start k-mer size" help="Odd integer, Lower limit of k-mer size range to search for optimum value" />
+        <param name="end_kmer" type="integer" value="191" label="End k-mer size" help="Odd integer, Upper limit of k-mer size range to search for optimum value" />
+        <param name="kmer_step" type="integer" value="2" label="K-mer search step size" help="Even integer, the k-mer value step size when searching the range" />
 
-      <repeat name="files" title="Input files" min="1">
-        <param name="filetype" label="Input file type" type="select" help="Input file type">
-          <option value="fastq">Fastq</option>
-          <option value="fasta">Fasta</option>
-          <option value="bam">Bam</option>
-        </param>
-        <conditional name="paired_type">
-          <param name="paired_type_selector" type="select" label="Single or paired end reads" help="Select between paired and single end data">
-            <option value="paired">Paired</option>
-            <option value="single">Single</option>
-            <option value="paired_collection">Paired Collection</option>
-            <option value="paired_iv">Paired Interleaved</option>
-          </param>
-          <when value="paired">
-            <param name="input1" type="data" format="fastqsanger,fasta,bam" label="Select first set of reads" help="Specify dataset with forward reads"/>
-            <param name="input2" type="data" format="fastqsanger,fasta,bam" label="Select second set of reads" help="Specify dataset with reverse reads"/>
-          </when>
-          <when value="single">
-            <param name="input1" type="data" format="fastqsanger,fasta,bam" label="Select the reads" help="Specify dataset with the reads"/>
-          </when>
-          <when value="paired_collection">
-            <param name="input1" format="fastqsanger,fasta" type="data_collection" collection_type="paired" label="Select a paired collection" help="See help section for an explanation of dataset collections"/>
-          </when>
-          <when value="paired_iv">
-            <param name="input1" type="data" format="fastqsanger,fasta,bam" label="Select set of interleaved reads" help="Specify dataset with interleaved paired reads"/>
-          </when>
-        </conditional>
-      </repeat>
+        <repeat name="files" title="Input files" min="1">
+            <param name="filetype" label="Input file type" type="select" help="Input file type">
+                <option value="fastq">Fastq</option>
+                <option value="fasta">Fasta</option>
+                <option value="bam">Bam</option>
+            </param>
+            <conditional name="paired_type">
+                <param name="paired_type_selector" type="select" label="Single or paired end reads" help="Select between paired and single end data">
+                    <option value="paired">Paired</option>
+                    <option value="single">Single</option>
+                    <option value="paired_collection">Paired Collection</option>
+                    <option value="paired_iv">Paired Interleaved</option>
+                </param>
+                <when value="paired">
+                    <param name="input1" type="data" format="fastqsanger,fasta,bam" label="Select first set of reads" help="Specify dataset with forward reads"/>
+                    <param name="input2" type="data" format="fastqsanger,fasta,bam" label="Select second set of reads" help="Specify dataset with reverse reads"/>
+                </when>
+                <when value="single">
+                    <param name="input1" type="data" format="fastqsanger,fasta,bam" label="Select the reads" help="Specify dataset with the reads"/>
+                </when>
+                <when value="paired_collection">
+                    <param name="input1" format="fastqsanger,fasta" type="data_collection" collection_type="paired" label="Select a paired collection" help="See help section for an explanation of dataset collections"/>
+                </when>
+                <when value="paired_iv">
+                    <param name="input1" type="data" format="fastqsanger,fasta,bam" label="Select set of interleaved reads" help="Specify dataset with interleaved paired reads"/>
+                </when>
+            </conditional>
+        </repeat>
 
-      <conditional name="advanced">
-        <param name="advanced_select" type="select" label="Set advanced parameters?" help="Set more advanced Velvet Optimiser parameters - see help for details">
-          <option value="basic">Basic</option>
-          <option value="advanced">Advanced</option>
-        </param>
-        <when value="basic"></when>
-        <when value="advanced">
-          <param name="verbose" type="boolean" checked="false" truevalue="-v" falsevalue="" label="Verbose" help="Include verbose velvet output in log file" />
-          <param name="optFuncKmer" type="text" value="n50" label="K-mer optimisation function" help="See help below for possibilities!"/>
-          <param name="optFuncCov" type="text" value="Lbp" label="Coverage cutoff optimisation function" help="See help below for possibilities!"/>
-          <param name="velvetg_opts" type="text" value="" label="Other velvetg options" help="Add any other required velvetg options from the advanced set"/>
-          <param name="minCovCutoff" type="integer" value="0" label="Minimum coverage cutoff" help="The minimum coverage cutoff to consider in the optimisation"/>
-          <param name="maxCovCutoff" type="float" value="0.8" label="Maximum coverage cutoff" help="The maximum coverage cutoff to consider expressed as a fraction of the calculated expected coverage."/>
-        </when>
-      </conditional>
+        <section name="advanced" title="Advanced Options" expanded="false">
+            <param name="verbose" type="boolean" checked="false" truevalue="-v" falsevalue="" label="Verbose" help="Include verbose velvet output in log file" />
+            <param name="optFuncKmer" type="text" value="n50" label="K-mer optimisation function" help="See help below for possibilities!"/>
+            <param name="optFuncCov" type="text" value="Lbp" label="Coverage cutoff optimisation function" help="See help below for possibilities!"/>
+            <param name="velvetg_opts" type="text" value="" label="Other velvetg options" help="Add any other required velvetg options from the advanced set"/>
+            <param name="minCutoff" type="integer" value="0" label="Minimum coverage cutoff" help="The minimum coverage cutoff to consider in the optimisation"/>
+            <param name="maxCutoff" type="float" value="0.8" label="Maximum coverage cutoff" help="The maximum coverage cutoff to consider expressed as a fraction of the calculated expected coverage."/>
+        </section>
     </inputs>
 
     <outputs>
-      <data format="fasta" name="contigs" label="${tool.name} on ${on_string}: Contigs" from_work_dir="out/contigs.fa"/>
-      <data format="tabular" name="stats" label="${tool.name} on ${on_string}: Contig Stats" from_work_dir="out/stats.txt"/>
-      <data format="tabular" name="logfile" label="${tool.name} on ${on_string}: Log file" hidden="True">
-        <discover_datasets pattern=".+Logfile.+" dir="out" visible="True" />
-      </data>
-      <!-- <data format="tabular" name="stderr" label="${tool.name} on ${on_string}: STDERR" hidden="True" /> -->
+        <data format="fasta" name="contigs" label="${tool.name} on ${on_string}: Contigs" from_work_dir="out/contigs.fa"/>
+        <data format="tabular" name="stats" label="${tool.name} on ${on_string}: Contig Stats" from_work_dir="out/stats.txt"/>
+        <data format="tabular" name="logfile" label="${tool.name} on ${on_string}: Log file" hidden="true" from_work_dir="*_Logfile.txt"/>
     </outputs>
 
     <tests>
-      <test>
-        <param name="start_kmer" value="21" />
-        <param name="end_kmer" value="31" />
-        <param name="files_0|filetype" value="fasta" />
-        <param name="files_0|paired_type|paired_type_selector" value="single" />
-        <param name="files_0|paired_type|input1" value="test_reads.fa" ftype="fasta" />
-        <output name="contigs" ftype="fasta" file="test-contigs.fa" />
-      </test>
+        <test>
+            <param name="start_kmer" value="21" />
+            <param name="end_kmer" value="31" />
+            <param name="files_0|filetype" value="fasta" />
+            <param name="files_0|paired_type|paired_type_selector" value="single" />
+            <param name="files_0|paired_type|input1" value="test_reads.fa" ftype="fasta" />
+            <output name="contigs" ftype="fasta" file="test-contigs.fa" compare="sim_size"/>
+        </test>
     </tests>
 
     <help><![CDATA[
-      **Velvet Optimiser Overview**
+**Velvet Optimiser Overview**
 
       Velvet_ is a de novo genomic assembler specially designed for short read sequencing technologies, such as Solexa or 454, developed by Daniel Zerbino and Ewan Birney at the European Bioinformatics Institute (EMBL-EBI), near Cambridge, in the United Kingdom.
 
@@ -162,15 +150,11 @@
 
       VelvetOptimiser performs a number of velveth and velvetg steps to try and optimise an assembly based on the metrics provided below.
 
-      .. _VelvetOptimiser: http://bioinformatics.net.au/software.shtml
-
-      **Velvet Optimiser**
+      .. _VelvetOptimiser: http://github.com/Slugger70/VelvetOptimiser
 
-      Galaxy tool wrapper for newer versions (2.5.5) of Velvet Optimiser. Written by Simon Gladman of VBC/VLSCI.
+      Galaxy tool wrapper for newer versions (2.5.5) of Velvet Optimiser. Written by Simon Gladman of Melbourne University.
 
-      Written for use on the Genomics Virtual Laboratory.
-
-      **Outputs**
+**Outputs**
 
 
       **Contigs**
@@ -215,42 +199,47 @@
 
       Coverage cutoff optimisation function   : The optimisation function used for cov_cutoff optimisation. (default 'Lbp').
 
-      Velvet optimiser assembly optimisation function can be built from the following variables.
+      Velvet optimiser **assembly optimisation functions** can be built from the following variables.
 
-      LNbp = The total number of Ns in large contigs
+          *LNbp* = The total number of Ns in large contigs
 
-      Lbp = The total number of base pairs in large contigs
+          *Lbp* = The total number of base pairs in large contigs
 
-      Lcon = The number of large contigs
+          *Lcon* = The number of large contigs
+
+          *max* = The length of the longest contig
 
-      max = The length of the longest contig
+          *n50* = The n50
 
-      n50 = The n50
+          *ncon* = The total number of contigs
 
-      ncon = The total number of contigs
+          *tbp* = The total number of basepairs in contigs
+
+        Examples are:
 
-      tbp = The total number of basepairs in contigs
+          'Lbp' = Just the total basepairs in contigs longer than 1kb
 
-      Examples are:
+          'n50*Lcon' = The n50 times the number of long contigs.
 
-      'Lbp' = Just the total basepairs in contigs longer than 1kb
+          'n50*Lcon/tbp+log(Lbp)' = The n50 times the number of long contigs divided by the total bases in all contigs plus the log of the number of bases in long contigs (as an example only.)
+
+        Defaults are:
 
-      'n50*Lcon' = The n50 times the number of long contigs.
+            *n50* for k-mer length optimisation &
 
-      'n50*Lcon/tbp+log(Lbp)' = The n50 times the number of long contigs divided by the total bases in all contigs plus the log of the number of bases in long contigs (as an example only.)
+            *Lbp* for coverage cutoff
 
       **Hash Length**
 
       The hash length, also known as k-mer length, corresponds to the length, in base pairs, of the words being hashed.
 
       The hash length is the length of the k-mers being entered in the hash table. Firstly, you must observe three technical constraints::
+        - it must be an odd number, to avoid palindromes. If you put in an even number, Velvet will just decrement it and proceed.
+        - it must be below or equal to MAXKMERHASH length (cf. 2.3.3, by default 31bp), because it is stored on 64 bits
+        - it must be strictly inferior to read length, otherwise you simply will not observe any overlaps between reads, for obvious reasons.
 
-      # it must be an odd number, to avoid palindromes. If you put in an even number, Velvet will just decrement it and proceed.
-      # it must be below or equal to MAXKMERHASH length (cf. 2.3.3, by default 31bp), because it is stored on 64 bits
-      # it must be strictly inferior to read length, otherwise you simply will not observe any overlaps between reads, for obvious reasons.
-
-      Now you still have quite a lot of possibilities. As is often the case, it's a trade- off between specificity and sensitivity. Longer kmers bring you more specificity (i.e. less spurious overlaps) but lowers coverage (cf. below). . . so there's a sweet spot to be found with time and experience.
-      We like to think in terms of "k-mer coverage", i.e. how many times has a k-mer been seen among the reads. The relation between k-mer coverage Ck and standard (nucleotide-wise) coverage C is Ck = C # (L - k + 1)/L where k is your hash length, and L you read length.
+      Now you still have quite a lot of possibilities. As is often the case, it's a trade-off between specificity and sensitivity. Longer kmers bring you more specificity (i.e. less spurious overlaps) but lowers coverage (cf. below)... so there's a sweet spot to be found with time and experience.
+      We like to think in terms of "k-mer coverage", i.e. how many times has a k-mer been seen among the reads. The relation between k-mer coverage Ck and standard (nucleotide-wise) coverage C is Ck = C * (L - k + 1)/L where k is your hash length, and L you read length.
       Experience shows that this kmer coverage should be above 10 to start getting decent results. If Ck is above 20, you might be "wasting" coverage. Experience also shows that empirical tests with different values for k are not that costly to run! VelvetOptimiser automates these tests for you.
 
 
@@ -260,7 +249,7 @@
 
       -max_branch_length integer        : maximum length in base pair of bubble (default: 100)
 
-      max_divergence floating-point  : maximum divergence rate between two branches in a bubble (default: 0.2)
+      -max_divergence floating-point  : maximum divergence rate between two branches in a bubble (default: 0.2)
 
       -max_gap_count integer            : maximum number of gaps allowed in the alignment of the two branches of a bubble (default: 3)
 
@@ -300,10 +289,10 @@
     ]]></help>
     <citations>
         <citation type="bibtex">@UNPUBLISHED{GLADMAN2012,
-          author = "Gladman Simon",
-          title = "VelvetOptimiser",
-          year = "2012",
-          note = "https://github.com/slugger70/VelvetOptimiser"}
+            author = "Gladman Simon",
+            title = "VelvetOptimiser",
+            year = "2012",
+            note = "https://github.com/slugger70/VelvetOptimiser"}
         </citation>
         <citation type="doi">10.1101/gr.074492.107</citation>
         <citation type="doi">10.1371/journal.pone.0008407</citation>