changeset 2:64a1c751d99b draft

"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/novoplasty commit de6983a7051906335902c024710783551912d292"
author iuc
date Sun, 18 Jul 2021 10:34:40 +0000
parents 7c2f5268d01c
children 15200570e926
files novoplasty.xml
diffstat 1 files changed, 340 insertions(+), 294 deletions(-) [+]
line wrap: on
line diff
--- a/novoplasty.xml	Fri Oct 09 17:45:30 2020 +0000
+++ b/novoplasty.xml	Sun Jul 18 10:34:40 2021 +0000
@@ -3,7 +3,7 @@
     <description>de novo assembler for short circular genomes</description>
     <macros>
         <token name="@TOOL_VERSION@">4.2</token>
-        <token name="@VERSION_SUFFIX@">0</token>
+        <token name="@VERSION_SUFFIX@">1</token>
         <xml name="content" token_min="" token_max="">
             <param name="genome_range_min" type="text" value="@MIN@" label="Set lower limit for the expected genome size range" help="(Genome Range)"/>
             <param name="genome_range_max" type="text" value="@MAX@" label="Set upper limit for the expected genome size range" help="(Genome Range)"/>
@@ -34,42 +34,52 @@
 Project:
 -----------------------
 Project name          = result
-Type                  = ${type_cond.type_sel}
-Genome Range          = ${type_cond.genome_range_min}-${type_cond.genome_range_max}
-K-mer                 = ${kmer}
+Type                  = ${assembly_options.type_cond.type_sel}
+Genome Range          = ${assembly_options.type_cond.genome_range_min}-${assembly_options.type_cond.genome_range_max}
+K-mer                 = ${assembly_options.kmer}
 Max memory            = 
 Extended log          = 1
-Save assembled reads  = ${save_assembled_reads}
+Save assembled reads  = ${optional.save_assembled_reads}
 Seed Input            = ${seed_input}
-Extend seed directly  = ${extend_seed_directly}
-Reference sequence    = #if $reference then $reference else ''#
-Variance detection    = #if $platform_cond.platform_sel == 'illumina' and $platform_cond.mode_cond.mode_sel == 'variance' then 'yes' else ''#
-Heteroplasmy          = 
-MAF                   = #if $platform_cond.platform_sel == 'illumina' and $platform_cond.mode_cond.mode_sel == 'heteroplasmy' then $platform_cond.mode_cond.maf else ''#
-HP exclude list       = 
-Chloroplast sequence  = #if $type_cond.type_sel == 'mito_plant' and $type_cond.chloroplast_sequence then $type_cond.chloroplast_sequence else ''#
+Extend seed directly  = ${assembly_options.extend_seed_directly}
+Reference sequence    = #if $reference_cond.use_reference == 'true' and $reference_cond.reference then $reference_cond.reference else ''#
+Variance detection    = #if $reference_cond.use_reference == 'true' then $reference_cond.variance_detection else ''#
+Chloroplast sequence  = #if $assembly_options.type_cond.type_sel == 'mito_plant' and $assembly_options.type_cond.chloroplast_sequence then $assembly_options.type_cond.chloroplast_sequence else ''#
 
 Dataset 1:
 -----------------------
-Read Length           = ${read_length}
-Insert size           = ${insert_size}
-Platform              = ${$platform_cond.platform_sel}
-Single/Paired         = ${single_paired}
+Read Length           = ${read_options.read_length}
+Insert size           = ${read_options.insert_size}
+Platform              = ${read_options.platform}
+Single/Paired         = PE
 Combined reads        = #if $reads_cond.reads_sel == 'combined' then 'combined.'+$reads_cond.combined_reads.datatype.file_ext else ''#
 Forward reads         = #if $reads_cond.reads_sel == 'separate' then 'forward.'+$reads_cond.forward_reads.datatype.file_ext else ''#
 Reverse reads         = #if $reads_cond.reads_sel == 'separate' then 'reverse.'+$reads_cond.reverse_reads.datatype.file_ext else ''#
 
+Heteroplasmy:
+-----------------------
+MAF                   = #if $reference_cond.use_reference == 'true' and $reference_cond.heteroplasmy_cond.detect_heteroplasmy == 'true' then $reference_cond.heteroplasmy_cond.maf else ''#
+HP exclude list       = ## option not available
+PCR-free              = #if $reference_cond.use_reference == 'true' and $reference_cond.heteroplasmy_cond.detect_heteroplasmy == 'true' then $reference_cond.heteroplasmy_cond.pcr_free else ''#
+
 Optional:
 -----------------------
-Insert size auto      = ${insert_size_auto}
-Use Quality Scores    = ${use_quality_scores}
+Insert size auto      = ${optional.insert_size_auto}
+Insert Range          = ${optional.insert_range}
+Insert Range strict   = ${optional.insert_range_strict}
+Use Quality Scores    = ${optional.use_quality_scores}
         ]]></configfile>
     </configfiles>
     <inputs>
+        <!-- Currently only PE reads is supported
+        <param name="single_paired" type="select" label="Select read type" help="(Single/Paired)">
+            <option value="PE" selected="true">Paired</option>
+            <option value="SE">Single</option>
+        </param>-->
         <conditional name="reads_cond">
-            <param name="reads_sel" type="select" label="Select read file type" help="(Combined reads/Forward reads/Reverse reads)">
+            <param name="reads_sel" type="select" label="Select read file type" help="Currently only paired-end reads are supported">
                 <option value="combined">Combined reads</option>
