diff preprocess.xml @ 9:7bf54edaba24 draft

planemo upload for repository https://github.com/geraldinepascal/FROGS-wrappers/ commit 3d595459e82ea1674c83543f41c18169c159450e-dirty
author oinizan
date Thu, 12 May 2022 10:44:30 +0000
parents 76dcbe930b1d
children ab9e3c8ab443
line wrap: on
line diff
--- a/preprocess.xml	Mon Aug 23 09:25:07 2021 +0000
+++ b/preprocess.xml	Thu May 12 10:44:30 2022 +0000
@@ -1,309 +1,303 @@
-<?xml version="1.0"?>
-<!--
-# Copyright (C) 2015 INRA
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
--->
-<tool id="FROGS_preprocess" name="FROGS Pre-process" version="@TOOL_VERSION@+galaxy2">
-	<description>merging, denoising and dereplication.</description>
-
+<tool id="FROGS_preprocess" name="FROGS Pre-process" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" license="GPL-2.0-only" profile="20.05">
+    <description>merging, denoising and dereplication</description>
     <macros>
         <import>macros.xml</import>
     </macros>
-
-    <expand macro="requirements" >
+    <expand macro="requirements">
         <requirement type="package" version="2.17.0">vsearch</requirement>
         <requirement type="package" version="1.2.11">flash</requirement>
         <requirement type="package" version="2.10">cutadapt</requirement>
     </expand>
-
-        <stdio>
-                <exit_code range="1:" />
-                <exit_code range=":-1" />
-        </stdio>
-	<command>
-		preprocess.py '$sequencer_type.sequencer_selected'
-		--output-dereplicated '$dereplicated_file' --output-count '$count_file' --summary '$summary_file'
-		--nb-cpus \${GALAXY_SLOTS:-1}
-		--min-amplicon-size $sequencer_type.min_amplicon_size --max-amplicon-size $sequencer_type.max_amplicon_size
-
-		#if $sequencer_type.sequencer_selected == "illumina"
-		    #if $sequencer_type.sequencing_protocol.sequencing_protocol_selected == "standard"
-		        --five-prim-primer '$sequencer_type.sequencing_protocol.five_prim_primer' --three-prim-primer '$sequencer_type.sequencing_protocol.three_prim_primer'
-		    #else
-		        --without-primers
-		    #end if
-		#else
-		    --five-prim-primer '$sequencer_type.five_prim_primer' --three-prim-primer '$sequencer_type.three_prim_primer'
-		#end if
+    <command detect_errors="exit_code">
+        preprocess.py '$sequencer_type.sequencer_selected'
+        --output-dereplicated '$dereplicated_file' --output-count '$count_file' --summary '$summary_file'
+        @CPUS@
+        --min-amplicon-size $sequencer_type.min_amplicon_size
+        --max-amplicon-size $sequencer_type.max_amplicon_size
+        #if $sequencer_type.sequencer_selected == "illumina"
+            #if $sequencer_type.sequencing_protocol.sequencing_protocol_selected == "standard"
+                --five-prim-primer '$sequencer_type.sequencing_protocol.five_prim_primer'
+                --three-prim-primer '$sequencer_type.sequencing_protocol.three_prim_primer'
+            #else
+                --without-primers
+            #end if
+        #else
+            --five-prim-primer '$sequencer_type.five_prim_primer'
+            --three-prim-primer '$sequencer_type.three_prim_primer'
+        #end if
 
