diff cutadapt.xml @ 5:1dada50cca8a

Support for cutadapt 0.9.5, added quality trimming and additional output options
author Lance Parsons <lparsons@princeton.edu>
date Fri, 22 Jul 2011 11:03:00 -0400
parents 0a872e59164c
children 2d6671b10919
line wrap: on
line diff
--- a/cutadapt.xml	Wed May 25 19:33:40 2011 -0400
+++ b/cutadapt.xml	Fri Jul 22 11:03:00 2011 -0400
@@ -1,35 +1,47 @@
-<tool id="cutadapt" name="Remove adapter sequences" version="0.9.4">
-	<description>from high-throughput sequence data</description>
+<tool id="cutadapt" name="Cutadapt" version="0.9.5.a">
+	<description>Remove adapter sequences from Fastq/Fasta</description>
 	<requirements>
 		<requirement type="python-module">cutadapt</requirement>
 	</requirements>
 
-	<command interpreter="sh">discard_stderr_wrapper.sh cutadapt
+	<command>cutadapt
 		#if $input.extension.startswith( "fastq"):
 		--format=fastq
 		#else
 		--format=$input.extension
 		#end if 
 		#for $a in $adapters
-		-a '${a.adapter_source.adapter}'
+		--adapter='${a.adapter_source.adapter}'
 		#end for
 		#for $aa in $anywhere_adapters
-		-b '${aa.anywhere_adapter_source.anywhere_adapter}'
+		--anywhere='${aa.anywhere_adapter_source.anywhere_adapter}'
 		#end for
-		-e $error_rate
-		-n $count
-		-O $overlap
+		--error-rate=$error_rate
+		--times=$count
+		--overlap=$overlap
 		#if str($min) != '0':
-		-m $min
+		--minimum-length=$min
 		#end if
 		#if str($max) != '0':
-		-M $max
+		--maximum-length=$max
+		#end if
+		#if str($quality_cutoff) != '0':
+		--quality-cutoff=$quality_cutoff
 		#end if
-		#if $discard:
-		--discard
+		$discard
+		--output='$output' 
+		#if str( $output_params.output_type ) == "additional":
+			#if $output_params.rest_file:
+			--rest-file=$rest_output
+			#end if
+			#if $output_params.too_short_file:
+			--too-short-output=$too_short_output
+			#end if
+			#if $output_params.untrimmed_file:
+			--untrimmed-output=$untrimmed_output
+			#end if
 		#end if
 		'$input'
-		--output='$output' 
 		> $report
 	</command>
 	<inputs>
@@ -81,19 +93,70 @@
 		<param name="error_rate" type="float" min="0" max="1" value="0.1" label="Maximum error rate" help="Maximum allowed error rate (no. of errors divided by the length of the matching region)." />
 		<param name="count" type="integer" min="1" value="1" label="Match times" help="Try to remove adapters at most COUNT times. Useful when an adapter gets appended multiple times." />
 		<param name="overlap" type="integer" min="1" value="3" label="Minimum overlap length" help="Minimum overlap length. If the overlap between the adapter and the sequence is shorter than LENGTH, the read is not modified." />
-		<param name="discard" type="boolean" checked="False" default="False" label="Discard Trimmed Reads" help="Discard reads that contain the adapter instead of trimming them. Use the 'Minimum overlap length' option in order to avoid throwing away too many randomly matching reads!" />
+		<param name="discard" type="boolean" value="false" truevalue="--discard" falsevalue="" label="Discard Trimmed Reads" help="Discard reads that contain the adapter instead of trimming them. Use the 'Minimum overlap length' option in order to avoid throwing away too many randomly matching reads!" />
 		<param name="min" type="integer" min="0" optional="true" value="0" label="Minimum length" help="Discard trimmed reads that are shorter than LENGTH.  Reads that are too short even before adapter removal are also discarded. In colorspace, an initial primer is not counted. Value of 0 means no minimum length." />
 		<param name="max" type="integer" min="0" optional="true" value="0" label="Maximum length" help="Discard trimmed reads that are longer than LENGTH.  Reads that are too long even before adapter removal are also discarded. In colorspace, an initial primer is not counted. Value of 0 means no maximum length." />
