changeset 26:b512435320e3 draft default tip

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/spades commit f1fde73752b1554bb17b027795b6b8fa9bfbe2c4
author iuc
date Wed, 12 Mar 2025 21:46:56 +0000
parents 65d1598a9256
children
files macros.xml spades.xml test-data/ecoli_1K.fastq.gz
diffstat 3 files changed, 178 insertions(+), 169 deletions(-) [+]
line wrap: on
line diff
--- a/macros.xml	Mon Mar 03 11:06:57 2025 +0000
+++ b/macros.xml	Wed Mar 12 21:46:56 2025 +0000
@@ -1,10 +1,9 @@
 <macros>
-    <token name="@TOOL_VERSION@">3.15.5</token>
-    <token name="@VERSION_SUFFIX@">3</token>
+    <token name="@TOOL_VERSION@">4.1.0</token>
+    <token name="@VERSION_SUFFIX@">0</token>
     <xml name="requirements">
         <requirements>
             <requirement type="package" version="@TOOL_VERSION@">spades</requirement>
-            <requirement type="package" version="3.0">zip</requirement>
             <yield/>
         </requirements>
     </xml>
@@ -24,9 +23,10 @@
     <xml name="version_command">
         <version_command><![CDATA[spades.py --version 2>&1 | awk -F 'v' '{print $2}']]></version_command>
     </xml>
-    <token name="@INTYPES@">
-        
-    </token>
+    <token name="@FASTA_INTYPES@">fasta,fasta.gz</token>
+    <token name="@FASTQ_INTYPES@">fastqillumina,fastqillumina.gz,fastqsanger,fastqsanger.gz</token>
+    <token name="@INTYPES@">@FASTQ_INTYPES@,@FASTA_INTYPES@</token>
+
     <xml name="citations">
         <citations>
             <citation type="doi">10.1093/bioinformatics/btv688</citation>