-		#if $sequencer_type.input_type.input_type_selected == "archive"
-		    --input-archive '$sequencer_type.input_type.archive_file'
-		    #if $sequencer_type.sequencer_selected == "illumina" and $sequencer_type.input_type.archive_type.archive_type_selected == "already_merged"
-			    --already-contiged
-		    #elif $sequencer_type.sequencer_selected == "illumina"
-	            --R1-size $sequencer_type.input_type.archive_type.R1_size --R2-size $sequencer_type.input_type.archive_type.R2_size
-	        	--mismatch-rate $sequencer_type.input_type.archive_type.mm_rate
-	        	--merge-software '$sequencer_type.input_type.archive_type.merge_software_type.merge_software_selected'
-	        	#if $sequencer_type.input_type.archive_type.merge_software_type.merge_software_selected == "flash"
-					--expected-amplicon-size $sequencer_type.input_type.archive_type.merge_software_type.expected_amplicon_size
-			#end if
-	        	#if $sequencer_type.input_type.archive_type.keep_unmerged
-	        		--keep-unmerged
-	        	#end if
-		    #end if
-		#else
-		    #set $sep = ' '
-		    #if $sequencer_type.sequencer_selected == "illumina"
-	            --samples-names
-	            #for $current in $sequencer_type.input_type.files_by_samples_type.samples
-	                $sep'${current.name.strip()}'
-	            #end for
-		        --input-R1
-		        #for $current in $sequencer_type.input_type.files_by_samples_type.samples
-		            $sep'${current.R1_file}'
-		        #end for
-		        #if $sequencer_type.input_type.files_by_samples_type.files_by_samples_type_selected == "already_merged"
-		            --already-contiged
-		        #else
-		            --input-R2
-		            #for $current in $sequencer_type.input_type.files_by_samples_type.samples
-		                $sep'${current.R2_file}'
-		            #end for
-		            --R1-size $sequencer_type.input_type.files_by_samples_type.R1_size --R2-size $sequencer_type.input_type.files_by_samples_type.R2_size
-		            --mismatch-rate $sequencer_type.input_type.files_by_samples_type.mm_rate
-		            --merge-software $sequencer_type.input_type.files_by_samples_type.merge_software_type.merge_software_selected
-		            #if $sequencer_type.input_type.files_by_samples_type.merge_software_type.merge_software_selected == "flash"
-						--expected-amplicon-size $sequencer_type.input_type.files_by_samples_type.merge_software_type.expected_amplicon_size
-			    #end if
-		            #if $sequencer_type.input_type.files_by_samples_type.keep_unmerged
-	        			--keep-unmerged
-	        	    #end if
-		        #end if
-		    #else
-		        --input-R1
-		        #for $current in $sequencer_type.input_type.samples
-		            $sep'${current.R1_file}'
-		        #end for
-		        --samples-names
-		        #for $current in $sequencer_type.input_type.samples
-		            $sep'${current.name.strip()}'
-		        #end for
-		    #end if
-		#end if
-	</command>
-	<inputs>
-		<conditional name="sequencer_type">
-			<param name="sequencer_selected" type="select" label="Sequencer" help="Select the sequencing technology used to produce the sequences.">
-				<option value="illumina" selected="true">Illumina</option>
-				<option value="454">454</option>
-			</param>
-			<when value="illumina">
-				<!-- Samples -->
-				<conditional name="input_type">
-					<param name="input_type_selected" type="select" label="Input type" help="Samples files can be provided in a single TAR archive or sample by sample (with one or two files each).">
-						<option value="files_by_samples" selected="true">Files by samples</option>
-						<option value="archive">TAR Archive</option>
-					</param>
-					<when value="archive">
-						<param name="archive_file" type="data" format="tar,tar.gz" label="TAR archive file" help="The TAR file containing the sequences file(s) for each sample." optional="false" />
-						<conditional name="archive_type">
-							<param name="archive_type_selected" type="select" label="Are reads already merged ?" help="The archive contains 1 file by sample : R1 and R2 pair are already merged in one sequence.">
-								<option value="paired" selected="true">No</option>
-								<option value="already_merged">Yes</option>
-							</param>
-							<!-- $sequencer_type.input_type.archive_type.archive_type_selected == "already_merged"  -->
-							<when value="paired">
-								<!-- Reads size -->
-								<param name="R1_size" type="integer" label="Reads 1 size" help="The maximum read1 size." value="" optional="false" />
-								<param name="R2_size" type="integer" label="Reads 2 size" help="The maximum read2 size." value="" optional="false" />
-								<param name="mm_rate" type="float" label="Mismatch rate." help="The maximum rate of mismatch in the overlap region" value="0.1" optional="false" />
-								<conditional name="merge_software_type">
-									<param name="merge_software_selected" type="select" label="Merge software" help="Select the software to merge paired-end reads.">
-										<option value="vsearch" selected="true">Vsearch</option>
-										<option value="flash">Flash</option>
-									</param>
-									<when value="flash">
-										<param name="expected_amplicon_size" type="integer" label="Expected amplicon size" help="Maximum amplicon length expected in approximately 90% of the amplicons." value="" />
-									</when>
-									<when value="vsearch"></when>
-								</conditional>
-								<param name="keep_unmerged" type="boolean" label="Would you like to keep unmerged reads?" help="No : Unmerged reads will be excluded; Yes : unmerged reads will be artificially combined with 100 N. (default No)" />
-							</when>
-							<when value="already_merged"></when>
-						</conditional>
-					</when>
-					<when value="files_by_samples">
-						<conditional name="files_by_samples_type">
-							<param name="files_by_samples_type_selected" type="select" label="Are reads already merged ?" help="The inputs contain 1 file by sample : R1 and R2 pair are already merged in one sequence.">
-								<option value="paired" selected="true">No</option>
-								<option value="already_merged">Yes</option>
-							</param>
-							<when value="paired">
-								<!-- Samples -->
-								<repeat name="samples" title="Samples" min="1">
-									<param name="name" type="text" label="Name" help="The sample name." optional="false">
-										<validator type="empty_field" message="This parameter is required." />
-									</param>
-									<param format="fastq" name="R1_file" type="data" label="Reads 1" help="R1 FASTQ file of paired-end reads." />
-									<param format="fastq" name="R2_file" type="data" label="Reads 2" help="R2 FASTQ file of paired-end reads." />
-								</repeat>
-								<!-- Reads size -->
-								<param name="R1_size" type="integer" label="Reads 1 size" help="The maximum read1 size." value="" optional="false" />
-								<param name="R2_size" type="integer" label="Reads 2 size" help="The maximum read2 size." value="" optional="false" />
-								<param name="mm_rate" type="float" label="Mismatch rate." help="The maximum rate of mismatches in the overlap region" value="0.1" optional="false" />
-								<conditional name="merge_software_type">
-									<param name="merge_software_selected" type="select" label="Merge software" help="Select the software to merge paired-end reads.">
-										<option value="vsearch" selected="true">Vsearch</option>
-										<option value="flash">Flash</option>
-									</param>
-									<when value="flash">
-										<param name="expected_amplicon_size" type="integer" label="Expected amplicon size" help="Maximum amplicon length expected in approximately 90% of the amplicons." value="" />
-									</when>
-									<when value="vsearch"></when>
-								</conditional>
-								<param name="keep_unmerged" type="boolean" label="Would you like to keep unmerged reads?" help="No : Unmerged reads will be excluded; Yes : unmerged reads will be artificially combined with 100 N. (default No)" />
-							</when>
-							<when value="already_merged">
-								<repeat name="samples" title="Samples" min="1">
-									<param name="name" type="text" label="Name" help="The sample name." optional="false">
-										<validator type="empty_field" message="This parameter is required." />
-									</param>
-									<param format="fastq" name="R1_file" type="data" label="Sequence file" help="FASTQ file of merged reads." />
-								</repeat>
-							</when>
-						</conditional>
-					</when>
-				</conditional>
-				<!-- Amplicons -->
-				<param name="min_amplicon_size" type="integer" label="Minimum amplicon size" help="The minimum size for the amplicons (with primers)." value="" optional="false" />
-				<param name="max_amplicon_size" type="integer" label="Maximum amplicon size" help="The maximum size for the amplicons (with primers)." value="" optional="false" />
-				<!-- Primers -->
-				<conditional name="sequencing_protocol">
-					<param name="sequencing_protocol_selected" type="select" label="Sequencing protocol" help="The protocol used for sequencing step: standard or custom with PCR primers as sequencing primers.">
-						<option value="standard" selected="true">Illumina standard</option>
-						<option value="without_primers">Custom protocol (Kozich et al. 2013)</option>
-					</param>
-					<when value="standard">
-						<param name="five_prim_primer" type="text" size="20" label="5' primer" help="The 5' primer sequence (wildcards are accepted). The orientation is detailed below in 'Primers parameters' help section." optional="false">
-							<validator type="empty_field" message="This parameter is required." />
-						</param>
-						<param name="three_prim_primer" type="text" size="20" label="3' primer" help="The 3' primer sequence (wildcards are accepted). The orientation is detailed below in 'Primers parameters' help section." optional="false">
-							<validator type="empty_field" message="This parameter is required." />
-						</param>
-					</when>
-					<when value="without_primers"></when>
-				</conditional>
-			</when>
+        #if $sequencer_type.input_type.input_type_selected == "archive"
+            --input-archive '$sequencer_type.input_type.archive_file'
+            #if $sequencer_type.sequencer_selected == "illumina" and $sequencer_type.input_type.archive_type.archive_type_selected == "already_merged"
+                --already-contiged
+            #elif $sequencer_type.sequencer_selected == "illumina"
+                --R1-size $sequencer_type.input_type.archive_type.R1_size
+                --R2-size $sequencer_type.input_type.archive_type.R2_size
+                --mismatch-rate $sequencer_type.input_type.archive_type.mismatch_rate
+                --merge-software $sequencer_type.input_type.archive_type.merge_software_type.merge_software
+                #if $sequencer_type.input_type.archive_type.merge_software_type.merge_software == "flash"
+                    --expected-amplicon-size $sequencer_type.input_type.archive_type.merge_software_type.expected_amplicon_size
+            #end if
+                #if $sequencer_type.input_type.archive_type.keep_unmerged
+                    --keep-unmerged
+                #end if
+            #end if
+        #else
+            #set $sep = ' '
+            #if $sequencer_type.sequencer_selected == "illumina"
+                --samples-names
+                #for $current in $sequencer_type.input_type.files_by_samples_type.samples
+                    $sep'${current.name.strip()}'
+                #end for
+                --input-R1
+                #for $current in $sequencer_type.input_type.files_by_samples_type.samples
+                    $sep'${current.R1_file}'
+                #end for
+                #if $sequencer_type.input_type.files_by_samples_type.files_by_samples_type_selected == "already_merged"
+                    --already-contiged
+                #else
+                    --input-R2
+                    #for $current in $sequencer_type.input_type.files_by_samples_type.samples
+                        $sep'${current.R2_file}'
+                    #end for
+                    --R1-size $sequencer_type.input_type.files_by_samples_type.R1_size
+                    --R2-size $sequencer_type.input_type.files_by_samples_type.R2_size
+                    --mismatch-rate $sequencer_type.input_type.files_by_samples_type.mismatch_rate
+                    --merge-software $sequencer_type.input_type.files_by_samples_type.merge_software_type.merge_software
+                    #if $sequencer_type.input_type.files_by_samples_type.merge_software_type.merge_software == "flash"
+                        --expected-amplicon-size $sequencer_type.input_type.files_by_samples_type.merge_software_type.expected_amplicon_size
+                    #end if
+                    #if $sequencer_type.input_type.files_by_samples_type.keep_unmerged
+                        --keep-unmerged
+                    #end if
+                #end if
+            #else
+                --input-R1
+                #for $current in $sequencer_type.input_type.samples
+                    $sep'${current.R1_file}'
+                #end for
+                --samples-names
+                #for $current in $sequencer_type.input_type.samples
+                    $sep'${current.name.strip()}'
+                #end for
+            #end if
+        #end if
+    </command>
+    <inputs>
+        <conditional name="sequencer_type">
+            <param name="sequencer_selected" type="select" label="Sequencer" help="Select the sequencing technology used to produce the sequences.">
+                <option value="illumina" selected="true">Illumina</option>
+                <option value="454">454</option>
+            </param>
+            <when value="illumina">
+                <!-- Samples -->
+                <conditional name="input_type">
+                    <param name="input_type_selected" type="select" label="Input type" help="Samples files can be provided in a single TAR archive or sample by sample (with one or two files each).">
+                        <option value="files_by_samples" selected="true">Files by samples</option>
+                        <option value="archive">TAR Archive</option>
+                    </param>
+                    <when value="archive">
+                        <param name="archive_file" type="data" format="tar,tgz" label="TAR archive file" help="The TAR file containing the sequences file(s) for each sample." />
+                        <conditional name="archive_type">
+                            <param name="archive_type_selected" type="select" label="Are reads already merged ?" help="The archive contains 1 file by sample : R1 and R2 pair are already merged in one sequence.">
+                                <option value="paired" selected="true">No</option>
+                                <option value="already_merged">Yes</option>
+                            </param>
+                            <!-- $sequencer_type.input_type.archive_type.archive_type_selected == "already_merged"  -->
+                            <when value="paired">
+                                <!-- Reads size -->
+                                <param name="R1_size" type="integer" label="Reads 1 size" help="The maximum read1 size." value="" />
+                                <param name="R2_size" type="integer" label="Reads 2 size" help="The maximum read2 size." value="" />
+                                <param argument="--mismatch-rate" type="float" label="Mismatch rate" help="The maximum rate of mismatch in the overlap region" value="0.1" />
+                                <conditional name="merge_software_type">
+                                    <param argument="--merge-software" type="select" label="Merge software" help="Select the software to merge paired-end reads">
+                                        <option value="vsearch" selected="true">Vsearch</option>
+                                        <option value="flash">Flash</option>
+                                    </param>
+                                    <when value="flash">
+                                        <param argument="--expected-amplicon-size" type="integer" min="0" value="" label="Expected amplicon size" help="Maximum amplicon length expected in approximately 90% of the amplicons"/>
+                                    </when>
+                                    <when value="vsearch"></when>
+                                </conditional>
+                                <param argument="--keep-unmerged" type="boolean" label="Would you like to keep unmerged reads?" help="No : Unmerged reads will be excluded; Yes : unmerged reads will be artificially combined with 100 N. (default No)" />
+                            </when>
+                            <when value="already_merged"></when>
+                        </conditional>
+                    </when>
+                    <when value="files_by_samples">
+                        <conditional name="files_by_samples_type">
+                            <param name="files_by_samples_type_selected" type="select" label="Are reads already merged ?" help="The inputs contain 1 file by sample : R1 and R2 pair are already merged in one sequence.">
+                                <option value="paired" selected="true">No</option>
+                                <option value="already_merged">Yes</option>
+                            </param>
+                            <when value="paired">
+                                <!-- Samples -->
+                                <repeat name="samples" title="Samples" min="1">
+                                    <param name="name" type="text" label="Name" help="The sample name.">
+                                        <expand macro="sanitizer_validator"/>
+                                    </param>
+                                    <param format="fastq" name="R1_file" type="data" label="Reads 1" help="R1 FASTQ file of paired-end reads." />
+                                    <param format="fastq" name="R2_file" type="data" label="Reads 2" help="R2 FASTQ file of paired-end reads." />
+                                </repeat>
+                                <!-- Reads size -->
+                                <param name="R1_size" type="integer" label="Reads 1 size" help="The maximum read1 size." value="" />
+                                <param name="R2_size" type="integer" label="Reads 2 size" help="The maximum read2 size." value="" />
+                                <param name="mismatch_rate" type="float" label="Mismatch rate." help="The maximum rate of mismatches in the overlap region" value="0.1" />
+                                <conditional name="merge_software_type">
+                                    <param argument="--merge-software" type="select" label="Merge software" help="Select the software to merge paired-end reads">
+                                        <option value="vsearch" selected="true">Vsearch</option>
+                                        <option value="flash">Flash</option>
+                                    </param>
+                                    <when value="flash">
+                                        <param argument="--expected-amplicon-size" type="integer" min="0" value="" label="Expected amplicon size" help="Maximum amplicon length expected in approximately 90% of the amplicons"/>
+                                    </when>
+                                    <when value="vsearch"></when>
+                                </conditional>
+                                <param argument="--keep-unmerged" type="boolean" label="Would you like to keep unmerged reads?" help="No : Unmerged reads will be excluded; Yes : unmerged reads will be artificially combined with 100 N. (default No)" />
+                            </when>
+                            <when value="already_merged">
+                                <repeat name="samples" title="Samples" min="1">
+                                    <param name="name" type="text" label="Name" help="The sample name.">
+                                        <expand macro="sanitizer_validator"/>
+                                    </param>
+                                    <param format="fastq" name="R1_file" type="data" label="Sequence file" help="FASTQ file of merged reads." />
+                                </repeat>
+                            </when>
+                        </conditional>
+                    </when>
+                </conditional>
+                <!-- Amplicons -->
+                <param argument="--min-amplicon-size" type="integer" value="" label="Minimum amplicon size" help="The minimum size for the amplicons (with primers)"/>
+                <param argument="--max-amplicon-size" type="integer" value="" label="Maximum amplicon size" help="The maximum size for the amplicons (with primers)"/>
+                <!-- Primers -->
+                <conditional name="sequencing_protocol">
+                    <param name="sequencing_protocol_selected" type="select" label="Sequencing protocol" help="The protocol used for sequencing step: standard or custom with PCR primers as sequencing primers.">
+                        <option value="standard" selected="true">Illumina standard</option>
+                        <option value="without_primers">Custom protocol (Kozich et al. 2013)</option>
+                    </param>
+                    <when value="standard">
+                        <param argument="--five-prim-primer" type="text" label="5' primer" help="The 5' primer sequence (wildcards are accepted). The orientation is detailed below in 'Primers parameters' help section">
+                            <sanitizer invalid_char="">
+                                <valid initial="string.letters"/>
+                            </sanitizer>
+                            <validator type="regex">[A-Za-z]+</validator>
+                        </param>
+                        <param argument="--three-prim-primer" type="text" label="3' primer" help="The 3' primer sequence (wildcards are accepted). The orientation is detailed below in 'Primers parameters' help section">
+                            <sanitizer invalid_char="">
+                                <valid initial="string.letters"/>
+                            </sanitizer>
+                            <validator type="regex">[A-Za-z]+</validator>
+                        </param>
+                    </when>
+                    <when value="without_primers"></when>
+                </conditional>
+            </when>
 
