changeset 2:e92675014ac9 draft

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/unicycler commit 03633ebc76d814bac6b98298349222b3cf4541cb
author iuc
date Tue, 28 Nov 2017 10:53:47 -0500
parents f13d0498a199
children c4eac0c7e542
files unicycler.xml
diffstat 1 files changed, 260 insertions(+), 234 deletions(-) [+]
line wrap: on
line diff
--- a/unicycler.xml	Fri Sep 29 11:03:48 2017 -0400
+++ b/unicycler.xml	Tue Nov 28 10:53:47 2017 -0500
@@ -1,188 +1,114 @@
-<tool id="unicycler" name="Create assemblies with Unicycler" version="0.4.1">
+<tool id="unicycler" name="Create assemblies with Unicycler" version="@VERSION@.1">
+    <macros>
+        <token name="@VERSION@">0.4.1</token>
+    </macros>
     <requirements>
-         <requirement type="package" version="0.4.1">unicycler</requirement>
+         <requirement type="package" version="@VERSION@">unicycler</requirement>
     </requirements>
     <command detect_errors="exit_code"><![CDATA[
-
-    ## Preparing files
-
-    #if str( $paired_unpaired.fastq_input_selector ) == "paired":
-
-        #if $paired_unpaired.fastq_input1.is_of_type('fastqsanger'):
-            ln -s '${paired_unpaired.fastq_input1}' fq1.fastq &&
-        #elif $paired_unpaired.fastq_input1.is_of_type('fastqsanger.gz'):
-            ln -s '${paired_unpaired.fastq_input1}' fq1.fastq.gz &&
-        #end if
-
-        #if $paired_unpaired.fastq_input2.is_of_type('fastqsanger'):
-            ln -s '${paired_unpaired.fastq_input2}' fq2.fastq &&
-        #elif $paired_unpaired.fastq_input2.is_of_type('fastqsanger.gz'):
-            ln -s '${paired_unpaired.fastq_input1}' fq2.fastq.gz &&
-        #end if
-
-    #elif str( $paired_unpaired.fastq_input_selector ) == "paired_collection":
-
-        #if $paired_unpaired.fastq_input1.forward.is_of_type('fastqsanger'):
-            ln -s '${paired_unpaired.fastq_input1.forward}' fq1.fastq &&
-        #elif $paired_unpaired.fastq_input1.forward.is_of_type('fastqsanger.gz'):
-            ln -s '${paired_unpaired.fastq_input1.forward}' fq1.fastq.gz &&
-        #end if
-
-        #if $paired_unpaired.fastq_input1.reverse.is_of_type('fastqsanger'):
-            ln -s '${paired_unpaired.fastq_input1.reverse}' fq2.fastq &&
-        #elif $paired_unpaired.fastq_input1.reverse.is_of_type('fastqsanger.gz'):
-            ln -s '${paired_unpaired.fastq_input2.reverse}' fq2.fastq.gz &&
-        #end if
-
-    #elif str( $paired_unpaired.fastq_input_selector ) == "single":
-
-        #if $paired_unpaired.fastq_input1.is_of_type('fastqsanger'):
-            ln -s '${paired_unpaired.fastq_input1}' fq.fastq &&
-        #elif $paired_unpaired.fastq_input1.is_of_type('fastqsanger.gz'):
-            ln -s '${paired_unpaired.fastq_input1}' fq.fastq.gz &&
-        #end if
-
+## Preparing files
+#if str( $paired_unpaired.fastq_input_selector ) == "paired"
+    #if $paired_unpaired.fastq_input1.is_of_type('fastqsanger')
+        #set fq1 = "fq1.fastq"
+    #elif $paired_unpaired.fastq_input1.is_of_type('fastqsanger.gz')
+        #set fq1 = "fq1.fastq.gz"
+    #end if
+    #if $paired_unpaired.fastq_input2.is_of_type('fastqsanger')
+        #set fq2 = "fq2.fastq"
+    #elif $paired_unpaired.fastq_input2.is_of_type('fastqsanger.gz')
+        #set fq2 = "fq2.fastq.gz"
+    #end if
+    ln -s '${paired_unpaired.fastq_input1}' $fq1 &&
+    ln -s '${paired_unpaired.fastq_input2}' $fq2 &&
+#elif str( $paired_unpaired.fastq_input_selector ) == "paired_collection"
+    #if $paired_unpaired.fastq_input1.forward.is_of_type('fastqsanger')
+        #set fq1 = "fq1.fastq"
+    #elif $paired_unpaired.fastq_input1.forward.is_of_type('fastqsanger.gz')
+        #set fq1 = "fq1.fastq.gz"
     #end if
-
-    ## Get location for pilon installation
-
-        pilon=`pilon --jar_dir` &&
-
-    #if $long_reads:
-        #if $long_reads.is_of_type('fastqsanger'):
-            #set lr = "lr.fastq"
-            ln -s '${long_reads}' lr.fastq &&
-        #elif $long_reads.is_of_type('fastqsanger.gz'):
-            #set lr = "lr.fastq.gz"
-            ln -s '${long_reads}' lr.fastq.gz &&
-        #elif $long_reads.is_of_type('fasta'):
-            #set lr = "lr.fasta"
-            ln -s '${long_reads}' lr.fasta &&
-        #end if
+    #if $paired_unpaired.fastq_input1.reverse.is_of_type('fastqsanger')
+        #set fq2 = "fq2.fastq"
+    #elif $paired_unpaired.fastq_input1.reverse.is_of_type('fastqsanger.gz')
+        #set fq2 = "fq2.fastq.gz"
     #end if
-
-    ## Running Unicycler
-
-    unicycler -t "\${GALAXY_SLOTS:-4}"
-
-    -o ./
-    --verbosity 3
-    --pilon_path \$pilon
-
-    #if str( $paired_unpaired.fastq_input_selector ) != "single":
-
-        #if $paired_unpaired.fastq_input1.is_of_type('fastqsanger'):
-            -1 fq1.fastq
-        #elif $paired_unpaired.fastq_input1.is_of_type('fastqsanger.gz'):
-            -1 fq1.fastq.gz
-        #end if
-
-        #if $paired_unpaired.fastq_input2.is_of_type('fastqsanger'):
-            -2 fq2.fastq
-        #elif $paired_unpaired.fastq_input2.is_of_type('fastqsanger.gz'):
-            -2 fq2.fastq.gz
-        #end if
-
-    #else:
-
-        #if $paired_unpaired.fastq_input1.is_of_type('fastqsanger'):
-            -s fq.fastq
-        #elif $paired_unpaired.fastq_input1.is_of_type('fastqsanger.gz'):
-            -s fq.fastq.gz
-        #end if
-
+    ln -s '${paired_unpaired.fastq_input1.forward}' $fq1 &&
+    ln -s '${paired_unpaired.fastq_input1.reverse}' $fq2 &&
+#elif str( $paired_unpaired.fastq_input_selector ) == "single"
+    #if $paired_unpaired.fastq_input1.is_of_type('fastqsanger')
+        #set fq = "fq.fastq"
+    #elif $paired_unpaired.fastq_input1.is_of_type('fastqsanger.gz')
+        #set fq = "fq.fastq.gz"
+    #end if
+    ln -s '${paired_unpaired.fastq_input1}' '$fq' &&
+#end if
+#if $long
+    #if $long.is_of_type('fastqsanger')
+        #set lr = "lr.fastq"
+    #elif $long.is_of_type('fastqsanger.gz')
+        #set lr = "lr.fastq.gz"
+    #elif $long.is_of_type('fasta')
+        #set lr = "lr.fasta"
     #end if
-
-    #if $long_reads:
-
-        -l $lr
-
-    #end if
-
-    ## General Unicycler Options section
-    ## ----------------------------------------------------------
-
-    --mode '${uc_opt.mode}'
-
-    #if $uc_opt.min_fasta_length:
-        --min_fasta_length $uc_opt.min_fasta_length
-    #end if
-
-    #if $uc_opt.lin_seq:
-        --expected_linear $uc_opt.lin_seq
-    #end if
-
-    $uc_opt.no_correct
-    $uc_opt.no_rotate
-
-    ## Rotation Options section
-    ## ----------------------------------------------------------
-
-    #if $spades.min_kmer_frac:
-        --min_kmer_frac $spades.min_kmer_frac
-    #end if
-
-    #if $spades.max_kmer_frac:
-        --max_kmer_frac $spades.max_kmer_frac
-    #end if
-
-    #if $spades.kmer_count:
-        --kmer_count $spades.kmer_count
-    #end if
-
-    ## Rotation Options section
-    ## ----------------------------------------------------------
-
-    #if $rotation.start_genes:
-        --start_genes '${rotation.rotation_fasta.start_genes}'
-    #end if
-
-    #if $rotation.start_gene_id:
-        --start_gene_id $rotation.start_gene_id
-    #end if
-
-    #if $rotation.start_gene_cov:
-        --start_gene_cov $rotation.start_gene_cov
-    #end if
-
-    ## Pilon Options section
-    ## ----------------------------------------------------------
-
-    #if $pilon.min_polish_size:
-        --min_polish_size $pilon.min_polish_size
-    #end if
-
-    ## Graph Cleaning Options sdection
-    ## ----------------------------------------------------------
-
-    #if $graph_clean.min_component_size:
-        --min_component_size $graph_clean.min_component_size
-    #end if
-    #if $graph_clean.min_dead_end_size:
-        --min_dead_end_size $graph_clean.min_dead_end_size
-    #end if
-
-    ## Long Read Alignment Options
-    ## ----------------------------------------------------------
-
-
-    #if $lr_align.contamination_fasta:
-        --contamination '${lr_align.contamination_fasta}'
-    #end if
-
-    #if $lr_align.scores:
-        --scores '${lr_align.scores}'
-    #end if
-
-    #if $lr_align.low_score:
-        --low_score $lr_align.low_score
-    #end if
-
-    ## Miniasm requires racon, which is not available for python 3.x
-    --no_miniasm
-
+    ln -s '${long}' '$lr' &&
+#end if
+## Get location for pilon installation
+pilon=`pilon --jar_dir` &&
+## Running Unicycler
+unicycler -t "\${GALAXY_SLOTS:-4}"
+-o ./
+--verbosity 3
+--pilon_path \$pilon
+#if str( $paired_unpaired.fastq_input_selector ) != "single"
+    -1 '$fq1'
+    -2 '$fq2'
+#else
+    -s '$fq'
+#end if
+#if $long
+    -l $lr
+#end if
+## General Unicycler Options section
+## ----------------------------------------------------------
+--mode '$mode'
+--min_fasta_length '$min_fasta_length'
+--linear_seqs '$linear_seqs'
+## Spades Options section
+## ----------------------------------------------------------
+$spades.no_correct
+--min_kmer_frac '$spades.min_kmer_frac'
+--max_kmer_frac '$spades.max_kmer_frac'
+--kmer_count '$spades.kmer_count'
+--depth_filter '$spades.depth_filter'
+## Rotation Options section
+## ----------------------------------------------------------
+$rotation.no_rotate
+#if $rotation.start_genes
+    --start_genes '$rotation.start_genes'
+#end if
+--start_gene_id '$rotation.start_gene_id'
+--start_gene_cov '$rotation.start_gene_cov'
+## Pilon Options section
+## ----------------------------------------------------------
+$pilon.no_pilon
+#if str($pilon.min_polish_size) != ''
+    --min_polish_size '$pilon.min_polish_size'
+#end if
+## Graph cleaning Options sdection
+## ----------------------------------------------------------
+--min_component_size '$graph_clean.min_component_size'
+--min_dead_end_size '$graph_clean.min_dead_end_size'
+## Long Read Alignment Options
+## ----------------------------------------------------------
+#if $lr_align.contamination
+    --contamination '$lr_align.contamination'
+#end if
+--scores '${lr_align.scores}'
+#if str($lr_align.low_score) != ''
+    --low_score '$lr_align.low_score'
+#end if
+## Miniasm requires racon, which is not available for python 3.x
+--no_miniasm
     ]]></command>