@@ -50,46 +50,33 @@
 <!-- PREPARE INPUT FILES-->
 
 <token name="@PREPROCESS_INPUT_FILES_MAIN@"><![CDATA[
+#import re
+#def fix_ext($ext):
+    #set ext = $ext.replace('fastqsanger', 'fastq')
+    #set ext = $ext.replace('fastqillumina', 'fastq')
+    #return $ext
+#end def
+
 #if $singlePaired.sPaired == "single" or $singlePaired.sPaired == "paired_interlaced"
     mkdir -p reads1 &&
     #set file_paths1 = []
     #for $input_file in $singlePaired.input1
-        #set $ext = $input_file.ext.replace('fastqsanger', 'fastq')
-        #set $fname = $input_file.element_identifier.replace(" ","_") + '.' + $ext
-        #set $file_path = 'reads1/' + $fname
+        #set ext = $fix_ext($input_file.ext)
+        #set fname = re.sub('[^\w\-_.]', '_', $input_file.element_identifier) + '.' + $ext
+        #set file_path = 'reads1/' + $fname
         ln -s '$input_file' '$file_path' &&
         $file_paths1.append($file_path)
     #end for
-#else if $singlePaired.sPaired == "paired"
-    mkdir -p paired_reads1 &&
-    #set fw_reads1 = []
-    #for $input_file in $singlePaired.input1
-        #set $ext = $input_file.ext.replace('fastqsanger', 'fastq')
-        #set $fname = $input_file.element_identifier.replace(" ","_") + '.' + $ext
-        #set $file_path = 'paired_reads1/' + str($fname)
-        ln -s '$input_file' '$file_path' &&
-        $fw_reads1.append($file_path)
-    #end for
-    #set rv_reads1 = []
-    #for $input_file in $singlePaired.input2
-        #set $ext = $input_file.ext.replace('fastqsanger', 'fastq')
-        #set $fname = $input_file.element_identifier.replace(" ","_") + '.' + $ext
-        #set $file_path = 'paired_reads1/' + str($fname)
-        ln -s '$input_file' '$file_path' &&
-        $rv_reads1.append($file_path)
-    #end for
-    #silent $fw_reads1.sort()
-    #silent $rv_reads1.sort()
 #else
     mkdir -p paired_reads1 &&
     #set fw_reads1 = []
     #set rv_reads1 = []
     #for $i, $input_file in enumerate($singlePaired.input)
-        #set $ext = $input_file.forward.ext.replace('fastqsanger', 'fastq')
-        #set $file_path = 'paired_reads1/fw' + str($i) + '.' + $ext
+        #set ext = $fix_ext($input_file.forward.ext)
+        #set file_path = 'paired_reads1/' + re.sub('[^\w\-_.]', '_', $input_file.element_identifier) + '1.' + $ext
         ln -s '$input_file.forward' '$file_path' &&
         $fw_reads1.append($file_path)
-        #set $file_path = 'paired_reads1/rv' + str($i) + '.' + $ext
+        #set file_path = 'paired_reads1/' + re.sub('[^\w\-_.]', '_', $input_file.element_identifier) + '2.' + $ext
         ln -s '$input_file.reverse' '$file_path' &&
         $rv_reads1.append($file_path)
     #end for
@@ -101,42 +88,22 @@
     mkdir -p reads2 &&
     #set file_paths2 = []
     #for $input_file in $additional_reads.singlePaired.input1
-        #set $ext = $input_file.ext.replace('fastqsanger', 'fastq')
-        #set $fname = $input_file.element_identifier.replace(" ","_") + '.' + $ext
-        #set $file_path = 'reads2/' + $fname
+        #set ext = $fix_ext($input_file.ext)
+        #set fname = re.sub('[^\w\-_.]', '_', $input_file.element_identifier) + '.' + $ext
+        #set file_path = 'reads2/' + $fname
         ln -s '$input_file' '$file_path' &&
         $file_paths2.append($file_path)
     #end for
-#else if $additional_reads.singlePaired.sPaired == "paired"
-    mkdir -p paired_reads2 &&
-    #set fw_reads2 = []
-    #for $input_file in $additional_reads.singlePaired.input1
-        #set $ext = $input_file.ext.replace('fastqsanger', 'fastq')
-        #set $fname = $input_file.element_identifier.replace(" ","_") + '.' + $ext
-        #set $file_path = 'paired_reads2/' + str($fname)
-        ln -s '$input_file' '$file_path' &&
-        $fw_reads2.append($file_path)
-    #end for
-    #set rv_reads2 = []
-    #for $input_file in $additional_reads.singlePaired.input2
-        #set $ext = $input_file.ext.replace('fastqsanger', 'fastq')
-        #set $fname = $input_file.element_identifier.replace(" ","_") + '.' + $ext
-        #set $file_path = 'paired_reads2/' + str($fname)
-        ln -s '$input_file' '$file_path' &&
-        $rv_reads2.append($file_path)
-    #end for
-    #silent $fw_reads2.sort()
-    #silent $rv_reads2.sort()
 #else
     mkdir -p paired_reads2 &&
     #set fw_reads2 = []
     #set rv_reads2 = []
     #for $i, $input_file in enumerate($additional_reads.singlePaired.input)
-        #set $ext = $input_file.forward.ext.replace('fastqsanger', 'fastq')
-        #set $file_path = 'paired_reads2/fw' + str($i) + '.' + $ext
+        #set ext = $fix_ext($input_file.forward.ext)
+        #set file_path = 'paired_reads2/' + re.sub('[^\w\-_.]', '_', $input_file.element_identifier) + '1.' + $ext
         ln -s '$input_file.forward' '$file_path' &&
         $fw_reads2.append($file_path)
-        #set $file_path = 'paired_reads2/rv' + str($i) + '.' + $ext
+        #set file_path = 'paired_reads2/' + re.sub('[^\w\-_.]', '_', $input_file.element_identifier) + '2.' + $ext
         ln -s '$input_file.reverse' '$file_path' &&
         $rv_reads2.append($file_path)
     #end for
@@ -156,14 +123,6 @@
     #for $read in $file_paths1
         --s $library '${read}'
     #end for
-#else if  $singlePaired.sPaired == "paired"
-    #for $read in $fw_reads1
-        --${singlePaired.type_paired}-1 $library '${read}'
-    #end for
-    #for $read in $rv_reads1
-        --${singlePaired.type_paired}-2 $library '${read}'
-        --${singlePaired.type_paired}-or $library $singlePaired.orientation
-    #end for
 #else if $singlePaired.sPaired == "paired_interlaced"
     #for $read in $file_paths1
         --${singlePaired.type_paired}-12 $library '${read}'
@@ -187,14 +146,6 @@
     #for $read in $file_paths2
         --s $library '${read}'
     #end for
-#else if  $additional_reads.singlePaired.sPaired == "paired"
-    #for $read in $fw_reads2
-        --${additional_reads.singlePaired.type_paired}-1 $library '${read}'
-    #end for
-    #for $read in $rv_reads2
-        --${additional_reads.singlePaired.type_paired}-2 $library '${read}'
-        --${additional_reads.singlePaired.type_paired}-or $library $additional_reads.singlePaired.orientation
-    #end for
 #else if $additional_reads.singlePaired.sPaired == "paired_interlaced"
     #for $read in $file_paths2
         --${additional_reads.singlePaired.type_paired}-12 $library '${read}'
@@ -392,12 +343,6 @@
 #end if
 ]]></token>
 