-			<when value="454">
-				<!-- Samples -->
-				<conditional name="input_type">
-					<param name="input_type_selected" type="select" label="Input type" help="Samples files can be provided in single archive or with one file by sample.">
-						<option value="files_by_samples" selected="true">One file by sample</option>
-						<option value="archive">TAR Archive</option>
-					</param>
-					<when value="archive">
-						<param name="archive_file" type="data" format="tar,tar.gz" label="TAR archive file" help="The TAR file containing the sequences file for each sample." optional="false" />
-					</when>
-					<when value="files_by_samples">
-						<repeat name="samples" title="Samples" min="1">
-							<param name="name" type="text" label="Name" help="The sample name." optional="false" />
-							<param format="fastq" name="R1_file" type="data" label="Sequence file" help="FASTQ file of sample." />
-						</repeat>
-					</when>
-				</conditional>
-				<!-- Amplicons -->
-				<param name="min_amplicon_size" type="integer" label="Minimum amplicon size" help="The minimum size for the amplicons (with primers)." value="" optional="false" />
-				<param name="max_amplicon_size" type="integer" label="Maximum amplicon size" help="The maximum size for the amplicons (with primers)." value="" optional="false" />
-				<!-- Primers -->
-				<param name="five_prim_primer" type="text" size="20" label="5' primer" help="The 5' primer sequence (wildcards are accepted). The orientation is detailed below in 'Primers parameters' help section." optional="false">
-					<validator type="empty_field" message="This parameter is required." />
-				</param>
-				<param name="three_prim_primer" type="text" size="20" label="3' primer" help="The 3' primer sequence (wildcards are accepted). The orientation is detailed below in 'Primers parameters' help section." optional="false">
-					<validator type="empty_field" message="This parameter is required." />
-				</param>
-			</when>
-		</conditional>
-	</inputs>
-	<outputs>
-		<data format="fasta" name="dereplicated_file" label="${tool.name}: dereplicated.fasta" from_work_dir="dereplicated.fasta" />
-		<data format="tabular" name="count_file" label="${tool.name}: count.tsv" from_work_dir="count.tsv" />
-		<data format="html" name="summary_file" label="${tool.name}: report.html" from_work_dir="report.html" />
-	</outputs>
+            <when value="454">
+                <!-- Samples -->
+                <conditional name="input_type">
+                    <param name="input_type_selected" type="select" label="Input type" help="Samples files can be provided in single archive or with one file by sample.">
+                        <option value="files_by_samples" selected="true">One file by sample</option>
+                        <option value="archive">TAR Archive</option>
+                    </param>
+                    <when value="archive">
+                        <param name="archive_file" type="data" format="tar,tgz" label="TAR archive file" help="The TAR file containing the sequences file for each sample." />
+                    </when>
+                    <when value="files_by_samples">
+                        <repeat name="samples" title="Samples" min="1">
+                            <param name="name" type="text" label="Name" help="The sample name.">
+                                <expand macro="sanitizer_validator"/>
+                            </param>
+                            <param format="fastq" name="R1_file" type="data" label="Sequence file" help="FASTQ file of sample." />
+                        </repeat>
+                    </when>
+                </conditional>
+                <!-- Amplicons -->
+                <param argument="--min-amplicon-size" type="integer" value="" label="Minimum amplicon size" help="The minimum size for the amplicons (with primers)"/>
+                <param argument="--max_amplicon-size" type="integer" value="" label="Maximum amplicon size" help="The maximum size for the amplicons (with primers)"/>
+                <!-- Primers -->
+                <param argument="--five-prim-primer" type="text"  label="5' primer" help="The 5' primer sequence (wildcards are accepted). The orientation is detailed below in 'Primers parameters' help section">
+                    <sanitizer invalid_char="">
+                        <valid initial="string.letters"/>
+                    </sanitizer>
+                    <validator type="regex">[A-Za-z]+</validator>
+                </param>
+                <param argument="--three-prim-primer" type="text"  label="3' primer" help="The 3' primer sequence (wildcards are accepted). The orientation is detailed below in 'Primers parameters' help section">
+                    <sanitizer invalid_char="">
+                        <valid initial="string.letters"/>
+                    </sanitizer>
+                    <validator type="regex">[A-Za-z]+</validator>
+                </param>
+            </when>
+        </conditional>
+    </inputs>
+    <outputs>
+        <data format="fasta" name="dereplicated_file" label="${tool.name}: dereplicated.fasta" from_work_dir="dereplicated.fasta" />
+        <data format="tabular" name="count_file" label="${tool.name}: count.tsv" from_work_dir="count.tsv" />
+        <data format="html" name="summary_file" label="${tool.name}: report.html" from_work_dir="report.html" />
+    </outputs>
     <tests>