-
     <inputs>
         <conditional name="paired_unpaired">
             <param name="fastq_input_selector" type="select" label="Paired or Single end data?" help="Select between paired and single end data">
@@ -201,64 +127,84 @@
                 <param name="fastq_input1" argument="-s" type="data" format="fastqsanger,fastqsanger.gz" label="Select unpaired reads" help="Specify dataset with unpaired reads"/>
             </when>
         </conditional>
-        <param name="long_reads" argument="--long" optional="True" type="data" format="fastqsanger,fastqsanger.gz,fasta" label="Select long reads. If there are no long reads, leave this empty"/>
-
-        <section name="uc_opt" expanded="True" title="Unicycler options">
-             <param argument="--mode" type="select" label="Select Bridging mode">
-                <option value="conservative">Conservative (smaller contigs, lower misassembly)</option>
-                <option value="normal" selected="True">Normal (moderate contig size and misassembly rate)</option>
-                <option value="bold">Bold (longest contigs, higher misassembly rate)</option>
-            </param>
-            <param argument="--min_fasta_length" optional="True" type="integer" value="" label="Exclude contigs from the FASTA file which are shorter than this length (bp)" help="default = 1"/>
-            <param argument="--no_correct" optional="True" type="boolean" checked="False" truevalue="--no_correct" falsevalue="" label="Skip SPAdes error correction step" help="This option turns off SPAdes error correction. Generally it is highly recommended to use correction."/>
-            <param argument="--no_rotate" optional="True" type="boolean" checked="False" truevalue="--no_rotate" falsevalue="" label="Do not rotate completed replicons to start at a standard gene." help="Unicycler uses TBLASTN to search for dnaA or repA alleles in each completed replicon. If one is found, the sequence is rotated and/or flipped so that it begins with that gene encoded on the forward strand. This provides consistently oriented assemblies and reduces the risk that a gene will be split across the start and end of the sequence."/>
-            <param argument="--no_pilon" optional="True" type="boolean" checked="False" truevalue="--no_pilon" falsevalue="" label="Do not use Pilon to polish the final assembly." help="Unicycler uses Pilon tool for polishing final assembly."/>
-            <param name="lin_seq" argument="--expected_linear_seqs" optional="True" type="integer" value="" label="The expected number of linear (i.e. non-circular) sequences in the assembly" help="default = 0"/>
-        </section>
-
+        <param argument="--long" optional="true" type="data" format="fastqsanger,fastqsanger.gz,fasta" label="Select long reads. If there are no long reads, leave this empty"/>
+        <param argument="--mode" type="select" label="Select Bridging mode">
+            <option value="conservative">Conservative (smaller contigs, lower misassembly)</option>
+            <option value="normal" selected="True">Normal (moderate contig size and misassembly rate)</option>
+            <option value="bold">Bold (longest contigs, higher misassembly rate)</option>
+        </param>
+        <param argument="--min_fasta_length" type="integer" value="100" label="Exclude contigs from the FASTA file which are shorter than this length (bp)"/>
+        <param argument="--linear_seqs" type="integer" value="0" label="The expected number of linear (i.e. non-circular) sequences in the assembly"/>
         <section name="spades" expanded="False" title="SPAdes options" help="Unicycler uses SPAdes to construct assembly graphs. You can modify some of the SPAdes settings here. Use this ONLY if you know what you are doing!">