-                <option value="separate">Separate reads</option>
+                <option value="separate" selected="true">Separate reads</option>
             </param>
             <when value="combined">
                 <param name="combined_reads" type="data" format="fasta,fasta.gz" label="Select file with combined reads" help="(Combined reads)"/>
@@ -81,186 +91,147 @@
         </conditional>
         <!-- seed_input doesn't support fasta.gz, throws error INVALID SEED, PLEASE TRY AGAIN WITH A NEW ONE -->
         <param name="seed_input" type="data" format="fasta" label="Select file with seed sequence" help="(Seed Input)"/>
-        <param name="reference" type="data" format="fasta,fasta.gz" optional="true" label="Select reference file" help="(Reference sequence)"/>
-        <conditional name="platform_cond">
-            <param name="platform_sel" type="select" label="Select platform" help="(Platform)">
-                <option value="illumina" selected="true">Illumina</option>
-                <option value="ion">ION</option>
+        <conditional name="reference_cond">
+            <param name="use_reference" type="select" label="Use reference genome" help="If a reference is available, you can select the fasta file.">
+                <option value="true">Yes</option>
+                <option value="false" selected="true">No</option>
             </param>
-            <when value="illumina">
-                <conditional name="mode_cond">
-                    <param name="mode_sel" type="select" label="Select mode" help="(Variance detection, Heteroplasmy)">
-                        <option value="none" selected="true">None</option>
-                        <option value="variance">Variance detection</option>
-                        <option value="heteroplasmy">Heteroplasmy</option>
+            <when value="true">
+                <param name="reference" type="data" format="fasta,fasta.gz" optional="true" label="Select reference file" help="The assembly will still be de novo, but references of the same genus can be used as a guide to resolve duplicated regions in the plant mitochondria or the inverted repeat in the chloroplast. References from different genus haven't beeen tested yet."/>
+                <conditional name="heteroplasmy_cond">
+                    <param name="detect_heteroplasmy" type="select" label="Detect heteroplasmy" help="If you want to detect heteroplasmy, first assemble the genome without this option. Then give the resulting sequence as a reference and as a seed input.">
+                        <option value="true">Yes</option>
+                        <option value="false" selected="true">No</option>
                     </param>
-                    <when value="none"/>
-                    <when value="variance"/>
-                    <when value="heteroplasmy">
-                        <param name="maf" type="float" value="0.007" min="0.007" max="0.49" label="Set minimum minor allele frequency" help="If you want to detect heteroplasmy, first assemble the genome without this option. Then give the resulting sequence as a reference and as a seed input. (Heteroplasmy)"/>
+                    <when value="true">
+                        <param name="maf" type="float" value="0.007" min="0.007" max="0.49" label="Set minimum minor allele frequency" help="If you want to detect heteroplasmy, first assemble the genome without this option. Then give the resulting sequence as a reference and as a seed input."/>
+                        <param name="pcr_free" type="boolean" truevalue="yes" falsevalue="no" checked="false" label="PCR-free" help="If you have a PCR-free library select yes" />
                     </when>
+                    <when value="false"/>
                 </conditional>
-            </when>
-            <when value="ion"/>
-        </conditional>
-        <conditional name="type_cond">
-            <param name="type_sel" type="select" label="Select assembly type" help="(Type)">
-                <option value="chloro" selected="true">Chloroplast assembly (chloro)</option>
-                <option value="mito">Mitochondrial assembly (mito)</option>
-                <option value="mito_plant">Mitochondrial assembly in plants (mito_plant)</option>
-            </param>
-            <when value="chloro">
-                <expand macro="content" min="120000" max="200000"/>
-            </when>
-            <when value="mito">
-                <expand macro="content" min="12000" max="20000"/>
-            </when>
-            <when value="mito_plant">
-                <expand macro="content" min="12000" max="20000"/>
-                <param name="chloroplast_sequence" type="data" format="fasta,fasta.gz" optional="true" label="Select chloroplast sequence" help="Chloroplast needs to be assembled before mitochondria. (Chloroplast sequence)"/>
+                <param name="variance_detection" type="boolean" truevalue="yes" falsevalue="no" label="Variance detection" help="It will create a vcf file with all the variances compared to the given reference genome." />
             </when>
+            <when value="false"/>
         </conditional>