+		<param name="quality_cutoff" type="integer" min="0" optional="true" value="0" label="Quality cutoff" help="Trim low-quality ends from reads before adapter removal. The algorithm is the same as the one used by BWA (Subtract CUTOFF from all qualities; compute partial sums from all indices to the end of the sequence; cut sequence at the index at which the sum is minimal). Value of 0 means no quality trimming." />
+	        <conditional name="output_params">
+			<param name="output_type" type="select" label="Additional output options" help="By default all reads will be put in the same file.  However, reads with adapters matching in the middle, unmatched reads, and too-short reads can be saved in separate files.">
+				<option value="default">Default</option>
+				<option value="additional">Additional output files</option>
+			</param>
+			<when value="default" />
+			<when value="additional">
+				<param name="rest_file" type="boolean" value="false" label="Rest of Read" help="When the adapter matches in the middle of a read, write the rest (after the adapter) into a file."/>
+				<param name="too_short_file" type="boolean" value="false" label="Too Short Reads" help="Write reads that are too short (according to minimum length specified) to a file. (default: discard reads)"/>
+				<param name="untrimmed_file" type="boolean" value="false" label="Untrimmed Reads" help="Write reads that do not contain the adapter to a separate file, instead of writing them to the regular output file.  (default: output to same file as trimmed)"/>
+			</when>
+		</conditional>
 	</inputs>
 	<outputs>
 		<data format="txt" name="report" label="${tool.name} on ${on_string} (Report)" />
 		<data format="input" name="output" metadata_source="input"/>
+		<data format="input" name="rest_output" metadata_source="input" label="${tool.name} on ${on_string} (Rest of Reads)" >
+			<filter>(output_params['output_type'] == "additional")</filter>
+			<filter>(output_params['rest_file'] is True)</filter>
+		</data>
+		<data format="input" name="too_short_output" metadata_source="input" label="${tool.name} on ${on_string} (Too Short Reads)" >
+			<filter>(output_params['output_type'] == "additional")</filter>
+			<filter>(output_params['too_short_file'] is True)</filter>
+		</data>
+		<data format="input" name="untrimmed_output" metadata_source="input" label="${tool.name} on ${on_string} (Untrimmed Reads)" >
+			<filter>(output_params['output_type'] == "additional")</filter>
+			<filter>(output_params['untrimmed_file'] is True)</filter>
+		</data>
 	</outputs>
 
 	<tests>
 		<test>
-			<param name="input" value="fa_gc_content_input.fa"/>
-			<output name="out_file1" file="fa_gc_content_output.txt"/>
+			<param name="input" value="cutadapt_small.fastq" ftype="fastqsanger"/>
+			<param name="adapter_source_list" value="user"/>
+			<param name="adapter" value=""/>
+			<param name="anywhere_adapter_source_list" value="user"/>
+			<param name="anywhere_adapter" value="TTAGACATATCTCCGTCG"/>
+			<param name="output_type" value="default"/>
+			<output name="output" file="cutadapt_small.out"/>
+		</test>
+		<test>
+			<param name="input" value="cutadapt_small.fastq" ftype="fastqsanger"/>
+			<param name="adapter_source_list" value="user"/>
+			<param name="adapter" value="TTAGACATATCTCCGTCG"/>
+			<param name="anywhere_adapter_source_list" value="user"/>
+			<param name="anywhere_adapter" value=""/>
+			<param name="discard" value="true"/>
+			<param name="output_type" value="default"/>
+			<output name="output" file="cutadapt_discard.out"/>
+		</test>
+		<test>
+			<param name="input" value="cutadapt_rest.fa" ftype="fasta"/>
+			<param name="adapter_source_list" value="user"/>
+			<param name="adapter" value="ADAPTER"/>
+			<param name="anywhere_adapter_source_list" value="user"/>
+			<param name="anywhere_adapter" value=""/>
+			<param name="output_type" value="additional"/>
+			<param name="rest_file" value="true"/>
+			<output name="output" file="cutadapt_rest.out"/>
+			<output name="rest_output" file="cutadapt_rest2.out"/>
 		</test>
 	</tests>