-            <param argument="--min_kmer_frac" optional="True" type="float" min="0" max="1" value="" label="Lowest k-mer size for SPAdes assembly, expressed as a fraction of the read length" help="default = 0.2"/>
-            <param argument="--max_kmer_frac" optional="True" type="float" min="0" max="1" value="" label="Highest k-mer size for SPAdes assembly, expressed as a fraction of the read length" help="default = 0.95"/>
-            <param argument="--kmer_count" optional="True" type="integer" value="" label="Number of k-mer steps to use in SPAdes assembly" help="default = 10"/>
+            <param argument="--no_correct" type="boolean" checked="false" truevalue="--no_correct" falsevalue="" label="Skip SPAdes error correction step" help="This option turns off SPAdes error correction. Generally it is highly recommended to use correction."/>
+            <param argument="--min_kmer_frac" type="float" min="0" max="1" value="0.2" label="Lowest k-mer size for SPAdes assembly, expressed as a fraction of the read length"/>
+            <param argument="--max_kmer_frac" type="float" min="0" max="1" value="0.95" label="Highest k-mer size for SPAdes assembly, expressed as a fraction of the read length"/>
+            <param argument="--kmer_count" type="integer" min="0" value="10" label="Number of k-mer steps to use in SPAdes assembly"/>
+            <param argument="--depth_filter" type="float" min="0" max="1" value="0.25" label="Filter out contigs lower than this fraction of the chromosomal depth" help="It is done if does not result in graph dead ends"/>
         </section>