-        <param name="read_length" type="integer" value="151" label="Set read length" help="(Read Length)"/>
-        <param name="insert_size" type="integer" value="300" label="Set total insert size of your paired end reads" help="It doesn't have to be accurate but should be close enough. (Insert size)"/>
-        <param name="single_paired" type="select" label="Select read type" help="(Single/Paired)">
-            <option value="PE" selected="true">Paired</option>
-            <option value="SE">Single</option>
-        </param>
-        <param name="extend_seed_directly" type="boolean" truevalue="yes" falsevalue="no" checked="true" label="Extend seeds instead of finding matching reads" help="Only use this when your seed originates from the same sample and there are no possible mismatches. (Extend seed directly)"/>
-        <param name="kmer" type="integer" value="39" min="1" label="Set length of overlap between matching reads" help="If reads are shorter then 90 bp or you have low coverage data, this value should be decreased down to 23. For reads longer then 101 bp, this value can be increased, but this is not necessary."/>
-        <!-- Assembled reads are saved anyway. If this option is selected, the parameter is set to "2", otherwise "yes" -->
-        <param name="save_assembled_reads" type="boolean" truevalue="2" falsevalue="yes" label="Retain original IDs when saving assemled reads?"/>
-        <param name="insert_size_auto" type="boolean" truevalue="yes" falsevalue="no" checked="true" label="Finetune your insert size automatically?" help="(Insert size auto)"/>
-        <param name="use_quality_scores" type="boolean" truevalue="yes" falsevalue="no" label="Take quality scores into account?" help="Only use this when reads have low quality, like with the 300 bp reads of Illumina. (Use Quality Scores)"/>
-        <param name="out" type="select" multiple="true" optional="false" label="Select output file(s)" help="Only shown in history if selected here and generated by the specific NOVOplasty run.">
-            <!-- Assembly -->
-            <option value="ar" selected="true">Assembled reads</option>
-            <option value="c" selected="true">Contigs</option>
-            <option value="ca" selected="true">Circularized assembly</option>
-            <option value="cc" selected="true">Contig combinations</option>
-            <option value="ct" selected="true">Contigs Tmp</option>
-            <option value="mc" selected="true">Merged contigs</option>
-            <option value="ua" selected="true">Uncircularized assemblies</option>
-            <!-- Variance -->
-            <option value="v" selected="true">Variance</option>
-            <!-- Heteroplasmy -->
-            <option value="h" selected="true">Heteroplasmy</option>
-            <option value="ha" selected="true">Heteroplasmy assemblies</option>
-            <option value="lth" selected="true">Linkage table heteroplasmy</option>
-            <option value="pn" selected="true">Possible NUMTs</option>
-            <option value="pna" selected="true">Possible NUMTs assemblies</option>
-            <option value="ltn" selected="true">Linkage table NUMTs</option>
-            <option value="cm" selected="true">Circos mutations</option>
-            <option value="cl" selected="true">Circos links</option>
-            <!-- Others -->
+        <section name="read_options" title="Read options" expanded="true">
+            <param name="platform" type="select" label="Platform">
+                <option value="illumina" selected="true">Illumina</option>
+                <option value="ion">Ion Torrent</option>
+            </param>
+            <param name="read_length" type="integer" value="151" label="Set read length" help="(Read Length)"/>
+            <param name="insert_size" type="integer" value="300" label="Set total insert size of your paired end reads" help="It doesn't have to be accurate but should be close enough. (Insert size)"/>
+        </section>
+       <section name="assembly_options" title="Assembly options" expanded="true">
+            <conditional name="type_cond">
+                <param name="type_sel" type="select" label="Assembly type" help="Chloroplast assembly (chloro), mitochondrial assembly (mito) and mitochondrial assembly in plants (mito_plant).">
+                    <option value="chloro" selected="true">Chloroplast assembly</option>
+                    <option value="mito">Mitochondrial assembly</option>
+                    <option value="mito_plant">Mitochondrial assembly in plants</option>
+                </param>
+                <when value="chloro">
+                    <expand macro="content" min="120000" max="200000"/>
+                </when>
+                <when value="mito">
+                    <expand macro="content" min="12000" max="20000"/>
+                </when>
+                <when value="mito_plant">
+                    <expand macro="content" min="12000" max="20000"/>
+                    <param name="chloroplast_sequence" type="data" format="fasta,fasta.gz" optional="true" label="Select chloroplast sequence" help="Chloroplast needs to be assembled before mitochondria. (Chloroplast sequence)"/>
+                </when>
+            </conditional>
+            <param name="extend_seed_directly" type="boolean" truevalue="yes" falsevalue="no" checked="false" label="Extend seeds instead of finding matching reads" help="Only use this when your seed originates from the same sample and there are no possible mismatches. (Extend seed directly)"/>
+            <param name="kmer" type="integer" value="39" min="1" label="Set length of overlap between matching reads" help="If reads are shorter then 90 bp or you have low coverage data, this value should be decreased down to 23. For reads longer then 101 bp, this value can be increased, but this is not necessary. (kmer)"/>
+        </section>
+        <section name="optional" title="Optional options">
+            <param name="insert_size_auto" type="boolean" truevalue="yes" falsevalue="no" checked="false" label="Finetune your insert size automatically?" help="(Insert size auto)"/>
+            <param name="insert_range" type="float" min="0" value="1.6" label="Insert range" help="This variation on the insert size, could lower it when the coverage is very high or raise it when the coverage is too low [use default in the first run]." />
+            <param name="insert_range_strict" type="float" min="0" value="1.2" label="Insert range strict" help="Strict variation to resolve repetitive regions [use default in the first run]." />    
+            <param name="use_quality_scores" type="boolean" truevalue="yes" falsevalue="no" label="Take quality scores into account?" help="Only use this when reads have low quality, like with the 300 bp reads of Illumina. (Use Quality Scores)"/>
+            <param name="save_assembled_reads" type="boolean" truevalue="yes" falsevalue="no" checked="false" label="Retain original IDs when saving assemled reads?" help="All the reads used for the assembly will be stored in seperate files. (Save assembled reads)"/>
+        </section>
+        <param name="out" type="select" multiple="true" optional="true" display="checkboxes" label="Additional output files">
             <option value="config">Config file</option>
-            <option value="el">Extended log</option>
-            <option value="l">Log</option>
+            <option value="extended_log">Extended log</option>
+            <option value="log">Log</option>
+            <option value="cont_tmp">Contigs temp</option>
         </param>
     </inputs>
     <outputs>
         <!-- Assembly -->
-        <data name="out_c" format="fasta" from_work_dir="Contigs_1_result.fasta" label="${tool.name} on ${on_string}: Contigs">
-            <filter>'c' in out</filter>
-        </data>
+        <data name="out_c" format="fasta" from_work_dir="Contigs_1_result.fasta" label="${tool.name} on ${on_string}: Contigs"/>
         <data name="out_ct" format="txt" from_work_dir="contigs_tmp_result.txt" label="${tool.name} on ${on_string}: Contigs Tmp">