-    	<test>
-    		<conditional name="sequencer_type">
-				<param name="sequencer_selected" value="illumina"/>
-				<conditional name="input_type">
-					<param name="input_type_selected" value="archive"/>
-					<param name="archive_file" ftype="tar" value="input/test_dataset.tar.gz"/>
-					<conditional name="archive_type">
-						<param name="archive_type_selected" value="paired"/>
-						<param name="R1_size" value="267"/>
-						<param name="R2_size" value="266"/>
-						<param name="mm_rate" value="0.15"/>
-			 			<conditional name="merge_software_type">
-							<param name="merge_software_selected" value="flash" />
-							<param name="expected_amplicon_size" value="420"/>
-						</conditional>
-						<param name="keep_unmerged" value="true"/>
-					</conditional>
-				</conditional>
-				<param name="min_amplicon_size" value="44"/>
-				<param name="max_amplicon_size" value="490"/>
-				<conditional name="sequencing_protocol">
-					<param name="sequencing_protocol_selected" value="standard"/>
-					<param name="five_prim_primer" value="GGCGVACGGGTGAGTAA"/>
-					<param name="three_prim_primer" value="GTGCCAGCNGCNGCGG"/>
-				</conditional>
-			</conditional>
-			<output name="dereplicated_file" file="references/01-prepro-flash.fasta" compare="diff" lines_diff="0" />
-			<output name="count_file" file="references/01-prepro-flash.tsv" compare="diff" lines_diff="0" />
-			<output name="summary_file" file="references/01-prepro-flash.html" compare="sim_size" delta="0"/>
+        <test>
+            <conditional name="sequencer_type">
+                <param name="sequencer_selected" value="illumina" />
+                <conditional name="input_type">
+                    <param name="input_type_selected" value="archive" />
+                    <param name="archive_file" ftype="tgz" value="input/test_dataset.tar.gz" />
+                    <conditional name="archive_type">
+                        <param name="archive_type_selected" value="paired" />
+                        <param name="R1_size" value="267" />
+                        <param name="R2_size" value="266" />
+                        <param name="mismatch_rate" value="0.15" />
+                        <conditional name="merge_software_type">
+                            <param name="merge_software" value="flash" />
+                            <param name="expected_amplicon_size" value="420" />
+                        </conditional>
+                        <param name="keep_unmerged" value="true" />
+                    </conditional>
+                </conditional>
+                <param name="min_amplicon_size" value="44" />
+                <param name="max_amplicon_size" value="490" />
+                <conditional name="sequencing_protocol">
+                    <param name="sequencing_protocol_selected" value="standard" />
+                    <param name="five_prim_primer" value="GGCGVACGGGTGAGTAA" />
+                    <param name="three_prim_primer" value="GTGCCAGCNGCNGCGG" />
+                </conditional>
+            </conditional>
+            <output name="dereplicated_file" file="references/01-prepro-flash.fasta" compare="diff" lines_diff="0" />
+            <output name="count_file" file="references/01-prepro-flash.tsv" compare="diff" lines_diff="0" />
+            <output name="summary_file" file="references/01-prepro-flash.html" compare="sim_size" delta="0" />
         </test>
         <test>
             <conditional name="sequencer_type">