-
-        <section name="rotation" expanded="False" title="Rotation options" help="These options control the rotation of completed circular sequence near the end of the Unicycler pipeline. Use this ONLY if you know what you are doing!">
-            <param argument="--start_genes" optional="True" type="data" format="fasta" label="FASTA file of genes for start point of rotated replicons" />
-            <param argument="--start_gene_id" optional="True" type="integer" min="0" max="100" value="" label="The minimum required BLAST percent identity for a start gene search" help="default = 90"/>
-            <param argument="--start_gene_cov" optional="True" type="integer" min="0" max="100" value="" label="The minimum required BLAST percent coverage for a start gene search" help="default = 95"/>
-        </section>
-
-        <section name="pilon" title="Pilon options" expanded="False">
-            <param argument="--min_polish_size" optional="True" type="integer" min="0" label="Contigs shorter than this value (bp) will not be polished using Pilon" help="default = 1000"/>
+        <section name="rotation" expanded="false" title="Rotation options" help="These options control the rotation of completed circular sequence near the end of the Unicycler pipeline. Use this ONLY if you know what you are doing!">
+            <param argument="--no_rotate" type="boolean" checked="false" truevalue="--no_rotate" falsevalue="" label="Do not rotate completed replicons to start at a standard gene." help="Unicycler uses TBLASTN to search for dnaA or repA alleles in each completed replicon. If one is found, the sequence is rotated and/or flipped so that it begins with that gene encoded on the forward strand. This provides consistently oriented assemblies and reduces the risk that a gene will be split across the start and end of the sequence."/>
+            <param argument="--start_genes" optional="true" type="data" format="fasta" label="FASTA file of genes for start point of rotated replicons" />
+            <param argument="--start_gene_id" type="float" min="0" max="100" value="90" label="The minimum required BLAST percent identity for a start gene search"/>
+            <param argument="--start_gene_cov" type="float" min="0" max="100" value="95" label="The minimum required BLAST percent coverage for a start gene search"/>
         </section>