-            <filter>'ct' in out</filter>
+            <filter>out and 'cont_tmp' in out</filter>
         </data>
-        <data name="out_mc" format="txt" from_work_dir="Merged_contigs_result.txt" label="${tool.name} on ${on_string}: Merged Contigs">
-            <filter>'mc' in out</filter>
-        </data>
-        <data name="out_cc" format="txt">
-            <discover_datasets pattern="Option\_(?P&lt;designation&gt;.+)\_result\.txt" format="tabular" directory="" visible="true"/>
-            <filter>'cc' in out</filter>
-        </data>
+        <data name="out_mc" format="txt" from_work_dir="Merged_contigs_result.txt" label="${tool.name} on ${on_string}: Merged Contigs"/>
+        <data name="out_cc_o1" format="fasta" from_work_dir="Option_1_result.fasta" label="${tool.name} on ${on_string}: Assembly option 1"/>
+        <data name="out_cc_o2" format="fasta" from_work_dir="Option_2_result.fasta" label="${tool.name} on ${on_string}: Assembly option 2"/>
         <data name="out_ar1" format="fasta" from_work_dir="Assembled_reads_result_R1.fasta" label="${tool.name} on ${on_string}: Assembled reads R1">
-            <filter>'ar' in out</filter>
+            <filter>optional['save_assembled_reads'] == True</filter>
         </data>
         <data name="out_ar2" format="fasta" from_work_dir="Assembled_reads_result_R2.fasta" label="${tool.name} on ${on_string}: Assembled reads R2">
-            <filter>'ar' in out</filter>
+            <filter>optional['save_assembled_reads'] == True</filter>
         </data>
-        <data name="out_ua" format="fasta" from_work_dir="Uncircularized_assemblies_1_result.fasta" label="${tool.name} on ${on_string}: Uncircularized assemblies">
-            <filter>'ua' in out</filter>
-        </data>
-        <data name="out_ca" format="fasta" from_work_dir="Circularized_assembly_1_result.fasta" label="${tool.name} on ${on_string}: Circularized assembly">
-            <filter>'ca' in out</filter>
-        </data>
+        <data name="out_ua" format="fasta" from_work_dir="Uncircularized_assemblies_1_result.fasta" label="${tool.name} on ${on_string}: Uncircularized assemblies"/>
+        <data name="out_ca" format="fasta" from_work_dir="Circularized_assembly_1_result.fasta" label="${tool.name} on ${on_string}: Circularized assembly"/>
         <!-- Variance -->
         <data name="out_v" format="vcf" from_work_dir="Variance_result.vcf" label="${tool.name} on ${on_string}: Variance">
-            <filter>'illumina' == platform_cond['platform_sel'] and 'variance' == platform_cond['mode_cond']['mode_sel'] and 'v' in out</filter>
+            <filter>reference_cond['use_reference'] == 'true' and reference_cond['variance_detection'] == True</filter>
         </data>
         <!-- Heteroplasmy -->
         <data name="out_h" format="vcf" from_work_dir="Heteroplasmy_result.vcf" label="${tool.name} on ${on_string}: Heteroplasmy">
-            <filter>'heteroplasmy' == platform_cond['mode_cond']['mode_sel'] and 'h' in out</filter>
+            <filter>reference_cond['use_reference'] == 'true' and reference_cond['heteroplasmy_cond']['detect_heteroplasmy'] == 'true'</filter>
         </data>
         <data name="out_ha" format="fasta" from_work_dir="Heteroplasmy_assemblies_result.fasta" label="${tool.name} on ${on_string}: Heteroplasmy assemblies">
-            <filter>'heteroplasmy' == platform_cond['mode_cond']['mode_sel'] and 'ha' in out</filter>
+            <filter>reference_cond['use_reference'] == 'true' and reference_cond['heteroplasmy_cond']['detect_heteroplasmy'] == 'true'</filter>
         </data>
         <data name="out_lth" format="tabular" from_work_dir="Linkage_table_heteroplasmy_result.txt" label="${tool.name} on ${on_string}: Linkage table heteroplasmy">
-            <filter>'heteroplasmy' == platform_cond['mode_cond']['mode_sel'] and 'lth' in out</filter>
+            <filter>reference_cond['use_reference'] == 'true' and reference_cond['heteroplasmy_cond']['detect_heteroplasmy'] == 'true'</filter>
         </data>
         <data name="out_pn" format="vcf" from_work_dir="Possible_NUMTs_result.vcf" label="${tool.name} on ${on_string}: Possible NUMTs">
-            <filter>'heteroplasmy' == platform_cond['mode_cond']['mode_sel'] and 'pn' in out</filter>
+            <filter>reference_cond['use_reference'] == 'true' and reference_cond['heteroplasmy_cond']['detect_heteroplasmy'] == 'true'</filter>
         </data>
         <data name="out_pna" format="fasta" from_work_dir="Possible_NUMTs_assemblies_result.fasta" label="${tool.name} on ${on_string}: Possible_NUMTs_assemblies_project.fasta">
-            <filter>'heteroplasmy' == platform_cond['mode_cond']['mode_sel'] and 'pna' in out</filter>
+            <filter>reference_cond['use_reference'] == 'true' and reference_cond['heteroplasmy_cond']['detect_heteroplasmy'] == 'true'</filter>
         </data>
         <data name="out_ltn" format="tabular" from_work_dir="Linkage_table_NUMTs_result.txt" label="${tool.name} on ${on_string}: Linkage table NUMTs">