-<token name="@CORRECTED@"><![CDATA[
-    #if 'corrected' in $optional_output
-        && (test -d 'output/corrected' && zip -q -r 'corrected.zip' 'output/corrected/*.fastq.gz' || echo 'No output files for corrected reads.')
-    #end if
-]]></token>
-
     <!--
       input
     -->
@@ -405,20 +350,13 @@
     <xml name="input_files_all" token_format="" token_label="" token_help="It assumes that all samples belong to the same library. If you want to use samples from two different libraries, include the second library as additional set of short-reads.">
         <conditional name="singlePaired">
             <param name="sPaired" type="select" label="Single-end or paired-end short-reads" help="@HELP@">
-                <option value="single" selected="true">Single-end</option>
-                <option value="paired">Paired-end: individual datasets</option>
+                <option value="single">Single-end</option>
                 <option value="paired_interlaced">Paired-end: interlaced reads</option>
-                <option value="paired_collection">Paired-end: list of dataset pairs</option>
+                <option value="paired_collection" selected="true">Paired-end: list of dataset pairs</option>
             </param>
             <when value="single">
                 <param format="@FORMAT@" name="input1" type="data"  multiple="true" label="@LABEL@"/>
             </when>
-            <when value="paired">
-                <param format="@FORMAT@" name="input1" type="data" multiple="true" label="@LABEL@: forward reads"/>
-                <param format="@FORMAT@" name="input2" type="data" multiple="true" label="@LABEL@: reverse reads"/>
-                <expand macro="type_paired"/>
-                <expand macro="orientation"/>
-            </when>
             <when value="paired_interlaced">
                 <param format="@FORMAT@" name="input1" type="data"  multiple="true" label="@LABEL@: interlaced"/>
                 <expand macro="type_paired"/>
@@ -432,19 +370,12 @@
         </conditional>
     </xml>
 
-    <xml name="input_files_paired" token_format="" token_label="" token_help="It assumes that all samples belong to the same library. If you want to use samples from two different libraries, include the second library as additional set of short-reads.">
+    <xml name="input_files_paired" tokens="format,label" token_help="It assumes that all samples belong to the same library. If you want to use samples from two different libraries, include the second library as additional set of short-reads.">
         <conditional name="singlePaired">
             <param name="sPaired" type="select" label="Pair-end reads input format" help="@HELP@">
-                <option value="paired" selected="true">Paired-end: individual datasets</option>
                 <option value="paired_interlaced">Paired-end: interlaced reads</option>
-                <option value="paired_collection">Paired-end: list of dataset pairs</option>
+                <option value="paired_collection" selected="true">Paired-end: list of dataset pairs</option>
             </param>
-            <when value="paired">
-                <param format="@FORMAT@" name="input1" type="data" multiple="true" label="@LABEL@: forward reads"/>
-                <param format="@FORMAT@" name="input2" type="data" multiple="true" label="@LABEL@: reverse reads"/>
-                <expand macro="type_paired"/>
-                <expand macro="orientation"/>
-            </when>
             <when value="paired_interlaced">
                 <param format="@FORMAT@" name="input1" type="data"  multiple="true" label="@LABEL@: interlaced"/>
                 <expand macro="type_paired"/>
@@ -480,14 +411,14 @@
         </param>
     </xml>
 
-    <xml name="input_additional_files_all" token_format="" token_label="" token_help="">
+    <xml name="input_additional_files_all" tokens="format" token_help="">
         <conditional name="additional_reads">
             <param name="selector" type="select" label="Use an additional set of short-reads" help="Enable this option if you want to combine to data sources (e.g. single and paired reads).">
                 <option value="false" selected="true">Disabled</option>
                 <option value="true">Enabled</option>
             </param>
             <when value="true">
-                <expand macro="input_files_all" format="fastq,fastq.gz,fastqsanger.gz,fasta,fasta.gz" label="FASTA/FASTQ file(s)" help="@HELP@"/>
+                <expand macro="input_files_all" format="@FORMAT@" label="FASTA/FASTQ file(s)" help="@HELP@"/>
                 <param name="library_number" type="select" label="The samples belong to the same library" help="If the reads have been generated from the sample sample, it means that they belong to the same library.">
                     <option value="true" selected="true">True</option>
                     <option value="false">False</option>
@@ -497,14 +428,14 @@
         </conditional>
     </xml>
 
-    <xml name="input_additional_files_paired" token_format="" token_label="" token_help="" >
+    <xml name="input_additional_files_paired" tokens="format" token_help="" >
         <conditional name="additional_reads">
             <param name="selector" type="select" label="Use an additional set of short-reads" help="Enable this option if you want to combine to data sources (e.g. single and paired reads).">
                 <option value="false" selected="true">Disabled</option>
                 <option value="true">Enabled</option>
             </param>
             <when value="true">