-
-        <section name="graph_clean" expanded="False" title="Graph cleaning options" help="These options control the removal of small leftover sequences after bridging is complete.">
-            <param argument="--min_component_size" optional="True" type="integer" value="" label="Unbridged graph components smaller than this size will be removed from the final graph" help="default = 1000"/>
-            <param argument="--min_dead_end_size" optional="True" type="integer" value="" label="Graph dead ends smaller than this size will be removed from the final graph" help="default = 1000"/>
+        <section name="pilon" title="Pilon options" expanded="false">
+            <param argument="--no_pilon" type="boolean" checked="false" truevalue="--no_pilon" falsevalue="" label="Do not use Pilon to polish the final assembly." help="Unicycler uses Pilon tool for polishing final assembly."/>
+            <param argument="--min_polish_size" type="integer" min="0" value="1000" label="Contigs shorter than this value (bp) will not be polished using Pilon"/>
         </section>
-
-        <section name="lr_align" expanded="False" title="Long read alignment parameters" help="These options control the alignment of long reads to the assembly graph.">
-            <param name="contamination_fasta" argument="--contamination" optional="True" type="data" format="fasta" label="FASTA file of known contamination in long reads, e.g. lambda, phiXm or puc18 spike-ins." />
-            <param argument="--scores" optional="True" type="text" value="" label="Comma-delimited string of alignment scores: match, mismatch, gap open, gap extend" help="default = 3,-6,-5,-2"/>
-            <param argument="--low_score" optional="True" type="integer" value="" label="Score threshold - alignments below this are considered poor" help="default = set automatically"/>
+        <section name="graph_clean" expanded="false" title="Graph cleaning options" help="These options control the removal of small leftover sequences after bridging is complete.">
+            <param argument="--min_component_size" type="integer" min="0" value="1000" label="Unbridged graph components smaller than this size will be removed from the final graph" />
+            <param argument="--min_dead_end_size" type="integer" min="0" value="1000" label="Graph dead ends smaller than this size will be removed from the final graph"/>
+        </section>
+        <section name="lr_align" expanded="false" title="Long read alignment parameters" help="These options control the alignment of long reads to the assembly graph.">
+            <param argument="--contamination" optional="true" type="data" format="fasta" label="FASTA file of known contamination in long reads, e.g. lambda, phiXm or puc18 spike-ins." />
+            <param argument="--scores" type="text" value="3,-6,-5,-2" label="Comma-delimited string of alignment scores: match, mismatch, gap open, gap extend"/>
+            <param argument="--low_score" optional="true" type="integer" value="" label="Score threshold - alignments below this are considered poor" help="default = set automatically"/>
         </section>
     </inputs>