-            <filter>'heteroplasmy' == platform_cond['mode_cond']['mode_sel'] and 'ltn' in out</filter>
+            <filter>reference_cond['use_reference'] == 'true' and reference_cond['heteroplasmy_cond']['detect_heteroplasmy'] == 'true'</filter>
         </data>
         <data name="out_cm" format="txt" from_work_dir="Circos_mutations_result.txt" label="${tool.name} on ${on_string}: Circos mutations">
-            <filter>'heteroplasmy' == platform_cond['mode_cond']['mode_sel'] and 'cm' in out</filter>
+            <filter>reference_cond['use_reference'] == 'true' and reference_cond['heteroplasmy_cond']['detect_heteroplasmy'] == 'true'</filter>
         </data>
         <data name="out_cl" format="txt" from_work_dir="Circos_links_result.txt" label="${tool.name} on ${on_string}: Circos links">
-            <filter>'heteroplasmy' == platform_cond['mode_cond']['mode_sel'] and 'cl' in out</filter>
+            <filter>reference_cond['use_reference'] == 'true' and reference_cond['heteroplasmy_cond']['detect_heteroplasmy'] == 'true'</filter>
         </data>
         <!-- Others -->
         <data name="out_l" format="txt" from_work_dir="log_result.txt" label="${tool.name} on ${on_string}: Log">
-            <filter>'l' in out</filter>
+            <filter>out and 'log' in out</filter>
         </data>
         <data name="out_el" format="txt" from_work_dir="log_extended_result.txt" label="${tool.name} on ${on_string}: Extended log">
-            <filter>'el' in out</filter>
+            <filter>out and 'extended_log' in out</filter>
         </data>
         <data name="out_config" format="txt" from_work_dir="config.txt" label="${tool.name} on ${on_string}: Config file">
-            <filter>'config' in out</filter>
+            <filter>out and 'config' in out</filter>
         </data>
     </outputs>
     <tests>
         <!-- #1 mito, default, separate, compressed inputs -->
-        <test expect_num_outputs="8">
+        <test expect_num_outputs="6">
             <conditional name="reads_cond">
                 <param name="reads_sel" value="separate"/>
-                    <param name="forward_reads" value="forward.fasta.gz"/>
-                    <param name="reverse_reads" value="reverse.fasta.gz"/>
+                <param name="forward_reads" value="forward.fasta.gz"/>
+                <param name="reverse_reads" value="reverse.fasta.gz"/>
             </conditional>
-            <conditional name="type_cond">
-                <param name="type_sel" value="mito"/>
-            </conditional>
+            <section name="assembly_options">
+                <conditional name="type_cond">
+                    <param name="type_sel" value="mito"/>
+                </conditional>
+            </section>
             <!-- fasta.gz not supported -->
             <param name="seed_input" value="seed.fasta"/>
             <!-- Assembly -->
             <output name="out_c">
                 <assert_contents>
                     <has_n_lines n="110"/>
-                    <has_line line=">Contig01+seed"/>
-                </assert_contents>
-            </output>
-            <output name="out_ct">
-                <assert_contents>
-                    <has_n_lines n="2"/>
-                    <has_line line=">seed"/>
-                </assert_contents>
-            </output>
-            <output name="out_ar1">
-                <assert_contents>
-                    <has_n_lines n="10"/>
-                    <has_line line=">676/1"/>
-                </assert_contents>
-            </output>
-            <output name="out_ar2">
-                <assert_contents>
-                    <has_n_lines n="10"/>
-                    <has_line line=">676/2"/>
                 </assert_contents>
             </output>
             <output name="out_ua">
@@ -270,54 +241,42 @@
             </output>
         </test>
         <!-- #2 mito, combined, compressed inputs -->
-        <test expect_num_outputs="11">
+        <test expect_num_outputs="9">
             <conditional name="reads_cond">
                 <param name="reads_sel" value="combined"/>
                 <param name="combined_reads" value="combined.fasta.gz"/>
             </conditional>
             <param name="seed_input" value="seed.fasta"/>
             <param name="reference" value="reference.fasta.gz"/>
-            <conditional name="type_cond">
-                <param name="type_sel" value="mito"/>
-                <param name="genome_range_min" value="12001"/>
-                <param name="genome_range_max" value="20001"/>
-            </conditional>
-            <param name="read_length" value="150"/>
-            <param name="insert_size" value="301"/>
-            <param name="extend_seed_directly" value="no"/>
-            <param name="kmer" value="40"/>
-            <param name="save_assembled_reads" value="2"/>
-            <param name="insert_size_auto" value="yes"/>
-            <param name="use_quality_scores" value="yes"/>
-            <param name="out" value="c,ca,ua,mc,cc,ct,ar,l,el,config"/>
+            <section name="assembly_options">
+                <conditional name="type_cond">
+                    <param name="type_sel" value="mito"/>
+                    <param name="genome_range_min" value="12001"/>
+                    <param name="genome_range_max" value="20001"/>
+                </conditional>
+            </section>
+            <section name="read_options">
+                <param name="read_length" value="150"/>
+                <param name="insert_size" value="301"/>
+            </section>
+            <section name="assembly_options">
+                <param name="extend_seed_directly" value="no"/>
+                <param name="kmer" value="40"/>
+            </section>
+            <section name="optional">
+                <param name="insert_size_auto" value="yes"/>
+                <param name="use_quality_scores" value="yes"/>
+            </section>
+            <param name="out" value="log,extended_log,config"/>
             <!-- Assembly -->
             <output name="out_c">
                 <assert_contents>