-                <expand macro="input_files_paired" format="fastq,fastq.gz,fastqsanger.gz,fasta,fasta.gz" label="FASTA/FASTQ file(s)" help="@HELP@"/>
+                <expand macro="input_files_paired" format="@FORMAT@" label="FASTA/FASTQ file(s)" help="@HELP@"/>
             </when>
             <when value="false"/>
         </conditional>
@@ -524,8 +455,8 @@
             </when>
         </conditional>
     </xml>
-    <xml name="pipeline_options">
-        <param name="mode_sel" type="select" label="Pipeline options"  multiple="true" optional="true" display="checkboxes" help="Error correction requires FASTQ input files.">
+    <xml name="pipeline_options" token_additional_help="">
+        <param name="mode_sel" type="select" label="Pipeline options"  multiple="true" optional="true" display="checkboxes" help="Error correction requires FASTQ input files. @ADDITIONAL_HELP@">
             <option value="--disable-rr">Disable repeat resolution (--disable-rr)</option>
             <yield/>
         </param>
@@ -550,11 +481,11 @@
         </conditional>
     </xml>
     <xml name="nanopore_pacbio">
-        <param argument="--nanopore" type="data" format="fastq,fastq.gz" multiple="true" optional="true" label="Nanopore reads" help="SPAdes will use Oxford Nanopore reads for gap closure and repeat resolution"/>
-        <param argument="--pacbio" type="data" format="fastq,fastq.gz" multiple="true" optional="true" label="PacBio CLR reads" help="It is not recommended to run SPAdes on PacBio reads with low coverage (less than 5). In addition, SPAdes develpers suggest not to run SPAdes on PacBio reads for large genomes. SPAdes will use PacBio CLR reads for gap closure and repeat resolution"/>
+        <param argument="--nanopore" type="data" format="@FASTQ_INTYPES@" multiple="true" optional="true" label="Nanopore reads" help="SPAdes will use Oxford Nanopore reads for gap closure and repeat resolution"/>
+        <param argument="--pacbio" type="data" format="@FASTQ_INTYPES@" multiple="true" optional="true" label="PacBio CLR reads" help="It is not recommended to run SPAdes on PacBio reads with low coverage (less than 5). In addition, SPAdes develpers suggest not to run SPAdes on PacBio reads for large genomes. SPAdes will use PacBio CLR reads for gap closure and repeat resolution"/>
     </xml>
     <xml name="flrna">
-        <param argument="--fl-rna" name="flrna" type="data" format="fastq,fastq.gz,fasta,fasta.gz,fastqsanger,fastqsanger.gz" multiple="true" optional="true" label="PacBio/Nanopore/contigs that capture full-length transcripts" help="In addition to long reads, you may also provide a separate file with reads capturing the entire transcript sequences using this option. Full-length transcripts in such reads can be typically detected using the adapters. Note, that FL reads should be trimmed so that the adapters are excluded."/>
+        <param argument="--fl-rna" name="flrna" type="data" format="@INTYPES@" multiple="true" optional="true" label="PacBio/Nanopore/contigs that capture full-length transcripts" help="In addition to long reads, you may also provide a separate file with reads capturing the entire transcript sequences using this option. Full-length transcripts in such reads can be typically detected using the adapters. Note, that FL reads should be trimmed so that the adapters are excluded."/>
     </xml>
 
     <xml name="phred">
@@ -565,14 +496,14 @@
         </param>
     </xml>
     <xml name="reads" token_paramname="reads" token_help="" token_label="">
-        <param name="@PARAMNAME@" type="data" format="fastq,fastq.gz" label="@LABEL@ reads" help="@HELP@"/>
+        <param name="@PARAMNAME@" type="data" format="@FASTQ_INTYPES@" label="@LABEL@ reads" help="@HELP@"/>
     </xml>
     <xml name="sanger">
-        <param argument="--sanger" type="data" format="fastq,fastq.gz" multiple="true" optional="true" label="Sanger reads"/>
+        <param argument="--sanger" type="data" format="@FASTQ_INTYPES@" multiple="true" optional="true" label="Sanger reads"/>
     </xml>
     <xml name="contigs">