-
     <outputs>
-        <data format="txt" name="assembly_grapth" from_work_dir="assembly.gfa" label="${tool.name} on ${on_string}: Final Assembly Graph" />
-        <data format="fasta" name="assembly" from_work_dir="assembly.fasta" label="${tool.name} on ${on_string}: Final Assembly"/>
+        <data name="assembly_graph" format="txt" from_work_dir="assembly.gfa" label="${tool.name} on ${on_string}: Final Assembly Graph" />
+        <data name="assembly" format="fasta" from_work_dir="assembly.fasta" label="${tool.name} on ${on_string}: Final Assembly"/>
     </outputs>
-
     <tests>
         <test>
-            <param name="fastq_input_selector" value="paired" />
-            <param name="fastq_input1" value="phix_f.fq.gz" ftype="fastqsanger" />
-            <param name="fastq_input2" value="phix_r.fq.gz" ftype="fastqsanger" />
+            <conditional name="paired_unpaired">
+                <param name="fastq_input_selector" value="paired" />
+                <param name="fastq_input1" value="phix_f.fq.gz" ftype="fastqsanger" />
+                <param name="fastq_input2" value="phix_r.fq.gz" ftype="fastqsanger" />
+            </conditional>
             <param name="mode" value="normal" />
-            <param name="no_correct" value="true" />
-            <param name="no_rotate" value="false" />
-            <param name="no_pilon" value="false" />
-            <output ftype="fasta" name="assembly">
+            <param name="min_fasta_length" value="100"/>
+            <param name="linear_seqs" value="0"/>
+            <section name="spades">
+                <param name="no_correct" value="true"/>
+                <param name="min_kmer_frac" value="0.2"/>
+                <param name="max_kmer_frac" value="0.95"/>
+                <param name="kmer_count" value="10"/>
+                <param name="depth_filter" value="0.25"/>
+            </section>
+            <section name="rotation">
+                <param name="no_rotate" value=""/>
+                <param name="start_gene_id" value="90"/>
+                <param name="start_gene_cov" value="95"/>
+            </section>
+            <section name="pilon">
+                <param name="no_pilon" value=""/>
+                <param name="min_polish_size" value="1000"/>
+            </section>
+            <section name="graph_clean">
+                <param name="min_component_size" value="1000"/>
+                <param name="min_dead_end_size" value="1000"/>
+            </section>
+            <section name="lr_align">
+                <param name="scores" value="3,-6,-5,-2"/>
+            </section>
+            <output name="assembly_graph" ftype="txt">
+                <assert_contents>
+                    <has_text text="TACGGGGAAGGACGTC"/>
+                </assert_contents>
+            </output>
+            <output name="assembly" ftype="fasta">
                 <assert_contents>
                     <has_text text="length=5386" />
                 </assert_contents>
@@ -276,15 +222,91 @@
             at: https://gist.github.com/jmchilton/b411b695170c1daea6589f5d76e326cb.
         -->
         <test>
-            <param name="fastq_input_selector" value="paired" />
-            <param name="fastq_input1" value="phix_f.fq.gz" ftype="fastqsanger" />
-            <param name="fastq_input2" value="phix_r.fq.gz" ftype="fastqsanger" />
-            <param name="long_reads" value="onp.fa" ftype="fasta" />
+            <conditional name="paired_unpaired">
+                <param name="fastq_input_selector" value="paired" />
+                <param name="fastq_input1" value="phix_f.fq.gz" ftype="fastqsanger.gz" />
+                <param name="fastq_input2" value="phix_r.fq.gz" ftype="fastqsanger.gz" />
+            </conditional>
+            <param name="long" value="onp.fa" ftype="fasta" />
             <param name="mode" value="normal" />