-                    <has_n_lines n="0"/>
-                </assert_contents>
-            </output>
-            <output name="out_ct">
-                <assert_contents>
-                    <has_n_lines n="2"/>
-                    <has_line line=">4191"/>
-                </assert_contents>
-            </output>
-            <output name="out_ar1">
-                <assert_contents>
-                    <has_n_lines n="142"/>
-                    <has_line line=">38326//1"/>
-                </assert_contents>
-            </output>
-            <output name="out_ar2">
-                <assert_contents>
-                    <has_n_lines n="142"/>
-                    <has_line line=">38326//2"/>
+                    <has_n_lines n="14"/>
                 </assert_contents>
             </output>
             <output name="out_ua">
                 <assert_contents>
-                    <has_n_lines n="13"/>
-                    <has_text_matching expression=">Contig01.+"/>
+                    <has_n_lines n="0"/>
                 </assert_contents>
             </output>
             <!-- Others -->
@@ -333,64 +292,50 @@
             </output>
             <output name="out_config">
                 <assert_contents>
-                    <has_n_lines n="34"/>
+                    <has_n_lines n="39"/>
                     <has_line line="Project:"/>
                     <has_text_matching expression=".+"/>
                 </assert_contents>
             </output>
         </test>
         <!-- #3 mito, variance, decompressed inputs -->
-        <test expect_num_outputs="12">
+        <test expect_num_outputs="10">
             <conditional name="reads_cond">
                 <param name="reads_sel" value="combined"/>
                 <param name="combined_reads" value="combined.fasta"/>
             </conditional>
             <param name="seed_input" value="seed.fasta"/>
-            <param name="reference" value="reference.fasta"/>
-            <conditional name="platform_cond">
-                <param name="platform_sel" value="illumina"/>
-                <conditional name="mode_cond">
-                    <param name="mode_sel" value="variance"/>
+            <section name="read_options">
+                <param name="platform" value="illumina"/>
+            </section>
+            <section name="assembly_options">
+                <param name="extend_seed_directly" value="no"/>
+                <param name="kmer" value="40"/>
+                <conditional name="type_cond">
+                    <param name="type_sel" value="mito"/>
                 </conditional>
+            </section>
+            <conditional name="reference_cond">
+                <param name="use_reference" value="true"/>
+                <param name="reference" value="reference.fasta"/>
+                <param name="variance_detection" value="true"/>
             </conditional>
-            <conditional name="type_cond">
-                <param name="type_sel" value="mito"/>
-            </conditional>
-            <param name="out" value="c,ca,ua,mc,cc,ct,ar,v,l,el,config"/>
+            <param name="out" value="log,extended_log,config"/>
             <!-- Assembly -->
             <output name="out_c">
                 <assert_contents>
                     <has_n_lines n="0"/>
                 </assert_contents>
             </output>
-            <output name="out_ct">
-                <assert_contents>
-                    <has_n_lines n="2"/>
-                    <has_line line=">seed"/>
-                </assert_contents>
-            </output>
-            <output name="out_ar1">
-                <assert_contents>
-                    <has_n_lines n="10"/>
-                    <has_line line=">20/1"/>
-                </assert_contents>
-            </output>
-            <output name="out_ar2">
-                <assert_contents>
-                    <has_n_lines n="10"/>
-                    <has_line line=">20/2"/>
-                </assert_contents>
-            </output>
             <output name="out_ua">
                 <assert_contents>
-                    <has_n_lines n="110"/>
-                    <has_text_matching expression=">Contig01.+"/>
+                    <has_n_lines n="111"/>
                 </assert_contents>
             </output>
             <!-- Variance -->
             <output name="out_v">
                 <assert_contents>
-                    <has_n_lines n="6"/>
+                    <has_n_lines n="21"/>
                     <has_line line="##fileformat=VCFv4.0"/>
                     <has_text_matching expression="#CHROM&#009;POS&#009;ID&#009;REF&#009;ALT&#009;QUAL&#009;FILTER&#009;INFO"/>
                 </assert_contents>
@@ -408,50 +353,37 @@
             </output>
             <output name="out_config">
                 <assert_contents>
-                    <has_n_lines n="34"/>
+                    <has_n_lines n="39"/>
                     <has_line line="Project:"/>
                     <has_text_matching expression=".+"/>
                 </assert_contents>
             </output>
         </test>
         <!-- #4 mito, untested parameters, compressed inputs -->
-        <test expect_num_outputs="16">
+        <test expect_num_outputs="6">
             <conditional name="reads_cond">
                 <param name="reads_sel" value="separate"/>
                 <param name="forward_reads" value="forward.fasta.gz"/>
                 <param name="reverse_reads" value="reverse.fasta.gz"/>
             </conditional>
             <param name="seed_input" value="seed.fasta"/>
-            <conditional name="platform_cond">
-                <param name="platform_sel" value="ion"/>
-            </conditional>
-            <conditional name="type_cond">
-                <param name="type_sel" value="mito"/>
-            </conditional>
-            <param name="single_paired" value="SE"/>
+            <section name="read_options">
+                <param name="platform" value="ion"/>
+            </section>
+            <section name="assembly_options">
+                <conditional name="type_cond">
+                    <param name="type_sel" value="mito"/>
+                </conditional>
+            </section>
             <!-- Assembly -->
             <output name="out_c">
                 <assert_contents>
                     <has_n_lines n="110"/>
