comparison fastp.xml @ 16:10678d49d39e draft default tip

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/fastp commit 81e2b45f5357c7ba235f219828a6998f146012c4
author iuc
date Sat, 08 Feb 2025 15:15:16 +0000
parents a626e8c0e1ba
children
comparison
equal deleted inserted replaced
15:a626e8c0e1ba 16:10678d49d39e
1 <tool id="fastp" name="fastp" version="@TOOL_VERSION@+galaxy3" profile="23.1"> 1 <tool id="fastp" name="fastp" version="@TOOL_VERSION@+galaxy4" profile="23.1">
2 <description>fast all-in-one preprocessing for FASTQ files</description> 2 <description>fast all-in-one preprocessing for FASTQ files</description>
3 <macros> 3 <macros>
4 <import>macros.xml</import> 4 <import>macros.xml</import>
5 </macros> 5 </macros>
6 <expand macro="biotools" /> 6 <expand macro="biotools" />
21 #end if 21 #end if
22 #set $in1 = $single_paired.paired_input.forward 22 #set $in1 = $single_paired.paired_input.forward
23 #set $in2 = $single_paired.paired_input.reverse 23 #set $in2 = $single_paired.paired_input.reverse
24 #set $in1_name = re.sub('[^\w\-\s]', '_', str($single_paired.paired_input.name)) + $ext 24 #set $in1_name = re.sub('[^\w\-\s]', '_', str($single_paired.paired_input.name)) + $ext
25 #set $in2_name = re.sub('[^\w\-\s]', '_', str("%s_%s" % ($single_paired.paired_input.name, "R2"))) + $ext 25 #set $in2_name = re.sub('[^\w\-\s]', '_', str("%s_%s" % ($single_paired.paired_input.name, "R2"))) + $ext
26 #set out1 = $output_paired_coll.forward
27 #set out2 = $output_paired_coll.reverse
28 ln -sf '$in1' '$in1_name' && 26 ln -sf '$in1' '$in1_name' &&
29 ln -sf '$in2' '$in2_name' && 27 ln -sf '$in2' '$in2_name' &&
30 #else 28 #else
31 #if $in1.is_of_type('fastqsanger.gz') 29 #if $in1.is_of_type('fastqsanger.gz')
32 #set ext = '.fastqsanger.gz' 30 #set ext = '.fastqsanger.gz'
33 #end if 31 #end if
34 32
35 #set $in1_name = re.sub('[^\w\-\s]', '_', str($in1.element_identifier)) + $ext 33 #set $in1_name = re.sub('[^\w\-\s]', '_', str($in1.element_identifier)) + $ext
36 ln -sf '$in1' '$in1_name' && 34 ln -sf '$in1' '$in1_name' &&
37
38 #if str($single_paired.single_paired_selector) == 'paired':
39 #set $in2_name = re.sub('[^\w\-\s]', '_', str("%s_R2" % $in2.element_identifier)) + $ext
40 ln -sf '$in2' '$in2_name' &&
41 #end if
42 #end if 35 #end if
43 36
44 ## Run fastp 37 ## Run fastp
45 38
46 fastp 39 fastp
54 47
55 #if str($single_paired.single_paired_selector).startswith('paired') 48 #if str($single_paired.single_paired_selector).startswith('paired')
56 -I '$in2_name' 49 -I '$in2_name'
57 #if $single_paired.merge_reads.merge 50 #if $single_paired.merge_reads.merge
58 $single_paired.merge_reads.merge 51 $single_paired.merge_reads.merge
59 --merged_out '$merged_reads' 52 --merged_out merged${ext}
60 #if $single_paired.merge_reads.include_unmerged 53 #if $single_paired.merge_reads.include_unmerged
61 $single_paired.merge_reads.include_unmerged 54 $single_paired.merge_reads.include_unmerged
62 #else 55 #else
63 --out1 '$unmerged_out1' 56 --out1 'unmerged_R1${ext}'
64 --out2 '$unmerged_out2' 57 --out2 'unmerged_R2${ext}'
65 --unpaired1 '$unpaired1' 58 --unpaired1 'unpaired_R1${ext}'
66 --unpaired2 '$unpaired2' 59 --unpaired2 'unpaired_R2${ext}'
67 #end if 60 #end if
68 #else 61 #else
69 -o first${ext} 62 -o first${ext}
70 -O second${ext} 63 -O second${ext}
71 #end if 64 #end if
209 202
210 ## Base correction by overlap analysis options 203 ## Base correction by overlap analysis options
211 204
212 $read_mod_options.base_correction_options.correction 205 $read_mod_options.base_correction_options.correction
213 206
214 #if str($single_paired.single_paired_selector).startswith('single') 207 #if str($single_paired.single_paired_selector) == 'paired_collection'
215 && 208 #if $single_paired.merge_reads.merge
216 mv first${ext} '${out1}' 209 && mv merged${ext} '$merged_reads'
217 #elif str($single_paired.single_paired_selector).startswith('paired') and not $single_paired.merge_reads.merge: 210 #if not $single_paired.merge_reads.include_unmerged
218 && 211 && mv 'unmerged_R1${ext}' '$unmerged_out_coll.forward'
219 mv first${ext} '${out1}' 212 && mv 'unmerged_R2${ext}' '$unmerged_out_coll.reverse'
220 && 213 && mv 'unpaired_R1${ext}' '$unpaired_out_coll.forward'
221 mv second${ext} '${out2}' 214 && mv 'unpaired_R2${ext}' '$unpaired_out_coll.reverse'
222 #end if 215 #end if
216 #else
217 && mv first${ext} '$output_paired_coll.forward'
218 && mv second${ext} '$output_paired_coll.reverse'
219 #end if
220 #else
221 && mv first${ext} '${out1}'
222 #end if
223
223 ]]></command> 224 ]]></command>
224 <inputs> 225 <inputs>
225 <conditional name="single_paired"> 226 <conditional name="single_paired">
226 <param name="single_paired_selector" type="select" label="Single-end or paired reads"> 227 <param name="single_paired_selector" type="select" label="Single-end or paired reads">
227 <option value="single" selected="true">Single-end</option> 228 <option value="single" selected="true">Single-end</option>
228 <option value="paired">Paired</option>
229 <option value="paired_collection">Paired Collection</option> 229 <option value="paired_collection">Paired Collection</option>
230 </param> 230 </param>
231 <when value="single"> 231 <when value="single">
232 <expand macro="in" /> 232 <expand macro="in" />
233 <expand macro="adapter_trimming_options" /> 233 <expand macro="adapter_trimming_options" />
234 <expand macro="global_trimming_options" /> 234 <expand macro="global_trimming_options" />
235 </when>
236 <when value="paired">
237 <expand macro="in" read_number="1" argument="-i"/>
238 <expand macro="in" read_number="2" argument="-I"/>
239 <expand macro="merge_reads" />
240 <expand macro="adapter_trimming_options">
241 <expand macro="adapter_sequence" read_number="2"/>
242 <expand macro="detect_adapter_for_pe" />
243 </expand>
244 <expand macro="global_trimming_options_paired" />
245 </when> 235 </when>
246 <when value="paired_collection"> 236 <when value="paired_collection">
247 <param name="paired_input" type="data_collection" format="fastqsanger,fastqsanger.gz" label="Select paired collection(s)" collection_type="paired"/> 237 <param name="paired_input" type="data_collection" format="fastqsanger,fastqsanger.gz" label="Select paired collection(s)" collection_type="paired"/>
248 <expand macro="merge_reads" /> 238 <expand macro="merge_reads" />
249 <expand macro="adapter_trimming_options"> 239 <expand macro="adapter_trimming_options">
279 <param name="complexity_threshold" argument="-Y" type="integer" optional="true" label="Complexity threshold" help="Threshold for low complexity filter (0~100). Default is 30, which means 30% complexity is required."/> 269 <param name="complexity_threshold" argument="-Y" type="integer" optional="true" label="Complexity threshold" help="Threshold for low complexity filter (0~100). Default is 30, which means 30% complexity is required."/>
280 </section> 270 </section>
281 </section> 271 </section>
282 272
283 <!-- Read Modification Options --> 273 <!-- Read Modification Options -->
284 <section name="read_mod_options" title="Read Modification Options"> 274 <section name="read_mod_options" title="Read Modification Options">
285 <conditional name="polyg_tail_trimming"> 275 <conditional name="polyg_tail_trimming">
286 <param name="trimming_select" type="select" label="PolyG tail trimming" help="This feature is enabled for NextSeq/NovaSeq data by default. NextSeq/NovaSeq data is detected by the machine ID in the FASTQ records."> 276 <param name="trimming_select" type="select" label="PolyG tail trimming" help="This feature is enabled for NextSeq/NovaSeq data by default. NextSeq/NovaSeq data is detected by the machine ID in the FASTQ records.">
287 <option value="" selected="true">Automatic trimming for Illumina NextSeq/NovaSeq data</option> 277 <option value="" selected="true">Automatic trimming for Illumina NextSeq/NovaSeq data</option>
288 <option value="-g">Force polyG tail trimming</option> 278 <option value="-g">Force polyG tail trimming</option>
289 <option value="-G">Disable polyG tail trimming</option> 279 <option value="-G">Disable polyG tail trimming</option>
333 <param name="report_json" type="boolean" truevalue="True" falsevalue="False" checked="True" label="Output JSON report" help="The JSON report contains all the data visualized in the HTML report. The format of the JSON report is manually optimized to be easily readable by humans and is compatible with MultiQC"/> 323 <param name="report_json" type="boolean" truevalue="True" falsevalue="False" checked="True" label="Output JSON report" help="The JSON report contains all the data visualized in the HTML report. The format of the JSON report is manually optimized to be easily readable by humans and is compatible with MultiQC"/>
334 </section> 324 </section>
335 </inputs> 325 </inputs>
336 326
337 <outputs> 327 <outputs>
338 <data name="out1" format_source="in1" label="${tool.name} on ${on_string}: Read 1 output"> 328 <data name="out1" format_source="single_paired|in1" label="${tool.name} on ${on_string}: Read 1 output">
339 <filter>single_paired['single_paired_selector'] in ["single", "paired"] and not single_paired['merge_reads']['merge']</filter> 329 <filter>single_paired['single_paired_selector'] == "single"</filter>
340 </data> 330 </data>
341 <data name="out2" format_source="in2" label="${tool.name} on ${on_string}: Read 2 output"> 331 <collection name="output_paired_coll" type="paired" format_source="single_paired|paired_input['forward']" label="${tool.name} on ${on_string}: Paired-end output">
342 <filter>single_paired['single_paired_selector'] == "paired" and not single_paired['merge_reads']['merge']</filter>
343 </data>
344 <collection name="output_paired_coll" type="paired" format_source="paired_input['forward']" label="${tool.name} on ${on_string}: Paired-end output">
345 <filter>single_paired['single_paired_selector'] == "paired_collection" and not single_paired['merge_reads']['merge']</filter> 332 <filter>single_paired['single_paired_selector'] == "paired_collection" and not single_paired['merge_reads']['merge']</filter>
346 </collection> 333 </collection>
334
347 <data name="report_html" format="html" from_work_dir="fastp.html" label="${tool.name} on ${on_string}: HTML report"> 335 <data name="report_html" format="html" from_work_dir="fastp.html" label="${tool.name} on ${on_string}: HTML report">
348 <filter>output_options['report_html'] is True</filter> 336 <filter>output_options['report_html'] is True</filter>
349 </data> 337 </data>
350 <data name="report_json" format="json" from_work_dir="fastp.json" label="${tool.name} on ${on_string}: JSON report"> 338 <data name="report_json" format="json" from_work_dir="fastp.json" label="${tool.name} on ${on_string}: JSON report">
351 <filter>output_options['report_json'] is True</filter> 339 <filter>output_options['report_json'] is True</filter>
352 </data> 340 </data>
353 <data name="merged_reads" format_source="in1" label="${tool.name} on ${on_string}: Merged reads"> 341 <data name="merged_reads" format_source="single_paired|paired_input['forward']" label="${tool.name} on ${on_string}: Merged reads">
354 <filter>single_paired['single_paired_selector'] in ["paired", "paired_collection"] and single_paired['merge_reads']['merge']</filter> 342 <filter>single_paired['single_paired_selector'] == "paired_collection" and single_paired['merge_reads']['merge']</filter>
355 <expand macro="format_actions" read_number="1" forward_reverse="forward" />
356 </data> 343 </data>
357 <data name="unmerged_out1" format_source="in1" label="${tool.name} on ${on_string}: Unmerged filtered reads1"> 344 <collection name="unmerged_out_coll" type="paired" format_source="single_paired|paired_input['forward']" label="${tool.name} on ${on_string}: Unmerged filtered">
358 <filter>single_paired['single_paired_selector'] in ["paired", "paired_collection"] and single_paired['merge_reads']['merge'] and not single_paired['merge_reads']['include_unmerged']</filter> 345 <filter>single_paired['single_paired_selector'] == "paired_collection" and single_paired['merge_reads']['merge'] and not single_paired['merge_reads']['include_unmerged']</filter>
359 <expand macro="format_actions" read_number="1" forward_reverse="forward" /> 346 </collection>
360 </data> 347 <collection name="unpaired_out_coll" type="paired" format_source="single_paired|paired_input['forward']" label="${tool.name} on ${on_string}: Unmerged unfiltered">
361 <data name="unmerged_out2" format_source="in2" label="${tool.name} on ${on_string}: Unmerged filtered reads2"> 348 <filter>single_paired['single_paired_selector'] == "paired_collection" and single_paired['merge_reads']['merge'] and not single_paired['merge_reads']['include_unmerged']</filter>
362 <filter>single_paired['single_paired_selector'] in ["paired", "paired_collection"] and single_paired['merge_reads']['merge'] and not single_paired['merge_reads']['include_unmerged']</filter> 349 </collection>
363 <expand macro="format_actions" read_number="2" forward_reverse="reverse" />
364 </data>
365 <data name="unpaired1" format_source="in1" label="${tool.name} on ${on_string}: Unmerged unfiltered reads1">
366 <filter>single_paired['single_paired_selector'] in ["paired", "paired_collection"] and single_paired['merge_reads']['merge'] and not single_paired['merge_reads']['include_unmerged']</filter>
367 <expand macro="format_actions" read_number="1" forward_reverse="forward" />
368 </data>
369 <data name="unpaired2" format_source="in2" label="${tool.name} on ${on_string}: Unmerged unfiltered reads2">
370 <filter>single_paired['single_paired_selector'] in ["paired", "paired_collection"] and single_paired['merge_reads']['merge'] and not single_paired['merge_reads']['include_unmerged']</filter>
371 <expand macro="format_actions" read_number="2" forward_reverse="reverse" />
372 </data>
373 </outputs> 350 </outputs>
374 351
375 <tests> 352 <tests>
376 <!-- 1. Ensure default output works --> 353 <!-- 1. Ensure default output works -->
377 <test expect_num_outputs="3"> 354 <test expect_num_outputs="3">
378 <param name="in1" ftype="fastqsanger" value="R1.fq"/> 355 <conditional name="single_paired">
379 <param name="single_paired_selector" value="single"/> 356 <param name="single_paired_selector" value="single"/>
357 <param name="in1" ftype="fastqsanger" value="R1.fq"/>
358 </conditional>
380 <output name="out1" ftype="fastqsanger" file="out1.fq"/> 359 <output name="out1" ftype="fastqsanger" file="out1.fq"/>
381 <output name="report_html"> 360 <output name="report_html">
382 <assert_contents> 361 <assert_contents>
383 <has_text text="fastp report"/> 362 <has_text text="fastp report"/>
384 </assert_contents> 363 </assert_contents>
389 </assert_contents> 368 </assert_contents>
390 </output> 369 </output>
391 </test> 370 </test>
392 <!-- 2. Ensure paired collection works --> 371 <!-- 2. Ensure paired collection works -->
393 <test expect_num_outputs="4"> 372 <test expect_num_outputs="4">
394 <param name="single_paired_selector" value="paired_collection"/> 373 <conditional name="single_paired">
395 <param name="paired_input"> 374 <param name="single_paired_selector" value="paired_collection"/>
396 <collection type="paired"> 375 <param name="paired_input">
397 <element name="forward" value="bwa-mem-fastq1.fq" ftype="fastqsanger" /> 376 <collection type="paired">
398 <element name="reverse" value="bwa-mem-fastq2.fq" ftype="fastqsanger" /> 377 <element name="forward" value="bwa-mem-fastq1.fq" ftype="fastqsanger" />
399 </collection> 378 <element name="reverse" value="bwa-mem-fastq2.fq" ftype="fastqsanger" />
400 </param> 379 </collection>
401 <param name="report_json" value="False" /> 380 </param>
381 </conditional>
382 <section name="output_options">
383 <param name="report_json" value="False" />
384 </section>
402 <output name="report_html"> 385 <output name="report_html">
403 <assert_contents> 386 <assert_contents>
404 <has_text text="fastp report"/> 387 <has_text text="fastp report"/>
405 </assert_contents> 388 </assert_contents>
406 </output> 389 </output>
409 <element name="reverse" value="out_bwa2.fq" ftype="fastqsanger"/> 392 <element name="reverse" value="out_bwa2.fq" ftype="fastqsanger"/>
410 </output_collection> 393 </output_collection>
411 </test> 394 </test>
412 <!-- 3. Ensure custom adapter works --> 395 <!-- 3. Ensure custom adapter works -->
413 <test expect_num_outputs="2"> 396 <test expect_num_outputs="2">
414 <param name="in1" ftype="fastqsanger" value="R1.fq"/> 397 <conditional name="single_paired">
415 <param name="single_paired_selector" value="single"/> 398 <param name="single_paired_selector" value="single"/>
416 <param name="adapter_sequence1" value="ATCG"/> 399 <param name="in1" ftype="fastqsanger" value="R1.fq"/>
417 <param name="report_json" value="False" /> 400 <section name="adapter_trimming_options">
401 <param name="adapter_sequence1" value="ATCG"/>
402 </section>
403 </conditional>
404 <section name="output_options">
405 <param name="report_json" value="False" />
406 </section>
418 <output name="out1" ftype="fastqsanger" file="out_a.fq"/> 407 <output name="out1" ftype="fastqsanger" file="out_a.fq"/>
419 </test> 408 </test>
420 <!-- 4. Ensure UMI processing works --> 409 <!-- 4. Ensure UMI processing works -->
421 <test expect_num_outputs="2"> 410 <test expect_num_outputs="2">
422 <param name="in1" ftype="fastqsanger" value="R1.fq"/> 411 <conditional name="single_paired">
423 <param name="single_paired_selector" value="single"/> 412 <param name="in1" ftype="fastqsanger" value="R1.fq"/>
424 <section name="umi_processing"> 413 <param name="single_paired_selector" value="single"/>
425 <param name="umi" value="true"/> 414 </conditional>
426 <param name="umi_loc" value="read1"/> 415 <section name="read_mod_options">
427 <param name="umi_len" value="8"/> 416 <section name="umi_processing">
428 </section> 417 <param name="umi" value="true"/>
429 <param name="report_json" value="False" /> 418 <param name="umi_loc" value="read1"/>
419 <param name="umi_len" value="8"/>
420 </section>
421 </section>
422 <section name="output_options">
423 <param name="report_json" value="False" />
424 </section>
430 <output name="out1" ftype="fastqsanger" file="out2.fq"/> 425 <output name="out1" ftype="fastqsanger" file="out2.fq"/>
431 </test> 426 </test>
432 <!-- 5. Ensure UMI processing with different lengths works --> 427 <!-- 5. Ensure UMI processing with different lengths works -->
433 <test expect_num_outputs="2"> 428 <test expect_num_outputs="2">
434 <param name="in1" ftype="fastqsanger" value="R1.fq"/> 429 <conditional name="single_paired">
435 <param name="single_paired_selector" value="single"/> 430 <param name="in1" ftype="fastqsanger" value="R1.fq"/>
436 <section name="umi_processing"> 431 <param name="single_paired_selector" value="single"/>
437 <param name="umi" value="true"/> 432 </conditional>
438 <param name="umi_loc" value="read1"/> 433 <section name="read_mod_options">
439 <param name="umi_len" value="12"/> 434 <section name="umi_processing">
440 </section> 435 <param name="umi" value="true"/>
441 <param name="report_json" value="False" /> 436 <param name="umi_loc" value="read1"/>
437 <param name="umi_len" value="12"/>
438 </section>
439 </section>
440 <section name="output_options">
441 <param name="report_json" value="False" />
442 </section>
442 <output name="out1" ftype="fastqsanger" file="out3.fq"/> 443 <output name="out1" ftype="fastqsanger" file="out3.fq"/>
443 </test> 444 </test>
444 <!-- 6. Ensure paired-end fastqsanger works --> 445 <!-- 6. Ensure paired-end UMI processing of Read 1 works -->
445 <test expect_num_outputs="3">
446 <param name="in1" ftype="fastqsanger" value="bwa-mem-fastq1.fq"/>
447 <param name="in2" ftype="fastqsanger" value="bwa-mem-fastq2.fq"/>
448 <param name="single_paired_selector" value="paired"/>
449 <param name="report_json" value="False" />
450 <output name="out1" ftype="fastqsanger" file="out_bwa1.fq"/>
451 <output name="out2" ftype="fastqsanger" file="out_bwa2.fq"/>
452 </test>
453 <!-- 7. Ensure paired-end UMI processing of Read 1 works -->
454 <test expect_num_outputs="3">
455 <param name="in1" ftype="fastqsanger" value="bwa-mem-fastq1.fq"/>
456 <param name="in2" ftype="fastqsanger" value="bwa-mem-fastq2.fq"/>
457 <param name="single_paired_selector" value="paired"/>
458 <section name="umi_processing">
459 <param name="umi" value="true"/>
460 <param name="umi_loc" value="read1"/>
461 <param name="umi_len" value="8"/>
462 </section>
463 <param name="report_json" value="False" />
464 <output name="out1" ftype="fastqsanger" file="out_bwa_umi_read1_1.fq"/>
465 <output name="out2" ftype="fastqsanger" file="out_bwa_umi_read1_2.fq"/>
466 </test>
467 <!-- 8. Ensure paired-end UMI processing of Read 2 works -->
468 <test expect_num_outputs="4"> 446 <test expect_num_outputs="4">
469 <param name="in1" ftype="fastqsanger" value="bwa-mem-fastq1.fq"/> 447 <conditional name="single_paired">
470 <param name="in2" ftype="fastqsanger" value="bwa-mem-fastq2.fq"/> 448 <param name="single_paired_selector" value="paired_collection"/>
471 <param name="single_paired_selector" value="paired"/> 449 <param name="paired_input">
472 <section name="umi_processing"> 450 <collection type="paired">
473 <param name="umi" value="true"/> 451 <element name="forward" value="bwa-mem-fastq1.fq" ftype="fastqsanger" />
474 <param name="umi_loc" value="read2"/> 452 <element name="reverse" value="bwa-mem-fastq2.fq" ftype="fastqsanger" />
475 <param name="umi_len" value="8"/> 453 </collection>
476 </section> 454 </param>
477 <output name="out1" ftype="fastqsanger" file="out_bwa_umi_read2_1.fq"/> 455 </conditional>
478 <output name="out2" ftype="fastqsanger" file="out_bwa_umi_read2_2.fq"/> 456 <section name="read_mod_options">
457 <section name="umi_processing">
458 <param name="umi" value="true"/>
459 <param name="umi_loc" value="read1"/>
460 <param name="umi_len" value="8"/>
461 </section>
462 </section>
463 <section name="output_options">
464 <param name="report_json" value="False" />
465 </section>
466 <output_collection name="output_paired_coll" type="paired">
467 <element name="forward" value="out_bwa_umi_read1_1.fq" ftype="fastqsanger"/>
468 <element name="reverse" value="out_bwa_umi_read1_2.fq" ftype="fastqsanger"/>
469 </output_collection>
470 </test>
471 <!-- 7. Ensure paired-end UMI processing of Read 2 works -->
472 <test expect_num_outputs="5">
473 <conditional name="single_paired">
474 <param name="single_paired_selector" value="paired_collection"/>
475 <param name="paired_input">
476 <collection type="paired">
477 <element name="forward" value="bwa-mem-fastq1.fq" ftype="fastqsanger" />
478 <element name="reverse" value="bwa-mem-fastq2.fq" ftype="fastqsanger" />
479 </collection>
480 </param>
481 </conditional>
482 <section name="read_mod_options">
483 <section name="umi_processing">
484 <param name="umi" value="true"/>
485 <param name="umi_loc" value="read2"/>
486 <param name="umi_len" value="8"/>
487 </section>
488 </section>
489 <output_collection name="output_paired_coll" type="paired">
490 <element name="forward" value="out_bwa_umi_read2_1.fq" ftype="fastqsanger"/>
491 <element name="reverse" value="out_bwa_umi_read2_2.fq" ftype="fastqsanger"/>
492 </output_collection>
479 <output name="report_json"> 493 <output name="report_json">
480 <assert_contents> 494 <assert_contents>
481 <has_text text="fastp report"/> 495 <has_text text="fastp report"/>
482 </assert_contents> 496 </assert_contents>
483 </output> 497 </output>
484 </test> 498 </test>
485 <!-- 9. Ensure JSON report output works --> 499 <!-- 8. Ensure JSON report output works -->
486 <test expect_num_outputs="2"> 500 <test expect_num_outputs="2">
487 <param name="in1" ftype="fastqsanger" value="R1.fq"/> 501 <conditional name="single_paired">
488 <param name="single_paired_selector" value="single"/> 502 <param name="single_paired_selector" value="single"/>
489 <param name="report_html" value="False"/> 503 <param name="in1" ftype="fastqsanger" value="R1.fq"/>
504 </conditional>
505 <section name="output_options">
506 <param name="report_html" value="False"/>
507 </section>
490 <output name="out1" ftype="fastqsanger" file="out1.fq"/> 508 <output name="out1" ftype="fastqsanger" file="out1.fq"/>
491 <output name="report_json"> 509 <output name="report_json">
492 <assert_contents> 510 <assert_contents>
493 <has_text text="fastp report"/> 511 <has_text text="fastp report"/>
494 </assert_contents> 512 </assert_contents>
495 </output> 513 </output>
496 </test> 514 </test>
497 <!-- 10. Ensure polyG trimming works --> 515 <!-- 9. Ensure polyG trimming works -->
498 <test expect_num_outputs="3"> 516 <test expect_num_outputs="3">
499 <param name="in1" ftype="fastqsanger.gz" value="R1.fq.gz"/> 517 <conditional name="single_paired">
500 <param name="single_paired_selector" value="single"/> 518 <param name="single_paired_selector" value="single"/>
501 <param name="trimming_select" value="-g"/> 519 <param name="in1" ftype="fastqsanger.gz" value="R1.fq.gz"/>
502 <param name="poly_g_min_len" value="10"/> 520 </conditional>
503 <output name="out1" ftype="fastqsanger.gz" decompress="True" file="out1.fq.gz"/> 521 <section name="read_mod_options">
522 <conditional name="polyg_tail_trimming">
523 <param name="trimming_select" value="-g"/>
524 <param name="poly_g_min_len" value="10"/>
525 </conditional>
526 </section>
527 <output name="out1" ftype="fastqsanger.gz" decompress="true" file="out1.fq.gz"/>
504 <output name="report_json"> 528 <output name="report_json">
505 <assert_contents> 529 <assert_contents>
506 <has_text text="fastp report"/> 530 <has_text text="fastp report"/>
507 </assert_contents> 531 </assert_contents>
508 </output> 532 </output>
509 </test> 533 </test>
510 <!-- 11. Ensure polyX trimming works --> 534 <!-- 10. Ensure polyX trimming works -->
511 <test expect_num_outputs="3"> 535 <test expect_num_outputs="3">
512 <param name="in1" ftype="fastqsanger.gz" value="R1.fq.gz"/> 536 <conditional name="single_paired">
513 <param name="single_paired_selector" value="single"/> 537 <param name="single_paired_selector" value="single"/>
514 <param name="trimming_select" value="-G"/> 538 <param name="in1" ftype="fastqsanger.gz" value="R1.fq.gz"/>
515 <param name="polyx_trimming_select" value="-x"/> 539 </conditional>
516 <param name="poly_x_min_len" value="10"/> 540 <section name="read_mod_options">
517 <output name="out1" ftype="fastqsanger.gz" decompress="True" file="out1.fq.gz"/> 541 <conditional name="polyg_tail_trimming">
542 <param name="trimming_select" value="-G"/>
543 </conditional>
544 <conditional name="polyx_tail_trimming">
545 <param name="polyx_trimming_select" value="-x"/>
546 <param name="poly_x_min_len" value="10"/>
547 </conditional>
548 </section>
549 <output name="out1" ftype="fastqsanger.gz" decompress="true" file="out1.fq.gz"/>
518 <output name="report_json"> 550 <output name="report_json">
519 <assert_contents> 551 <assert_contents>
520 <has_text text="fastp report"/> 552 <has_text text="fastp report"/>
521 </assert_contents> 553 </assert_contents>
522 </output> 554 </output>
523 </test> 555 </test>
524 <!-- 12. Test fastqsanger files with different length --> 556 <!-- 11. Test fastqsanger files with different length -->
525 <test expect_exit_code="255" expect_failure="true"> 557 <test expect_exit_code="255" expect_failure="true">
526 <param name="single_paired_selector" value="paired_collection"/> 558 <conditional name="single_paired">
527 <param name="paired_input"> 559 <param name="single_paired_selector" value="paired_collection"/>
528 <collection type="paired"> 560 <param name="paired_input">
529 <element name="forward" value="bwa-mem-fastq1.fq" ftype="fastqsanger" /> 561 <collection type="paired">
530 <element name="reverse" value="bwa-mem-fastq2_too_long.fq" ftype="fastqsanger" /> 562 <element name="forward" value="bwa-mem-fastq1.fq" ftype="fastqsanger" />
531 </collection> 563 <element name="reverse" value="bwa-mem-fastq2_too_long.fq" ftype="fastqsanger" />
532 </param> 564 </collection>
533 </test> 565 </param>
534 <!-- 13. Test merge reads in combination with paired --> 566 </conditional>
535 <test expect_num_outputs="5"> 567 </test>
536 <param name="in1" ftype="fastqsanger" value="bwa-mem-fastq1.fq"/> 568 <!-- 12. Test merge reads in combination with paired -->
537 <param name="in2" ftype="fastqsanger" value="bwa-mem-fastq2.fq"/> 569 <test expect_num_outputs="7">
538 <param name="single_paired_selector" value="paired"/> 570 <conditional name="single_paired">
539 <param name="merge" value="--merge" /> 571 <param name="single_paired_selector" value="paired_collection"/>
540 <param name="report_html" value="False" /> 572 <param name="paired_input">
541 <param name="report_json" value="False" /> 573 <collection type="paired">
574 <element name="forward" value="bwa-mem-fastq1.fq" ftype="fastqsanger" />
575 <element name="reverse" value="bwa-mem-fastq2.fq" ftype="fastqsanger" />
576 </collection>
577 </param>
578 <conditional name="merge_reads">
579 <param name="merge" value="--merge" />
580 </conditional>
581 </conditional>
582 <section name="output_options">
583 <param name="report_json" value="False" />
584 <param name="report_html" value="False" />
585 </section>
542 <output name="merged_reads" ftype="fastqsanger" file="bwa-mem-merged-reads.fastqsanger" /> 586 <output name="merged_reads" ftype="fastqsanger" file="bwa-mem-merged-reads.fastqsanger" />
543 <output name="unmerged_out1" ftype="fastqsanger" file="bwa-mem-unmerged-filtered-reads1.fastqsanger" /> 587 <output_collection name="unmerged_out_coll" type="paired">
544 <output name="unmerged_out2" ftype="fastqsanger" file="bwa-mem-unmerged-filtered-reads2.fastqsanger" /> 588 <element name="forward" value="bwa-mem-unmerged-filtered-reads1.fastqsanger" ftype="fastqsanger"/>
545 <output name="unpaired1" ftype="fastqsanger" file="bwa-mem-unmerged-unfiltered-reads1.fastqsanger" /> 589 <element name="reverse" value="bwa-mem-unmerged-filtered-reads2.fastqsanger" ftype="fastqsanger"/>
546 <output name="unpaired2" ftype="fastqsanger"> 590 </output_collection>
547 <assert_contents> 591 <output_collection name="unpaired_out_coll" type="paired">
548 <has_size size="0" /> 592 <element name="forward" value="bwa-mem-unmerged-unfiltered-reads1.fastqsanger" ftype="fastqsanger"/>
549 </assert_contents> 593 <element name="reverse" ftype="fastqsanger">
550 </output> 594 <assert_contents>
551 </test> 595 <has_size size="0" />
552 <!-- 14. Test merge and include_unmerged in combination with paired collection --> 596 </assert_contents>
597 </element>
598 </output_collection>
599 </test>
600 <!-- 13. Test merge and include_unmerged in combination with paired collection -->
553 <test expect_num_outputs="2"> 601 <test expect_num_outputs="2">
554 <param name="single_paired_selector" value="paired_collection"/> 602 <conditional name="single_paired">
555 <param name="paired_input"> 603 <param name="single_paired_selector" value="paired_collection"/>
556 <collection type="paired"> 604 <param name="paired_input">
557 <element name="forward" value="bwa-mem-fastq1.fq" ftype="fastqsanger" /> 605 <collection type="paired">
558 <element name="reverse" value="bwa-mem-fastq2.fq" ftype="fastqsanger" /> 606 <element name="forward" value="bwa-mem-fastq1.fq" ftype="fastqsanger" />
559 </collection> 607 <element name="reverse" value="bwa-mem-fastq2.fq" ftype="fastqsanger" />
560 </param> 608 </collection>
561 <param name="merge" value="--merge" /> 609 </param>
562 <param name="include_unmerged" value="--include_unmerged" /> 610 <conditional name="merge_reads">
563 <param name="report_html" value="False" /> 611 <param name="merge" value="--merge" />
612 <param name="include_unmerged" value="true" />
613 </conditional>
614 </conditional>
615 <section name="output_options">
616 <param name="report_html" value="False" />
617 </section>
564 <output name="merged_reads" ftype="fastqsanger" file="bwa-mem-merged-read-include-unmerged.fastqsanger" /> 618 <output name="merged_reads" ftype="fastqsanger" file="bwa-mem-merged-read-include-unmerged.fastqsanger" />
565 <output name="report_json"> 619 <output name="report_json">
566 <assert_contents> 620 <assert_contents>
567 <has_text text="fastp report"/> 621 <has_text text="fastp report"/>
568 </assert_contents> 622 </assert_contents>
569 </output> 623 </output>
570 </test> 624 </test>
571 <!--15. Test paired collection in combination with compressed input--> 625 <!-- 14. Test merge reads in combination with paired -->
626 <test expect_num_outputs="7">
627 <conditional name="single_paired">
628 <param name="single_paired_selector" value="paired_collection"/>
629 <param name="paired_input">
630 <collection type="paired">
631 <element name="forward" value="bwa-mem-fastq1.fq.gz" ftype="fastqsanger.gz" />
632 <element name="reverse" value="bwa-mem-fastq2.fq.gz" ftype="fastqsanger.gz" />
633 </collection>
634 </param>
635 <conditional name="merge_reads">
636 <param name="merge" value="--merge" />
637 </conditional>
638 </conditional>
639 <section name="output_options">
640 <param name="report_html" value="False" />
641 <param name="report_json" value="False" />
642 </section>
643 <output name="merged_reads" ftype="fastqsanger.gz" decompress="true" file="bwa-mem-merged-reads.fastqsanger.gz" />
644 <output_collection name="unmerged_out_coll" type="paired">
645 <element name="forward" value="bwa-mem-unmerged-filtered-reads1.fastqsanger.gz" decompress="true" ftype="fastqsanger.gz"/>
646 <element name="reverse" value="bwa-mem-unmerged-filtered-reads2.fastqsanger.gz" decompress="true" ftype="fastqsanger.gz"/>
647 </output_collection>
648 <output_collection name="unpaired_out_coll" type="paired">
649 <element name="forward" value="bwa-mem-unmerged-unfiltered-reads1.fastqsanger.gz" decompress="true" ftype="fastqsanger.gz"/>
650 <element name="reverse" ftype="fastqsanger.gz">
651 <assert_contents>
652 <has_size size="0" />
653 </assert_contents>
654 </element>
655 </output_collection>
656 </test>
657 <!-- 15. Test merge and include_unmerged in combination with paired collection -->
658 <test expect_num_outputs="2">
659 <conditional name="single_paired">
660 <param name="single_paired_selector" value="paired_collection"/>
661 <param name="paired_input">
662 <collection type="paired">
663 <element name="forward" value="bwa-mem-fastq1.fq.gz" ftype="fastqsanger.gz" />
664 <element name="reverse" value="bwa-mem-fastq2.fq.gz" ftype="fastqsanger.gz" />
665 </collection>
666 </param>
667 <conditional name="merge_reads">
668 <param name="merge" value="--merge" />
669 <param name="include_unmerged" value="true" />
670 </conditional>
671 </conditional>
672 <section name="output_options">
673 <param name="report_html" value="False" />
674 </section>
675 <output name="merged_reads" ftype="fastqsanger.gz" decompress="true" file="bwa-mem-merged-read-include-unmerged.fastqsanger.gz" />
676 <output name="report_json">
677 <assert_contents>
678 <has_text text="fastp report"/>
679 </assert_contents>
680 </output>
681 </test>
682 <!--16. Test paired collection in combination with compressed input-->
572 <test expect_num_outputs="4"> 683 <test expect_num_outputs="4">
573 <param name="single_paired_selector" value="paired_collection"/> 684 <conditional name="single_paired">
574 <param name="paired_input"> 685 <param name="single_paired_selector" value="paired_collection"/>
575 <collection type="paired"> 686 <param name="paired_input">
576 <element name="forward" value="bwa-mem-fastq-paired-collection/input_forward.fastqsanger.gz" ftype="fastqsanger.gz" /> 687 <collection type="paired">
577 <element name="reverse" value="bwa-mem-fastq-paired-collection/input_reverse.fastqsanger.gz" ftype="fastqsanger.gz" /> 688 <element name="forward" value="bwa-mem-fastq-paired-collection/input_forward.fastqsanger.gz" ftype="fastqsanger.gz" />
578 </collection> 689 <element name="reverse" value="bwa-mem-fastq-paired-collection/input_reverse.fastqsanger.gz" ftype="fastqsanger.gz" />
579 </param> 690 </collection>
580 <param name="report_json" value="False" /> 691 </param>
692 </conditional>
693 <section name="output_options">
694 <param name="report_json" value="False" />
695 </section>
581 <output name="report_html"> 696 <output name="report_html">
582 <assert_contents> 697 <assert_contents>
583 <has_text text="fastp report"/> 698 <has_text text="fastp report"/>
584 </assert_contents> 699 </assert_contents>
585 </output> 700 </output>
586 <output_collection name="output_paired_coll" type="paired"> 701 <output_collection name="output_paired_coll" type="paired">
587 <element name="forward" value="bwa-mem-fastq-paired-collection/output_forward.fastqsanger.gz" decompress="True" ftype="fastqsanger.gz"/> 702 <element name="forward" value="bwa-mem-fastq-paired-collection/output_forward.fastqsanger.gz" decompress="true" ftype="fastqsanger.gz"/>
588 <element name="reverse" value="bwa-mem-fastq-paired-collection/output_reverse.fastqsanger.gz" decompress="True" ftype="fastqsanger.gz"/> 703 <element name="reverse" value="bwa-mem-fastq-paired-collection/output_reverse.fastqsanger.gz" decompress="true" ftype="fastqsanger.gz"/>
589 </output_collection> 704 </output_collection>
590 </test> 705 </test>
591 </tests> 706 </tests>
592 <help><![CDATA[ 707 <help><![CDATA[
593 .. class:: infomark 708 .. class:: infomark
631 746
632 **Outputs** 747 **Outputs**
633 748
634 * Processed reads 749 * Processed reads
635 * Merged reads 750 * Merged reads
636 * Unmerged filtered reads1, reads that cannot be merged successfully, but both pass all the filters. 751 * Unmerged filtered reads, reads that cannot be merged successfully, but both pass all the filters.
637 * Unmerged filtered reads2, reads that cannot be merged successfully, but both pass all the filters. 752 * Unmerged unfiltered reads, reads that cannot be merged, i.e. **forward** passes filters but **reverse** doesn't.
638 * Unmerged unfiltered reads1, reads that cannot be merged, **read1** passes filters but **read2** doesn't.
639 * Unmerged unfiltered reads2, reads that cannot be merged, **read2** passes filters but **read1** doesn't.
640 753
641 Optionally, under **Output Options** you can choose to output 754 Optionally, under **Output Options** you can choose to output
642 755
643 * HTML report (default is Yes) 756 * HTML report (default is Yes)
644 * JSON report (compatible with MultiQC) 757 * JSON report (compatible with MultiQC)