-        <param argument="--trusted-contigs" type="data" format="fasta,fasta.gz" multiple="true" optional="true" label="Trusted contigs" help="Reliable contigs of the same genome, which are likely to have no misassemblies and small rate of other errors (e.g. mismatches and indels). This option is not intended for contigs of the related species."/>
-        <param argument="--untrusted-contigs" type="data" format="fasta,fasta.gz" multiple="true" optional="true" label="Untrusted contigs" help="Contigs of the same genome, quality of which is average or unknown. Contigs of poor quality can be used but may introduce errors in the assembly. This option is also not intended for contigs of the related species."/>
+        <param argument="--trusted-contigs" type="data" format="@FASTA_INTYPES@" multiple="true" optional="true" label="Trusted contigs" help="Reliable contigs of the same genome, which are likely to have no misassemblies and small rate of other errors (e.g. mismatches and indels). This option is not intended for contigs of the related species."/>
+        <param argument="--untrusted-contigs" type="data" format="@FASTA_INTYPES@" multiple="true" optional="true" label="Untrusted contigs" help="Contigs of the same genome, quality of which is average or unknown. Contigs of poor quality can be used but may introduce errors in the assembly. This option is also not intended for contigs of the related species."/>
     </xml>
     <xml name="assembly_graph">
         <param argument="--assembly-graph" type="data" format="gfa1" multiple="true" optional="true" label="Assembly graphs" help=" The primary purpose of this option to run these pipelines on already constructed and simplified assembly graph this way skipping a large part of SPAdes pipeline."/>
--- a/spades.xml	Mon Mar 03 11:06:57 2025 +0000
+++ b/spades.xml	Wed Mar 12 21:46:56 2025 +0000
@@ -47,18 +47,17 @@
 
     ## postprocessing
     @STATS@
-    @CORRECTED@
     ]]></command>
     <inputs>
         <expand macro="operation_mode" help="To run read error correction, reads should be in FASTQ format."/>
-        <expand macro="input_files_all" format="fastq,fastq.gz,fastqsanger.gz,fasta,fasta.gz" label="FASTA/FASTQ file(s)"/>
-        <expand macro="input_additional_files_all" format="fastq,fastq.gz,fastqsanger.gz,fasta,fasta.gz" label="FASTA/FASTQ file(s)"/>
+        <expand macro="input_files_all" format="@INTYPES@" label="FASTA/FASTQ file(s)"/>
+        <expand macro="input_additional_files_all" format="@INTYPES@" label="FASTA/FASTQ file(s)"/>
         <section name="arf" title="Additional read files">
             <expand macro="nanopore_pacbio"/>
             <expand macro="sanger"/>
             <expand macro="contigs"/>
         </section>
-        <expand macro="pipeline_options">
+        <expand macro="pipeline_options" additional_help="&quot;Isolate&quot; is not compatible with &quot;Careful&quot; and Operation mode &quot;Only error correction&quot;">
             <option value="--sc">Single cell mode: required for MDA (single-cell) data (--sc)</option>
             <option value="--isolate">Isolate: highly recommended for high-coverage isolate and multi-cell data (--isolate)</option>
             <option value="--careful">Careful: ties to reduce the number of mismatches and short indels. Only recommended for small genomes (--careful)</option>
@@ -106,8 +105,10 @@
             </output>
             <output name="out_ags">
                 <assert_contents>
-                    <has_n_lines n="2"/>
+                    <has_n_lines n="3"/>
+                    <has_text_matching expression="H.+"/>
                     <has_text_matching expression="S.+"/>
+                    <has_text_matching expression="P.+"/>
                 </assert_contents>
             </output>
             <output name="out_cn">
@@ -126,9 +127,17 @@
         <!-- #2 single, separate, fastq, custom parameters  -->
         <test expect_num_outputs="9">
             <conditional name="singlePaired">
-                <param name="sPaired" value="paired"/>
-                <param name="input1" value="ecoli_1K_1.fastq.gz"/>
-                <param name="input2" value="ecoli_1K_2.fastq.gz"/>
+                <param name="sPaired" value="paired_collection"/>
+                <param name="input">
+                    <collection type="list:paired">
+                        <element name="ecoli_1K">
+                            <collection type="paired">
+                                <element name="forward" value="ecoli_1K_1.fastq.gz" ftype="fastqsanger.gz"/>
+                                <element name="reverse" value="ecoli_1K_2.fastq.gz" ftype="fastqsanger.gz"/>
+                            </collection>
+                        </element>
+                    </collection>
+                </param>
             </conditional>
             <param name="mode_sel" value="--isolate,--disable-rr,--iontorrent"/>
             <conditional name="cov_cond">
@@ -148,7 +157,8 @@
             </output>
             <output name="out_ags">
                 <assert_contents>
-                    <has_n_lines n="1"/>
+                    <has_n_lines n="2"/>
+                    <has_text_matching expression="H.+"/>
                     <has_text_matching expression="S.+"/>
                 </assert_contents>
             </output>
@@ -195,9 +205,17 @@
         <test expect_num_outputs="4">
             <param name="operation_mode" value="--only-assembler"/>
             <conditional name="singlePaired">