-            <param name="no_correct" value="true" />
-            <param name="no_rotate" value="false" />
-            <param name="no_pilon" value="false" />
-            <output ftype="fasta" name="assembly">
+            <param name="min_fasta_length" value="100"/>
+            <param name="linear_seqs" value="0"/>
+            <section name="spades">
+                <param name="no_correct" value="true"/>
+                <param name="min_kmer_frac" value="0.2"/>
+                <param name="max_kmer_frac" value="0.95"/>
+                <param name="kmer_count" value="10"/>
+                <param name="depth_filter" value="0.25"/>
+            </section>
+            <section name="rotation">
+                <param name="no_rotate" value=""/>
+                <param name="start_gene_id" value="90"/>
+                <param name="start_gene_cov" value="95"/>
+            </section>
+            <section name="pilon">
+                <param name="no_pilon" value=""/>
+                <param name="min_polish_size" value="1000"/>
+            </section>
+            <section name="graph_clean">
+                <param name="min_component_size" value="1000"/>
+                <param name="min_dead_end_size" value="1000"/>
+            </section>
+            <section name="lr_align">
+                <param name="scores" value="3,-6,-5,-2"/>
+            </section>
+            <output name="assembly_graph" ftype="txt">
+                <assert_contents>
+                    <has_text text="TACGGGGAAGGACGTC" />
+                </assert_contents>
+            </output>
+            <output name="assembly" ftype="fasta">
+                <assert_contents>
+                    <has_text text="length=5386" />
+                </assert_contents>
+            </output>
+        </test>
+        <test>
+            <conditional name="paired_unpaired">
+                <param name="fastq_input_selector" value="paired_collection"/>
+                <param name="fastq_input1">
+                    <collection type="paired">
+                        <element name="forward" value="phix_f.fq.gz" ftype="fastqsanger" />
+                        <element name="reverse" value="phix_r.fq.gz" ftype="fastqsanger" />
+                    </collection>
+                </param>
+            </conditional>
+            <param name="mode" value="normal" />
+            <param name="min_fasta_length" value="100"/>
+            <param name="linear_seqs" value="0"/>
+            <section name="spades">
+                <param name="no_correct" value="true"/>
+                <param name="min_kmer_frac" value="0.2"/>
+                <param name="max_kmer_frac" value="0.95"/>
+                <param name="kmer_count" value="10"/>
+                <param name="depth_filter" value="0.25"/>
+            </section>
+            <section name="rotation">
+                <param name="no_rotate" value=""/>
+                <param name="start_gene_id" value="90"/>
+                <param name="start_gene_cov" value="95"/>
+            </section>
+            <section name="pilon">
+                <param name="no_pilon" value="true"/>
+                <param name="min_polish_size" value="1000"/>
+            </section>
+            <section name="graph_clean">
+                <param name="min_component_size" value="1000"/>
+                <param name="min_dead_end_size" value="1000"/>
+            </section>
+            <section name="lr_align">
+                <param name="scores" value="3,-6,-5,-2"/>
+            </section>
+            <output name="assembly_graph" ftype="txt">
+                <assert_contents>
+                    <has_text text="TACGGGGAAGGACGTC" />
+                </assert_contents>
+            </output>
+            <output name="assembly" ftype="fasta">
                 <assert_contents>
                     <has_text text="length=5386" />
                 </assert_contents>
@@ -390,7 +412,7 @@
 
 If you expect your sample to contain linear (non circular) sequences, set this option::
 
-    --expected_linear_seqs EXPECTED_LINEAR_SEQS
+    --linear_seqs EXPECTED_LINEAR_SEQS
         The expected number of linear (i.e. non-circular)
         sequences in the underlying sequence
 
@@ -411,6 +433,10 @@
     --kmer_count KMER_COUNT
         Number of k-mer steps to use in
         SPAdes assembly (default: 10)
+    --depth_filter DEPTH_FILTER
+        Filter out contigs lower than this fraction 
+        of the chromosomal depth, if doing so does 
+        not result in graph dead ends (default: 0.25)
 
 ----