From 4d00002daec95664cd88a1ac987b91df3d28e71d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Crist=C3=B3bal=20Gallardo?= <gallardo@informatik.uni-freiburg.de> Date: Tue, 1 Jun 2021 02:08:06 +0200 Subject: [PATCH 01/20] Update cutadapt first round --- tools/cutadapt/cutadapt.xml | 314 +++++++++++------- tools/cutadapt/macros.xml | 50 ++- tools/cutadapt/test-data/A1.fastq.gz | Bin 348 -> 340 bytes tools/cutadapt/test-data/A2.fastq.gz | Bin 334 -> 326 bytes .../test-data/cutadapt_nextseq_out.fq.gz | Bin 11712 -> 12158 bytes tools/cutadapt/test-data/cutadapt_out1.fq.gz | Bin 11934 -> 54684 bytes tools/cutadapt/test-data/cutadapt_out2.fq.gz | Bin 12009 -> 54666 bytes .../cutadapt/test-data/cutadapt_small_cut.out | 12 + .../test-data/cutadapt_small_rename.out | 12 + .../test-data/cutadapt_trimmed.out.gz | Bin 537 -> 537 bytes .../test-data/cutadapt_untrimmed.out.gz | Bin 11648 -> 12095 bytes tools/cutadapt/test-data/unknown.fastq.gz | Bin 191 -> 173 bytes 12 files changed, 247 insertions(+), 141 deletions(-) create mode 100644 tools/cutadapt/test-data/cutadapt_small_cut.out create mode 100644 tools/cutadapt/test-data/cutadapt_small_rename.out diff --git a/tools/cutadapt/cutadapt.xml b/tools/cutadapt/cutadapt.xml index aebcd3d2d6a..1fb98d550b6 100644 --- a/tools/cutadapt/cutadapt.xml +++ b/tools/cutadapt/cutadapt.xml @@ -1,12 +1,11 @@ -<tool id="cutadapt" name="Cutadapt" version="1.16.9" profile="17.09"> +<tool id="cutadapt" name="Cutadapt" version="@TOOL_VERSION@+@GALAXY_TOOL_VERSION@" profile="20.01"> <description>Remove adapter sequences from Fastq/Fasta</description> <macros> <import>macros.xml</import> </macros> - <requirements> - <requirement type="package" version="1.16">cutadapt</requirement> - </requirements> - + <expand macro='edam_ontology' /> + <expand macro='requirements' /> + <expand macro='xrefs'/> <version_command>cutadapt --version</version_command> <command detect_errors="exit_code"><![CDATA[ @@ -18,20 +17,20 @@ #set paired = False #set library_type = str($library.type) #if $library_type == 'paired': -#set paired = True -#set read1 = re.sub('[^\w\-\s]', '_', str($library.input_1.element_identifier)) -#set read2 = re.sub('[^\w\-\s]', '_', str($library.input_2.element_identifier)) -#set input_1 = $library.input_1 -#set input_2 = $library.input_2 + #set paired = True + #set read1 = re.sub('[^\w\-\s]', '_', str($library.input_1.element_identifier)) + #set read2 = re.sub('[^\w\-\s]', '_', str($library.input_2.element_identifier)) + #set input_1 = $library.input_1 + #set input_2 = $library.input_2 #else if $library_type == 'paired_collection' -#set paired = True -#set input_1 = $library.input_1.forward -#set input_2 = $library.input_1.reverse -#set read1 = re.sub('[^\w\-\s]', '_', str($library.input_1.name)) + "_1" -#set read2 = re.sub('[^\w\-\s]', '_', str($library.input_1.name)) + "_2" + #set paired = True + #set input_1 = $library.input_1.forward + #set input_2 = $library.input_1.reverse + #set read1 = re.sub('[^\w\-\s]', '_', str($library.input_1.name)) + "_1" + #set read2 = re.sub('[^\w\-\s]', '_', str($library.input_1.name)) + "_2" #else -#set input_1 = $library.input_1 -#set read1 = re.sub('[^\w\-\s]', '_', str($library.input_1.element_identifier)) + #set input_1 = $library.input_1 + #set read1 = re.sub('[^\w\-\s]', '_', str($library.input_1.element_identifier)) #end if #if $input_1.is_of_type("fastq.gz", "fastqsanger.gz"): @@ -72,20 +71,17 @@ ln -f -s '${input_1}' '$read1' && ## Run Cutadapt -#if $output_options.multiple_output: +#if 'multiple_output' in $output_selector: mkdir split && #end if cutadapt -## cutadapt (up to version 1.16) can't be run in multicore mode with these options -#if not any(($output_options.info_file, $output_options.rest_file, $output_options.wildcard_file, $output_options.too_short_file, $output_options.too_long_file, $output_options.untrimmed_file)) - -j \${GALAXY_SLOTS:-1} -#end if +-j=\${GALAXY_SLOTS:-1} #if str( $library.type ) == "single": @read1_options@ - #if $output_options.multiple_output: + #if 'multiple_output' in $output_selector: --output='split/{name}.${input_1.ext}' #else: --output='$out1' @@ -103,20 +99,25 @@ cutadapt #end if --error-rate=$adapter_options.error_rate ---times=$adapter_options.count +--times=$adapter_options.times --overlap=$adapter_options.overlap $adapter_options.no_indels $adapter_options.match_read_wildcards -$adapter_options.no_trim -$adapter_options.mask_adapter +--action=$adapter_options.action +$adapter_options.revcomp -$filter_options.discard +$filter_options.discard_trimmed $filter_options.discard_untrimmed -#if str($filter_options.min): - --minimum-length=$filter_options.min + +#if str($filter_options.minimum_options.minimum_r2): + --minimum-length=$filter_options.minimum_length:$filter_options.minimum_options.value_minimum +#elif str($filter_options.minimum_length) + --minimum-length=$filter_options.minimum_length #end if -#if str($filter_options.max): - --maximum-length=$filter_options.max +#if str($filter_options.maximum_options.maximum_r2): + --maximum-length=$filter_options.maximum_length:$filter_options.maximum_options.value_maximum +#elif str($filter_options.maximum_length) + --maximum-length=$filter_options.maximum_length #end if #if str($filter_options.max_n): --max-n=$filter_options.max_n @@ -126,6 +127,9 @@ $filter_options.discard_untrimmed --pair-filter=$filter_options.pair_filter #end if #end if +#if str($filter_options.max_expected_errors): + --max-expected-errors=$filter_options.max_expected_errors +#end if #if str($read_mod_options.quality_cutoff) != '0': @@ -135,25 +139,27 @@ $filter_options.discard_untrimmed --nextseq-trim=$read_mod_options.nextseq_trim #end if $read_mod_options.trim_n -#if $read_mod_options.prefix != '': - --prefix='$read_mod_options.prefix' -#end if -#if $read_mod_options.suffix != '': - --suffix='$read_mod_options.suffix' -#end if #if str($read_mod_options.length) != '0': --length=$read_mod_options.length #end if #if $read_mod_options.length_tag != '': --length-tag='$read_mod_options.length_tag' #end if +#if $read_mod_options.cut != '0': + --cut=$read_mod_options.cut +#end if +#if $read_mod_options.rename != '': + --rename='$read_mod_options.rename' +#end if +$read_mod_options.zero_cap + '${read1}' #if $paired: '${read2}' #end if -#if $output_options.report: +#if 'report' in $output_selector: > report.txt #end if ]]></command> @@ -187,128 +193,157 @@ $read_mod_options.trim_n <!-- Adapter Options --> <section name="adapter_options" title="Adapter Options"> - <param name="error_rate" argument="--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="no_indels" argument="--no-indels" type="boolean" value="False" truevalue="--no-indels" falsevalue="" label="Do not allow indels (Use ONLY with anchored 5' (front) adapters)." help="Do not allow indels in the alignments. That is, allow only mismatches. This option is currently only supported for anchored 5' adapters ('^ADAPTER') (default: both mismatches and indels are allowed)." /> - <param name="count" argument="--times" 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" argument="--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. This reduces the number of bases trimmed purely due to short random adapter matches." /> + <param name="action" type="select" label="What to do if a match is found"> + <option value="trim" selected="True">Trim: trim adapter and upstream or downstream sequence</option> + <option value="retain">Retain: the read is trimmed, but the adapter sequence is not removed</option> + <option value="mask">Mask: madapters with 'N' characters instead of trimming them</option> + <option value="lowercase">Lowercase: convert to lowercase</option> + <option value="none">None: leave unchanged</option> + </param> + <param argument="--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 argument="--no-indels" type="boolean" value="False" truevalue="--no-indels" falsevalue="" label="Do not allow indels (Use ONLY with anchored 5' (front) adapters)." help="Do not allow indels in the alignments. That is, allow only mismatches. This option is currently only supported for anchored 5' adapters ('^ADAPTER') (default: both mismatches and indels are allowed)." /> + <param argument="--times" 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 argument="--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. This reduces the number of bases trimmed purely due to short random adapter matches." /> <param name="match_read_wildcards" type="select" label="Match Wildcards" help="Allow 'N's as matches. Default: In the adapters but not in the reads"> <option value=" " selected="True">In the adapters but not in the reads</option> <option value="--match-read-wildcards">In the adapters and in the reads</option> <option value="--no-match-adapter-wildcards">Nowhere</option> </param> - <param name="no_trim" argument="--no-trim" type="boolean" value="False" truevalue="--no-trim" falsevalue="" label="Do not trim adapters" help="Match and redirect reads to output/untrimmed-output as usual, but don't remove the adapters (default: trim the adapters)." /> - <param name="mask_adapter" argument="--mask-adapter" type="boolean" value="False" truevalue="--mask-adapter" falsevalue="" label="Mask Adapters" help="Mask adapter bases with 'N' instead of trimming them (default: trim adapters)." /> + <param argument="--revcomp" type="boolean" value="False" truevalue="--revcomp" falsevalue="" label="Look for adapters in the reverse complement" help="Check both the read and its reverse complement for adapter matches. If match is on reverse-complemented version, output that one. Default: check only read." /> + </section> <!-- Filter Options --> <section name="filter_options" title="Filter Options"> - <param name="discard" argument="--discard-trimmed" type="boolean" value="False" truevalue="--discard-trimmed" 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="discard_untrimmed" argument="--discard_untrimmed" type="boolean" value="False" truevalue="--discard-untrimmed" falsevalue="" label="Discard Untrimmed Reads" help="Discard reads that do not contain the adapter." /> - <param name="min" argument="--minimum-length" type="integer" min="0" optional="True" value="" 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." /> - <param name="max" argument="--maximum-length" type="integer" min="0" optional="True" value="" 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." /> - <param name="max_n" argument="--max-n" type="float" min="0" optional="True" label="Max N" help="Discard reads with more than this number of 'N' bases. A number between 0 and 1 is interpreted as a fraction of the read length." /> - <param name="pair_filter" argument="--pair-filter" type="select" optional="True" label="Pair filter" help="Which of the reads in a paired-end read have to match the filtering criterion in order for the pair to be filtered. Default: any"> + <param argument="--discard-trimmed" type="boolean" value="False" truevalue="--discard-trimmed" 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 argument="--discard_untrimmed" type="boolean" value="False" truevalue="--discard-untrimmed" falsevalue="" label="Discard Untrimmed Reads" help="Discard reads that do not contain the adapter." /> + <param argument="--minimum-length" type="integer" min="0" optional="True" value="" 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." /> + <conditional name="minimum_options"> + <param name="minimum_r2" type="select" label="Specify a minimum length for reverse reads (R2)" help="When trimming paired-end reads, the minimum lengths for R1 and R2 can be specified separately. If not provided, the same minimum length applies to both reads."> + <option value="true">Enable</option> + <option value="" selected="True">Disable</option> + </param> + <when value="true"> + <param name="value_minimum" type="integer" min="0" optional="True" value="" label="Minimum length" /> + </when> + <when value=""> + </when> + </conditional> + <param argument="--maximum-length" type="integer" min="0" optional="True" value="" 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." /> + <conditional name="maximum_options"> + <param name="maximum_r2" type="select" label="Specify a maximum length for reverse reads (R2)" help="When trimming paired-end reads, the maximum lengths for R1 and R2 can be specified separately. If not provided, the same maximum length applies to both reads."> + <option value="true">Enable</option> + <option value="" selected="True">Disable</option> + </param> + <when value="true"> + <param name="value_maximum" type="integer" min="0" optional="True" value="" label="Maximum length" /> + </when> + <when value=""> + </when> + </conditional> + <param argument="--max-n" type="float" min="0" optional="True" label="Max N" help="Discard reads with more than this number of 'N' bases. A number between 0 and 1 is interpreted as a fraction of the read length." /> + <param argument="--pair-filter" type="select" optional="True" label="Pair filter" help="Which of the reads in a paired-end read have to match the filtering criterion in order for the pair to be filtered. Default: any"> <option value="any" selected="True">any</option> <option value="both">both</option> </param> + <param argument="--max-expected-errors" type="integer" min="0" optional="True" value="" label="Max expected errors" help="Discard reads whose expected number of errors (computed from quality values) exceeds this value." /> + <param argument="--discard-cassava" type="boolean" truevalue="--discard-cassava" falsevalue="" checked="False" label="Discard CASAVA filtering" help="Discard reads that did not pass CASAVA filtering (header has :Y:)." /> </section> <!-- Read Modification Options --> <section name="read_mod_options" title="Read Modification Options"> - <param name="quality_cutoff" argument="--quality-cutoff" type="text" value="0" label="Quality cutoff" help=" Trim low-quality bases from 5' and/or 3' ends of each read before adapter removal. Applied to both reads if data is paired. If one value is given, only the 3' end is trimmed. If two comma-separated cutoffs are given, the 5' end is trimmed with the first cutoff, the 3' end with the second."> + <param argument="--quality-cutoff" type="text" value="0" label="Quality cutoff" help=" Trim low-quality bases from 5' and/or 3' ends of each read before adapter removal. Applied to both reads if data is paired. If one value is given, only the 3' end is trimmed. If two comma-separated cutoffs are given, the 5' end is trimmed with the first cutoff, the 3' end with the second."> <sanitizer> <valid initial="string.digits"><add value="," /></valid> </sanitizer> </param> - <param name="nextseq_trim" argument="--nextseq-trim" type="integer" value="0" label="NextSeq trimming" help="Experimental option for quality trimming of NextSeq data. This is necessary because that machine cannot distinguish between G and reaching the end of the fragment (it encodes G as ‘black’). This option works like regular quality trimming (where one would use -q 20 instead), except that the qualities of G bases are ignored." /> - <param name="trim_n" argument="--trim-n" type="boolean" truevalue="--trim-n" falsevalue="" checked="False" label="Trim Ns" help="Trim N's on ends of reads." /> - <param name="prefix" argument="--prefix" label="Prefix" type="text" help="Add this prefix to read names" /> - <param name="suffix" argument="--suffix" label="Suffix" type="text" help="Add this suffix to read names" /> - <param name="strip_suffix" argument="--strip-suffix" label="Strip suffix" type="text" help="Remove this suffix from read names if present." /> - <param name="length" argument="--length" type="integer" value="0" label="Length" help="Shorten reads to this length. This modification is applied after adapter trimming." /> - <param name="length_tag" argument="--length-tag" label="Length Tag" type="text" help="Search for TAG followed by a decimal number in the name of the read (description/comment field of the FASTA or FASTQ file). Replace the decimal number with the correct length of the trimmed read. For example, use --length-tag 'length=' to search for fields like 'length=123'." /> + <param argument="--nextseq-trim" type="integer" value="0" label="NextSeq trimming" help="Experimental option for quality trimming of NextSeq data. This is necessary because that machine cannot distinguish between G and reaching the end of the fragment (it encodes G as ‘black’). This option works like regular quality trimming (where one would use -q 20 instead), except that the qualities of G bases are ignored." /> + <param argument="--trim-n" type="boolean" truevalue="--trim-n" falsevalue="" checked="False" label="Trim Ns" help="Trim N's on ends of reads." /> + <param argument="--strip-suffix" label="Strip suffix" type="text" help="Remove this suffix from read names if present." /> + <param argument="--length" type="integer" value="0" label="Length" help="Shorten reads to this length. This modification is applied after adapter trimming." /> + <param argument="--length-tag" label="Length Tag" type="text" help="Search for TAG followed by a decimal number in the name of the read (description/comment field of the FASTA or FASTQ file). Replace the decimal number with the correct length of the trimmed read. For example, use --length-tag 'length=' to search for fields like 'length=123'." /> + <param argument="--rename" label="Rename reads" type="text" help="This option can be used to rename both single-end and paired-end reads. " /> + <param argument="--cut" label="Remove a fixed number of bases" type="integer" min="-100" max="100" value="0" help="This option allows to unconditionally remove bases from the beginning or end of each read. If the given length is positive, the bases are removed from the beginning of each read. If it is negative, the bases are removed from the end." /> + <param argument="--zero-cap" type="boolean" truevalue="--zero-cap" falsevalue="" checked="False" label="Change negative quality values to zero" /> </section> <!-- Output Options --> - <section name="output_options" title="Output Options"> - <param name="report" type="boolean" value="False" label="Report" help="Cutadapt's per-adapter statistics. You can use this file with MultiQC."/> - <param name="info_file" argument="--info-file" type="boolean" value="False" label="Info File" help="Write information about each read and its adapter matches to a file."/> - <param name="rest_file" argument="--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="wildcard_file" argument="--wildcard-file" type="boolean" value="False" label="Wildcard File" help="When the adapter has wildcard bases ('N's) write adapter bases matching wildcard positions to file."/> - <param name="too_short_file" argument="--too-short-output" 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="too_long_file" argument="--too-long-output" type="boolean" value="False" label="Too Long Reads" help="Write reads that are too long (according to maximum length specified) to a file. (default: discard reads)"/> - <param name="untrimmed_file" argument="--untrimmed-output" 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)"/> - <param name="multiple_output" argument="" type="boolean" value="False" label="Multiple output" help="Create a separate file for each adapter trimmed (default: all trimmed reads are in a single file)"/> - </section> - + <param name="output_selector" type="select" multiple="True" display="checkboxes" label="Outputs selector"> + <option value="report">Report: Cutadapt's per-adapter statistics. You can use this file with MultiQC.</option> + <option value="info_file">Info file: write information about each read and its adapter matches.</option> + <option value="rest_file">Rest of read: when the adapter matches in the middle of a read, write the rest (after the adapter).</option> + <option value="wildcard_file">Wildcard file: when the adapter has wildcard bases (Ns) write adapter bases matching wildcard positions.</option> + <option value="too_short_file">Too short reads: write reads that are too short according to minimum length specified (default: discard reads).</option> + <option value="too_long_file">Too long reads: write reads that are too long (according to maximum length specified)</option> + <option value="untrimmed_file">Untrimmed reads: 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)</option> + <option value="multiple_output">Multiple output: create a separate file for each adapter trimmed (default: all trimmed reads are in a single file)</option> + </param> </inputs> <outputs> <data name="out1" format="fastqsanger" metadata_source="input_1" from_work_dir="out1*" label="${tool.name} on ${on_string}: Read 1 Output"> - <filter>(output_options['multiple_output'] is False and library['type'] != 'paired_collection')</filter> + <filter>library['type'] != 'paired_collection' and 'multiple_output' not in output_selector</filter> <expand macro="inherit_format_1" /> </data> + <data name="out2" format="fastqsanger" metadata_source="input_2" from_work_dir="out2*" label="${tool.name} on ${on_string}: Read 2 Output" > - <filter>(output_options['multiple_output'] is False and library['type'] == 'paired')</filter> + <filter>library['type'] == 'paired' and 'multiple_output' not in output_selector</filter> <expand macro="inherit_format_2" /> </data> <collection name="out_pairs" type="paired" format_source="input_1" label="${tool.name} on ${on_string}: Reads"> - <filter>(output_options['multiple_output'] is False and library['type'] == 'paired_collection')</filter> + <filter>library['type'] == 'paired_collection' and 'multiple_output' not in output_selector</filter> </collection> - + <data name="report" format="txt" from_work_dir="report.txt" label="${tool.name} on ${on_string}: Report"> - <filter>(output_options['report'] is True)</filter> + <filter>output_selector and 'report' in output_selector</filter> </data> - <data name="info_file" format="txt" metadata_source="input_1" label="${tool.name} on ${on_string}: Info File" > - <filter>(output_options['info_file'] is True)</filter> + <filter>output_selector and 'info_file' in output_selector</filter> </data> <data name="rest_output" format="fastqsanger" metadata_source="input_1" from_work_dir="rest_output*" label="${tool.name} on ${on_string}: Rest of Reads (R1 only)" > - <filter>(output_options['rest_file'] is True)</filter> + <filter>output_selector and 'rest_file' in output_selector</filter> <expand macro="inherit_format_1" /> </data> <data name="wild_output" format="txt" metadata_source="input_1" from_work_dir="wild_output*" label="${tool.name} on ${on_string}: Wildcard File" > - <filter>(output_options['wildcard_file'] is True)</filter> + <filter>output_selector and 'wildcard_file' in output_selector</filter> </data> <data name="untrimmed_output" format="fastqsanger" metadata_source="input_1" from_work_dir="untrimmed_output*" label="${tool.name} on ${on_string}: Untrimmed Read 1" > - <filter>(output_options['untrimmed_file'] is True)</filter> + <filter>output_selector and 'untrimmed_file' in output_selector</filter> <expand macro="inherit_format_1" /> </data> <data name="untrimmed_paired_output" format="fastqsanger" metadata_source="input_2" from_work_dir="untrimmed_paired_output*" label="${tool.name} on ${on_string}: Untrimmed Read 2" > - <filter>(library['type'] == 'paired' or library['type'] == 'paired_collection')</filter> - <filter>(output_options['untrimmed_file'] is True)</filter> + <filter>library['type'] == 'paired' or library['type'] == 'paired_collection'</filter> + <filter>output_selector and 'untrimmed_file' in output_selector </filter> <expand macro="inherit_format_2" /> </data> <data name="too_short_output" format="fastqsanger" metadata_source="input_1" from_work_dir="too_short_output*" label="${tool.name} on ${on_string}: Too Short Read 1" > - <filter>(output_options['too_short_file'] is True)</filter> + <filter>output_selector and 'too_short_file' in output_selector</filter> <expand macro="inherit_format_1" /> </data> <data name="too_short_paired_output" format="fastqsanger" metadata_source="input_2" from_work_dir="too_short_paired_output*" label="${tool.name} on ${on_string}: Too Short Read 2" > - <filter>(library['type'] == 'paired' or library['type'] == 'paired_collection')</filter> - <filter>(output_options['too_short_file'] is True)</filter> + <filter>library['type'] == 'paired' or library['type'] == 'paired_collection'</filter> + <filter>output_selector and 'too_short_file' in output_selector</filter> <expand macro="inherit_format_2" /> </data> - <data name="too_long_output" format="fastqsanger" metadata_source="input_1" from_work_dir="too_long_output*" label="${tool.name} on ${on_string}: Too Long Read 1" > - <filter>(output_options['too_long_file'] is True)</filter> + <filter>output_selector and 'too_long_file' in output_selector</filter> <expand macro="inherit_format_1" /> </data> <data name="too_long_paired_output" format="fastqsanger" metadata_source="input_2" from_work_dir="too_long_paired_output*" label="${tool.name} on ${on_string}: Too Long Read 2" > - <filter>(library['type'] == 'paired' or library['type'] == 'paired_collection')</filter> - <filter>(output_options['too_long_file'] is True)</filter> + <filter>library['type'] == 'paired' or library['type'] == 'paired_collection'</filter> + <filter>output_selector and 'too_long_file' in output_selector</filter> <expand macro="inherit_format_2" /> </data> <collection name="split_output" type="list" label="${tool.name} on ${on_string}: Split outputs" > <discover_datasets pattern="(?P<designation>.+)\.(?P<ext>fastq.*)" directory="split" /> - <filter>(output_options['multiple_output'] is True)</filter> + <filter>output_selector and 'multiple_output' in output_selector</filter> </collection> - </outputs> <tests> @@ -381,10 +416,9 @@ $read_mod_options.trim_n <param name="adapter" value="TTAGACATATCTCCGTCG"/> <param name="output_filtering" value="filter"/> <section name="filter_options"> - <param name="discard" value="True"/> + <param name="discard_trimmed" value="True"/> </section> <param name="read_modification" value="none"/> - <param name="output_type" value="default"/> <output name="out1" file="cutadapt_discard.out" ftype="fastq"/> <assert_command> <has_text text="--discard-trimmed"/> @@ -397,8 +431,7 @@ $read_mod_options.trim_n <param name="adapter" value="AAAGATG"/> <param name="output_filtering" value="default"/> <param name="read_modification" value="none"/> - <param name="output_type" value="additional"/> - <param name="rest_file" value="True"/> + <param name="output_selector" value="rest_file"/> <output name="out1" file="cutadapt_rest.out" ftype="fasta"/> <output name="rest_output" file="cutadapt_rest2.out" ftype="fasta"/> </test> @@ -418,8 +451,7 @@ $read_mod_options.trim_n <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" /> <param name="adapter_source_list" value="user"/> <param name="adapter" value="AGATCGGAAGAGC"/> - <param name="report" value="True" /> - <param name="info_file" value="True" /> + <param name="output_selector" value="report,info_file" /> <output name="out1" value="cutadapt_small.out" ftype="fastq"/> <output name="report"> <assert_contents> @@ -451,9 +483,7 @@ $read_mod_options.trim_n </repeat> </section> </conditional> - <param name="report" value="False" /> - <param name="info_file" value="False" /> - <param name="multiple_output" value="True" /> + <param name="output_selector" value="multiple_output" /> <output_collection name="split_output" type="list" count="3"> <element name="A1" value="A1.fastq" ftype="fastq"> </element> @@ -477,9 +507,7 @@ $read_mod_options.trim_n </repeat> </section> </conditional> - <param name="report" value="False" /> - <param name="info_file" value="False" /> - <param name="multiple_output" value="True" /> + <param name="output_selector" value="multiple_output" /> <output_collection name="split_output" type="list" count="3"> <element name="A1" decompress="True" file="A1.fastq.gz" ftype="fastq.gz"> </element> @@ -496,7 +524,7 @@ $read_mod_options.trim_n <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" /> <param name="adapter_source_list" value="user"/> <param name="adapter" value="AAAT"/> - <param name="untrimmed_file" value="True" /> + <param name="output_selector" value="untrimmed_file" /> <output name="out1" file="cutadapt_trimmed.out" ftype="fastq"/> <output name="untrimmed_output" file="cutadapt_untrimmed.out" ftype="fastq"/> </test> @@ -506,7 +534,7 @@ $read_mod_options.trim_n <param name="input_1" ftype="fastq.gz" value="bwa-mem-fastq1.fq.gz" /> <param name="adapter_source_list" value="user"/> <param name="adapter" value="AGATCGGAAGAGC"/> - <param name="untrimmed_file" value="True" /> + <param name="output_selector" value="untrimmed_file" /> <output name="out1" decompress="True" file="cutadapt_trimmed.out.gz" ftype="fastq.gz"/> <!-- Do not use the decompress option for this assertion, since it does NOT test that the file is compressed @@ -534,12 +562,40 @@ $read_mod_options.trim_n </section> <assert_command> <has_text text="--discard-untrimmed"/> - <has_text text="--minimum-length=1"/> <has_text text="--maximum-length=1000"/> <has_text text="--max-n=0"/> <has_text text="--pair-filter=both"/> </assert_command> </test> + <!-- Test cut option --> + <test expect_num_outputs="1"> + <param name="type" value="single" /> + <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" /> + <param name="adapter_source_list" value="user"/> + <param name="adapter" value="AGATCGGAAGAGC"/> + <param name="cut" value="5"/> + <output name="out1" file="cutadapt_small_cut.out" ftype="fastq"/> + </test> + <!-- Test rename options --> + <test expect_num_outputs="1"> + <param name="type" value="single" /> + <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" /> + <param name="adapter_source_list" value="user"/> + <param name="adapter" value="AGATCGGAAGAGC"/> + <param name="cut" value="5"/> + <param name="rename" value="{prefix:1_13_1259/1} barcode={AGATC} adapter={illumina_adapter}"/> + <output name="out1" file="cutadapt_small_rename.out" ftype="fastq"/> + </test> + <!-- Test rename options --> + <test expect_num_outputs="1"> + <param name="type" value="single" /> + <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" /> + <param name="adapter_source_list" value="user"/> + <param name="adapter" value="AGATCGGAAGAGC"/> + <param name="cut" value="5"/> + <param name="rename" value="{prefix:1_13_1259/1} barcode={AGATC} adapter={illumina_adapter}"/> + <output name="out1" file="cutadapt_small_rename.out" ftype="fastq"/> + </test> </tests> <help><![CDATA[ @@ -690,6 +746,30 @@ When parsing the file, be aware that additional columns may be added in the futu If the --times option is used and greater than 1, each read can appear more than once in the info file. There will be one line for each found adapter, all with identical read names. Only for the first of those lines will the concatenation of columns 5-7 be identical to the original read sequence (and accordingly for columns 9-11). For subsequent lines, the shown sequence are the ones that were used in subsequent rounds of adapter trimming, that is, they get successively shorter. + +-------------------- + +**Rename Reads** + +-------------------- + + +The --rename option expects a template string such as {id} extra_info {adapter_name} as a parameter. It can contain regular text and placeholders that consist of a name enclosed in curly braces ({placeholdername}). + +The read name will be set to the template string in which the placeholders are replaced with the actual values relevant for the current read. + +The following placeholders are currently available for single-end reads: + + * {header} – the full, unchanged header + * {id} – the read ID, that is, the part of the header before the first whitespace + * {comment} – the part of the header after the whitespace following the ID + * {adapter_name} – the name of adapter that was found in this read or no_adapter if there was none adapter match. If you use --times to do multiple rounds of adapter matching, this is the name of the last found adapter. + * {cut_prefix} – the prefix removed by the --cut (or -u) option (that is, when used with a positive length argument) + * {cut_suffix} – the suffix removed by the --cut (or -u) option (that is, when used with a negative length argument) + +If the --rename option is used with paired-end data, the template is applied separately to both R1 and R2. That is, for R1, the placeholders are replaced with values from R1, and for R2, the placeholders are replaced with values from R2. For example, {comment} becomes R1’s comment in R1 and it becomes R2’s comment in R2. + + -------------------- **More Information** @@ -712,27 +792,5 @@ See the excellent `Cutadapt documentation`_ Author: Lance Parsons <lparsons@princeton.edu> ]]></help> - - <citations> - <citation type="bibtex"> -@article{marcel_cutadapt_2011, - title = {Cutadapt removes adapter sequences from high-throughput sequencing reads}, - volume = {17}, - copyright = {Authors who publish with this journal agree to the following terms: Authors retain copyright and grant the journal right of first publication with the work simultaneously licensed under a Creative Commons Attribution License that allows others to share the work with an acknowledgement of the work's authorship and initial publication in this journal. Authors are able to enter into separate, additional contractual arrangements for the non-exclusive distribution of the journal's published version of the work (e.g., post it to an institutional repository or publish it in a book), with an acknowledgement of its initial publication in this journal. Authors are permitted and encouraged to post their work online (e.g., in institutional repositories or on their website) prior to and during the submission process, as it can lead to productive exchanges, as well as earlier and greater citation of published work (See The Effect of Open Access ).}, - url = {http://journal.embnet.org/index.php/embnetjournal/article/view/200}, - abstract = {When small RNA is sequenced on current sequencing machines, the resulting reads are usually longer than the RNA and therefore contain parts of the 3' adapter. That adapter must be found and removed error-tolerantly from each read before read mapping. Previous solutions are either hard to use or do not offer required features, in particular support for color space data. As an easy to use alternative, we developed the command-line tool cutadapt, which supports 454, Illumina and SOLiD (color space) data, offers two adapter trimming algorithms, and has other useful features. - -Cutadapt, including its MIT-licensed source code, is available for download at http://code.google.com/p/cutadapt/}, - number = {1}, - urldate = {2011-08-02}, - journal = {EMBnet.journal}, - author = {Marcel, Martin}, - year = {2011}, - note = {When small RNA is sequenced on current sequencing machines, the resulting reads are usually longer than the RNA and therefore contain parts of the 3' adapter. That adapter must be found and removed error-tolerantly from each read before read mapping. Previous solutions are either hard to use or do not offer required features, in particular support for color space data. As an easy to use alternative, we developed the command-line tool cutadapt, which supports 454, Illumina and SOLiD (color space) data, offers two adapter trimming algorithms, and has other useful features. Cutadapt, including its MIT-licensed source code, is available for download at http://code.google.com/p/cutadapt/}, - keywords = {Adapter removal;, fastq, MicroRNA, Sequencing, Small RNA, software}, - file = {Cutadapt removes adapter sequences from high-throughput sequencing reads | Martin | EMBnet.journal:/Users/lparsons/Library/Application Support/Firefox/Profiles/thd2t4je.default/zotero/storage/ZXZT4PSE/200.html:text/html} -} - </citation> - </citations> - + <expand macro="citations" /> </tool> diff --git a/tools/cutadapt/macros.xml b/tools/cutadapt/macros.xml index ef8445bcf5d..9b057d0ecfb 100644 --- a/tools/cutadapt/macros.xml +++ b/tools/cutadapt/macros.xml @@ -1,5 +1,29 @@ <macros> - + <token name="@TOOL_VERSION@">3.4</token> + <token name="@GALAXY_TOOL_VERSION@">galaxy0</token> + <xml name="edam_ontology"> + <edam_topics> + <edam_topic>topic_0632</edam_topic> + </edam_topics> + <edam_operations> + <edam_operation>operation_0231</edam_operation> + </edam_operations> + </xml> + <xml name="requirements"> + <requirements> + <requirement type="package" version="@TOOL_VERSION@">cutadapt</requirement> + </requirements> + </xml> + <xml name="citations"> + <citations> + <citation type="doi">10.14806/ej.17.1.200</citation> + </citations> + </xml> + <xml name="xrefs"> + <xrefs> + <xref type='bio.tools'>cutadapt</xref> + </xrefs> + </xml> <token name="@read1_options@"><![CDATA[ ## Read1 trimming @@ -44,22 +68,22 @@ ## Additional Outputs - #if $output_options.info_file: + #if 'info_file' in $output_selector: --info-file=$info_file #end if - #if $output_options.rest_file: + #if 'rest_file' in $output_selector: --rest-file='${rest_output}' #end if - #if $output_options.wildcard_file: + #if 'wildcard_file' in $output_selector: --wildcard-file='${wild_output}' #end if - #if $output_options.too_short_file: + #if 'too_short_file' in $output_selector: --too-short-output='${too_short_output}' #end if - #if $output_options.too_long_file: + #if 'too_long_file' in $output_selector: --too-long-output='${too_long_output}' #end if - #if $output_options.untrimmed_file: + #if 'untrimmed_file' in $output_selector: --untrimmed-output='${untrimmed_output}' #end if @@ -109,13 +133,13 @@ ## Additional Outputs - Read 2 - #if $output_options.too_short_file: + #if 'too_short_file' in $output_selector: --too-short-paired-output='${too_short_paired_output}' #end if - #if $output_options.too_long_file: + #if 'too_long_file' in $output_selector: --too-long-paired-output='${too_long_paired_output}' #end if - #if $output_options.untrimmed_file: + #if 'untrimmed_file' in $output_selector: --untrimmed-paired-output='${untrimmed_paired_output}' #end if @@ -204,7 +228,7 @@ <param name="front_adapter_source_list" type="select" label="Source"> <option value="builtin" selected="True">Standard (select from the list below)</option> <option value="user">Enter custom sequence</option> - <option value="file">File From History</option> + <option value="file">File from history</option> </param> <when value="user"> @@ -225,7 +249,7 @@ <param name="anywhere_adapter_source_list" type="select" label="Source"> <option value="builtin" selected="True">Standard (select from the list below)</option> <option value="user">Enter custom sequence</option> - <option value="file">File From History</option> + <option value="file">File from history</option> </param> <when value="user"> @@ -260,7 +284,7 @@ <param name="adapter_source_list2" type="select" label="Source" > <option value="builtin" selected="True">Standard (select from the list below)</option> <option value="user">Enter custom sequence</option> - <option value="file">File From History</option> + <option value="file">File from history</option> </param> <when value="user"> diff --git a/tools/cutadapt/test-data/A1.fastq.gz b/tools/cutadapt/test-data/A1.fastq.gz index a1efcc5c411c2055fb8332b67bfb61fdd9ab80e0..a320d511b969d75b05cc7450dbb30ac2c75bc29c 100644 GIT binary patch literal 340 zcmV-a0jvHWiwFQsc(q^v1GQAkZi6royz>>k_uv<HVC6%$E9y#>a`K`1{~zfrPC{}h z0V!QDYkPJrW;Ad-eMIZ+A(9&seTDOP<<FlpIr1*pNJEH$4#UB|IXaOg*Re=NFiVw| zxs+N<;fkBNR6$@%DwY5k*IbTDG!%enLxZps%rB)luIRSHQoHw#r+u+fpYP|KlSW28 zQg{4Q0q2|@C<PD5_c1OKC?&i)_=xhlN+8=LK-WeICS}D}YQ|u+b=#PqY^LkNOp6Mv zh0JqO(%L`wWyLt<gtHW$%!&jsfdk_Z;Q~L#@y-QGr05B?jeR!2{Zs>%Cc(?%!6DpC zU@|AOCIMXFJb54bNTciBO#)@3ey$f<I~5S+z10Q(63rhMFHNfw1Ur(qp|>>pu(+To m2_?rZ@08%lzkn4kua@A^1gsv&_&l;Psrv<Z{4a(M1pok<DW9MK literal 348 zcmV-i0i*sOiwFqobP`+u19WY0UqLZ0W?^%5aR9YcyKciU4BY({-8<-I$u^-O43Vlp zflL~j|NoI5EhkQfx(VRY5-90N!FM?Oa6U%s?GVY0i9W;StMbS9g&cVoY@{*7K*KoL zH%Di(<T@6q2xh6$GM7?oDO@p_OBDo;q+$zz@yz9@L_-0HHZ%xJ!Fnmhbw!UAmfF2{ ze0nW5>ht}YbJEDDN9qp0D&U;6Bc<R0`98)~0;Pmk2Om*hR|(`f3DEVV1T!nXQZoj# z?RjO)=0@M#slZyuJSQcs{c~Sdj8jgyOW~8*kN_rdU>qV`;HNm<xj=~&y`i@Gnhh}i z)PSW)uv<JhgqsOW=47@cfD4=_??WGHa=p7rplsC7b)og50;0U1b-}+x^T*<))20N$ uPULOqElobGE+|Su$#Kj3{tH;)vbO|}CSdhI#^;fZN!<^4{4a(M1polS^QG4S diff --git a/tools/cutadapt/test-data/A2.fastq.gz b/tools/cutadapt/test-data/A2.fastq.gz index 92890f9ba8b1690649b885e063b65d17c10f7ab5..1347273c15fe03862ec60ad5cadbf15f70635266 100644 GIT binary patch literal 326 zcmV-M0lEGkiwFQsc(q^v1I1LkZo@DP-2D~ZJ4lpb*(NlE6;c%_kV!-H|3A_@+j(?| zffPt9o3hBG0Nsi7{`l7W;D=siO!^T|pUvLCPAV!A1oM!5Qt6|-h#u9ebhQ<$)*8%8 zX=ZRMT=)zba14ZiwK)$D(~u4qZ>jv$TC7y8*VMu|!q|&-_u3tvG_vJvmThsm{apzl zfOw5NKj{>w@uC3ekP?Wjlpj-|koUhTU<XUE)!9&h0z?hd6jWjy{Y3(j!qMAu;)f*w z*XKxJ_R}RvTM@ejv$^EVEzvCrf&@?Y1F+rThiery4zgnz{6d1i=mX35v78<Iz%BK# zSp`vo20!*A=X4`M0dsZ&e+UmtaK8~Mw=v8dO5oO;O*5(4aC>Ja?iyW~aj~Mv%8X?0 Yn9Bf`mds3;BPY(?H{~<1VGacV0PK^SJOBUy literal 334 zcmV-U0kQrciwFqzbP`+u19WY0UqLc1W?^%5aRAL!!EVDK487+ocHaRE4M{8x^-#y8 zNj-5`|Nlq!UdftiQY&p*wK;*{XCv_*cJ{}o(FZ?`Ds$48czSL2{B}}Nksz3-<de!6 z<w5kQUS+7QShdzLtdwR3x59-_$PkACLad$h@GuSOaPgMPPp!pD#d=LG!~tV3*2Cj) zxRYhe*(_UkhW%9uAb@y{JHO}>m-(Uq=#UbKtdzf}Kq2oxRlp9GFjnV=0u&%>SeBp? z<LoaIkQ9#I`iXx~1m!*wn0+OBSa}+4i)3@jnd|5+34#Pq_7h^e$xmAqG#c5l4E|{! zSiT<1*|85?uZNpe5G82v^Eh)(pCl+?&Q9PD;TIdBavNdhPy)B!Z0fhlf!q6F;x@E1 g<6?~>D-+4waV`Ul)H5@~w468(@8vVFVGacV0BbRvx&QzG diff --git a/tools/cutadapt/test-data/cutadapt_nextseq_out.fq.gz b/tools/cutadapt/test-data/cutadapt_nextseq_out.fq.gz index 5f779ab26b1bb6e099f15be7fc9ac06a4dde9f10..fdbe9f3688e2787c67f24d29cd11e943d9e901dc 100644 GIT binary patch literal 12158 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 A%m4rY literal 11712 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 WdZyg@qwNi1cK-)8jSD4G(*OWuvsH)y diff --git a/tools/cutadapt/test-data/cutadapt_out1.fq.gz b/tools/cutadapt/test-data/cutadapt_out1.fq.gz index fa79a1d9a2bb3e480bd0b61856ee9b77dc238906..2de8967c5e33f927cfb479cb3f9b352233c3d48b 100644 GIT binary patch literal 54684 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�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 literal 11934 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 diff --git a/tools/cutadapt/test-data/cutadapt_out2.fq.gz b/tools/cutadapt/test-data/cutadapt_out2.fq.gz index e0956d73a3fbf6877e41a9e7a01beab15542436f..cad2e22c0691354bacd0a2cf7f8f81c96989e62d 100644 GIT binary patch literal 54666 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 literal 12009 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 Hiq!xB{#z<; diff --git a/tools/cutadapt/test-data/cutadapt_small_cut.out b/tools/cutadapt/test-data/cutadapt_small_cut.out new file mode 100644 index 00000000000..383b3dbef37 --- /dev/null +++ b/tools/cutadapt/test-data/cutadapt_small_cut.out @@ -0,0 +1,12 @@ +@prefix:1_13_573/1 +GAANTAGCTACCACCCTGATTAGACAAAT ++ +&&&!.1&(6:<'67..*,:75)'77&&&5 +@prefix:1_13_1259/1 +CTANGACGGGTTGGCCCTTAGACGTATCT ++ +A;A!9<<<,7:<=3=;:<&<?<?8<;=<& +@prefix:1_13_1440/1 +TCTNCCCTGCCACATTGCCCTAGTTAAAC ++ +=57!7<';<6?5;;6:+:=)71>70<,=: diff --git a/tools/cutadapt/test-data/cutadapt_small_rename.out b/tools/cutadapt/test-data/cutadapt_small_rename.out new file mode 100644 index 00000000000..59c665cdb87 --- /dev/null +++ b/tools/cutadapt/test-data/cutadapt_small_rename.out @@ -0,0 +1,12 @@ +@__oc__prefix:1_13_1259/1__cc__ barcode=__oc__AGATC__cc__ adapter=__oc__illumina_adapter__cc__ +GAANTAGCTACCACCCTGATTAGACAAAT ++ +&&&!.1&(6:<'67..*,:75)'77&&&5 +@__oc__prefix:1_13_1259/1__cc__ barcode=__oc__AGATC__cc__ adapter=__oc__illumina_adapter__cc__ +CTANGACGGGTTGGCCCTTAGACGTATCT ++ +A;A!9<<<,7:<=3=;:<&<?<?8<;=<& +@__oc__prefix:1_13_1259/1__cc__ barcode=__oc__AGATC__cc__ adapter=__oc__illumina_adapter__cc__ +TCTNCCCTGCCACATTGCCCTAGTTAAAC ++ +=57!7<';<6?5;;6:+:=)71>70<,=: diff --git a/tools/cutadapt/test-data/cutadapt_trimmed.out.gz b/tools/cutadapt/test-data/cutadapt_trimmed.out.gz index ed6fff795865f01c5dec762cf30e91c70af88e20..f5c8147fdb044e3959b45e42e77db70e70598257 100644 GIT binary patch delta 17 YcmbQqGLwZvzMF%gvSMq(Mh-zH04w|i#{d8T delta 17 YcmbQqGLwZvzMF%=v~_vRMh-zH04dJ|egFUf diff --git a/tools/cutadapt/test-data/cutadapt_untrimmed.out.gz b/tools/cutadapt/test-data/cutadapt_untrimmed.out.gz index 2ad9b69756051fb36bafdbb9b8eaf50435d4fdc7..abda24d08a27334357d5be7a3d1e2c559e4fa004 100644 GIT binary patch literal 12095 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 literal 11648 zcmV-`Eq~G<iwFQUg{NEq1MPj=nxe|G_5FI4{c#dcfF<Oad9m;O{`Y^BKSo4m0&2B( z&$-s_u3B`Lg_s~^4kJb!bNb)9X^-dr+}CL<R2%01*EfCB)J=cvnx;SR4u`7wm%5o- z2)COtH)ZIT3LzMyZi+S>Q?yG5jG})$j1J0C73kOvhZS9c_vmE09Pi>>48)l{h=v5( zyW!%2er|YM{JNRI_kisd@R|v@rs7f94LEY+3mATkm#6b+A6GHh$0Zg2B{c4ady{*( z;m7b<H~AxQ`?uS_{^wsBe~*_fEZa<5nE4lP>!ZuT^xDiX@l(GZ5oR|#y6!wX`b-_Y z0lhry5XS_J=C{EWjP=&?$AnEOpEfPKdXT5e+WeAt%dYmD%`L~BJa+?5v=~@*+UtK! zuVB*b56!vny6#Lk3AgxJ^2d%3Qpp6V{KFW*haCV89*B<}b0Z%({aN(!10*uRj3PXz zq4Ws&D1b+xg%O5F8XknRZU6vdC@^X;tALYCuz&~P0APU{#qVKoNd_Iz!!R@$Og9PW z%RS&zzu_d@FW?LS@gCs>*GW^dg2@&WbOZBt%dkm+Aq04L(80OcuU_(6#(IqL>x%{_ z$36CD#!0YvV|rxR@NLk*O3^E0*?1aZ@UfJ}OtgzL`JSEjLFuX@Aktna`@s%_sw29} zvY!;7Q4Kocrs{03s_G4#ocFt3-*ok%VW8l%6WQ<}S#DoivJg-hdh|`EZ4H!rT*PTl z7`cC8D_K6<LPFhVqk^|UoZ&lx`1!eQ_|c1QEpdAKDPIGHG|v9e@0yw=%0D7E)c?KQ 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 K1W#R7(EtFx2$C-V diff --git a/tools/cutadapt/test-data/unknown.fastq.gz b/tools/cutadapt/test-data/unknown.fastq.gz index 838f7ce4d50cb52ef3b5b5699c7e2893d5ac78d7..77584216601babcf242b1241892ab78ad65bf3a3 100644 GIT binary patch delta 18 ZcmdnbxR#MizMF%=w_<Ao1M@_g#Q-s_1y}$8 delta 36 rcmZ3>xSvr*zMF%CrBo<}fw?5NAigv&J1@UHPcJR8xTKI_BG+O7!72-S From 9d469965d9e7513994166025335aabee0308d24e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Crist=C3=B3bal=20Gallardo?= <gallardo@informatik.uni-freiburg.de> Date: Tue, 1 Jun 2021 02:29:35 +0200 Subject: [PATCH 02/20] Update test minimum maximum length --- tools/cutadapt/cutadapt.xml | 4 ++-- tools/cutadapt/test-data/A1.fastq.gz | Bin 340 -> 340 bytes tools/cutadapt/test-data/A2.fastq.gz | Bin 326 -> 326 bytes .../test-data/cutadapt_nextseq_out.fq.gz | Bin 12158 -> 12158 bytes .../test-data/cutadapt_trimmed.out.gz | Bin 537 -> 537 bytes .../test-data/cutadapt_untrimmed.out.gz | Bin 12095 -> 12095 bytes tools/cutadapt/test-data/unknown.fastq.gz | Bin 173 -> 173 bytes 7 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/cutadapt/cutadapt.xml b/tools/cutadapt/cutadapt.xml index 1fb98d550b6..628607ed3c5 100644 --- a/tools/cutadapt/cutadapt.xml +++ b/tools/cutadapt/cutadapt.xml @@ -555,8 +555,8 @@ $read_mod_options.zero_cap <param name="adapter2" value="AGATCGGAAGAGC"/> <section name="filter_options"> <param name="discard_untrimmed" value="true"/> - <param name="min" value="1"/> - <param name="max" value="1000"/> + <param name="minimun_length" value="1"/> + <param name="maximum_length" value="1000"/> <param name="max_n" value="0"/> <param name="pair_filter" value="both"/> </section> diff --git a/tools/cutadapt/test-data/A1.fastq.gz b/tools/cutadapt/test-data/A1.fastq.gz index a320d511b969d75b05cc7450dbb30ac2c75bc29c..5cb14c45dad458afedee2dddf5931087f23d9ee7 100644 GIT binary patch delta 15 Wcmcb@bcKmczMF$Vwq_%nA0q%Hn*;;^ delta 15 Wcmcb@bcKmczMF%=w_+okA0q%Irvxwn diff --git a/tools/cutadapt/test-data/A2.fastq.gz b/tools/cutadapt/test-data/A2.fastq.gz index 1347273c15fe03862ec60ad5cadbf15f70635266..d6c4b5006d0ab868313e1a98a56dfca458bfd957 100644 GIT binary patch delta 15 WcmX@cbc~5jzMF$Vwq_%n10w(;_XFAh delta 15 WcmX@cbc~5jzMF%=w_+ok10w(=0|W*D diff --git a/tools/cutadapt/test-data/cutadapt_nextseq_out.fq.gz b/tools/cutadapt/test-data/cutadapt_nextseq_out.fq.gz index fdbe9f3688e2787c67f24d29cd11e943d9e901dc..9e773cbc88c0eb29196ae46b305ef2b6080d332b 100644 GIT binary patch delta 15 Wcmewt_b-l3zMF&LUiC({3Vi@Kjs_?I delta 15 Wcmewt_b-l3zMF%Aw_+n(g+2f>nFUk; diff --git a/tools/cutadapt/test-data/cutadapt_trimmed.out.gz b/tools/cutadapt/test-data/cutadapt_trimmed.out.gz index f5c8147fdb044e3959b45e42e77db70e70598257..a03b905a25c5081254b98a4be9cd5f7f5884e9c7 100644 GIT binary patch delta 15 WcmbQqGLwZ(zMF%=yJjPsFcSbC`U8dl delta 15 WcmbQqGLwZ(zMF%gvSK5fFcSbD`U9{4 diff --git a/tools/cutadapt/test-data/cutadapt_untrimmed.out.gz b/tools/cutadapt/test-data/cutadapt_untrimmed.out.gz index abda24d08a27334357d5be7a3d1e2c559e4fa004..e07fdd2f3d491369f6b01219d147654a2a03849f 100644 GIT binary patch delta 15 WcmdlVw?B?ezMF%=yJjPsr9J>GzXaI; delta 15 WcmdlVw?B?ezMF%gvSK5fr9J>HzXbyT diff --git a/tools/cutadapt/test-data/unknown.fastq.gz b/tools/cutadapt/test-data/unknown.fastq.gz index 77584216601babcf242b1241892ab78ad65bf3a3..bf1313d639a536c1bccb5b17c4d35ece8c138f34 100644 GIT binary patch delta 14 VcmZ3>xR#MkzMF$Vwq_#RasV8H1MC0* delta 14 VcmZ3>xR#MkzMF%=w_+mOasVA-1Q-AS From f9875ae94521275ea3ba323937563c847a3599a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Crist=C3=B3bal=20Gallardo?= <gallardo@informatik.uni-freiburg.de> Date: Tue, 1 Jun 2021 02:30:50 +0200 Subject: [PATCH 03/20] Increase default cores --- tools/cutadapt/cutadapt.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/cutadapt/cutadapt.xml b/tools/cutadapt/cutadapt.xml index 628607ed3c5..9d0db37eeb1 100644 --- a/tools/cutadapt/cutadapt.xml +++ b/tools/cutadapt/cutadapt.xml @@ -77,7 +77,7 @@ ln -f -s '${input_1}' '$read1' && cutadapt --j=\${GALAXY_SLOTS:-1} +-j=\${GALAXY_SLOTS:-4} #if str( $library.type ) == "single": @read1_options@ From 841f1405e72f920bda5851bafd6179ff383e19eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Crist=C3=B3bal=20Gallardo?= <gallardo@informatik.uni-freiburg.de> Date: Tue, 1 Jun 2021 16:30:52 +0200 Subject: [PATCH 04/20] Update tests --- tools/cutadapt/cutadapt.xml | 165 ++++++++++++++---- tools/cutadapt/test-data/A1.fastq.gz | Bin 340 -> 340 bytes tools/cutadapt/test-data/A2.fastq.gz | Bin 326 -> 326 bytes .../test-data/bwa-mem-fastq1_assimetric.fq.gz | Bin 0 -> 11764 bytes .../test-data/bwa-mem-fastq2_assimetric.fq.gz | Bin 0 -> 11747 bytes .../test-data/cutadapt_action_lowercase.out | 12 ++ .../test-data/cutadapt_action_mask.out | 12 ++ .../test-data/cutadapt_action_none.out | 12 ++ .../test-data/cutadapt_action_retain.out | 12 ++ .../test-data/cutadapt_nextseq_out.fq.gz | Bin 12158 -> 12158 bytes tools/cutadapt/test-data/cutadapt_revcomp.out | 12 ++ .../test-data/cutadapt_trimmed.out.gz | Bin 537 -> 537 bytes .../test-data/cutadapt_untrimmed.out.gz | Bin 12095 -> 12095 bytes tools/cutadapt/test-data/unknown.fastq.gz | Bin 173 -> 173 bytes 14 files changed, 194 insertions(+), 31 deletions(-) create mode 100644 tools/cutadapt/test-data/bwa-mem-fastq1_assimetric.fq.gz create mode 100644 tools/cutadapt/test-data/bwa-mem-fastq2_assimetric.fq.gz create mode 100644 tools/cutadapt/test-data/cutadapt_action_lowercase.out create mode 100644 tools/cutadapt/test-data/cutadapt_action_mask.out create mode 100644 tools/cutadapt/test-data/cutadapt_action_none.out create mode 100644 tools/cutadapt/test-data/cutadapt_action_retain.out create mode 100644 tools/cutadapt/test-data/cutadapt_revcomp.out diff --git a/tools/cutadapt/cutadapt.xml b/tools/cutadapt/cutadapt.xml index 9d0db37eeb1..61acf3e7e13 100644 --- a/tools/cutadapt/cutadapt.xml +++ b/tools/cutadapt/cutadapt.xml @@ -109,12 +109,12 @@ $adapter_options.revcomp $filter_options.discard_trimmed $filter_options.discard_untrimmed -#if str($filter_options.minimum_options.minimum_r2): +#if str($filter_options.minimum_options.minimum_r2) == 'true': --minimum-length=$filter_options.minimum_length:$filter_options.minimum_options.value_minimum #elif str($filter_options.minimum_length) --minimum-length=$filter_options.minimum_length #end if -#if str($filter_options.maximum_options.maximum_r2): +#if str($filter_options.maximum_options.maximum_r2) == 'true': --maximum-length=$filter_options.maximum_length:$filter_options.maximum_options.value_maximum #elif str($filter_options.maximum_length) --maximum-length=$filter_options.maximum_length @@ -196,7 +196,7 @@ $read_mod_options.zero_cap <param name="action" type="select" label="What to do if a match is found"> <option value="trim" selected="True">Trim: trim adapter and upstream or downstream sequence</option> <option value="retain">Retain: the read is trimmed, but the adapter sequence is not removed</option> - <option value="mask">Mask: madapters with 'N' characters instead of trimming them</option> + <option value="mask">Mask: mask adapters with 'N' characters instead of trimming them</option> <option value="lowercase">Lowercase: convert to lowercase</option> <option value="none">None: leave unchanged</option> </param> @@ -221,30 +221,32 @@ $read_mod_options.zero_cap <conditional name="minimum_options"> <param name="minimum_r2" type="select" label="Specify a minimum length for reverse reads (R2)" help="When trimming paired-end reads, the minimum lengths for R1 and R2 can be specified separately. If not provided, the same minimum length applies to both reads."> <option value="true">Enable</option> - <option value="" selected="True">Disable</option> + <option value="false" selected="True">Disable</option> </param> <when value="true"> <param name="value_minimum" type="integer" min="0" optional="True" value="" label="Minimum length" /> </when> - <when value=""> + <when value="false"> </when> </conditional> <param argument="--maximum-length" type="integer" min="0" optional="True" value="" 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." /> <conditional name="maximum_options"> <param name="maximum_r2" type="select" label="Specify a maximum length for reverse reads (R2)" help="When trimming paired-end reads, the maximum lengths for R1 and R2 can be specified separately. If not provided, the same maximum length applies to both reads."> <option value="true">Enable</option> - <option value="" selected="True">Disable</option> + <option value="false" selected="True">Disable</option> </param> <when value="true"> <param name="value_maximum" type="integer" min="0" optional="True" value="" label="Maximum length" /> </when> - <when value=""> + <when value="false"> </when> </conditional> <param argument="--max-n" type="float" min="0" optional="True" label="Max N" help="Discard reads with more than this number of 'N' bases. A number between 0 and 1 is interpreted as a fraction of the read length." /> <param argument="--pair-filter" type="select" optional="True" label="Pair filter" help="Which of the reads in a paired-end read have to match the filtering criterion in order for the pair to be filtered. Default: any"> - <option value="any" selected="True">any</option> - <option value="both">both</option> + <option value="any" selected="True">Any: a read pair is discarded (or redirected) if one of the reads (R1 or R2) fulfills the filtering criterion. </option> + <option value="both">Both: filtering criteria must apply to both reads in order for a read pair to be discarded. </option> + <option value="first">First: will make a decision about the read pair by inspecting whether the filtering criterion applies to the first read, ignoring the second read.</option> + </param> <param argument="--max-expected-errors" type="integer" min="0" optional="True" value="" label="Max expected errors" help="Discard reads whose expected number of errors (computed from quality values) exceeds this value." /> <param argument="--discard-cassava" type="boolean" truevalue="--discard-cassava" falsevalue="" checked="False" label="Discard CASAVA filtering" help="Discard reads that did not pass CASAVA filtering (header has :Y:)." /> @@ -586,15 +588,111 @@ $read_mod_options.zero_cap <param name="rename" value="{prefix:1_13_1259/1} barcode={AGATC} adapter={illumina_adapter}"/> <output name="out1" file="cutadapt_small_rename.out" ftype="fastq"/> </test> - <!-- Test rename options --> + <!-- Test action options --> + <test expect_num_outputs="1"> + <param name="type" value="single" /> + <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" /> + <param name="adapter_source_list" value="user"/> + <param name="adapter" value="CGTCCGAANTAG"/> + <param name="action" value="retain"/> + <output name="out1" file="cutadapt_action_retain.out" ftype="fastq"/> + </test> + <test expect_num_outputs="1"> + <param name="type" value="single" /> + <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" /> + <param name="adapter_source_list" value="user"/> + <param name="adapter" value="CGTCCGAANTAG"/> + <param name="action" value="mask"/> + <output name="out1" file="cutadapt_action_mask.out" ftype="fastq"/> + </test> + <test expect_num_outputs="1"> + <param name="type" value="single" /> + <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" /> + <param name="adapter_source_list" value="user"/> + <param name="adapter" value="CGTCCGAANTAG"/> + <param name="action" value="lowercase"/> + <output name="out1" file="cutadapt_action_lowercase.out" ftype="fastq"/> + </test> + <test expect_num_outputs="1"> + <param name="type" value="single" /> + <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" /> + <param name="adapter_source_list" value="user"/> + <param name="adapter" value="CGTCCGAANTAG"/> + <param name="action" value="none"/> + <output name="out1" file="cutadapt_action_none.out" ftype="fastq"/> + </test> + <!-- Test revcomp options --> <test expect_num_outputs="1"> <param name="type" value="single" /> <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" /> <param name="adapter_source_list" value="user"/> + <param name="adapter" value="TAAACAGATTAGT"/> + <param name="revcomp" value="true"/> + <output name="out1" file="cutadapt_revcomp.out" ftype="fastq"/> + </test> + <!-- Test minimum lenghth paired-reads --> + <test expect_num_outputs="2"> + <param name="type" value="paired" /> + <param name="input_1" ftype="fastq.gz" value="bwa-mem-fastq1_assimetric.fq.gz" /> + <param name="input_2" ftype="fastq.gz" value="bwa-mem-fastq2_assimetric.fq.gz" /> + <param name="adapter_source_list" value="user"/> <param name="adapter" value="AGATCGGAAGAGC"/> - <param name="cut" value="5"/> - <param name="rename" value="{prefix:1_13_1259/1} barcode={AGATC} adapter={illumina_adapter}"/> - <output name="out1" file="cutadapt_small_rename.out" ftype="fastq"/> + <param name="adapter_source_list2" value="user"/> + <param name="adapter2" value="AGATCGGAAGAGC"/> + <section name="filter_options"> + <param name="minimun_length" value="30"/> + <param name="pair_filter" value="both"/> + <conditional name="minimum_option"> + <param name="minimum_r2" value="true"/> + <param name="value_minimum" value="10"/> + </conditional> + </section> + <output name="out1" ftype="fastq.gz"> + <assert_contents> + <has_size value="12180"/> + </assert_contents> + </output> + <output name="out2" ftype="fastq.gz"> + <assert_contents> + <has_size value="12153"/> + </assert_contents> + </output> + <assert_command> + <has_text text="--minimum-length=30:10"/> + <has_text text="--pair-filter=both"/> + </assert_command> + </test> + <!-- Test maximum lenghth paired-reads --> + <test expect_num_outputs="2"> + <param name="type" value="paired" /> + <param name="input_1" ftype="fastq.gz" value="bwa-mem-fastq1_assimetric.fq.gz" /> + <param name="input_2" ftype="fastq.gz" value="bwa-mem-fastq2_assimetric.fq.gz" /> + <param name="adapter_source_list" value="user"/> + <param name="adapter" value="AGATCGGAAGAGC"/> + <param name="adapter_source_list2" value="user"/> + <param name="adapter2" value="AGATCGGAAGAGC"/> + <section name="filter_options"> + <param name="pair_filter" value="both"/> + <param name="maximum_length" value="50"/> + <conditional name="maximum_option"> + <param name="maximum_r2" value="true"/> + <param name="value_maximum" value="30"/> + </conditional> + </section> + <output name="out1" ftype="fastq.gz"> + <assert_contents> + <has_size value="134"/> + </assert_contents> + </output> + <output name="out2" ftype="fastq.gz"> + <assert_contents> + <has_size value="139"/> + </assert_contents> + </output> + <assert_command> + <has_text text="--maximum-length=50:30"/> + <has_text text="--pair-filter=both"/> + </assert_command> </test> </tests> @@ -694,25 +792,30 @@ Cutadapt can output per-adapter statistics if you select to output the report ab Example: - *This is cutadapt 1.16 with Python 3.6.4* - - *Command line parameters: -j 1 --format=fastq -a AGATCGGAAGAGC --info-file=/tmp/tmpX0DlY1/files/000/dataset_21.dat --output=out1.fq --error-rate=0.1 --times=1 --overlap=3 input_f.fastq* - *Running on 1 core* - *Trimming 1 adapter with at most 10.0% errors in single-end mode ...* - *Finished in 0.00 s (1426 us/read; 0.04 M reads/minute).* - - *=== Summary ===* - - * Total reads processed: 3* - * Reads with adapters: 0 (0.0%)* - * Reads written (passing filters): 3 (100.0%)* - - * Total basepairs processed: 102 bp* - * Total written (filtered): 102 bp (100.0%)* - - *=== Adapter 1 ===* + :: + + This is cutadapt 3.4 with Python 3.9.2 - *Sequence: AGATCGGAAGAGC; Type: regular 3'; Length: 13; Trimmed: 0 times.* + Command line parameters: -j=1 -a AGATCGGAAGAGC -A AGATCGGAAGAGC --output=out1.fq.gz --paired-output=out2.fq.gz --error-rate=0.1 --times=1 + --overlap=3 --action=trim --minimum-length=30:40 --pair-filter=both --cut=0 bwa-mem-fastq1_assimetric_fq_gz.fq.gz bwa-mem-fastq2_assimetric_fq_gz.fq.gz + + Processing reads on 1 core in paired-end mode ... + Finished in 0.01 s (129 µs/read; 0.46 M reads/minute). + + === Summary === + + Total read pairs processed: 99 + Read 1 with adapter: 2 (2.0%) + Read 2 with adapter: 4 (4.0%) + Pairs that were too short: 3 (3.0%) + Pairs written (passing filters): 96 (97.0%) + + Total basepairs processed: 48,291 bp + Read 1: 24,147 bp + Read 2: 24,144 bp + Total written (filtered): 48,171 bp (99.8%) + Read 1: 24,090 bp + Read 2: 24,081 bp **Info file** diff --git a/tools/cutadapt/test-data/A1.fastq.gz b/tools/cutadapt/test-data/A1.fastq.gz index 5cb14c45dad458afedee2dddf5931087f23d9ee7..e8c0e369417c5b11dc18023839d11b8f0488fa13 100644 GIT binary patch delta 16 Xcmcb@bcKmszMF&Lr1iFq?7oZuE@A~H delta 16 Xcmcb@bcKmszMF$Vwr1-_c3(ySD=!4P diff --git a/tools/cutadapt/test-data/A2.fastq.gz b/tools/cutadapt/test-data/A2.fastq.gz index d6c4b5006d0ab868313e1a98a56dfca458bfd957..87222d183c4ddd81e6ddaba2f6fb2bbfbc62b01e 100644 GIT binary patch delta 16 XcmX@cbc~5zzMF&Lr1iFq?DmWRETRPb delta 16 XcmX@cbc~5zzMF$Vwr1-_c6&wuDQ^Uj diff --git a/tools/cutadapt/test-data/bwa-mem-fastq1_assimetric.fq.gz b/tools/cutadapt/test-data/bwa-mem-fastq1_assimetric.fq.gz new file mode 100644 index 0000000000000000000000000000000000000000..dbabab15969faa6ae86f1397eb7b7115a56fd805 GIT binary patch literal 11764 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 WCn|T&Y5NG6N&g>GOb^~H&;S5s)3#p# literal 0 HcmV?d00001 diff --git a/tools/cutadapt/test-data/bwa-mem-fastq2_assimetric.fq.gz b/tools/cutadapt/test-data/bwa-mem-fastq2_assimetric.fq.gz new file mode 100644 index 0000000000000000000000000000000000000000..1765ba047e05606ca6b921ae92d0e45e093e6d60 GIT binary patch literal 11747 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 F008rg<c0tM literal 0 HcmV?d00001 diff --git a/tools/cutadapt/test-data/cutadapt_action_lowercase.out b/tools/cutadapt/test-data/cutadapt_action_lowercase.out new file mode 100644 index 00000000000..767ca2279af --- /dev/null +++ b/tools/cutadapt/test-data/cutadapt_action_lowercase.out @@ -0,0 +1,12 @@ +@prefix:1_13_573/1 +CGTCCGAANTAGCTACCACCCTGATTAGACAAAT ++ +)3%)&&&&!.1&(6:<'67..*,:75)'77&&&5 +@prefix:1_13_1259/1 +AGCCGCTANGACGGGTTGGCCCTTAGACGTATCT ++ +;<:&:A;A!9<<<,7:<=3=;:<&<?<?8<;=<& +@prefix:1_13_1440/1 +CAAGATCTNCCCTGCCACATTGCCCTAGTTAAAC ++ +<=A:A=57!7<';<6?5;;6:+:=)71>70<,=: diff --git a/tools/cutadapt/test-data/cutadapt_action_mask.out b/tools/cutadapt/test-data/cutadapt_action_mask.out new file mode 100644 index 00000000000..767ca2279af --- /dev/null +++ b/tools/cutadapt/test-data/cutadapt_action_mask.out @@ -0,0 +1,12 @@ +@prefix:1_13_573/1 +CGTCCGAANTAGCTACCACCCTGATTAGACAAAT ++ +)3%)&&&&!.1&(6:<'67..*,:75)'77&&&5 +@prefix:1_13_1259/1 +AGCCGCTANGACGGGTTGGCCCTTAGACGTATCT ++ +;<:&:A;A!9<<<,7:<=3=;:<&<?<?8<;=<& +@prefix:1_13_1440/1 +CAAGATCTNCCCTGCCACATTGCCCTAGTTAAAC ++ +<=A:A=57!7<';<6?5;;6:+:=)71>70<,=: diff --git a/tools/cutadapt/test-data/cutadapt_action_none.out b/tools/cutadapt/test-data/cutadapt_action_none.out new file mode 100644 index 00000000000..767ca2279af --- /dev/null +++ b/tools/cutadapt/test-data/cutadapt_action_none.out @@ -0,0 +1,12 @@ +@prefix:1_13_573/1 +CGTCCGAANTAGCTACCACCCTGATTAGACAAAT ++ +)3%)&&&&!.1&(6:<'67..*,:75)'77&&&5 +@prefix:1_13_1259/1 +AGCCGCTANGACGGGTTGGCCCTTAGACGTATCT ++ +;<:&:A;A!9<<<,7:<=3=;:<&<?<?8<;=<& +@prefix:1_13_1440/1 +CAAGATCTNCCCTGCCACATTGCCCTAGTTAAAC ++ +<=A:A=57!7<';<6?5;;6:+:=)71>70<,=: diff --git a/tools/cutadapt/test-data/cutadapt_action_retain.out b/tools/cutadapt/test-data/cutadapt_action_retain.out new file mode 100644 index 00000000000..767ca2279af --- /dev/null +++ b/tools/cutadapt/test-data/cutadapt_action_retain.out @@ -0,0 +1,12 @@ +@prefix:1_13_573/1 +CGTCCGAANTAGCTACCACCCTGATTAGACAAAT ++ +)3%)&&&&!.1&(6:<'67..*,:75)'77&&&5 +@prefix:1_13_1259/1 +AGCCGCTANGACGGGTTGGCCCTTAGACGTATCT ++ +;<:&:A;A!9<<<,7:<=3=;:<&<?<?8<;=<& +@prefix:1_13_1440/1 +CAAGATCTNCCCTGCCACATTGCCCTAGTTAAAC ++ +<=A:A=57!7<';<6?5;;6:+:=)71>70<,=: diff --git a/tools/cutadapt/test-data/cutadapt_nextseq_out.fq.gz b/tools/cutadapt/test-data/cutadapt_nextseq_out.fq.gz index 9e773cbc88c0eb29196ae46b305ef2b6080d332b..a5cc399b1d1a68a7c806213aa8d91f72032f9b53 100644 GIT binary patch delta 16 Xcmewt_b-lJzMF%g+j`qZ_HumyJT3-I delta 16 Xcmewt_b-lJzMF&LUiH?E?B)6ZKkf$J diff --git a/tools/cutadapt/test-data/cutadapt_revcomp.out b/tools/cutadapt/test-data/cutadapt_revcomp.out new file mode 100644 index 00000000000..78889906185 --- /dev/null +++ b/tools/cutadapt/test-data/cutadapt_revcomp.out @@ -0,0 +1,12 @@ +@prefix:1_13_573/1 +CGTCCGAANTAGCTACCACCCTGATTAGACAAAT ++ +)3%)&&&&!.1&(6:<'67..*,:75)'77&&&5 +@prefix:1_13_1259/1 +AGCCGCTANGACGGGTTGGCCCTTAGACGTATCT ++ +;<:&:A;A!9<<<,7:<=3=;:<&<?<?8<;=<& +@prefix:1_13_1440/1 +CAAGATCTNCCCTGCCACATTGCCCTAGT ++ +<=A:A=57!7<';<6?5;;6:+:=)71>7 diff --git a/tools/cutadapt/test-data/cutadapt_trimmed.out.gz b/tools/cutadapt/test-data/cutadapt_trimmed.out.gz index a03b905a25c5081254b98a4be9cd5f7f5884e9c7..a3dc7d22690c1d3067a07df0a4606640d277f350 100644 GIT binary patch delta 16 XcmbQqGLwZ}zMF&LyY;q>>_SWcD18K| delta 16 XcmbQqGLwZ}zMF%=yJqV~b|EGJB}xQ5 diff --git a/tools/cutadapt/test-data/cutadapt_untrimmed.out.gz b/tools/cutadapt/test-data/cutadapt_untrimmed.out.gz index e07fdd2f3d491369f6b01219d147654a2a03849f..ea8a361655da60e2a8a62851b0537c80b6c697f5 100644 GIT binary patch delta 16 XcmdlVw?B?uzMF&LyY;q>>=ya}H$nyb delta 16 XcmdlVw?B?uzMF%=yJqV~b_;y~G!F%j diff --git a/tools/cutadapt/test-data/unknown.fastq.gz b/tools/cutadapt/test-data/unknown.fastq.gz index bf1313d639a536c1bccb5b17c4d35ece8c138f34..8f72df89453d2ee619707d46812c5f7595e6b2ba 100644 GIT binary patch delta 15 WcmZ3>xR#M!zMF&Lr1iFm?8^Wo*98s$ delta 15 WcmZ3>xR#M!zMF$Vwr1-@_GJJf5CozC From 838f0817c6de701b4c19ee76ff63619a1f9a729c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Crist=C3=B3bal=20Gallardo?= <gallardo@informatik.uni-freiburg.de> Date: Tue, 1 Jun 2021 16:55:40 +0200 Subject: [PATCH 05/20] Update tests max and min length --- tools/cutadapt/cutadapt.xml | 28 ++++-------------- tools/cutadapt/test-data/A1.fastq.gz | Bin 340 -> 340 bytes tools/cutadapt/test-data/A2.fastq.gz | Bin 326 -> 326 bytes .../test-data/cutadapt_action_lowercase.out | 2 +- .../test-data/cutadapt_action_mask.out | 2 +- .../test-data/cutadapt_action_retain.out | 4 +-- .../test-data/cutadapt_nextseq_out.fq.gz | Bin 12158 -> 12158 bytes .../test-data/cutadapt_out1_max_length.fq.gz | Bin 0 -> 134 bytes .../test-data/cutadapt_out1_min_length.fq.gz | Bin 0 -> 12155 bytes .../test-data/cutadapt_out2_max_length.fq.gz | Bin 0 -> 139 bytes .../test-data/cutadapt_out2_min_length.fq.gz | Bin 0 -> 12138 bytes .../test-data/cutadapt_trimmed.out.gz | Bin 537 -> 537 bytes .../test-data/cutadapt_untrimmed.out.gz | Bin 12095 -> 12095 bytes tools/cutadapt/test-data/unknown.fastq.gz | Bin 173 -> 173 bytes 14 files changed, 10 insertions(+), 26 deletions(-) create mode 100644 tools/cutadapt/test-data/cutadapt_out1_max_length.fq.gz create mode 100644 tools/cutadapt/test-data/cutadapt_out1_min_length.fq.gz create mode 100644 tools/cutadapt/test-data/cutadapt_out2_max_length.fq.gz create mode 100644 tools/cutadapt/test-data/cutadapt_out2_min_length.fq.gz diff --git a/tools/cutadapt/cutadapt.xml b/tools/cutadapt/cutadapt.xml index 61acf3e7e13..fe88415053c 100644 --- a/tools/cutadapt/cutadapt.xml +++ b/tools/cutadapt/cutadapt.xml @@ -642,21 +642,13 @@ $read_mod_options.zero_cap <section name="filter_options"> <param name="minimun_length" value="30"/> <param name="pair_filter" value="both"/> - <conditional name="minimum_option"> + <conditional name="minimum_options"> <param name="minimum_r2" value="true"/> <param name="value_minimum" value="10"/> </conditional> </section> - <output name="out1" ftype="fastq.gz"> - <assert_contents> - <has_size value="12180"/> - </assert_contents> - </output> - <output name="out2" ftype="fastq.gz"> - <assert_contents> - <has_size value="12153"/> - </assert_contents> - </output> + <output name="out1" decompress="True" file="cutadapt_out1_min_length.fq.gz" ftype="fastq.gz"/> + <output name="out2" decompress="True" file="cutadapt_out2_min_length.fq.gz" ftype="fastq.gz"/> <assert_command> <has_text text="--minimum-length=30:10"/> <has_text text="--pair-filter=both"/> @@ -674,21 +666,13 @@ $read_mod_options.zero_cap <section name="filter_options"> <param name="pair_filter" value="both"/> <param name="maximum_length" value="50"/> - <conditional name="maximum_option"> + <conditional name="maximum_options"> <param name="maximum_r2" value="true"/> <param name="value_maximum" value="30"/> </conditional> </section> - <output name="out1" ftype="fastq.gz"> - <assert_contents> - <has_size value="134"/> - </assert_contents> - </output> - <output name="out2" ftype="fastq.gz"> - <assert_contents> - <has_size value="139"/> - </assert_contents> - </output> + <output name="out1" decompress="True" file="cutadapt_out1_max_length.fq.gz" ftype="fastq.gz"/> + <output name="out2" decompress="True" file="cutadapt_out2_max_length.fq.gz" ftype="fastq.gz"/> <assert_command> <has_text text="--maximum-length=50:30"/> <has_text text="--pair-filter=both"/> diff --git a/tools/cutadapt/test-data/A1.fastq.gz b/tools/cutadapt/test-data/A1.fastq.gz index e8c0e369417c5b11dc18023839d11b8f0488fa13..1635e3cc999c2a60c131ac85df585770c8fa803d 100644 GIT binary patch delta 15 Wcmcb@bcKmczMF%=#BC#+A0q%H7X#%0 delta 15 Wcmcb@bcKmczMF&Lr1eHNKSls2UIcFd diff --git a/tools/cutadapt/test-data/A2.fastq.gz b/tools/cutadapt/test-data/A2.fastq.gz index 87222d183c4ddd81e6ddaba2f6fb2bbfbc62b01e..4e4bb5ce630e4718f5c87e20e692c25b5d8892e3 100644 GIT binary patch delta 15 WcmX@cbc~5jzMF%=#BC#+10w(;a|62o delta 15 WcmX@cbc~5jzMF&Lr1eHN2SxxTx&%c4 diff --git a/tools/cutadapt/test-data/cutadapt_action_lowercase.out b/tools/cutadapt/test-data/cutadapt_action_lowercase.out index 767ca2279af..927187c4252 100644 --- a/tools/cutadapt/test-data/cutadapt_action_lowercase.out +++ b/tools/cutadapt/test-data/cutadapt_action_lowercase.out @@ -1,5 +1,5 @@ @prefix:1_13_573/1 -CGTCCGAANTAGCTACCACCCTGATTAGACAAAT +cgtccgaantagctaccaccctgattagacaaat + )3%)&&&&!.1&(6:<'67..*,:75)'77&&&5 @prefix:1_13_1259/1 diff --git a/tools/cutadapt/test-data/cutadapt_action_mask.out b/tools/cutadapt/test-data/cutadapt_action_mask.out index 767ca2279af..4a74f4fc477 100644 --- a/tools/cutadapt/test-data/cutadapt_action_mask.out +++ b/tools/cutadapt/test-data/cutadapt_action_mask.out @@ -1,5 +1,5 @@ @prefix:1_13_573/1 -CGTCCGAANTAGCTACCACCCTGATTAGACAAAT +NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN + )3%)&&&&!.1&(6:<'67..*,:75)'77&&&5 @prefix:1_13_1259/1 diff --git a/tools/cutadapt/test-data/cutadapt_action_retain.out b/tools/cutadapt/test-data/cutadapt_action_retain.out index 767ca2279af..63a354ebefe 100644 --- a/tools/cutadapt/test-data/cutadapt_action_retain.out +++ b/tools/cutadapt/test-data/cutadapt_action_retain.out @@ -1,7 +1,7 @@ @prefix:1_13_573/1 -CGTCCGAANTAGCTACCACCCTGATTAGACAAAT +CGTCCGAANTAG + -)3%)&&&&!.1&(6:<'67..*,:75)'77&&&5 +)3%)&&&&!.1& @prefix:1_13_1259/1 AGCCGCTANGACGGGTTGGCCCTTAGACGTATCT + diff --git a/tools/cutadapt/test-data/cutadapt_nextseq_out.fq.gz b/tools/cutadapt/test-data/cutadapt_nextseq_out.fq.gz index a5cc399b1d1a68a7c806213aa8d91f72032f9b53..80c3d43467770d941abfbf95029ab645efcbf5d4 100644 GIT binary patch delta 15 Wcmewt_b-l3zMF&Li|a<V3Vi@K1O^BI delta 15 Wcmewt_b-l3zMF%g+j=8gg+2f@Tm_W? diff --git a/tools/cutadapt/test-data/cutadapt_out1_max_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out1_max_length.fq.gz new file mode 100644 index 0000000000000000000000000000000000000000..16ee3977765cee609b89cbd42d0a2cc529c51f27 GIT binary patch literal 134 zcmV;10D1o(iwFQdO15AC1C7qH4udcZgyB7}QdP|bf*en{t}qLm)%SmtIur(`_Semy zZr(D6iI_N_-DR-#&0rvdrv@;US|3Q_>Spe$E}CxXsnPPy()^3USV7!cqp*UJV-{d& o(mOT#$D^?nM#~jD828jfFE2e{-EY2n9X?vq2Zo3SUi<(60D`tZI{*Lx literal 0 HcmV?d00001 diff --git a/tools/cutadapt/test-data/cutadapt_out1_min_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out1_min_length.fq.gz new file mode 100644 index 0000000000000000000000000000000000000000..d2b182f3b1876854bdb58d04512afff6988b59ef GIT binary patch literal 12155 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 literal 0 HcmV?d00001 diff --git a/tools/cutadapt/test-data/cutadapt_out2_max_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out2_max_length.fq.gz new file mode 100644 index 0000000000000000000000000000000000000000..0627bf4b7648059444225466d0ec8a86d3bb8a76 GIT binary patch literal 139 zcmV;60CfK!iwFQdO15AC1C5Tc4#O}AM0b9rs^W9v2s2csNTEwNtN;Hg#jY}^C+=W+ zM|&r%I}1xXb=TEjAAtY~vR6Pjm$GE)=4QRC#g6P2SJ*v<ZiEMh+Dx53nG3b6B5VaL twN{QM(*bww?iyqpI)3>FiMN~uH5Ck0e5&denCAo>Mqdygd!qIL0033bI^h5S literal 0 HcmV?d00001 diff --git a/tools/cutadapt/test-data/cutadapt_out2_min_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out2_min_length.fq.gz new file mode 100644 index 0000000000000000000000000000000000000000..067a3d0cd4b115b6b5cd59d9ba27a078cb318c60 GIT binary patch literal 12138 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 literal 0 HcmV?d00001 diff --git a/tools/cutadapt/test-data/cutadapt_trimmed.out.gz b/tools/cutadapt/test-data/cutadapt_trimmed.out.gz index a3dc7d22690c1d3067a07df0a4606640d277f350..5adaf22b4068071be4ac95d0fb38fbfba90a0c6f 100644 GIT binary patch delta 15 WcmbQqGLwZ(zMF#~(QPA}FcSbCa06xl delta 15 WcmbQqGLwZ(zMF&LyY)skVI}|}y#w(8 diff --git a/tools/cutadapt/test-data/cutadapt_untrimmed.out.gz b/tools/cutadapt/test-data/cutadapt_untrimmed.out.gz index ea8a361655da60e2a8a62851b0537c80b6c697f5..6b9e56db4e06c688287bfdc6fca4151e87173fea 100644 GIT binary patch delta 15 WcmdlVw?B?ezMF#~(QPA}r9J>GH3Yc; delta 15 WcmdlVw?B?ezMF&LyY)skOML(@f(1kX diff --git a/tools/cutadapt/test-data/unknown.fastq.gz b/tools/cutadapt/test-data/unknown.fastq.gz index 8f72df89453d2ee619707d46812c5f7595e6b2ba..13b4154300f7aaa2371c3eb1d1254d55ab0d0ba2 100644 GIT binary patch delta 14 VcmZ3>xR#MkzMF%=#BCzmasV711I+*c delta 14 VcmZ3>xR#MkzMF&Lr1eC$<p3Vq1Xln6 From 8927ff7e590c7930ce9866ddceef49cdfd3e3e86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Crist=C3=B3bal=20Gallardo?= <gallardo@informatik.uni-freiburg.de> Date: Tue, 1 Jun 2021 17:00:15 +0200 Subject: [PATCH 06/20] Fix typo --- tools/cutadapt/cutadapt.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/cutadapt/cutadapt.xml b/tools/cutadapt/cutadapt.xml index fe88415053c..b14dbd31a77 100644 --- a/tools/cutadapt/cutadapt.xml +++ b/tools/cutadapt/cutadapt.xml @@ -640,7 +640,7 @@ $read_mod_options.zero_cap <param name="adapter_source_list2" value="user"/> <param name="adapter2" value="AGATCGGAAGAGC"/> <section name="filter_options"> - <param name="minimun_length" value="30"/> + <param name="minimum_length" value="30"/> <param name="pair_filter" value="both"/> <conditional name="minimum_options"> <param name="minimum_r2" value="true"/> From a364f88c52f51a9e80340c1ebae6c53151fb35f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Crist=C3=B3bal=20Gallardo?= <gallardo@informatik.uni-freiburg.de> Date: Tue, 1 Jun 2021 21:49:36 +0200 Subject: [PATCH 07/20] Update tests --- tools/cutadapt/cutadapt.xml | 180 ++++++++++++++---- tools/cutadapt/macros.xml | 38 ++-- tools/cutadapt/test-data/A1.fastq.gz | Bin 340 -> 340 bytes tools/cutadapt/test-data/A2.fastq.gz | Bin 326 -> 326 bytes .../test-data/cutadapt_nextseq_out.fq.gz | Bin 12158 -> 12158 bytes .../cutadapt_out1_internal_adapter.fq.gz | Bin 0 -> 12180 bytes .../test-data/cutadapt_out1_max_length.fq.gz | Bin 134 -> 134 bytes .../test-data/cutadapt_out1_min_length.fq.gz | Bin 12155 -> 9298 bytes .../cutadapt_out2_internal_adapter.fq.gz | Bin 0 -> 12153 bytes .../test-data/cutadapt_out2_max_length.fq.gz | Bin 139 -> 139 bytes .../test-data/cutadapt_out2_min_length.fq.gz | Bin 12138 -> 10480 bytes .../test-data/cutadapt_shorten_3prime.out | 12 ++ .../test-data/cutadapt_shorten_5prime.out | 12 ++ .../cutadapt_shorten_expected_errors.out | 12 ++ .../cutadapt_shorten_internal_adapters.out | 12 ++ .../test-data/cutadapt_trimmed.out.gz | Bin 537 -> 537 bytes .../test-data/cutadapt_untrimmed.out.gz | Bin 12095 -> 12095 bytes tools/cutadapt/test-data/unknown.fastq.gz | Bin 173 -> 173 bytes 18 files changed, 211 insertions(+), 55 deletions(-) create mode 100644 tools/cutadapt/test-data/cutadapt_out1_internal_adapter.fq.gz create mode 100644 tools/cutadapt/test-data/cutadapt_out2_internal_adapter.fq.gz create mode 100644 tools/cutadapt/test-data/cutadapt_shorten_3prime.out create mode 100644 tools/cutadapt/test-data/cutadapt_shorten_5prime.out create mode 100644 tools/cutadapt/test-data/cutadapt_shorten_expected_errors.out create mode 100644 tools/cutadapt/test-data/cutadapt_shorten_internal_adapters.out diff --git a/tools/cutadapt/cutadapt.xml b/tools/cutadapt/cutadapt.xml index b14dbd31a77..300970a96a8 100644 --- a/tools/cutadapt/cutadapt.xml +++ b/tools/cutadapt/cutadapt.xml @@ -109,14 +109,14 @@ $adapter_options.revcomp $filter_options.discard_trimmed $filter_options.discard_untrimmed -#if str($filter_options.minimum_options.minimum_r2) == 'true': +#if str($filter_options.minimum_options.minimum_r2) == 'True': --minimum-length=$filter_options.minimum_length:$filter_options.minimum_options.value_minimum -#elif str($filter_options.minimum_length) +#elif str($filter_options.minimum_length): --minimum-length=$filter_options.minimum_length #end if -#if str($filter_options.maximum_options.maximum_r2) == 'true': +#if str($filter_options.maximum_options.maximum_r2) == 'True': --maximum-length=$filter_options.maximum_length:$filter_options.maximum_options.value_maximum -#elif str($filter_options.maximum_length) +#elif str($filter_options.maximum_length): --maximum-length=$filter_options.maximum_length #end if #if str($filter_options.max_n): @@ -139,16 +139,20 @@ $filter_options.discard_untrimmed --nextseq-trim=$read_mod_options.nextseq_trim #end if $read_mod_options.trim_n -#if str($read_mod_options.length) != '0': - --length=$read_mod_options.length +#if str($read_mod_options.shorten_options.shorten_values) == 'True': + #if str($read_mod_options.shorten_options.shorten_end) == '3prime' + --length=$read_mod_options.shorten_options.length + #else + --length=-$read_mod_options.shorten_options.length + #end if #end if -#if $read_mod_options.length_tag != '': +#if str($read_mod_options.length_tag) != '': --length-tag='$read_mod_options.length_tag' #end if -#if $read_mod_options.cut != '0': +#if str($read_mod_options.cut) != '0': --cut=$read_mod_options.cut #end if -#if $read_mod_options.rename != '': +#if str($read_mod_options.rename) != '': --rename='$read_mod_options.rename' #end if $read_mod_options.zero_cap @@ -200,17 +204,20 @@ $read_mod_options.zero_cap <option value="lowercase">Lowercase: convert to lowercase</option> <option value="none">None: leave unchanged</option> </param> + <param name="internal" type="select" label="Disallow internal adaptor ocurrences" help="TODO"> + <option value="X">Enabled</option> + <option value="" selected="True">Disabled</option> + </param> <param argument="--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 argument="--no-indels" type="boolean" value="False" truevalue="--no-indels" falsevalue="" label="Do not allow indels (Use ONLY with anchored 5' (front) adapters)." help="Do not allow indels in the alignments. That is, allow only mismatches. This option is currently only supported for anchored 5' adapters ('^ADAPTER') (default: both mismatches and indels are allowed)." /> <param argument="--times" 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 argument="--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. This reduces the number of bases trimmed purely due to short random adapter matches." /> - <param name="match_read_wildcards" type="select" label="Match Wildcards" help="Allow 'N's as matches. Default: In the adapters but not in the reads"> + <param name="match_read_wildcards" type="select" label="Match wildcards" help="Allow 'N's as matches. Default: in the adapters but not in the reads"> <option value=" " selected="True">In the adapters but not in the reads</option> <option value="--match-read-wildcards">In the adapters and in the reads</option> <option value="--no-match-adapter-wildcards">Nowhere</option> </param> <param argument="--revcomp" type="boolean" value="False" truevalue="--revcomp" falsevalue="" label="Look for adapters in the reverse complement" help="Check both the read and its reverse complement for adapter matches. If match is on reverse-complemented version, output that one. Default: check only read." /> - </section> <!-- Filter Options --> @@ -220,25 +227,25 @@ $read_mod_options.zero_cap <param argument="--minimum-length" type="integer" min="0" optional="True" value="" 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." /> <conditional name="minimum_options"> <param name="minimum_r2" type="select" label="Specify a minimum length for reverse reads (R2)" help="When trimming paired-end reads, the minimum lengths for R1 and R2 can be specified separately. If not provided, the same minimum length applies to both reads."> - <option value="true">Enable</option> - <option value="false" selected="True">Disable</option> + <option value="True">Enabled</option> + <option value="False" selected="True">Disabled</option> </param> - <when value="true"> + <when value="True"> <param name="value_minimum" type="integer" min="0" optional="True" value="" label="Minimum length" /> </when> - <when value="false"> + <when value="False"> </when> </conditional> <param argument="--maximum-length" type="integer" min="0" optional="True" value="" 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." /> <conditional name="maximum_options"> <param name="maximum_r2" type="select" label="Specify a maximum length for reverse reads (R2)" help="When trimming paired-end reads, the maximum lengths for R1 and R2 can be specified separately. If not provided, the same maximum length applies to both reads."> - <option value="true">Enable</option> - <option value="false" selected="True">Disable</option> + <option value="True">Enabled</option> + <option value="False" selected="True">Disabled</option> </param> - <when value="true"> + <when value="True"> <param name="value_maximum" type="integer" min="0" optional="True" value="" label="Maximum length" /> </when> - <when value="false"> + <when value="False"> </when> </conditional> <param argument="--max-n" type="float" min="0" optional="True" label="Max N" help="Discard reads with more than this number of 'N' bases. A number between 0 and 1 is interpreted as a fraction of the read length." /> @@ -262,9 +269,25 @@ $read_mod_options.zero_cap <param argument="--nextseq-trim" type="integer" value="0" label="NextSeq trimming" help="Experimental option for quality trimming of NextSeq data. This is necessary because that machine cannot distinguish between G and reaching the end of the fragment (it encodes G as ‘black’). This option works like regular quality trimming (where one would use -q 20 instead), except that the qualities of G bases are ignored." /> <param argument="--trim-n" type="boolean" truevalue="--trim-n" falsevalue="" checked="False" label="Trim Ns" help="Trim N's on ends of reads." /> <param argument="--strip-suffix" label="Strip suffix" type="text" help="Remove this suffix from read names if present." /> - <param argument="--length" type="integer" value="0" label="Length" help="Shorten reads to this length. This modification is applied after adapter trimming." /> + <conditional name="shorten_options"> + <param name="shorten_values" type="select" label="Shortening reads to a fixed length" help="If you want to remove a fixed number of bases from each read, use the –cut option instead."> + <option value="True">Enabled</option> + <option value="False" selected="True">Disabled</option> + </param> + <when value="True"> + <param argument="--length" type="integer" value="0" label="Length" help="Shorten reads to this length. This modification is applied after adapter trimming." /> + <param name="shorten_end" type="select" label="End at which to apply the slice"> + <option value="3prime">3' ends</option> + <option value="5prime">5' ends</option> + </param> + </when> + <when value="False"> + </when> + </conditional> <param argument="--length-tag" label="Length Tag" type="text" help="Search for TAG followed by a decimal number in the name of the read (description/comment field of the FASTA or FASTQ file). Replace the decimal number with the correct length of the trimmed read. For example, use --length-tag 'length=' to search for fields like 'length=123'." /> - <param argument="--rename" label="Rename reads" type="text" help="This option can be used to rename both single-end and paired-end reads. " /> + <param argument="--rename" label="Rename reads" type="text" optional="True" help="This option can be used to rename both single-end and paired-end reads. "> + <validator type="regex">[A-Za-z0-9_ :-{}/+|]+</validator> + </param> <param argument="--cut" label="Remove a fixed number of bases" type="integer" min="-100" max="100" value="0" help="This option allows to unconditionally remove bases from the beginning or end of each read. If the given length is positive, the bases are removed from the beginning of each read. If it is negative, the bases are removed from the end." /> <param argument="--zero-cap" type="boolean" truevalue="--zero-cap" falsevalue="" checked="False" label="Change negative quality values to zero" /> </section> @@ -575,7 +598,9 @@ $read_mod_options.zero_cap <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" /> <param name="adapter_source_list" value="user"/> <param name="adapter" value="AGATCGGAAGAGC"/> - <param name="cut" value="5"/> + <section name="read_mod_options"> + <param name="cut" value="5"/> + </section> <output name="out1" file="cutadapt_small_cut.out" ftype="fastq"/> </test> <!-- Test rename options --> @@ -584,17 +609,21 @@ $read_mod_options.zero_cap <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" /> <param name="adapter_source_list" value="user"/> <param name="adapter" value="AGATCGGAAGAGC"/> - <param name="cut" value="5"/> - <param name="rename" value="{prefix:1_13_1259/1} barcode={AGATC} adapter={illumina_adapter}"/> + <section name="read_mod_options"> + <param name="cut" value="5"/> + <param name="rename" value="{prefix:1_13_1259/1} barcode={AGATC} adapter={illumina_adapter}"/> + </section> <output name="out1" file="cutadapt_small_rename.out" ftype="fastq"/> </test> - <!-- Test action options --> + <!-- Test action options --> <test expect_num_outputs="1"> <param name="type" value="single" /> <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" /> <param name="adapter_source_list" value="user"/> <param name="adapter" value="CGTCCGAANTAG"/> - <param name="action" value="retain"/> + <section name="adapter_options"> + <param name="action" value="retain"/> + </section> <output name="out1" file="cutadapt_action_retain.out" ftype="fastq"/> </test> <test expect_num_outputs="1"> @@ -602,7 +631,9 @@ $read_mod_options.zero_cap <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" /> <param name="adapter_source_list" value="user"/> <param name="adapter" value="CGTCCGAANTAG"/> - <param name="action" value="mask"/> + <section name="adapter_options"> + <param name="action" value="mask"/> + </section> <output name="out1" file="cutadapt_action_mask.out" ftype="fastq"/> </test> <test expect_num_outputs="1"> @@ -610,7 +641,9 @@ $read_mod_options.zero_cap <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" /> <param name="adapter_source_list" value="user"/> <param name="adapter" value="CGTCCGAANTAG"/> - <param name="action" value="lowercase"/> + <section name="adapter_options"> + <param name="action" value="lowercase"/> + </section> <output name="out1" file="cutadapt_action_lowercase.out" ftype="fastq"/> </test> <test expect_num_outputs="1"> @@ -618,16 +651,20 @@ $read_mod_options.zero_cap <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" /> <param name="adapter_source_list" value="user"/> <param name="adapter" value="CGTCCGAANTAG"/> - <param name="action" value="none"/> + <section name="adapter_options"> + <param name="action" value="none"/> + </section> <output name="out1" file="cutadapt_action_none.out" ftype="fastq"/> </test> - <!-- Test revcomp options --> + <!-- Test revcomp options --> <test expect_num_outputs="1"> <param name="type" value="single" /> <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" /> <param name="adapter_source_list" value="user"/> <param name="adapter" value="TAAACAGATTAGT"/> - <param name="revcomp" value="true"/> + <section name="adapter_options"> + <param name="revcomp" value="true"/> + </section> <output name="out1" file="cutadapt_revcomp.out" ftype="fastq"/> </test> <!-- Test minimum lenghth paired-reads --> @@ -636,14 +673,14 @@ $read_mod_options.zero_cap <param name="input_1" ftype="fastq.gz" value="bwa-mem-fastq1_assimetric.fq.gz" /> <param name="input_2" ftype="fastq.gz" value="bwa-mem-fastq2_assimetric.fq.gz" /> <param name="adapter_source_list" value="user"/> - <param name="adapter" value="AGATCGGAAGAGC"/> + <param name="adapter" value="ATCTGGTTCC"/> <param name="adapter_source_list2" value="user"/> - <param name="adapter2" value="AGATCGGAAGAGC"/> + <param name="adapter2" value="CTACAAG"/> <section name="filter_options"> <param name="minimum_length" value="30"/> <param name="pair_filter" value="both"/> <conditional name="minimum_options"> - <param name="minimum_r2" value="true"/> + <param name="minimum_r2" value="True"/> <param name="value_minimum" value="10"/> </conditional> </section> @@ -654,7 +691,7 @@ $read_mod_options.zero_cap <has_text text="--pair-filter=both"/> </assert_command> </test> - <!-- Test maximum lenghth paired-reads --> + <!-- Test maximum lenghth paired-reads --> <test expect_num_outputs="2"> <param name="type" value="paired" /> <param name="input_1" ftype="fastq.gz" value="bwa-mem-fastq1_assimetric.fq.gz" /> @@ -667,7 +704,7 @@ $read_mod_options.zero_cap <param name="pair_filter" value="both"/> <param name="maximum_length" value="50"/> <conditional name="maximum_options"> - <param name="maximum_r2" value="true"/> + <param name="maximum_r2" value="True"/> <param name="value_maximum" value="30"/> </conditional> </section> @@ -678,6 +715,77 @@ $read_mod_options.zero_cap <has_text text="--pair-filter=both"/> </assert_command> </test> + <!-- Test length options --> + <test expect_num_outputs="1"> + <param name="type" value="single" /> + <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" /> + <param name="adapter_source_list" value="user"/> + <param name="adapter" value="AGCCGCTANGACG"/> + <section name="read_mod_options"> + <conditional name="shorten_options"> + <param name="shorten_values" value="True"/> + <param name="shorten_end" value="3prime"/> + <param name="length" value="10"/> + </conditional> + </section> + <output name="out1" file="cutadapt_shorten_3prime.out" ftype="fastq"/> + </test> + <test expect_num_outputs="1"> + <param name="type" value="single" /> + <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" /> + <param name="adapter_source_list" value="user"/> + <param name="adapter" value="AGCCGCTANGACG"/> + <section name="read_mod_options"> + <conditional name="shorten_options"> + <param name="shorten_values" value="True"/> + <param name="shorten_end" value="5prime"/> + <param name="length" value="10"/> + </conditional> + </section> + <output name="out1" file="cutadapt_shorten_5prime.out" ftype="fastq"/> + </test> + <!-- Test max expected errors options --> + <test expect_num_outputs="1"> + <param name="type" value="single" /> + <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" /> + <param name="adapter_source_list" value="user"/> + <param name="adapter" value="AGCGGCTTAGACG"/> + <section name="filter_options"> + <param name="max_expected_errors" value="10"/> + </section> + <output name="out1" file="cutadapt_shorten_expected_errors.out" ftype="fastq"/> + </test> + <!-- Test disallow internal adaptors option --> + <test expect_num_outputs="1"> + <param name="type" value="single" /> + <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" /> + <param name="adapter_source_list" value="user"/> + <param name="adapter" value="GAANTAGCTACCAC"/> + <section name="adapter_options"> + <param name="internal" value="X"/> + </section> + <output name="out1" file="cutadapt_shorten_internal_adapters.out" ftype="fastq"/> + <assert_command> + <has_text text="GAANTAGCTACCACX"/> + </assert_command> + </test> + <test expect_num_outputs="2"> + <param name="type" value="paired" /> + <param name="input_1" ftype="fastq.gz" value="bwa-mem-fastq1_assimetric.fq.gz" /> + <param name="input_2" ftype="fastq.gz" value="bwa-mem-fastq2_assimetric.fq.gz" /> + <param name="adapter_source_list" value="user"/> + <param name="adapter" value="AGATCGGAAGAGC"/> + <param name="adapter_source_list2" value="user"/> + <param name="adapter2" value="AGATCGGAAGAGC"/> + <section name="adapter_options"> + <param name="internal" value="X"/> + </section> + <output name="out1" decompress="True" file="cutadapt_out1_internal_adapter.fq.gz" ftype="fastq.gz"/> + <output name="out2" decompress="True" file="cutadapt_out2_internal_adapter.fq.gz" ftype="fastq.gz"/> + <assert_command> + <has_text text="AGATCGGAAGAGCX"/> + </assert_command> + </test> </tests> <help><![CDATA[ diff --git a/tools/cutadapt/macros.xml b/tools/cutadapt/macros.xml index 9b057d0ecfb..3e3fb1f62b7 100644 --- a/tools/cutadapt/macros.xml +++ b/tools/cutadapt/macros.xml @@ -30,13 +30,13 @@ #for $a in $library.r1.adapters #if $a.adapter_source.adapter_source_list == 'builtin': - -a '${a.adapter_source.adapter.fields.name}'='${a.adapter_source.adapter}' + -a '${a.adapter_source.adapter.fields.name}'='${a.adapter_source.adapter}${$adapter_options.internal}' #else if $a.adapter_source.adapter_source_list == 'file': - -a file:'${a.adapter_source.adapter_file}' + -a file:'${a.adapter_source.adapter_file}${$adapter_options.internal}' #else if str($a.adapter_source.adapter_name) != "": - -a '${a.adapter_source.adapter_name}'='${a.adapter_source.adapter}' + -a '${a.adapter_source.adapter_name}'='${a.adapter_source.adapter}${$adapter_options.internal}' #else - -a '${a.adapter_source.adapter}' + -a '${a.adapter_source.adapter}${$adapter_options.internal}' #end if #end for #for $aa in $library.r1.anywhere_adapters @@ -52,13 +52,13 @@ #end for #for $fa in $library.r1.front_adapters #if $fa.front_adapter_source.front_adapter_source_list == 'builtin': - -g '${fa.front_adapter_source.front_adapter.fields.name}'='${fa.front_adapter_source.front_adapter}' + -g '${fa.front_adapter_source.front_adapter.fields.name}'='${$adapter_options.internal}${fa.front_adapter_source.front_adapter}' #else if $fa.front_adapter_source.front_adapter_source_list == 'file': - -g file:'${fa.front_adapter_source.front_adapter_file}' + -g file:'${$adapter_options.internal}${fa.front_adapter_source.front_adapter_file}' #else if str($fa.front_adapter_source.front_adapter_name) != "": - -g '${fa.front_adapter_source.front_adapter_name}'='${fa.front_adapter_source.front_adapter}' + -g '${$adapter_options.internal}${fa.front_adapter_source.front_adapter_name}'='${fa.front_adapter_source.front_adapter}' #else - -g '${fa.front_adapter_source.front_adapter}' + -g '${$adapter_options.internal}${fa.front_adapter_source.front_adapter}' #end if #end for @@ -95,13 +95,13 @@ #for $a in $library.r2.adapters2 #if $a.adapter_source2.adapter_source_list2 == 'builtin': - -A '${a.adapter_source2.adapter2.fields.name}'='${a.adapter_source2.adapter2}' + -A '${a.adapter_source2.adapter2.fields.name}'='${a.adapter_source2.adapter2}${$adapter_options.internal}' #else if $a.adapter_source2.adapter_source_list2 == 'file': - -A file:'${a.adapter_source2.adapter_file2}' + -A file:'${a.adapter_source2.adapter_file2}${$adapter_options.internal}' #else if str($a.adapter_source2.adapter_name2) != "": - -A '${a.adapter_source2.adapter_name2}'='${a.adapter_source2.adapter2}' + -A '${a.adapter_source2.adapter_name2}'='${a.adapter_source2.adapter2}${$adapter_options.internal}' #else - -A '${a.adapter_source2.adapter2}' + -A '${a.adapter_source2.adapter2}${$adapter_options.internal}' #end if #end for #for $aa in $library.r2.anywhere_adapters2 @@ -117,13 +117,13 @@ #end for #for $fa in $library.r2.front_adapters2 #if $fa.front_adapter_source2.front_adapter_source_list2 == 'builtin': - -G '${fa.front_adapter_source2.front_adapter2.fields.name}'='${fa.front_adapter_source2.front_adapter2}' + -G '${$adapter_options.internal}${fa.front_adapter_source2.front_adapter2.fields.name}'='${fa.front_adapter_source2.front_adapter2}' #else if $fa.front_adapter_source2.front_adapter_source_list2 == 'file': - -G file:'${fa.front_adapter_source2.front_adapter_file2}' + -G file:'${$adapter_options.internal}${fa.front_adapter_source2.front_adapter_file2}' #else if str($fa.front_adapter_source2.front_adapter_name2) != "": - -G '${fa.front_adapter_source2.front_adapter_name2}'='${fa.front_adapter_source2.front_adapter2}' + -G '${fa.front_adapter_source2.front_adapter_name2}'='${$adapter_options.internal}${fa.front_adapter_source2.front_adapter2}' #else - -G '${fa.front_adapter_source2.front_adapter2}' + -G '${$adapter_options.internal}${fa.front_adapter_source2.front_adapter2}' #end if #end for @@ -205,7 +205,7 @@ <param name="adapter_source_list" type="select" label="Source" > <option value="builtin" selected="True">Standard (select from the list below)</option> <option value="user">Enter custom sequence</option> - <option value="file">File From History</option> + <option value="file">File from history</option> </param> <when value="user"> @@ -306,7 +306,7 @@ <param name="front_adapter_source_list2" type="select" label="Source"> <option value="builtin" selected="True">Standard (select from the list below)</option> <option value="user">Enter custom sequence</option> - <option value="file">File From History</option> + <option value="file">File from history</option> </param> <when value="user"> @@ -327,7 +327,7 @@ <param name="anywhere_adapter_source_list2" type="select" label="Source"> <option value="builtin" selected="True">Standard (select from the list below)</option> <option value="user">Enter custom sequence</option> - <option value="file">File From History</option> + <option value="file">File from history</option> </param> <when value="user"> diff --git a/tools/cutadapt/test-data/A1.fastq.gz b/tools/cutadapt/test-data/A1.fastq.gz index 1635e3cc999c2a60c131ac85df585770c8fa803d..492819bb7c2ec0a974f8432872ae64d6f0fec966 100644 GIT binary patch delta 15 Wcmcb@bcKmczMF$#UHe8hKSls3I0T>o delta 15 Wcmcb@bcKmczMF%=#BC#+A0q%H7X#%0 diff --git a/tools/cutadapt/test-data/A2.fastq.gz b/tools/cutadapt/test-data/A2.fastq.gz index 4e4bb5ce630e4718f5c87e20e692c25b5d8892e3..05d0507d24c22d52fcc68aacd598568ae43416b3 100644 GIT binary patch delta 15 WcmX@cbc~5jzMF$#UHe8h2SxxUlmvDF delta 15 WcmX@cbc~5jzMF%=#BC#+10w(;a|62o diff --git a/tools/cutadapt/test-data/cutadapt_nextseq_out.fq.gz b/tools/cutadapt/test-data/cutadapt_nextseq_out.fq.gz index 80c3d43467770d941abfbf95029ab645efcbf5d4..b40594d6369aae562e0c2a5b5fc8d9333e4d2d98 100644 GIT binary patch delta 15 Wcmewt_b-l3zMF#~w|yg9g+2f^Bn86& delta 15 Wcmewt_b-l3zMF&Li|a<V3Vi@K1O^BI diff --git a/tools/cutadapt/test-data/cutadapt_out1_internal_adapter.fq.gz b/tools/cutadapt/test-data/cutadapt_out1_internal_adapter.fq.gz new file mode 100644 index 0000000000000000000000000000000000000000..b4ed3a8e10ab6569dd94ec5cb7afc0b5b223029f GIT binary patch literal 12180 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 z�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 WqSa0~ZHvb|^#2bf64_HA&;S7avOM<y literal 0 HcmV?d00001 diff --git a/tools/cutadapt/test-data/cutadapt_out1_max_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out1_max_length.fq.gz index 16ee3977765cee609b89cbd42d0a2cc529c51f27..a16e45d105d0a506713ffdb6f8a682aa47a1d43e 100644 GIT binary patch delta 14 VcmZo;Y-41T@8)2r@0iHe000_)1LXh! delta 14 VcmZo;Y-41T@8)2z^P0%k000<517-jK diff --git a/tools/cutadapt/test-data/cutadapt_out1_min_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out1_min_length.fq.gz index d2b182f3b1876854bdb58d04512afff6988b59ef..0ef6be6da2eca8f837e764165a909c0be1434b25 100644 GIT binary patch literal 9298 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 Aa{vGU literal 12155 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 diff --git a/tools/cutadapt/test-data/cutadapt_out2_internal_adapter.fq.gz b/tools/cutadapt/test-data/cutadapt_out2_internal_adapter.fq.gz new file mode 100644 index 0000000000000000000000000000000000000000..48e71cfd240df2961fa98bb22fa9bcac22c57037 GIT binary patch literal 12153 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 literal 0 HcmV?d00001 diff --git a/tools/cutadapt/test-data/cutadapt_out2_max_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out2_max_length.fq.gz index 0627bf4b7648059444225466d0ec8a86d3bb8a76..529a6f4d937cbe75cd2098045bfcf6eaf8f152a7 100644 GIT binary patch delta 14 VcmeBX>}F(>@8)2r@0iHe3IH1h1M~m@ delta 14 VcmeBX>}F(>@8)2z^P0%k3IG_%19boZ diff --git a/tools/cutadapt/test-data/cutadapt_out2_min_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out2_min_length.fq.gz index 067a3d0cd4b115b6b5cd59d9ba27a078cb318c60..c96771ab1c9ea21d7122667dcff02b8548dcbfc4 100644 GIT binary patch literal 10480 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 literal 12138 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 diff --git a/tools/cutadapt/test-data/cutadapt_shorten_3prime.out b/tools/cutadapt/test-data/cutadapt_shorten_3prime.out new file mode 100644 index 00000000000..3e27035a57f --- /dev/null +++ b/tools/cutadapt/test-data/cutadapt_shorten_3prime.out @@ -0,0 +1,12 @@ +@prefix:1_13_573/1 +CGTCCGAANT ++ +)3%)&&&&!. +@prefix:1_13_1259/1 + ++ + +@prefix:1_13_1440/1 +CAAGATCTNC ++ +<=A:A=57!7 diff --git a/tools/cutadapt/test-data/cutadapt_shorten_5prime.out b/tools/cutadapt/test-data/cutadapt_shorten_5prime.out new file mode 100644 index 00000000000..538740e4dc4 --- /dev/null +++ b/tools/cutadapt/test-data/cutadapt_shorten_5prime.out @@ -0,0 +1,12 @@ +@prefix:1_13_573/1 +TTAGACAAAT ++ +75)'77&&&5 +@prefix:1_13_1259/1 + ++ + +@prefix:1_13_1440/1 +CTAGTTAAAC ++ +)71>70<,=: diff --git a/tools/cutadapt/test-data/cutadapt_shorten_expected_errors.out b/tools/cutadapt/test-data/cutadapt_shorten_expected_errors.out new file mode 100644 index 00000000000..767ca2279af --- /dev/null +++ b/tools/cutadapt/test-data/cutadapt_shorten_expected_errors.out @@ -0,0 +1,12 @@ +@prefix:1_13_573/1 +CGTCCGAANTAGCTACCACCCTGATTAGACAAAT ++ +)3%)&&&&!.1&(6:<'67..*,:75)'77&&&5 +@prefix:1_13_1259/1 +AGCCGCTANGACGGGTTGGCCCTTAGACGTATCT ++ +;<:&:A;A!9<<<,7:<=3=;:<&<?<?8<;=<& +@prefix:1_13_1440/1 +CAAGATCTNCCCTGCCACATTGCCCTAGTTAAAC ++ +<=A:A=57!7<';<6?5;;6:+:=)71>70<,=: diff --git a/tools/cutadapt/test-data/cutadapt_shorten_internal_adapters.out b/tools/cutadapt/test-data/cutadapt_shorten_internal_adapters.out new file mode 100644 index 00000000000..767ca2279af --- /dev/null +++ b/tools/cutadapt/test-data/cutadapt_shorten_internal_adapters.out @@ -0,0 +1,12 @@ +@prefix:1_13_573/1 +CGTCCGAANTAGCTACCACCCTGATTAGACAAAT ++ +)3%)&&&&!.1&(6:<'67..*,:75)'77&&&5 +@prefix:1_13_1259/1 +AGCCGCTANGACGGGTTGGCCCTTAGACGTATCT ++ +;<:&:A;A!9<<<,7:<=3=;:<&<?<?8<;=<& +@prefix:1_13_1440/1 +CAAGATCTNCCCTGCCACATTGCCCTAGTTAAAC ++ +<=A:A=57!7<';<6?5;;6:+:=)71>70<,=: diff --git a/tools/cutadapt/test-data/cutadapt_trimmed.out.gz b/tools/cutadapt/test-data/cutadapt_trimmed.out.gz index 5adaf22b4068071be4ac95d0fb38fbfba90a0c6f..93b0776b83e4d7d56e7ac6cafa6296f276fbd8a2 100644 GIT binary patch delta 15 WcmbQqGLwZ(zMF&LcKb#)VI}|~kpv+C delta 15 WcmbQqGLwZ(zMF#~(QPA}FcSbCa06xl diff --git a/tools/cutadapt/test-data/cutadapt_untrimmed.out.gz b/tools/cutadapt/test-data/cutadapt_untrimmed.out.gz index 6b9e56db4e06c688287bfdc6fca4151e87173fea..120f3cc6a7db5774923b471ac4b7c31ed1ab93bb 100644 GIT binary patch delta 15 WcmdlVw?B?ezMF&LcKb#)OML(^Rt0nb delta 15 WcmdlVw?B?ezMF#~(QPA}r9J>GH3Yc; diff --git a/tools/cutadapt/test-data/unknown.fastq.gz b/tools/cutadapt/test-data/unknown.fastq.gz index 13b4154300f7aaa2371c3eb1d1254d55ab0d0ba2..2683cff111cb220de1b621038e140b18258ad2e9 100644 GIT binary patch delta 14 VcmZ3>xR#MkzMF$#UHe3~<p3Xp1c(3t delta 14 VcmZ3>xR#MkzMF%=#BCzmasV711I+*c From 318f03d8014617457ddc35bd3698dfee5deee872 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Crist=C3=B3bal=20Gallardo?= <gallardo@informatik.uni-freiburg.de> Date: Tue, 1 Jun 2021 22:13:42 +0200 Subject: [PATCH 08/20] Add building internal adaptor tests and fix typo --- tools/cutadapt/cutadapt.xml | 10 ++++++ tools/cutadapt/macros.xml | 32 +++++++++--------- tools/cutadapt/test-data/A1.fastq.gz | Bin 340 -> 340 bytes tools/cutadapt/test-data/A2.fastq.gz | Bin 326 -> 326 bytes .../cutadapt_builtin_internal_adapter.out | 12 +++++++ .../test-data/cutadapt_nextseq_out.fq.gz | Bin 12158 -> 12158 bytes .../cutadapt_out1_internal_adapter.fq.gz | Bin 12180 -> 12180 bytes .../test-data/cutadapt_out1_max_length.fq.gz | Bin 134 -> 134 bytes .../test-data/cutadapt_out1_min_length.fq.gz | Bin 9298 -> 9298 bytes .../cutadapt_out2_internal_adapter.fq.gz | Bin 12153 -> 12153 bytes .../test-data/cutadapt_out2_max_length.fq.gz | Bin 139 -> 139 bytes .../test-data/cutadapt_out2_min_length.fq.gz | Bin 10480 -> 10480 bytes .../test-data/cutadapt_trimmed.out.gz | Bin 537 -> 537 bytes .../test-data/cutadapt_untrimmed.out.gz | Bin 12095 -> 12095 bytes tools/cutadapt/test-data/unknown.fastq.gz | Bin 173 -> 173 bytes 15 files changed, 38 insertions(+), 16 deletions(-) create mode 100644 tools/cutadapt/test-data/cutadapt_builtin_internal_adapter.out diff --git a/tools/cutadapt/cutadapt.xml b/tools/cutadapt/cutadapt.xml index 300970a96a8..c3a2ba4c7f2 100644 --- a/tools/cutadapt/cutadapt.xml +++ b/tools/cutadapt/cutadapt.xml @@ -786,6 +786,16 @@ $read_mod_options.zero_cap <has_text text="AGATCGGAAGAGCX"/> </assert_command> </test> + <test expect_num_outputs="1"> + <param name="type" value="single" /> + <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" /> + <param name="adapter_source_list" value="builtin"/> + <param name="adapter" value="TGTAGGCC"/> + <section name="adapter_options"> + <param name="internal" value="X"/> + </section> + <output name="out1" file="cutadapt_builtin_internal_adapter.out" ftype="fastq"/> + </test> </tests> <help><![CDATA[ diff --git a/tools/cutadapt/macros.xml b/tools/cutadapt/macros.xml index 3e3fb1f62b7..684f6cf1fdf 100644 --- a/tools/cutadapt/macros.xml +++ b/tools/cutadapt/macros.xml @@ -30,13 +30,13 @@ #for $a in $library.r1.adapters #if $a.adapter_source.adapter_source_list == 'builtin': - -a '${a.adapter_source.adapter.fields.name}'='${a.adapter_source.adapter}${$adapter_options.internal}' + -a '${a.adapter_source.adapter.fields.name}'='${a.adapter_source.adapter}${adapter_options.internal}' #else if $a.adapter_source.adapter_source_list == 'file': - -a file:'${a.adapter_source.adapter_file}${$adapter_options.internal}' + -a file:'${a.adapter_source.adapter_file}${adapter_options.internal}' #else if str($a.adapter_source.adapter_name) != "": - -a '${a.adapter_source.adapter_name}'='${a.adapter_source.adapter}${$adapter_options.internal}' + -a '${a.adapter_source.adapter_name}'='${a.adapter_source.adapter}${adapter_options.internal}' #else - -a '${a.adapter_source.adapter}${$adapter_options.internal}' + -a '${a.adapter_source.adapter}${adapter_options.internal}' #end if #end for #for $aa in $library.r1.anywhere_adapters @@ -52,13 +52,13 @@ #end for #for $fa in $library.r1.front_adapters #if $fa.front_adapter_source.front_adapter_source_list == 'builtin': - -g '${fa.front_adapter_source.front_adapter.fields.name}'='${$adapter_options.internal}${fa.front_adapter_source.front_adapter}' + -g '${fa.front_adapter_source.front_adapter.fields.name}'='${adapter_options.internal}${fa.front_adapter_source.front_adapter}' #else if $fa.front_adapter_source.front_adapter_source_list == 'file': - -g file:'${$adapter_options.internal}${fa.front_adapter_source.front_adapter_file}' + -g file:'${adapter_options.internal}${fa.front_adapter_source.front_adapter_file}' #else if str($fa.front_adapter_source.front_adapter_name) != "": - -g '${$adapter_options.internal}${fa.front_adapter_source.front_adapter_name}'='${fa.front_adapter_source.front_adapter}' + -g '${adapter_options.internal}${fa.front_adapter_source.front_adapter_name}'='${fa.front_adapter_source.front_adapter}' #else - -g '${$adapter_options.internal}${fa.front_adapter_source.front_adapter}' + -g '${adapter_options.internal}${fa.front_adapter_source.front_adapter}' #end if #end for @@ -95,13 +95,13 @@ #for $a in $library.r2.adapters2 #if $a.adapter_source2.adapter_source_list2 == 'builtin': - -A '${a.adapter_source2.adapter2.fields.name}'='${a.adapter_source2.adapter2}${$adapter_options.internal}' + -A '${a.adapter_source2.adapter2.fields.name}'='${a.adapter_source2.adapter2}${adapter_options.internal}' #else if $a.adapter_source2.adapter_source_list2 == 'file': - -A file:'${a.adapter_source2.adapter_file2}${$adapter_options.internal}' + -A file:'${a.adapter_source2.adapter_file2}${adapter_options.internal}' #else if str($a.adapter_source2.adapter_name2) != "": - -A '${a.adapter_source2.adapter_name2}'='${a.adapter_source2.adapter2}${$adapter_options.internal}' + -A '${a.adapter_source2.adapter_name2}'='${a.adapter_source2.adapter2}${adapter_options.internal}' #else - -A '${a.adapter_source2.adapter2}${$adapter_options.internal}' + -A '${a.adapter_source2.adapter2}${adapter_options.internal}' #end if #end for #for $aa in $library.r2.anywhere_adapters2 @@ -117,13 +117,13 @@ #end for #for $fa in $library.r2.front_adapters2 #if $fa.front_adapter_source2.front_adapter_source_list2 == 'builtin': - -G '${$adapter_options.internal}${fa.front_adapter_source2.front_adapter2.fields.name}'='${fa.front_adapter_source2.front_adapter2}' + -G '${adapter_options.internal}${fa.front_adapter_source2.front_adapter2.fields.name}'='${fa.front_adapter_source2.front_adapter2}' #else if $fa.front_adapter_source2.front_adapter_source_list2 == 'file': - -G file:'${$adapter_options.internal}${fa.front_adapter_source2.front_adapter_file2}' + -G file:'${adapter_options.internal}${fa.front_adapter_source2.front_adapter_file2}' #else if str($fa.front_adapter_source2.front_adapter_name2) != "": - -G '${fa.front_adapter_source2.front_adapter_name2}'='${$adapter_options.internal}${fa.front_adapter_source2.front_adapter2}' + -G '${fa.front_adapter_source2.front_adapter_name2}'='${adapter_options.internal}${fa.front_adapter_source2.front_adapter2}' #else - -G '${$adapter_options.internal}${fa.front_adapter_source2.front_adapter2}' + -G '${adapter_options.internal}${fa.front_adapter_source2.front_adapter2}' #end if #end for diff --git a/tools/cutadapt/test-data/A1.fastq.gz b/tools/cutadapt/test-data/A1.fastq.gz index 492819bb7c2ec0a974f8432872ae64d6f0fec966..8f0e0602b2edc9ec86dca2ff4ae24271e6dde556 100644 GIT binary patch delta 15 Wcmcb@bcKmczMF$#>ZFZqevAMo*#wdR delta 15 Wcmcb@bcKmczMF$#UHe8hKSls3I0T>o diff --git a/tools/cutadapt/test-data/A2.fastq.gz b/tools/cutadapt/test-data/A2.fastq.gz index 05d0507d24c22d52fcc68aacd598568ae43416b3..91aab83a1f1f29c1522a15348a9d4a323feb37e6 100644 GIT binary patch delta 15 WcmX@cbc~5jzMF$#>ZFZq4vYXMH3Vn? delta 15 WcmX@cbc~5jzMF$#UHe8h2SxxUlmvDF diff --git a/tools/cutadapt/test-data/cutadapt_builtin_internal_adapter.out b/tools/cutadapt/test-data/cutadapt_builtin_internal_adapter.out new file mode 100644 index 00000000000..767ca2279af --- /dev/null +++ b/tools/cutadapt/test-data/cutadapt_builtin_internal_adapter.out @@ -0,0 +1,12 @@ +@prefix:1_13_573/1 +CGTCCGAANTAGCTACCACCCTGATTAGACAAAT ++ +)3%)&&&&!.1&(6:<'67..*,:75)'77&&&5 +@prefix:1_13_1259/1 +AGCCGCTANGACGGGTTGGCCCTTAGACGTATCT ++ +;<:&:A;A!9<<<,7:<=3=;:<&<?<?8<;=<& +@prefix:1_13_1440/1 +CAAGATCTNCCCTGCCACATTGCCCTAGTTAAAC ++ +<=A:A=57!7<';<6?5;;6:+:=)71>70<,=: diff --git a/tools/cutadapt/test-data/cutadapt_nextseq_out.fq.gz b/tools/cutadapt/test-data/cutadapt_nextseq_out.fq.gz index b40594d6369aae562e0c2a5b5fc8d9333e4d2d98..0da18600442eb77c5a04f3e5019c125b810ac105 100644 GIT binary patch delta 15 Wcmewt_b-l3zMF#~e9}g?3Vi@H*9Eu$ delta 15 Wcmewt_b-l3zMF#~w|yg9g+2f^Bn86& diff --git a/tools/cutadapt/test-data/cutadapt_out1_internal_adapter.fq.gz b/tools/cutadapt/test-data/cutadapt_out1_internal_adapter.fq.gz index b4ed3a8e10ab6569dd94ec5cb7afc0b5b223029f..bc650c71568f3ca6d7ca91bd750a30c923ce0614 100644 GIT binary patch delta 15 WcmbOdKP8?`zMF$#-{g&Kefj_^^aW%9 delta 15 WcmbOdKP8?`zMF&LUC&0gK79Zz@db?l diff --git a/tools/cutadapt/test-data/cutadapt_out1_max_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out1_max_length.fq.gz index a16e45d105d0a506713ffdb6f8a682aa47a1d43e..6d58cd3faa479de074762fcc3731fde04d341337 100644 GIT binary patch delta 14 VcmZo;Y-41T@8)30o;;DQ0RS3D1Ka=r delta 14 VcmZo;Y-41T@8)2r@0iHe000_)1LXh! diff --git a/tools/cutadapt/test-data/cutadapt_out1_min_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out1_min_length.fq.gz index 0ef6be6da2eca8f837e764165a909c0be1434b25..24c44a5297ed627e3c4a0d07986c76dfb2a2dfe7 100644 GIT binary patch delta 15 WcmccQamj;CzMF#~VDd&b9~A&CLj?B# delta 15 WcmccQamj;CzMF#~y<;Prj|u=SmIVU< diff --git a/tools/cutadapt/test-data/cutadapt_out2_internal_adapter.fq.gz b/tools/cutadapt/test-data/cutadapt_out2_internal_adapter.fq.gz index 48e71cfd240df2961fa98bb22fa9bcac22c57037..ec55e23048948ef8a7ae93a946d3370c18e5918d 100644 GIT binary patch delta 15 Wcmewv_cM-7zMF$#-{g&K#rgm?um%wT delta 15 Wcmewv_cM-7zMF&LUC&0gVtoKNtp+*( diff --git a/tools/cutadapt/test-data/cutadapt_out2_max_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out2_max_length.fq.gz index 529a6f4d937cbe75cd2098045bfcf6eaf8f152a7..5c1a596e45f5e308a279f3b7ab1be6fa9efde8ea 100644 GIT binary patch delta 14 VcmeBX>}F(>@8)30o;;DQ6#yE}1M2_) delta 14 VcmeBX>}F(>@8)2r@0iHe3IH1h1M~m@ diff --git a/tools/cutadapt/test-data/cutadapt_out2_min_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out2_min_length.fq.gz index c96771ab1c9ea21d7122667dcff02b8548dcbfc4..94d1667e121e24de2c345cd92c2a57511de71cb0 100644 GIT binary patch delta 15 Wcmewm_#u!@zMF#~VDd(`R~i5^wFTz@ delta 15 Wcmewm_#u!@zMF#~y<;QWD-8fM2nF*1 diff --git a/tools/cutadapt/test-data/cutadapt_trimmed.out.gz b/tools/cutadapt/test-data/cutadapt_trimmed.out.gz index 93b0776b83e4d7d56e7ac6cafa6296f276fbd8a2..a2a91ad9f008ef1b9d0bcaa9e625254e636187ae 100644 GIT binary patch delta 15 WcmbQqGLwZ(zMF&L;G~Ug!b|`nECdn& delta 15 WcmbQqGLwZ(zMF&LcKb#)VI}|~kpv+C diff --git a/tools/cutadapt/test-data/cutadapt_untrimmed.out.gz b/tools/cutadapt/test-data/cutadapt_untrimmed.out.gz index 120f3cc6a7db5774923b471ac4b7c31ed1ab93bb..26b630e33125f8c2aa4b51a2f2e23d16e01c4ca1 100644 GIT binary patch delta 15 WcmdlVw?B?ezMF&L;G~UgmihoM@daf7 delta 15 WcmdlVw?B?ezMF&LcKb#)OML(^Rt0nb diff --git a/tools/cutadapt/test-data/unknown.fastq.gz b/tools/cutadapt/test-data/unknown.fastq.gz index 2683cff111cb220de1b621038e140b18258ad2e9..4edef7b57a5bade2bf8d1f85b6a687b29fe4520b 100644 GIT binary patch delta 14 VcmZ3>xR#MkzMF$#>ZFNm%K;xU1bP4f delta 14 VcmZ3>xR#MkzMF$#UHe3~<p3Xp1c(3t From ef51a2276b394640238239a03f2c30ba8416c1c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Crist=C3=B3bal=20Gallardo?= <gallardo@informatik.uni-freiburg.de> Date: Tue, 1 Jun 2021 22:15:34 +0200 Subject: [PATCH 09/20] Include assertion internal adaptor building test --- tools/cutadapt/cutadapt.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tools/cutadapt/cutadapt.xml b/tools/cutadapt/cutadapt.xml index c3a2ba4c7f2..bebebf3becb 100644 --- a/tools/cutadapt/cutadapt.xml +++ b/tools/cutadapt/cutadapt.xml @@ -795,6 +795,9 @@ $read_mod_options.zero_cap <param name="internal" value="X"/> </section> <output name="out1" file="cutadapt_builtin_internal_adapter.out" ftype="fastq"/> + <assert_command> + <has_text text="TGTAGGCCX"/> + </assert_command> </test> </tests> From cb896d3140d29c1f8ffcebdbadf59bb8deceec5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Crist=C3=B3bal=20Gallardo?= <gallardo@informatik.uni-freiburg.de> Date: Tue, 1 Jun 2021 22:18:29 +0200 Subject: [PATCH 10/20] Modify cut parameter --- tools/cutadapt/cutadapt.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/cutadapt/cutadapt.xml b/tools/cutadapt/cutadapt.xml index bebebf3becb..7583c897d05 100644 --- a/tools/cutadapt/cutadapt.xml +++ b/tools/cutadapt/cutadapt.xml @@ -288,7 +288,7 @@ $read_mod_options.zero_cap <param argument="--rename" label="Rename reads" type="text" optional="True" help="This option can be used to rename both single-end and paired-end reads. "> <validator type="regex">[A-Za-z0-9_ :-{}/+|]+</validator> </param> - <param argument="--cut" label="Remove a fixed number of bases" type="integer" min="-100" max="100" value="0" help="This option allows to unconditionally remove bases from the beginning or end of each read. If the given length is positive, the bases are removed from the beginning of each read. If it is negative, the bases are removed from the end." /> + <param argument="--cut" label="Remove a fixed number of bases" type="integer" value="0" help="This option allows to unconditionally remove bases from the beginning or end of each read. If the given length is positive, the bases are removed from the beginning of each read. If it is negative, the bases are removed from the end." /> <param argument="--zero-cap" type="boolean" truevalue="--zero-cap" falsevalue="" checked="False" label="Change negative quality values to zero" /> </section> From b0e6e14028419a4cc172d399c00e2418e5723480 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Crist=C3=B3bal=20Gallardo?= <gallardo@informatik.uni-freiburg.de> Date: Tue, 1 Jun 2021 22:25:02 +0200 Subject: [PATCH 11/20] Include information in help field --- tools/cutadapt/cutadapt.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/cutadapt/cutadapt.xml b/tools/cutadapt/cutadapt.xml index 7583c897d05..cfed29ba3e4 100644 --- a/tools/cutadapt/cutadapt.xml +++ b/tools/cutadapt/cutadapt.xml @@ -204,7 +204,7 @@ $read_mod_options.zero_cap <option value="lowercase">Lowercase: convert to lowercase</option> <option value="none">None: leave unchanged</option> </param> - <param name="internal" type="select" label="Disallow internal adaptor ocurrences" help="TODO"> + <param name="internal" type="select" label="Disallow internal adaptor ocurrences" help="The non-internal 5’ and 3’ adapter types disallow internal occurrences of the adapter sequence. The adapter must always be at one of the ends of the read, but partial occurrences are also ok."> <option value="X">Enabled</option> <option value="" selected="True">Disabled</option> </param> From 76b023454e24e2dda8462cf43fce42ac64163807 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Crist=C3=B3bal=20Gallardo?= <gallardo@informatik.uni-freiburg.de> Date: Wed, 2 Jun 2021 17:09:52 +0200 Subject: [PATCH 12/20] Add sanitize --length-tag --- tools/cutadapt/cutadapt.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/cutadapt/cutadapt.xml b/tools/cutadapt/cutadapt.xml index cfed29ba3e4..2b0a7bdbe75 100644 --- a/tools/cutadapt/cutadapt.xml +++ b/tools/cutadapt/cutadapt.xml @@ -284,7 +284,9 @@ $read_mod_options.zero_cap <when value="False"> </when> </conditional> - <param argument="--length-tag" label="Length Tag" type="text" help="Search for TAG followed by a decimal number in the name of the read (description/comment field of the FASTA or FASTQ file). Replace the decimal number with the correct length of the trimmed read. For example, use --length-tag 'length=' to search for fields like 'length=123'." /> + <param argument="--length-tag" label="Length tag" type="text" help="Search for TAG followed by a decimal number in the name of the read (description/comment field of the FASTA or FASTQ file). Replace the decimal number with the correct length of the trimmed read. For example, use --length-tag 'length=' to search for fields like 'length=123'." > + <validator type="regex">[A-Za-z_= :]+</validator> + </param> <param argument="--rename" label="Rename reads" type="text" optional="True" help="This option can be used to rename both single-end and paired-end reads. "> <validator type="regex">[A-Za-z0-9_ :-{}/+|]+</validator> </param> From 028015260b29f519317f3ec5f69db0c101d1d035 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Crist=C3=B3bal=20Gallardo?= <gallardo@informatik.uni-freiburg.de> Date: Wed, 2 Jun 2021 19:47:51 +0200 Subject: [PATCH 13/20] Add sanitizers --- tools/cutadapt/cutadapt.xml | 31 ++++++++++++++++-- tools/cutadapt/macros.xml | 2 +- tools/cutadapt/test-data/A1.fastq.gz | Bin 340 -> 340 bytes tools/cutadapt/test-data/A2.fastq.gz | Bin 326 -> 326 bytes .../test-data/cutadapt_nextseq_out.fq.gz | Bin 12158 -> 12158 bytes .../cutadapt_out1_internal_adapter.fq.gz | Bin 12180 -> 12180 bytes .../test-data/cutadapt_out1_max_length.fq.gz | Bin 134 -> 134 bytes .../test-data/cutadapt_out1_min_length.fq.gz | Bin 9298 -> 9298 bytes .../cutadapt_out2_internal_adapter.fq.gz | Bin 12153 -> 12153 bytes .../test-data/cutadapt_out2_max_length.fq.gz | Bin 139 -> 139 bytes .../test-data/cutadapt_out2_min_length.fq.gz | Bin 10480 -> 10480 bytes .../test-data/cutadapt_small_rename.out | 6 ++-- .../test-data/cutadapt_trimmed.out.gz | Bin 537 -> 537 bytes .../test-data/cutadapt_untrimmed.out.gz | Bin 12095 -> 12095 bytes tools/cutadapt/test-data/unknown.fastq.gz | Bin 173 -> 173 bytes 15 files changed, 32 insertions(+), 7 deletions(-) diff --git a/tools/cutadapt/cutadapt.xml b/tools/cutadapt/cutadapt.xml index 2b0a7bdbe75..00fc4d22ec7 100644 --- a/tools/cutadapt/cutadapt.xml +++ b/tools/cutadapt/cutadapt.xml @@ -285,10 +285,34 @@ $read_mod_options.zero_cap </when> </conditional> <param argument="--length-tag" label="Length tag" type="text" help="Search for TAG followed by a decimal number in the name of the read (description/comment field of the FASTA or FASTQ file). Replace the decimal number with the correct length of the trimmed read. For example, use --length-tag 'length=' to search for fields like 'length=123'." > - <validator type="regex">[A-Za-z_= :]+</validator> + <sanitizer invalid_char=""> + <valid initial="string.letters,string.digits"> + <add value="_" /> + <add value=":" /> + <add value=" " /> + <add value="{" /> + <add value="}" /> + <add value="/" /> + <add value="+" /> + <add value="|" /> + <add value="=" /> + </valid> + </sanitizer> </param> <param argument="--rename" label="Rename reads" type="text" optional="True" help="This option can be used to rename both single-end and paired-end reads. "> - <validator type="regex">[A-Za-z0-9_ :-{}/+|]+</validator> + <sanitizer invalid_char=""> + <valid initial="string.letters,string.digits"> + <add value="_" /> + <add value=":" /> + <add value=" " /> + <add value="{" /> + <add value="}" /> + <add value="/" /> + <add value="+" /> + <add value="|" /> + <add value="=" /> + </valid> + </sanitizer> </param> <param argument="--cut" label="Remove a fixed number of bases" type="integer" value="0" help="This option allows to unconditionally remove bases from the beginning or end of each read. If the given length is positive, the bases are removed from the beginning of each read. If it is negative, the bases are removed from the end." /> <param argument="--zero-cap" type="boolean" truevalue="--zero-cap" falsevalue="" checked="False" label="Change negative quality values to zero" /> @@ -611,9 +635,10 @@ $read_mod_options.zero_cap <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" /> <param name="adapter_source_list" value="user"/> <param name="adapter" value="AGATCGGAAGAGC"/> + <param name="adapter_name" value="test_adapter"/> <section name="read_mod_options"> <param name="cut" value="5"/> - <param name="rename" value="{prefix:1_13_1259/1} barcode={AGATC} adapter={illumina_adapter}"/> + <param name="rename" value="{id} barcode={cut_prefix}"/> </section> <output name="out1" file="cutadapt_small_rename.out" ftype="fastq"/> </test> diff --git a/tools/cutadapt/macros.xml b/tools/cutadapt/macros.xml index 684f6cf1fdf..a6d71a25055 100644 --- a/tools/cutadapt/macros.xml +++ b/tools/cutadapt/macros.xml @@ -56,7 +56,7 @@ #else if $fa.front_adapter_source.front_adapter_source_list == 'file': -g file:'${adapter_options.internal}${fa.front_adapter_source.front_adapter_file}' #else if str($fa.front_adapter_source.front_adapter_name) != "": - -g '${adapter_options.internal}${fa.front_adapter_source.front_adapter_name}'='${fa.front_adapter_source.front_adapter}' + -g '${fa.front_adapter_source.front_adapter_name}'='${adapter_options.internal}${fa.front_adapter_source.front_adapter}' #else -g '${adapter_options.internal}${fa.front_adapter_source.front_adapter}' #end if diff --git a/tools/cutadapt/test-data/A1.fastq.gz b/tools/cutadapt/test-data/A1.fastq.gz index 8f0e0602b2edc9ec86dca2ff4ae24271e6dde556..f25c3f0139f99399a5142fa123d94e24947f348f 100644 GIT binary patch delta 16 Xcmcb@bcKmszMF&L$nNbM*?k!SF+>HT delta 16 Xcmcb@bcKmszMF$#>ZENO*?k!SF8~Ee diff --git a/tools/cutadapt/test-data/A2.fastq.gz b/tools/cutadapt/test-data/A2.fastq.gz index 91aab83a1f1f29c1522a15348a9d4a323feb37e6..6f330e0d5bf1cd61363591f43b09d3334b975f59 100644 GIT binary patch delta 16 XcmX@cbc~5zzMF&L$nNbM+3gttFN6hn delta 16 XcmX@cbc~5zzMF$#>ZENO+3gttEkFey diff --git a/tools/cutadapt/test-data/cutadapt_nextseq_out.fq.gz b/tools/cutadapt/test-data/cutadapt_nextseq_out.fq.gz index 0da18600442eb77c5a04f3e5019c125b810ac105..cc457262169a6c961f90f8e5a2c7fd773a127223 100644 GIT binary patch delta 16 Xcmewt_b-lJzMF%gY4`Sx?B)6ZKJ*5} delta 16 Xcmewt_b-lJzMF#~eA2d!?B)6ZJj@1f diff --git a/tools/cutadapt/test-data/cutadapt_out1_internal_adapter.fq.gz b/tools/cutadapt/test-data/cutadapt_out1_internal_adapter.fq.gz index bc650c71568f3ca6d7ca91bd750a30c923ce0614..01f0c7e2d8749a92d7932dd40c8f4cdd4d47d76e 100644 GIT binary patch delta 16 XcmbOdKP8@BzMF&L;hyaq*?aW?HE#xJ delta 16 XcmbOdKP8@BzMF$#-{fr@*?aW?Gk*pf diff --git a/tools/cutadapt/test-data/cutadapt_out1_max_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out1_max_length.fq.gz index 6d58cd3faa479de074762fcc3731fde04d341337..15de53bf4209c1a535dc9b89d9ee03fadab1b333 100644 GIT binary patch delta 15 WcmZo;Y-41X@8)3W-m`rodp!Ulfdt(E delta 15 WcmZo;Y-41X@8)30p1f@$dp!Uj@C1_p diff --git a/tools/cutadapt/test-data/cutadapt_out1_min_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out1_min_length.fq.gz index 24c44a5297ed627e3c4a0d07986c76dfb2a2dfe7..f2fa55b88f608eda29d044f4b4f90206e9bbc5c2 100644 GIT binary patch delta 16 XcmccQamj;SzMF%gXwUYI?A|H>HkSqZ delta 16 XcmccQamj;SzMF#~VDh$&?A|H>G_D1% diff --git a/tools/cutadapt/test-data/cutadapt_out2_internal_adapter.fq.gz b/tools/cutadapt/test-data/cutadapt_out2_internal_adapter.fq.gz index ec55e23048948ef8a7ae93a946d3370c18e5918d..3fa45067c977a604d2f7f7a56c6176e04b48dc96 100644 GIT binary patch delta 16 Xcmewv_cM-NzMF&L;hyaq*^Bf6K=TI` delta 16 Xcmewv_cM-NzMF$#-{fr@*^Bf6KLZBH diff --git a/tools/cutadapt/test-data/cutadapt_out2_max_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out2_max_length.fq.gz index 5c1a596e45f5e308a279f3b7ab1be6fa9efde8ea..a70dec1ce1f1c107cd9eba84799c9da363d19083 100644 GIT binary patch delta 15 WcmeBX>}F(_@8)3W-m`rodkX*}5(Ml3 delta 15 WcmeBX>}F(_@8)30p1f@$dkX*{fdrxe diff --git a/tools/cutadapt/test-data/cutadapt_out2_min_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out2_min_length.fq.gz index 94d1667e121e24de2c345cd92c2a57511de71cb0..81c5f8d1109df9cecec4e7019b94538ecf01fd0c 100644 GIT binary patch delta 16 Xcmewm_#u#8zMF%gXwUYI>@PI{JXZ$l delta 16 Xcmewm_#u#8zMF#~VDh$&>@PI{I&KD@ diff --git a/tools/cutadapt/test-data/cutadapt_small_rename.out b/tools/cutadapt/test-data/cutadapt_small_rename.out index 59c665cdb87..9f9c7f26803 100644 --- a/tools/cutadapt/test-data/cutadapt_small_rename.out +++ b/tools/cutadapt/test-data/cutadapt_small_rename.out @@ -1,12 +1,12 @@ -@__oc__prefix:1_13_1259/1__cc__ barcode=__oc__AGATC__cc__ adapter=__oc__illumina_adapter__cc__ +@prefix:1_13_573/1 barcode=CGTCC GAANTAGCTACCACCCTGATTAGACAAAT + &&&!.1&(6:<'67..*,:75)'77&&&5 -@__oc__prefix:1_13_1259/1__cc__ barcode=__oc__AGATC__cc__ adapter=__oc__illumina_adapter__cc__ +@prefix:1_13_1259/1 barcode=AGCCG CTANGACGGGTTGGCCCTTAGACGTATCT + A;A!9<<<,7:<=3=;:<&<?<?8<;=<& -@__oc__prefix:1_13_1259/1__cc__ barcode=__oc__AGATC__cc__ adapter=__oc__illumina_adapter__cc__ +@prefix:1_13_1440/1 barcode=CAAGA TCTNCCCTGCCACATTGCCCTAGTTAAAC + =57!7<';<6?5;;6:+:=)71>70<,=: diff --git a/tools/cutadapt/test-data/cutadapt_trimmed.out.gz b/tools/cutadapt/test-data/cutadapt_trimmed.out.gz index a2a91ad9f008ef1b9d0bcaa9e625254e636187ae..33196cc42ab29a21434fee896e5fe41cc4f615d3 100644 GIT binary patch delta 16 XcmbQqGLwZ}zMF&L!|v@H*@c(@D^Ud^ delta 16 XcmbQqGLwZ}zMF&L;G}IE*@c(@DGdb4 diff --git a/tools/cutadapt/test-data/cutadapt_untrimmed.out.gz b/tools/cutadapt/test-data/cutadapt_untrimmed.out.gz index 26b630e33125f8c2aa4b51a2f2e23d16e01c4ca1..6a54f5bfb7adf9f600211ca823ed1e2d7e0e2335 100644 GIT binary patch delta 16 XcmdlVw?B?uzMF&L!|v@H*)8+|Iu-_X delta 16 XcmdlVw?B?uzMF&L;G}IE*)8+|H_`?i diff --git a/tools/cutadapt/test-data/unknown.fastq.gz b/tools/cutadapt/test-data/unknown.fastq.gz index 4edef7b57a5bade2bf8d1f85b6a687b29fe4520b..6741330278cdf0f82b13df1aea4565f1b7921986 100644 GIT binary patch delta 15 XcmZ3>xR#M!zMF&L$nNbE*_QzTCp`s< delta 15 XcmZ3>xR#M!zMF$#>ZENG*_QzTB~k@3 From 6fd4d309b2d157c16bd915ecc35021a385cb9411 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Crist=C3=B3bal=20Gallardo?= <gallardo@informatik.uni-freiburg.de> Date: Wed, 2 Jun 2021 21:18:35 +0200 Subject: [PATCH 14/20] Add validators --- tools/cutadapt/cutadapt.xml | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/tools/cutadapt/cutadapt.xml b/tools/cutadapt/cutadapt.xml index 00fc4d22ec7..646ca305445 100644 --- a/tools/cutadapt/cutadapt.xml +++ b/tools/cutadapt/cutadapt.xml @@ -265,6 +265,7 @@ $read_mod_options.zero_cap <sanitizer> <valid initial="string.digits"><add value="," /></valid> </sanitizer> + <validator type="regex">[0-9,]+</validator> </param> <param argument="--nextseq-trim" type="integer" value="0" label="NextSeq trimming" help="Experimental option for quality trimming of NextSeq data. This is necessary because that machine cannot distinguish between G and reaching the end of the fragment (it encodes G as ‘black’). This option works like regular quality trimming (where one would use -q 20 instead), except that the qualities of G bases are ignored." /> <param argument="--trim-n" type="boolean" truevalue="--trim-n" falsevalue="" checked="False" label="Trim Ns" help="Trim N's on ends of reads." /> @@ -284,35 +285,29 @@ $read_mod_options.zero_cap <when value="False"> </when> </conditional> - <param argument="--length-tag" label="Length tag" type="text" help="Search for TAG followed by a decimal number in the name of the read (description/comment field of the FASTA or FASTQ file). Replace the decimal number with the correct length of the trimmed read. For example, use --length-tag 'length=' to search for fields like 'length=123'." > + <param argument="--length-tag" label="Length tag" type="text" optional="True" help="Search for TAG followed by a decimal number in the name of the read (description/comment field of the FASTA or FASTQ file). Replace the decimal number with the correct length of the trimmed read. For example, use --length-tag 'length=' to search for fields like 'length=123'." > <sanitizer invalid_char=""> <valid initial="string.letters,string.digits"> - <add value="_" /> - <add value=":" /> - <add value=" " /> - <add value="{" /> - <add value="}" /> <add value="/" /> <add value="+" /> - <add value="|" /> + <add value="-" /> <add value="=" /> + <add value=" " /> </valid> </sanitizer> + <validator type="regex">[A-Za-z0-9 ]+</validator> </param> <param argument="--rename" label="Rename reads" type="text" optional="True" help="This option can be used to rename both single-end and paired-end reads. "> <sanitizer invalid_char=""> <valid initial="string.letters,string.digits"> - <add value="_" /> - <add value=":" /> - <add value=" " /> <add value="{" /> <add value="}" /> - <add value="/" /> - <add value="+" /> - <add value="|" /> + <add value="_" /> <add value="=" /> + <add value=" " /> </valid> </sanitizer> + <validator type="regex">[A-Za-z0-9 {}=]+</validator> </param> <param argument="--cut" label="Remove a fixed number of bases" type="integer" value="0" help="This option allows to unconditionally remove bases from the beginning or end of each read. If the given length is positive, the bases are removed from the beginning of each read. If it is negative, the bases are removed from the end." /> <param argument="--zero-cap" type="boolean" truevalue="--zero-cap" falsevalue="" checked="False" label="Change negative quality values to zero" /> @@ -640,7 +635,11 @@ $read_mod_options.zero_cap <param name="cut" value="5"/> <param name="rename" value="{id} barcode={cut_prefix}"/> </section> - <output name="out1" file="cutadapt_small_rename.out" ftype="fastq"/> + <output name="out1" file="cutadapt_small_rename.out" ftype="fastq"> + <assert_contents> + <has_line line="@prefix:1_13_573/1 barcode=CGTCCGAANT"/> + </assert_contents> + </output> </test> <!-- Test action options --> <test expect_num_outputs="1"> From 60e903ab9e15806868c6628d1a15ffab065b28ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Crist=C3=B3bal=20Gallardo?= <gallardo@informatik.uni-freiburg.de> Date: Wed, 2 Jun 2021 21:32:55 +0200 Subject: [PATCH 15/20] Update validators --- tools/cutadapt/cutadapt.xml | 5 +++-- tools/cutadapt/test-data/A1.fastq.gz | Bin 340 -> 340 bytes tools/cutadapt/test-data/A2.fastq.gz | Bin 326 -> 326 bytes .../test-data/cutadapt_nextseq_out.fq.gz | Bin 12158 -> 12158 bytes .../cutadapt_out1_internal_adapter.fq.gz | Bin 12180 -> 12180 bytes .../test-data/cutadapt_out1_max_length.fq.gz | Bin 134 -> 134 bytes .../test-data/cutadapt_out1_min_length.fq.gz | Bin 9298 -> 9298 bytes .../cutadapt_out2_internal_adapter.fq.gz | Bin 12153 -> 12153 bytes .../test-data/cutadapt_out2_max_length.fq.gz | Bin 139 -> 139 bytes .../test-data/cutadapt_out2_min_length.fq.gz | Bin 10480 -> 10480 bytes .../test-data/cutadapt_trimmed.out.gz | Bin 537 -> 537 bytes .../test-data/cutadapt_untrimmed.out.gz | Bin 12095 -> 12095 bytes tools/cutadapt/test-data/unknown.fastq.gz | Bin 173 -> 173 bytes 13 files changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/cutadapt/cutadapt.xml b/tools/cutadapt/cutadapt.xml index 646ca305445..f928a804f86 100644 --- a/tools/cutadapt/cutadapt.xml +++ b/tools/cutadapt/cutadapt.xml @@ -293,9 +293,10 @@ $read_mod_options.zero_cap <add value="-" /> <add value="=" /> <add value=" " /> + <add value="_" /> </valid> </sanitizer> - <validator type="regex">[A-Za-z0-9 ]+</validator> + <validator type="regex">[A-Za-z0-9 =-_/+]+</validator> </param> <param argument="--rename" label="Rename reads" type="text" optional="True" help="This option can be used to rename both single-end and paired-end reads. "> <sanitizer invalid_char=""> @@ -307,7 +308,7 @@ $read_mod_options.zero_cap <add value=" " /> </valid> </sanitizer> - <validator type="regex">[A-Za-z0-9 {}=]+</validator> + <validator type="regex">[A-Za-z0-9 {}=_]+</validator> </param> <param argument="--cut" label="Remove a fixed number of bases" type="integer" value="0" help="This option allows to unconditionally remove bases from the beginning or end of each read. If the given length is positive, the bases are removed from the beginning of each read. If it is negative, the bases are removed from the end." /> <param argument="--zero-cap" type="boolean" truevalue="--zero-cap" falsevalue="" checked="False" label="Change negative quality values to zero" /> diff --git a/tools/cutadapt/test-data/A1.fastq.gz b/tools/cutadapt/test-data/A1.fastq.gz index f25c3f0139f99399a5142fa123d94e24947f348f..03492d7521dba44735a0a31ee755097cc4c31891 100644 GIT binary patch delta 15 Wcmcb@bcKmczMF%g{MJS`KSls3jRd>^ delta 15 Wcmcb@bcKmczMF&L$nK47evAMqzy#_5 diff --git a/tools/cutadapt/test-data/A2.fastq.gz b/tools/cutadapt/test-data/A2.fastq.gz index 6f330e0d5bf1cd61363591f43b09d3334b975f59..862538c9ca9a16ef0b17742168a3c8a0eda1bc22 100644 GIT binary patch delta 15 WcmX@cbc~5jzMF%g{MJS`2SxxU=>(Dh delta 15 WcmX@cbc~5jzMF&L$nK474vYXO90b4s diff --git a/tools/cutadapt/test-data/cutadapt_nextseq_out.fq.gz b/tools/cutadapt/test-data/cutadapt_nextseq_out.fq.gz index cc457262169a6c961f90f8e5a2c7fd773a127223..4eefe56e57f286e5720c12168ce5f6354b05d0f6 100644 GIT binary patch delta 15 Wcmewt_b-l3zMF%=?AAuM3Vi@Ic?I79 delta 15 Wcmewt_b-l3zMF%gY4=993Vi@JrUncE diff --git a/tools/cutadapt/test-data/cutadapt_out1_internal_adapter.fq.gz b/tools/cutadapt/test-data/cutadapt_out1_internal_adapter.fq.gz index 01f0c7e2d8749a92d7932dd40c8f4cdd4d47d76e..07322b59dc31f067bb394e98b87adf88b0ae6173 100644 GIT binary patch delta 15 WcmbOdKP8?`zMF$#&h3qCefj__kOhhW delta 15 WcmbOdKP8?`zMF&L;hv3befj_`lLfE< diff --git a/tools/cutadapt/test-data/cutadapt_out1_max_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out1_max_length.fq.gz index 15de53bf4209c1a535dc9b89d9ee03fadab1b333..ada41ca50c3d9bb31ab0df4a3f9a9e6d0ef232a5 100644 GIT binary patch delta 14 VcmZo;Y-41T@8)1|yFHPu0RS4V1OEU3 delta 14 VcmZo;Y-41T@8)3W-ZPP{0RS6|1SJ3f diff --git a/tools/cutadapt/test-data/cutadapt_out1_min_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out1_min_length.fq.gz index f2fa55b88f608eda29d044f4b4f90206e9bbc5c2..b2964928c0076e8f7d3b9c6bfa328ff682fd312a 100644 GIT binary patch delta 15 WcmccQamj;CzMF$V@AgJE9~A&C-vu22 delta 15 WcmccQamj;CzMF%gXwODA9~A&D+yz1a diff --git a/tools/cutadapt/test-data/cutadapt_out2_internal_adapter.fq.gz b/tools/cutadapt/test-data/cutadapt_out2_internal_adapter.fq.gz index 3fa45067c977a604d2f7f7a56c6176e04b48dc96..2ae9229536395f0f39e17f8546c73ef94b0d55ef 100644 GIT binary patch delta 15 Wcmewv_cM-7zMF$#&h3qC#rgm@Oa?aq delta 15 Wcmewv_cM-7zMF&L;hv3b#rgm^PX=88 diff --git a/tools/cutadapt/test-data/cutadapt_out2_max_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out2_max_length.fq.gz index a70dec1ce1f1c107cd9eba84799c9da363d19083..955f2637794679e39c460e0dc3aa17759cbab91e 100644 GIT binary patch delta 14 VcmeBX>}F(>@8)1|yFHPu6#yGG1P%ZI delta 14 VcmeBX>}F(>@8)3W-ZPP{6#yI(1T+8u diff --git a/tools/cutadapt/test-data/cutadapt_out2_min_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out2_min_length.fq.gz index 81c5f8d1109df9cecec4e7019b94538ecf01fd0c..894f86195bc77198611a15f2b1ea56276b335faa 100644 GIT binary patch delta 15 Wcmewm_#u!@zMF$V@AgKvR~i5_Q3eeF delta 15 Wcmewm_#u!@zMF%gXwOErR~i5`P6jdn diff --git a/tools/cutadapt/test-data/cutadapt_trimmed.out.gz b/tools/cutadapt/test-data/cutadapt_trimmed.out.gz index 33196cc42ab29a21434fee896e5fe41cc4f615d3..de11bd1355e2bb671fbadc535776a03b384c59f0 100644 GIT binary patch delta 15 WcmbQqGLwZ(zMF$#>8*`y!b|`n>;ygl delta 15 WcmbQqGLwZ(zMF&L!|si2!b|`p69j4i diff --git a/tools/cutadapt/test-data/cutadapt_untrimmed.out.gz b/tools/cutadapt/test-data/cutadapt_untrimmed.out.gz index 6a54f5bfb7adf9f600211ca823ed1e2d7e0e2335..17f6112267b603f6773fe4166f195f42b8dd9995 100644 GIT binary patch delta 15 WcmdlVw?B?ezMF$#>8*`ymihoNu?3L; delta 15 WcmdlVw?B?ezMF&L!|si2mihoO*af`+ diff --git a/tools/cutadapt/test-data/unknown.fastq.gz b/tools/cutadapt/test-data/unknown.fastq.gz index 6741330278cdf0f82b13df1aea4565f1b7921986..20ca13409723ca431d9bd1e88dba4adf37529801 100644 GIT binary patch delta 14 VcmZ3>xR#MkzMF%g{MJOa<p3YN1f&1} delta 14 VcmZ3>xR#MkzMF&L$nJ@3%K;$41kwNi From 005022d4218e0393421544fdb945b57ab3d7ffcb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Crist=C3=B3bal=20Gallardo?= <gallardo@informatik.uni-freiburg.de> Date: Wed, 2 Jun 2021 21:40:50 +0200 Subject: [PATCH 16/20] Update test rename --- tools/cutadapt/cutadapt.xml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tools/cutadapt/cutadapt.xml b/tools/cutadapt/cutadapt.xml index f928a804f86..c6db18de2dd 100644 --- a/tools/cutadapt/cutadapt.xml +++ b/tools/cutadapt/cutadapt.xml @@ -631,14 +631,13 @@ $read_mod_options.zero_cap <param name="input_1" ftype="fastq" value="cutadapt_small.fastq" /> <param name="adapter_source_list" value="user"/> <param name="adapter" value="AGATCGGAAGAGC"/> - <param name="adapter_name" value="test_adapter"/> <section name="read_mod_options"> <param name="cut" value="5"/> <param name="rename" value="{id} barcode={cut_prefix}"/> </section> <output name="out1" file="cutadapt_small_rename.out" ftype="fastq"> <assert_contents> - <has_line line="@prefix:1_13_573/1 barcode=CGTCCGAANT"/> + <has_text text="@prefix:1_13_573/1 barcode=AGCTA"/> </assert_contents> </output> </test> From d91680ef8d475f4585fe8fdff690dd07d479524b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Crist=C3=B3bal=20Gallardo?= <gallardo@informatik.uni-freiburg.de> Date: Wed, 2 Jun 2021 22:00:44 +0200 Subject: [PATCH 17/20] Fix test rename --- tools/cutadapt/cutadapt.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/cutadapt/cutadapt.xml b/tools/cutadapt/cutadapt.xml index c6db18de2dd..0aad5847ea9 100644 --- a/tools/cutadapt/cutadapt.xml +++ b/tools/cutadapt/cutadapt.xml @@ -637,7 +637,7 @@ $read_mod_options.zero_cap </section> <output name="out1" file="cutadapt_small_rename.out" ftype="fastq"> <assert_contents> - <has_text text="@prefix:1_13_573/1 barcode=AGCTA"/> + <has_text text="@prefix:1_13_1259/1 barcode=AGCCG"/> </assert_contents> </output> </test> From d5bf5cc44e9d3ac0268c2e90aad4ffc5ed48d042 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Crist=C3=B3bal=20Gallardo?= <gallardo@informatik.uni-freiburg.de> Date: Wed, 2 Jun 2021 22:14:23 +0200 Subject: [PATCH 18/20] Update adapter internal paired reads --- tools/cutadapt/macros.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/cutadapt/macros.xml b/tools/cutadapt/macros.xml index a6d71a25055..f7324f01288 100644 --- a/tools/cutadapt/macros.xml +++ b/tools/cutadapt/macros.xml @@ -117,7 +117,7 @@ #end for #for $fa in $library.r2.front_adapters2 #if $fa.front_adapter_source2.front_adapter_source_list2 == 'builtin': - -G '${adapter_options.internal}${fa.front_adapter_source2.front_adapter2.fields.name}'='${fa.front_adapter_source2.front_adapter2}' + -G '${fa.front_adapter_source2.front_adapter2.fields.name}'='${adapter_options.internal}${fa.front_adapter_source2.front_adapter2}' #else if $fa.front_adapter_source2.front_adapter_source_list2 == 'file': -G file:'${adapter_options.internal}${fa.front_adapter_source2.front_adapter_file2}' #else if str($fa.front_adapter_source2.front_adapter_name2) != "": From 755b7c3e1ae27e2bcdd540cb04788ef8826af050 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Crist=C3=B3bal=20Gallardo?= <gallardo@informatik.uni-freiburg.de> Date: Wed, 2 Jun 2021 23:58:14 +0200 Subject: [PATCH 19/20] Modify max and min length format --- tools/cutadapt/cutadapt.xml | 150 ++++++++++++++---- tools/cutadapt/test-data/A1.fastq.gz | Bin 340 -> 340 bytes tools/cutadapt/test-data/A2.fastq.gz | Bin 326 -> 326 bytes .../test-data/cutadapt_nextseq_out.fq.gz | Bin 12158 -> 12158 bytes .../cutadapt_out1_internal_adapter.fq.gz | Bin 12180 -> 12180 bytes .../test-data/cutadapt_out1_max_length.fq.gz | Bin 134 -> 134 bytes .../test-data/cutadapt_out1_max_min_01.fq.gz | Bin 0 -> 134 bytes .../test-data/cutadapt_out1_max_min_02.fq.gz | Bin 0 -> 134 bytes .../test-data/cutadapt_out1_min_length.fq.gz | Bin 9298 -> 9298 bytes .../cutadapt_out2_internal_adapter.fq.gz | Bin 12153 -> 12153 bytes .../test-data/cutadapt_out2_max_length.fq.gz | Bin 139 -> 139 bytes .../test-data/cutadapt_out2_max_min_01.fq.gz | Bin 0 -> 139 bytes .../test-data/cutadapt_out2_max_min_02.fq.gz | Bin 0 -> 139 bytes .../test-data/cutadapt_out2_min_length.fq.gz | Bin 10480 -> 10480 bytes .../test-data/cutadapt_trimmed.out.gz | Bin 537 -> 537 bytes .../test-data/cutadapt_untrimmed.out.gz | Bin 12095 -> 12095 bytes tools/cutadapt/test-data/unknown.fastq.gz | Bin 173 -> 173 bytes 17 files changed, 120 insertions(+), 30 deletions(-) create mode 100644 tools/cutadapt/test-data/cutadapt_out1_max_min_01.fq.gz create mode 100644 tools/cutadapt/test-data/cutadapt_out1_max_min_02.fq.gz create mode 100644 tools/cutadapt/test-data/cutadapt_out2_max_min_01.fq.gz create mode 100644 tools/cutadapt/test-data/cutadapt_out2_max_min_02.fq.gz diff --git a/tools/cutadapt/cutadapt.xml b/tools/cutadapt/cutadapt.xml index 0aad5847ea9..4dc2ac6d882 100644 --- a/tools/cutadapt/cutadapt.xml +++ b/tools/cutadapt/cutadapt.xml @@ -1,5 +1,5 @@ <tool id="cutadapt" name="Cutadapt" version="@TOOL_VERSION@+@GALAXY_TOOL_VERSION@" profile="20.01"> - <description>Remove adapter sequences from Fastq/Fasta</description> + <description>Remove adapter sequences from FASTQ/FASTA</description> <macros> <import>macros.xml</import> </macros> @@ -109,14 +109,14 @@ $adapter_options.revcomp $filter_options.discard_trimmed $filter_options.discard_untrimmed -#if str($filter_options.minimum_options.minimum_r2) == 'True': - --minimum-length=$filter_options.minimum_length:$filter_options.minimum_options.value_minimum -#elif str($filter_options.minimum_length): +#if str($filter_options.minimum_length) and str($filter_options.length_R2_options.length_R2_status) == 'True': + --minimum-length=$filter_options.minimum_length:$filter_options.length_R2_options.R2_minimum +#else if str($filter_options.minimum_length): --minimum-length=$filter_options.minimum_length #end if -#if str($filter_options.maximum_options.maximum_r2) == 'True': - --maximum-length=$filter_options.maximum_length:$filter_options.maximum_options.value_maximum -#elif str($filter_options.maximum_length): +#if str($filter_options.maximum_length) and str($filter_options.length_R2_options.length_R2_status) == 'True': + --maximum-length=$filter_options.maximum_length:$filter_options.length_R2_options.R2_maximum +#else if str($filter_options.maximum_length): --maximum-length=$filter_options.maximum_length #end if #if str($filter_options.max_n): @@ -224,30 +224,20 @@ $read_mod_options.zero_cap <section name="filter_options" title="Filter Options"> <param argument="--discard-trimmed" type="boolean" value="False" truevalue="--discard-trimmed" 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 argument="--discard_untrimmed" type="boolean" value="False" truevalue="--discard-untrimmed" falsevalue="" label="Discard Untrimmed Reads" help="Discard reads that do not contain the adapter." /> - <param argument="--minimum-length" type="integer" min="0" optional="True" value="" 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." /> - <conditional name="minimum_options"> - <param name="minimum_r2" type="select" label="Specify a minimum length for reverse reads (R2)" help="When trimming paired-end reads, the minimum lengths for R1 and R2 can be specified separately. If not provided, the same minimum length applies to both reads."> + <param argument="--minimum-length" type="integer" min="0" optional="True" value="" label="Minimum length (R1)" help="Discard trimmed reads that are shorter than LENGTH. Reads that are too short even before adapter removal are also discarded." /> + <param argument="--maximum-length" type="integer" min="0" optional="True" value="" label="Maximum length (R1)" help="Discard trimmed reads that are longer than LENGTH. Reads that are too long even before adapter removal are also discarded." /> + <conditional name="length_R2_options"> + <param name="length_R2_status" type="select" label="Specify a minimum/maximum length for reverse reads (R2)" help="When trimming paired-end reads, the minimum/maximum lengths for R1 and R2 can be specified separately. If not provided, the same minimum length applies to both reads."> <option value="True">Enabled</option> <option value="False" selected="True">Disabled</option> </param> <when value="True"> - <param name="value_minimum" type="integer" min="0" optional="True" value="" label="Minimum length" /> + <param name="R2_minimum" type="integer" min="0" value="" optional="True" label="Minimum length (R2)" /> + <param name="R2_maximum" type="integer" min="0" value="" optional="True" label="Maximum length (R2)" /> </when> <when value="False"> </when> - </conditional> - <param argument="--maximum-length" type="integer" min="0" optional="True" value="" 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." /> - <conditional name="maximum_options"> - <param name="maximum_r2" type="select" label="Specify a maximum length for reverse reads (R2)" help="When trimming paired-end reads, the maximum lengths for R1 and R2 can be specified separately. If not provided, the same maximum length applies to both reads."> - <option value="True">Enabled</option> - <option value="False" selected="True">Disabled</option> - </param> - <when value="True"> - <param name="value_maximum" type="integer" min="0" optional="True" value="" label="Maximum length" /> - </when> - <when value="False"> - </when> - </conditional> + </conditional> <param argument="--max-n" type="float" min="0" optional="True" label="Max N" help="Discard reads with more than this number of 'N' bases. A number between 0 and 1 is interpreted as a fraction of the read length." /> <param argument="--pair-filter" type="select" optional="True" label="Pair filter" help="Which of the reads in a paired-end read have to match the filtering criterion in order for the pair to be filtered. Default: any"> <option value="any" selected="True">Any: a read pair is discarded (or redirected) if one of the reads (R1 or R2) fulfills the filtering criterion. </option> @@ -705,9 +695,9 @@ $read_mod_options.zero_cap <section name="filter_options"> <param name="minimum_length" value="30"/> <param name="pair_filter" value="both"/> - <conditional name="minimum_options"> - <param name="minimum_r2" value="True"/> - <param name="value_minimum" value="10"/> + <conditional name="length_R2_options"> + <param name="length_R2_status" value="True"/> + <param name="R2_minimum" value="10"/> </conditional> </section> <output name="out1" decompress="True" file="cutadapt_out1_min_length.fq.gz" ftype="fastq.gz"/> @@ -729,9 +719,9 @@ $read_mod_options.zero_cap <section name="filter_options"> <param name="pair_filter" value="both"/> <param name="maximum_length" value="50"/> - <conditional name="maximum_options"> - <param name="maximum_r2" value="True"/> - <param name="value_maximum" value="30"/> + <conditional name="length_R2_options"> + <param name="length_R2_status" value="True"/> + <param name="R2_maximum" value="30"/> </conditional> </section> <output name="out1" decompress="True" file="cutadapt_out1_max_length.fq.gz" ftype="fastq.gz"/> @@ -741,6 +731,106 @@ $read_mod_options.zero_cap <has_text text="--pair-filter=both"/> </assert_command> </test> + <!-- Test combination maximum and minimum length paired reads --> + <test expect_num_outputs="2"> + <param name="type" value="paired" /> + <param name="input_1" ftype="fastq.gz" value="bwa-mem-fastq1_assimetric.fq.gz" /> + <param name="input_2" ftype="fastq.gz" value="bwa-mem-fastq2_assimetric.fq.gz" /> + <param name="adapter_source_list" value="user"/> + <param name="adapter" value="AGATCGGAAGAGC"/> + <param name="adapter_source_list2" value="user"/> + <param name="adapter2" value="AGATCGGAAGAGC"/> + <section name="filter_options"> + <param name="pair_filter" value="both"/> + <param name="minimum_length" value="10"/> + <param name="maximum_length" value="50"/> + <conditional name="length_R2_options"> + <param name="length_R2_status" value="True"/> + <param name="R2_maximum" value="30"/> + </conditional> + </section> + <output name="out1" decompress="True" file="cutadapt_out1_max_min_01.fq.gz" ftype="fastq.gz"/> + <output name="out2" decompress="True" file="cutadapt_out2_max_min_01.fq.gz" ftype="fastq.gz"/> + <assert_command> + <has_text text="--minimum-length=10:"/> + <has_text text="--maximum-length=50:30"/> + <has_text text="--pair-filter=both"/> + </assert_command> + </test> + <test expect_num_outputs="2"> + <param name="type" value="paired" /> + <param name="input_1" ftype="fastq.gz" value="bwa-mem-fastq1_assimetric.fq.gz" /> + <param name="input_2" ftype="fastq.gz" value="bwa-mem-fastq2_assimetric.fq.gz" /> + <param name="adapter_source_list" value="user"/> + <param name="adapter" value="AGATCGGAAGAGC"/> + <param name="adapter_source_list2" value="user"/> + <param name="adapter2" value="AGATCGGAAGAGC"/> + <section name="filter_options"> + <param name="pair_filter" value="both"/> + <param name="minimum_length" value="10"/> + <param name="maximum_length" value="50"/> + <conditional name="length_R2_options"> + <param name="length_R2_status" value="True"/> + <param name="R2_minimum" value="10"/> + </conditional> + </section> + <output name="out1" decompress="True" file="cutadapt_out1_max_min_02.fq.gz" ftype="fastq.gz"/> + <output name="out2" decompress="True" file="cutadapt_out2_max_min_02.fq.gz" ftype="fastq.gz"/> + <assert_command> + <has_text text="--minimum-length=10:10"/> + <has_text text="--maximum-length=50:"/> + <has_text text="--pair-filter=both"/> + </assert_command> + </test> + <test expect_num_outputs="2"> + <param name="type" value="paired" /> + <param name="input_1" ftype="fastq.gz" value="bwa-mem-fastq1_assimetric.fq.gz" /> + <param name="input_2" ftype="fastq.gz" value="bwa-mem-fastq2_assimetric.fq.gz" /> + <param name="adapter_source_list" value="user"/> + <param name="adapter" value="AGATCGGAAGAGC"/> + <param name="adapter_source_list2" value="user"/> + <param name="adapter2" value="AGATCGGAAGAGC"/> + <section name="filter_options"> + <param name="pair_filter" value="both"/> + <conditional name="length_R2_options"> + <param name="length_R2_status" value="True"/> + <param name="R2_minimum" value="10"/> + <param name="R2_maximum" value="50"/> + </conditional> + </section> + <output name="out1" decompress="True" file="cutadapt_out1_max_min_03.fq.gz" ftype="fastq.gz"/> + <output name="out2" decompress="True" file="cutadapt_out2_max_min_03.fq.gz" ftype="fastq.gz"/> + <assert_command> + <has_text text="--minimum-length=:10"/> + <has_text text="--maximum-length=:50"/> + <has_text text="--pair-filter=both"/> + </assert_command> + </test> + <test expect_num_outputs="2"> + <param name="type" value="paired" /> + <param name="input_1" ftype="fastq.gz" value="bwa-mem-fastq1_assimetric.fq.gz" /> + <param name="input_2" ftype="fastq.gz" value="bwa-mem-fastq2_assimetric.fq.gz" /> + <param name="adapter_source_list" value="user"/> + <param name="adapter" value="AGATCGGAAGAGC"/> + <param name="adapter_source_list2" value="user"/> + <param name="adapter2" value="AGATCGGAAGAGC"/> + <section name="filter_options"> + <param name="minimum_length" value="10"/> + <param name="pair_filter" value="both"/> + <conditional name="length_R2_options"> + <param name="length_R2_status" value="True"/> + <param name="R2_minimum" value="10"/> + <param name="R2_maximum" value="40"/> + </conditional> + </section> + <output name="out1" decompress="True" file="cutadapt_out1_max_min_04.fq.gz" ftype="fastq.gz"/> + <output name="out2" decompress="True" file="cutadapt_out2_max_min_04.fq.gz" ftype="fastq.gz"/> + <assert_command> + <has_text text="--minimum-length=10:10"/> + <has_text text="--maximum-length=:40"/> + <has_text text="--pair-filter=both"/> + </assert_command> + </test> <!-- Test length options --> <test expect_num_outputs="1"> <param name="type" value="single" /> diff --git a/tools/cutadapt/test-data/A1.fastq.gz b/tools/cutadapt/test-data/A1.fastq.gz index 03492d7521dba44735a0a31ee755097cc4c31891..b6ada601aeff4f424078f013aeb546bf19fe40e2 100644 GIT binary patch delta 15 Wcmcb@bcKmczMF%={O3kCKSls2s05n; delta 15 Wcmcb@bcKmczMF%g{MJS`KSls3jRd>^ diff --git a/tools/cutadapt/test-data/A2.fastq.gz b/tools/cutadapt/test-data/A2.fastq.gz index 862538c9ca9a16ef0b17742168a3c8a0eda1bc22..a3ecce332a694ae5f1f90cff0dbc07a6d286f535 100644 GIT binary patch delta 15 WcmX@cbc~5jzMF%={O3kC2SxxU1O#ya delta 15 WcmX@cbc~5jzMF%g{MJS`2SxxU=>(Dh diff --git a/tools/cutadapt/test-data/cutadapt_nextseq_out.fq.gz b/tools/cutadapt/test-data/cutadapt_nextseq_out.fq.gz index 4eefe56e57f286e5720c12168ce5f6354b05d0f6..1e1584e8fd21f0c3da0a2d2c1ef804ad7ac4f67a 100644 GIT binary patch delta 15 Wcmewt_b-l3zMF&L>yM3W75V@=i3Yp? delta 15 Wcmewt_b-l3zMF%=?AAuM3Vi@Ic?I79 diff --git a/tools/cutadapt/test-data/cutadapt_out1_internal_adapter.fq.gz b/tools/cutadapt/test-data/cutadapt_out1_internal_adapter.fq.gz index 07322b59dc31f067bb394e98b87adf88b0ae6173..37216f005b5403cfc9ef60b0208f33e34e729c20 100644 GIT binary patch delta 15 WcmbOdKP8?`zMF$##;=WRefj_`69uIJ delta 15 WcmbOdKP8?`zMF$#&h3qCefj__kOhhW diff --git a/tools/cutadapt/test-data/cutadapt_out1_max_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out1_max_length.fq.gz index ada41ca50c3d9bb31ab0df4a3f9a9e6d0ef232a5..f0b098be92ecc74603bf9a698740e815df497b63 100644 GIT binary patch delta 14 VcmZo;Y-41T@8)3O{WX!T0RS2e1LXh! delta 14 VcmZo;Y-41T@8)1|yFHPu0RS4V1OEU3 diff --git a/tools/cutadapt/test-data/cutadapt_out1_max_min_01.fq.gz b/tools/cutadapt/test-data/cutadapt_out1_max_min_01.fq.gz new file mode 100644 index 0000000000000000000000000000000000000000..1f2b98c860005bf9163fb543241b33fff5f2404a GIT binary patch literal 134 zcmV;10D1o(iwFQE`nO;J1C7qH4udcZgyB7}QdP|bf*en{t}qLm)%SmtIur(`_Semy zZr(D6iI_N_-DR-#&0rvdrv@;US|3Q_>Spe$E}CxXsnPPy()^3USV7!cqp*UJV-{d& o(mOT#$D^?nM#~jD828jfFE2e{-EY2n9X?vq2Zo3SUi<(60M9f((*OVf literal 0 HcmV?d00001 diff --git a/tools/cutadapt/test-data/cutadapt_out1_max_min_02.fq.gz b/tools/cutadapt/test-data/cutadapt_out1_max_min_02.fq.gz new file mode 100644 index 0000000000000000000000000000000000000000..55fa5e46dda377e80114f4897d26604383a20e34 GIT binary patch literal 134 zcmV;10D1o(iwFQR`nO;J1C7qH4udcZgyB7}QdP|bf*en{t}qLm)%SmtIur(`_Semy zZr(D6iI_N_-DR-#&0rvdrv@;US|3Q_>Spe$E}CxXsnPPy()^3USV7!cqp*UJV-{d& o(mOT#$D^?nM#~jD828jfFE2e{-EY2n9X?vq2Zo3SUi<(60M*Vv-~a#s literal 0 HcmV?d00001 diff --git a/tools/cutadapt/test-data/cutadapt_out1_min_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out1_min_length.fq.gz index b2964928c0076e8f7d3b9c6bfa328ff682fd312a..a5576883359b12d52f15da2e693a63c40bc90aac 100644 GIT binary patch delta 15 WcmccQamj;CzMF&L%g>E$J}Lk+83q9W delta 15 WcmccQamj;CzMF$V@AgJE9~A&C-vu22 diff --git a/tools/cutadapt/test-data/cutadapt_out2_internal_adapter.fq.gz b/tools/cutadapt/test-data/cutadapt_out2_internal_adapter.fq.gz index 2ae9229536395f0f39e17f8546c73ef94b0d55ef..2aa85b4b91a3e85f6f314eea74ddc3c650dc7086 100644 GIT binary patch delta 15 Wcmewv_cM-7zMF$##;=WR#rgm@&jwNe delta 15 Wcmewv_cM-7zMF$#&h3qC#rgm@Oa?aq diff --git a/tools/cutadapt/test-data/cutadapt_out2_max_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out2_max_length.fq.gz index 955f2637794679e39c460e0dc3aa17759cbab91e..e3b37d3a360e784a5bb9d9b57075fc729df227a3 100644 GIT binary patch delta 14 VcmeBX>}F(>@8)3O{WX!T6#yEP1M~m@ delta 14 VcmeBX>}F(>@8)1|yFHPu6#yGG1P%ZI diff --git a/tools/cutadapt/test-data/cutadapt_out2_max_min_01.fq.gz b/tools/cutadapt/test-data/cutadapt_out2_max_min_01.fq.gz new file mode 100644 index 0000000000000000000000000000000000000000..f43c5aa0930715fbdb83ce9d0c7146e49c490798 GIT binary patch literal 139 zcmV;60CfK!iwFQE`nO;J1C5Tc4#O}AM0b9rs^W9v2s2csNTEwNtN;Hg#jY}^C+=W+ zM|&r%I}1xXb=TEjAAtY~vR6Pjm$GE)=4QRC#g6P2SJ*v<ZiEMh+Dx53nG3b6B5VaL twN{QM(*bww?iyqpI)3>FiMN~uH5Ck0e5&denCAo>Mqdygd!qIL005;$J9z*A literal 0 HcmV?d00001 diff --git a/tools/cutadapt/test-data/cutadapt_out2_max_min_02.fq.gz b/tools/cutadapt/test-data/cutadapt_out2_max_min_02.fq.gz new file mode 100644 index 0000000000000000000000000000000000000000..2b90c1d060fc43d06d1f3b0b80b0baa8975876e5 GIT binary patch literal 139 zcmV;60CfK!iwFQR`nO;J1C5Tc4#O}AM0b9rs^W9v2s2csNTEwNtN;Hg#jY}^C+=W+ zM|&r%I}1xXb=TEjAAtY~vR6Pjm$GE)=4QRC#g6P2SJ*v<ZiEMh+Dx53nG3b6B5VaL twN{QM(*bww?iyqpI)3>FiMN~uH5Ck0e5&denCAo>Mqdygd!qIL0068YJB9!N literal 0 HcmV?d00001 diff --git a/tools/cutadapt/test-data/cutadapt_out2_min_length.fq.gz b/tools/cutadapt/test-data/cutadapt_out2_min_length.fq.gz index 894f86195bc77198611a15f2b1ea56276b335faa..1474b23f18ad6bbc6a789da21703053750895df6 100644 GIT binary patch delta 15 Wcmewm_#u!@zMF&L%g>E$uQUKSiw5xk delta 15 Wcmewm_#u!@zMF$V@AgKvR~i5_Q3eeF diff --git a/tools/cutadapt/test-data/cutadapt_trimmed.out.gz b/tools/cutadapt/test-data/cutadapt_trimmed.out.gz index de11bd1355e2bb671fbadc535776a03b384c59f0..746cc1c060ed91c95e0915f9148ca2bd1fbd4f5b 100644 GIT binary patch delta 15 WcmbQqGLwZ(zMF#~<>y8=VI}|~0R$WX delta 15 WcmbQqGLwZ(zMF$#>8*`y!b|`n>;ygl diff --git a/tools/cutadapt/test-data/cutadapt_untrimmed.out.gz b/tools/cutadapt/test-data/cutadapt_untrimmed.out.gz index 17f6112267b603f6773fe4166f195f42b8dd9995..c25d3b109f49fd497884065823b945c7afa6ef03 100644 GIT binary patch delta 15 WcmdlVw?B?ezMF#~<>y8=OML(@#szNx delta 15 WcmdlVw?B?ezMF$#>8*`ymihoNu?3L; diff --git a/tools/cutadapt/test-data/unknown.fastq.gz b/tools/cutadapt/test-data/unknown.fastq.gz index 20ca13409723ca431d9bd1e88dba4adf37529801..9265576f49ef5bd95d0a5d046338aba3dd5ea269 100644 GIT binary patch delta 14 VcmZ3>xR#MkzMF%={O3fr<p3V|1cLwo delta 14 VcmZ3>xR#MkzMF%g{MJOa<p3YN1f&1} From fae23a9dbf4ae8a25c6d0e466181facf4f099006 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Crist=C3=B3bal=20Gallardo?= <gallardo@informatik.uni-freiburg.de> Date: Thu, 3 Jun 2021 00:03:45 +0200 Subject: [PATCH 20/20] Remove test 3 combination max and min length --- tools/cutadapt/cutadapt.xml | 49 ------------------------------------- 1 file changed, 49 deletions(-) diff --git a/tools/cutadapt/cutadapt.xml b/tools/cutadapt/cutadapt.xml index 4dc2ac6d882..cadeeb1a889 100644 --- a/tools/cutadapt/cutadapt.xml +++ b/tools/cutadapt/cutadapt.xml @@ -782,55 +782,6 @@ $read_mod_options.zero_cap <has_text text="--pair-filter=both"/> </assert_command> </test> - <test expect_num_outputs="2"> - <param name="type" value="paired" /> - <param name="input_1" ftype="fastq.gz" value="bwa-mem-fastq1_assimetric.fq.gz" /> - <param name="input_2" ftype="fastq.gz" value="bwa-mem-fastq2_assimetric.fq.gz" /> - <param name="adapter_source_list" value="user"/> - <param name="adapter" value="AGATCGGAAGAGC"/> - <param name="adapter_source_list2" value="user"/> - <param name="adapter2" value="AGATCGGAAGAGC"/> - <section name="filter_options"> - <param name="pair_filter" value="both"/> - <conditional name="length_R2_options"> - <param name="length_R2_status" value="True"/> - <param name="R2_minimum" value="10"/> - <param name="R2_maximum" value="50"/> - </conditional> - </section> - <output name="out1" decompress="True" file="cutadapt_out1_max_min_03.fq.gz" ftype="fastq.gz"/> - <output name="out2" decompress="True" file="cutadapt_out2_max_min_03.fq.gz" ftype="fastq.gz"/> - <assert_command> - <has_text text="--minimum-length=:10"/> - <has_text text="--maximum-length=:50"/> - <has_text text="--pair-filter=both"/> - </assert_command> - </test> - <test expect_num_outputs="2"> - <param name="type" value="paired" /> - <param name="input_1" ftype="fastq.gz" value="bwa-mem-fastq1_assimetric.fq.gz" /> - <param name="input_2" ftype="fastq.gz" value="bwa-mem-fastq2_assimetric.fq.gz" /> - <param name="adapter_source_list" value="user"/> - <param name="adapter" value="AGATCGGAAGAGC"/> - <param name="adapter_source_list2" value="user"/> - <param name="adapter2" value="AGATCGGAAGAGC"/> - <section name="filter_options"> - <param name="minimum_length" value="10"/> - <param name="pair_filter" value="both"/> - <conditional name="length_R2_options"> - <param name="length_R2_status" value="True"/> - <param name="R2_minimum" value="10"/> - <param name="R2_maximum" value="40"/> - </conditional> - </section> - <output name="out1" decompress="True" file="cutadapt_out1_max_min_04.fq.gz" ftype="fastq.gz"/> - <output name="out2" decompress="True" file="cutadapt_out2_max_min_04.fq.gz" ftype="fastq.gz"/> - <assert_command> - <has_text text="--minimum-length=10:10"/> - <has_text text="--maximum-length=:40"/> - <has_text text="--pair-filter=both"/> - </assert_command> - </test> <!-- Test length options --> <test expect_num_outputs="1"> <param name="type" value="single" />