-                <param name="sPaired" value="paired"/>
-                <param name="input1" value="ecoli_1K_1.fastq.gz"/>
-                <param name="input2" value="ecoli_1K_2.fastq.gz"/>
+                <param name="sPaired" value="paired_collection"/>
+                <param name="input">
+                    <collection type="list:paired">
+                        <element name="ecoli_1K">
+                            <collection type="paired">
+                                <element name="forward" value="ecoli_1K_1.fastq.gz" ftype="fastqsanger.gz"/>
+                                <element name="reverse" value="ecoli_1K_2.fastq.gz" ftype="fastqsanger.gz"/>
+                            </collection>
+                        </element>
+                    </collection>
+                </param>
             </conditional>
             <output name="out_ag">
                 <assert_contents>
@@ -207,8 +225,10 @@
             </output>
             <output name="out_ags">
                 <assert_contents>
-                    <has_n_lines n="2"/>
+                    <has_n_lines n="3"/>
+                    <has_text_matching expression="H.+"/>
                     <has_text_matching expression="S.+"/>
+                    <has_text_matching expression="P.+"/>
                 </assert_contents>
             </output>
             <output name="out_cn">
@@ -233,9 +253,17 @@
             <conditional name="additional_reads">
                 <param name="selector" value="true"/>
                 <conditional name="singlePaired">
-                    <param name="sPaired" value="paired"/>
-                    <param name="input1" value="ecoli_1K_1.fastq.gz"/>
-                    <param name="input2" value="ecoli_1K_2.fastq.gz"/>
+                    <param name="sPaired" value="paired_collection"/>
+                    <param name="input">
+                        <collection type="list:paired">
+                            <element name="ecoli_1K">
+                                <collection type="paired">
+                                    <element name="forward" value="ecoli_1K_1.fastq.gz" ftype="fastqsanger.gz"/>
+                                    <element name="reverse" value="ecoli_1K_2.fastq.gz" ftype="fastqsanger.gz"/>
+                                </collection>
+                            </element>
+                        </collection>
+                    </param>
                 </conditional>
             </conditional>
             <param name="mode_sel" value="--careful"/>
@@ -247,8 +275,10 @@
             </output>
             <output name="out_ags">
                 <assert_contents>
-                    <has_n_lines n="2"/>
+                    <has_n_lines n="3"/>
+                    <has_text_matching expression="H.+"/>
                     <has_text_matching expression="S.+"/>
+                    <has_text_matching expression="P.+"/>
                 </assert_contents>
             </output>
             <output name="out_cn">
@@ -274,9 +304,17 @@
             <conditional name="additional_reads">
                 <param name="selector" value="true"/>
                 <conditional name="singlePaired">
-                    <param name="sPaired" value="paired"/>
-                    <param name="input1" value="ecoli_1K_1.fastq.gz"/>
-                    <param name="input2" value="ecoli_1K_2.fastq.gz"/>
+                    <param name="sPaired" value="paired_collection"/>
+                    <param name="input">
+                        <collection type="list:paired">
+                            <element name="ecoli_1K">
+                                <collection type="paired">
+                                    <element name="forward" value="ecoli_1K_1.fastq.gz" ftype="fastqsanger.gz"/>
+                                    <element name="reverse" value="ecoli_1K_2.fastq.gz" ftype="fastqsanger.gz"/>
+                                </collection>
+                            </element>
+                        </collection>
+                    </param>
                 </conditional>
             </conditional>
             <param name="mode_sel" value="--careful"/>
@@ -288,8 +326,10 @@
             </output>
             <output name="out_ags">
                 <assert_contents>
-                    <has_n_lines n="2"/>
+                    <has_n_lines n="3"/>
+                    <has_text_matching expression="H.+"/>
                     <has_text_matching expression="S.+"/>
+                    <has_text_matching expression="P.+"/>
                 </assert_contents>
             </output>
             <output name="out_cn">
@@ -315,17 +355,17 @@
             <param name="mode_sel" value="--careful"/>
             <param name="optional_output" value="cr,l"/>
             <output_collection name="out_cr" type="list" count="3">
-                <element name="ecoli_1K.fastq.gz_1.00.0_0">
+                <element name="ecoli_1K.fastq.gz_100.0_0">
                     <assert_contents>
-                        <has_size value="130317" delta="5000"/>
+                        <has_size value="130317" delta="7000"/>
                     </assert_contents>
                 </element>
-                <element name="ecoli_1K.fastq.gz_2.00.0_0">
+                <element name="ecoli_1K.fastq.gz_200.0_0">
                     <assert_contents>
-                        <has_size value="130317" delta="5000"/>
+                        <has_size value="130317" delta="7000"/>
                     </assert_contents>
                 </element>
-                <element name="ecoli_1K.fastq.gz__unpaired.00.0_0">
+                <element name="ecoli_1K.fastq.gz__unpaired00.0_0">
                     <assert_contents>
                         <has_size value="20" delta="5"/>
                     </assert_contents>