-				<param name="sequencer_selected" value="illumina"/>
-				<conditional name="input_type">
-					<param name="input_type_selected" value="archive"/>
-					<param name="archive_file" ftype="tar" value="input/test_dataset.tar.gz"/>
-					<conditional name="archive_type">
-						<param name="archive_type_selected" value="paired"/>
-						<param name="R1_size" value="267"/>
-						<param name="R2_size" value="266"/>
-						<param name="mm_rate" value="0.15"/>
-		 				<conditional name="merge_software_type">
-							<param name="merge_software_selected" value="vsearch" />
-						</conditional>
-						<param name="keep_unmerged" value="true"/>
-					</conditional>
-				</conditional>
-				<param name="min_amplicon_size" value="44"/>
-				<param name="max_amplicon_size" value="490"/>
-				<conditional name="sequencing_protocol">
-					<param name="sequencing_protocol_selected" value="standard"/>
-					<param name="five_prim_primer" value="GGCGVACGGGTGAGTAA"/>
-					<param name="three_prim_primer" value="GTGCCAGCNGCNGCGG"/>
-				</conditional>
+                <param name="sequencer_selected" value="illumina" />
+                <conditional name="input_type">
+                    <param name="input_type_selected" value="archive" />
+                    <param name="archive_file" ftype="tgz" value="input/test_dataset.tar.gz" />
+                    <conditional name="archive_type">
+                        <param name="archive_type_selected" value="paired" />
+                        <param name="R1_size" value="267" />
+                        <param name="R2_size" value="266" />
+                        <param name="mismatch_rate" value="0.15" />
+                        <conditional name="merge_software_type">
+                            <param name="merge_software" value="vsearch" />
+                        </conditional>
+                        <param name="keep_unmerged" value="true" />
+                    </conditional>
+                </conditional>
+                <param name="min_amplicon_size" value="44" />
+                <param name="max_amplicon_size" value="490" />
+                <conditional name="sequencing_protocol">
+                    <param name="sequencing_protocol_selected" value="standard" />
+                    <param name="five_prim_primer" value="GGCGVACGGGTGAGTAA" />
+                    <param name="three_prim_primer" value="GTGCCAGCNGCNGCGG" />
+                </conditional>
             </conditional>