-                    <has_line line=">Contig01+seed"/>
                 </assert_contents>
             </output>
             <output name="out_ct">
                 <assert_contents>
-                    <has_n_lines n="2"/>
-                    <has_line line=">seed"/>
-                </assert_contents>
-            </output>
-            <output name="out_ar1">
-                <assert_contents>
-                    <has_n_lines n="10"/>
-                    <has_line line=">676/1"/>
-                </assert_contents>
-            </output>
-            <output name="out_ar2">
-                <assert_contents>
-                    <has_n_lines n="10"/>
-                    <has_line line=">676/2"/>
+                    <has_n_lines n="0"/>
                 </assert_contents>
             </output>
             <output name="out_ua">
@@ -461,23 +393,25 @@
             </output>
         </test>
         <!-- #5 mito, heteroplasmy -->
-        <test expect_num_outputs="16">
+        <test expect_num_outputs="14">
             <conditional name="reads_cond">
                 <param name="reads_sel" value="combined"/>
                 <param name="combined_reads" value="combined.fasta"/>
             </conditional>
             <param name="seed_input" value="seed.fasta"/>
-            <param name="reference" value="reference.fasta"/>
-            <conditional name="platform_cond">
-                <param name="platform_sel" value="illumina"/>
-                <conditional name="mode_cond">
-                    <param name="mode_sel" value="heteroplasmy"/>
+            <conditional name="reference_cond">
+                <param name="use_reference" value="true"/>
+                <param name="reference" value="reference.fasta"/>
+                <conditional name="heteroplasmy_cond">
+                    <param name="detect_heteroplasmy" value="true"/>
                     <param name="maf" value="0.008"/>
                 </conditional>
             </conditional>
-            <conditional name="type_cond">
-                <param name="type_sel" value="mito"/>
-            </conditional>
+            <section name="assembly_options">
+                <conditional name="type_cond">
+                    <param name="type_sel" value="mito"/>
+                </conditional>
+            </section>
             <!-- Assembly -->
             <output name="out_c">
                 <assert_contents>
@@ -489,18 +423,6 @@
                     <has_n_lines n="0"/>
                 </assert_contents>
             </output>
-            <output name="out_ar1">
-                <assert_contents>
-                    <has_n_lines n="2"/>
-                    <has_line line=">332/1"/>
-                </assert_contents>
-            </output>
-            <output name="out_ar2">
-                <assert_contents>
-                    <has_n_lines n="2"/>
-                    <has_line line=">332/2"/>
-                </assert_contents>
-            </output>
             <output name="out_ua">
                 <assert_contents>
                     <has_n_lines n="0"/>
@@ -550,38 +472,26 @@
             </output>
         </test>
         <!-- #6 chloro, default -->
-        <test expect_num_outputs="8">
+        <test expect_num_outputs="6">
             <conditional name="reads_cond">
                 <param name="reads_sel" value="combined"/>
                 <param name="combined_reads" value="combined.fasta"/>
             </conditional>
             <param name="seed_input" value="seed.fasta"/>
-            <conditional name="type_cond">
-                <param name="type_sel" value="chloro"/>
-            </conditional>
+            <section name="assembly_options">
+                <conditional name="type_cond">
+                    <param name="type_sel" value="chloro"/>
+                </conditional>
+            </section>
             <!-- Assembly -->
             <output name="out_c">
                 <assert_contents>
                     <has_n_lines n="110"/>
-                    <has_line line=">Contig01+seed"/>
                 </assert_contents>
             </output>
             <output name="out_ct">
                 <assert_contents>
-                    <has_n_lines n="2"/>
-                    <has_line line=">seed"/>
-                </assert_contents>
-            </output>
-            <output name="out_ar1">
-                <assert_contents>
-                    <has_n_lines n="10"/>
-                    <has_line line=">20/1"/>
-                </assert_contents>
-            </output>
-            <output name="out_ar2">
-                <assert_contents>
-                    <has_n_lines n="10"/>
-                    <has_line line=">20/2"/>
+                    <has_n_lines n="0"/>
                 </assert_contents>
             </output>
             <output name="out_ua">
@@ -591,17 +501,60 @@
             </output>
         </test>
         <!-- #7 mito_plant, default -->
-        <test expect_num_outputs="8">
+        <test expect_num_outputs="6">
             <conditional name="reads_cond">
                 <param name="reads_sel" value="combined"/>
                 <param name="combined_reads" value="combined.fasta"/>
             </conditional>
             <param name="seed_input" value="seed.fasta"/>
-            <param name="reference" value="reference.fasta"/>
-            <conditional name="type_cond">
-                <param name="type_sel" value="mito_plant"/>
-                <param name="chloroplast_sequence" value="chloroplast.fasta"/>
+            <conditional name="reference_cond">
+                <param name="use_reference" value="true"/>
+                <param name="reference" value="reference.fasta"/>
             </conditional>