@@ -347,17 +387,17 @@
             <param name="mode_sel" value="--careful,--sc"/>
             <param name="optional_output" value="cr,l"/>
             <output_collection name="out_cr" type="list" count="3">
-                <element name="ecoli_1K.fastq.gz_1.00.0_0">
+                <element name="ecoli_1K.fastq.gz_100.0_0">
                     <assert_contents>
-                        <has_size value="130317" delta="5000"/>
+                        <has_size value="130317" delta="7000"/>
                     </assert_contents>
                 </element>
-                <element name="ecoli_1K.fastq.gz_2.00.0_0">
+                <element name="ecoli_1K.fastq.gz_200.0_0">
                     <assert_contents>
-                        <has_size value="130317" delta="5000"/>
+                        <has_size value="130317" delta="7000"/>
                     </assert_contents>
                 </element>
-                <element name="ecoli_1K.fastq.gz__unpaired.00.0_0">
+                <element name="ecoli_1K.fastq.gz__unpaired00.0_0">
                     <assert_contents>
                         <has_size value="20" delta="5"/>
                     </assert_contents>
@@ -380,13 +420,15 @@
             <output name="out_ag">
                 <assert_contents>
                     <has_n_lines n="36"/>
-                    <has_text_matching expression=">EDGE_7_length_1000_cov_140.639153"/>
+                    <has_text_matching expression=">EDGE_[0-9]+_length_[0-9]+_cov_[0-9]+\.[0-9]+"/>
                 </assert_contents>
             </output>
             <output name="out_ags">
                 <assert_contents>
-                    <has_n_lines n="2"/>
+                    <has_n_lines n="3"/>
+                    <has_text_matching expression="H.+"/>
                     <has_text_matching expression="S.+"/>
+                    <has_text_matching expression="P.+"/>
                 </assert_contents>
             </output>
             <output name="out_cn">
@@ -411,17 +453,17 @@
             </conditional>
             <param name="optional_output" value="cr,l"/>
             <output_collection name="out_cr" type="list" count="3">
-                <element name="ecoli_1K.fastq.gz_1.00.0_0">
+                <element name="ecoli_1K.fastq.gz_100.0_0">
                     <assert_contents>
-                        <has_size value="130317" delta="5000"/>
+                        <has_size value="130317" delta="7000"/>
                     </assert_contents>
                 </element>
-                <element name="ecoli_1K.fastq.gz_2.00.0_0">
+                <element name="ecoli_1K.fastq.gz_200.0_0">
                     <assert_contents>
-                        <has_size value="130317" delta="5000"/>
+                        <has_size value="130317" delta="7000"/>
                     </assert_contents>
                 </element>
-                <element name="ecoli_1K.fastq.gz__unpaired.00.0_0">
+                <element name="ecoli_1K.fastq.gz__unpaired00.0_0">
                     <assert_contents>
                         <has_size value="20" delta="5"/>
                     </assert_contents>
@@ -443,17 +485,17 @@
             <param name="mode_sel" value="--sc"/>
             <param name="optional_output" value="cr,l"/>
             <output_collection name="out_cr" type="list" count="3">
-                <element name="ecoli_1K.fastq.gz_1.00.0_0">
+                <element name="ecoli_1K.fastq.gz_100.0_0">
                     <assert_contents>
-                        <has_size value="130317" delta="5000"/>
+                        <has_size value="130317" delta="7000"/>
                     </assert_contents>
                 </element>
-                <element name="ecoli_1K.fastq.gz_2.00.0_0">
+                <element name="ecoli_1K.fastq.gz_200.0_0">
                     <assert_contents>
-                        <has_size value="130317" delta="5000"/>
+                        <has_size value="130317" delta="7000"/>
                     </assert_contents>
                 </element>
-                <element name="ecoli_1K.fastq.gz__unpaired.00.0_0">
+                <element name="ecoli_1K.fastq.gz__unpaired00.0_0">
                     <assert_contents>
                         <has_size value="20" delta="5"/>
                     </assert_contents>
@@ -480,8 +522,10 @@
             </output>
             <output name="out_ags">
                 <assert_contents>
-                    <has_n_lines n="2"/>
+                    <has_n_lines n="3"/>
+                    <has_text_matching expression="H.+"/>
                     <has_text_matching expression="S.+"/>
+                    <has_text_matching expression="P.+"/>
                 </assert_contents>
             </output>
             <output name="out_cn">
@@ -500,9 +544,17 @@
         <!-- #12 -->
         <test expect_num_outputs="4">
             <conditional name="singlePaired">