-			<output name="dereplicated_file" file="references/01-prepro-vsearch.fasta" compare="diff" lines_diff="0" />
-			<output name="count_file" file="references/01-prepro-vsearch.tsv" compare="diff" lines_diff="0" />
-			<output name="summary_file" file="references/01-prepro-vsearch.html" compare="sim_size" delta="0"/>
+            <output name="dereplicated_file" file="references/01-prepro-vsearch.fasta" compare="diff" lines_diff="0" />
+            <output name="count_file" file="references/01-prepro-vsearch.tsv" compare="diff" lines_diff="0" />
+            <output name="summary_file" file="references/01-prepro-vsearch.html" compare="sim_size" delta="0" />
         </test>
     </tests>
-	<help>
+    <help>
 
 @HELP_LOGO@
 
@@ -421,8 +415,8 @@
 
 Reads pair are not merged because:
 
-	- the real amplicon length is greater than de number of base sequences (490 bp for MiSeq 2x250bp, remember of the minimum 10 bp overlap)
-	- the overlapped region is smaller than 10 (fixed parameter in FROGS).
+    - the real amplicon length is greater than de number of base sequences (490 bp for MiSeq 2x250bp, remember of the minimum 10 bp overlap)
+    - the overlapped region is smaller than 10 (fixed parameter in FROGS).
 
 Thus, “FROGS combined” sequences are artificial and present particular features especially on size.
 Imagine a MiSeq sequencing of 2x250pb with sequences that cannot overlap, the resulting “FROGS combined” sequences length will be fixed to 600 bp.
@@ -480,10 +474,6 @@
 
 @HELP_CONTACT@
 
-	</help>
-
-	<citations>
-		<expand macro="citations" />
-	</citations>
-
+    </help>
+    <expand macro="citations" />
 </tool>