+            <section name="assembly_options">
+                <conditional name="type_cond">
+                    <param name="type_sel" value="mito_plant"/>
+                    <param name="chloroplast_sequence" value="chloroplast.fasta"/>
+                </conditional>
+            </section>
+            <!-- Assembly -->
+            <output name="out_c">
+                <assert_contents>
+                    <has_n_lines n="0"/>
+                </assert_contents>
+            </output>
+            <output name="out_ct">
+                <assert_contents>
+                    <has_n_lines n="8"/>
+                </assert_contents>
+            </output>
+            <output name="out_ua">
+                <assert_contents>
+                    <has_n_lines n="112"/>
+                </assert_contents>
+            </output>
+        </test>
+        <!-- #8 mito, heteroplasmy pcr-free parameter -->
+        <test expect_num_outputs="14">
+            <conditional name="reads_cond">
+                <param name="reads_sel" value="combined"/>
+                <param name="combined_reads" value="combined.fasta"/>
+            </conditional>
+            <param name="seed_input" value="seed.fasta"/>
+            <conditional name="reference_cond">
+                <param name="use_reference" value="true"/>
+                <param name="reference" value="reference.fasta"/>
+                <conditional name="heteroplasmy_cond">
+                    <param name="detect_heteroplasmy" value="true"/>
+                    <param name="maf" value="0.008"/>
+                    <param name="pcr_free" value="true"/>
+                </conditional>
+            </conditional>
+            <section name="assembly_options">
+                <conditional name="type_cond">
+                    <param name="type_sel" value="mito"/>
+                </conditional>
+            </section>
             <!-- Assembly -->
             <output name="out_c">
                 <assert_contents>
@@ -610,27 +563,120 @@
             </output>
             <output name="out_ct">
                 <assert_contents>
-                    <has_n_lines n="2"/>
-                </assert_contents>
-            </output>
-            <output name="out_ar1">
-                <assert_contents>
-                    <has_n_lines n="10"/>
-                    <has_line line=">20/1"/>
-                </assert_contents>
-            </output>
-            <output name="out_ar2">
-                <assert_contents>
-                    <has_n_lines n="10"/>
-                    <has_line line=">20/2"/>
+                    <has_n_lines n="0"/>
                 </assert_contents>
             </output>
             <output name="out_ua">
                 <assert_contents>
-                    <has_text_matching expression=">Contig01.+"/>
+                    <has_n_lines n="0"/>
+                </assert_contents>
+            </output>
+            <!-- Heteroplasmy -->
+            <output name="out_h">
+                <assert_contents>
+                    <has_n_lines n="8"/>
+                    <has_text_matching expression="#CHROM&#009;POS&#009;ID&#009;REF&#009;ALT&#009;QUAL&#009;FILTER&#009;INFO"/>
+                </assert_contents>
+            </output>
+            <output name="out_ha">
+                <assert_contents>
+                    <has_n_lines n="0"/>
+                </assert_contents>
+            </output>
+            <output name="out_lth">
+                <assert_contents>
+                    <has_n_lines n="0"/>
+                </assert_contents>
+            </output>
+            <output name="out_pn">
+                <assert_contents>
+                    <has_n_lines n="0"/>
+                </assert_contents>
+            </output>
+            <output name="out_pna">
+                <assert_contents>
+                    <has_n_lines n="0"/>
+                </assert_contents>
+            </output>
+            <output name="out_ltn">
+                <assert_contents>
+                    <has_n_lines n="0"/>
+                </assert_contents>
+            </output>
+            <output name="out_cm">
+                <assert_contents>
+                    <has_n_lines n="0"/>
+                </assert_contents>
+            </output>
+            <output name="out_cl">
+                <assert_contents>
+                    <has_n_lines n="0"/>
+                </assert_contents>
+            </output>
+        </test>
+        <!-- #9 Test insert range options -->
+        <test expect_num_outputs="6">
+            <conditional name="reads_cond">
+                <param name="reads_sel" value="separate"/>
+                    <param name="forward_reads" value="forward.fasta.gz"/>
+                    <param name="reverse_reads" value="reverse.fasta.gz"/>
+            </conditional>
+            <section name="assembly_options">
+                <conditional name="type_cond">
+                    <param name="type_sel" value="mito"/>
+                </conditional>
+            </section>
+            <section name="optional">
+                <param name="insert_range" value="1.9"/>
+                <param name="insert_range_strict" value="1.3"/>
+            </section>    
+            <!-- fasta.gz not supported -->
+            <param name="seed_input" value="seed.fasta"/>
+            <!-- Assembly -->
+            <output name="out_c">
+                <assert_contents>
                     <has_n_lines n="110"/>
                 </assert_contents>
             </output>
+            <output name="out_ct">
+                <assert_contents>
+                    <has_n_lines n="0"/>
+                </assert_contents>
+            </output>
+            <output name="out_ua">
+                <assert_contents>
+                    <has_n_lines n="0"/>
+                </assert_contents>
+            </output>
+        </test>
+        <!-- #10 Test save assembled reads option -->
+        <test expect_num_outputs="8">
+            <conditional name="reads_cond">
+                <param name="reads_sel" value="separate"/>
+                    <param name="forward_reads" value="forward.fasta.gz"/>
+                    <param name="reverse_reads" value="reverse.fasta.gz"/>
+            </conditional>
+            <section name="assembly_options">
+                <conditional name="type_cond">
+                    <param name="type_sel" value="mito"/>
+                </conditional>
+            </section>
+            <section name="optional">
+                <param name="save_assembled_reads" value="true"/>
+            </section>
+            <!-- fasta.gz not supported -->
+            <param name="seed_input" value="seed.fasta"/>
+            <!-- Assembly -->
+            <output name="out_c">
+                <assert_contents>
+                    <has_n_lines n="110"/>
+                </assert_contents>
+            </output>
+            <output name="out_ua">
+                <assert_contents>
+                    <has_n_lines n="0"/>
+                </assert_contents>
+            </output>
         </test>
     </tests>
     <help><![CDATA[