-                <param name="sPaired" value="paired"/>
-                <param name="input1" value="ecoli_1K_1.fastq.gz"/>
-                <param name="input2" value="ecoli_1K_2.fastq.gz"/>
+                <param name="sPaired" value="paired_collection"/>
+                <param name="input">
+                    <collection type="list:paired">
+                        <element name="ecoli_1K">
+                            <collection type="paired">
+                                <element name="forward" value="ecoli_1K_1.fastq.gz" ftype="fastqsanger.gz"/>
+                                <element name="reverse" value="ecoli_1K_2.fastq.gz" ftype="fastqsanger.gz"/>
+                            </collection>
+                        </element>
+                    </collection>
+                </param>
             </conditional>
             <param name="mode_sel" value="--sc,--careful"/>
             <output name="out_ag">
@@ -513,8 +565,10 @@
             </output>
             <output name="out_ags">
                 <assert_contents>
-                    <has_n_lines n="2"/>
+                    <has_n_lines n="3"/>
+                    <has_text_matching expression="H.+"/>
                     <has_text_matching expression="S.+"/>
+                    <has_text_matching expression="P.+"/>
                 </assert_contents>
             </output>
             <output name="out_cn">
@@ -534,9 +588,17 @@
         <test expect_num_outputs="4">
             <param name="operation_mode" value="--only-assembler"/>
             <conditional name="singlePaired">
-                <param name="sPaired" value="paired"/>
-                <param name="input1" value="ecoli_1K_1.fastq.gz"/>
-                <param name="input2" value="ecoli_1K_2.fastq.gz"/>
+                <param name="sPaired" value="paired_collection"/>
+                <param name="input">
+                    <collection type="list:paired">
+                        <element name="ecoli_1K">
+                            <collection type="paired">
+                                <element name="forward" value="ecoli_1K_1.fastq.gz" ftype="fastqsanger.gz"/>
+                                <element name="reverse" value="ecoli_1K_2.fastq.gz" ftype="fastqsanger.gz"/>
+                            </collection>
+                        </element>
+                    </collection>
+                </param>
             </conditional>
             <param name="mode_sel" value="--sc,--careful"/>
             <output name="out_ag">
@@ -547,8 +609,10 @@
             </output>
             <output name="out_ags">
                 <assert_contents>
-                    <has_n_lines n="2"/>
+                    <has_n_lines n="3"/>
+                    <has_text_matching expression="H.+"/>
                     <has_text_matching expression="S.+"/>
+                    <has_text_matching expression="P.+"/>
                 </assert_contents>
             </output>
             <output name="out_cn">
@@ -590,8 +654,10 @@
             </output>
             <output name="out_ags">
                 <assert_contents>
-                    <has_n_lines n="2"/>
+                    <has_n_lines n="3"/>
+                    <has_text_matching expression="H.+"/>
                     <has_text_matching expression="S.+"/>
+                    <has_text_matching expression="P.+"/>
                 </assert_contents>
             </output>
             <output name="out_cn">
@@ -610,9 +676,17 @@
         <!-- #15 mate-pair reads orientation rf-->
         <test expect_num_outputs="4">
             <conditional name="singlePaired">
-                <param name="sPaired" value="paired"/>
-                <param name="input1" value="ecoli_1K_1.fastq.gz"/>
-                <param name="input2" value="ecoli_1K_2.fastq.gz"/>
+                <param name="sPaired" value="paired_collection"/>
+                <param name="input">
+                    <collection type="list:paired">
+                        <element name="ecoli_1K">
+                            <collection type="paired">
+                                <element name="forward" value="ecoli_1K_1.fastq.gz" ftype="fastqsanger.gz"/>
+                                <element name="reverse" value="ecoli_1K_2.fastq.gz" ftype="fastqsanger.gz"/>
+                            </collection>
+                        </element>
+                    </collection>
+                </param>
                 <param name="type_paired" value="hqmp"/>
                 <param name="orientation" value="rf"/>
             </conditional>
@@ -624,7 +698,9 @@
             </output>
             <output name="out_ags">
                 <assert_contents>
-                    <has_n_lines n="1"/>
+                    <has_n_lines n="2"/>
+                    <has_text_matching expression="H.+"/>
+                    <has_text_matching expression="S.+"/>
                 </assert_contents>
             </output>
             <output name="out_cn">
@@ -663,8 +739,10 @@
             </output>
             <output name="out_ags">
                 <assert_contents>
-                    <has_n_lines n="2"/>
+                    <has_n_lines n="3"/>
+                    <has_text_matching expression="H.+"/>
                     <has_text_matching expression="S.+"/>
+                    <has_text_matching expression="P.+"/>
                 </assert_contents>
             </output>
             <output name="out_cn">
Binary file test-data/ecoli_1K.fastq.gz has changed