comparison fastp.xml @ 13:dbfc505896e9 draft default tip

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/fastp commit 78e6d7efcb74d3baa4e5611a7be4ad82b51bfe0d
author iuc
date Tue, 15 Oct 2024 11:45:19 +0000
parents d60c3f704da0
children
comparison
equal deleted inserted replaced
12:d60c3f704da0 13:dbfc505896e9
1 <tool id="fastp" name="fastp" version="@TOOL_VERSION@+galaxy1" profile="23.1"> 1 <tool id="fastp" name="fastp" version="@TOOL_VERSION@+galaxy2" 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" />
11 <command detect_errors="exit_code"><![CDATA[ 11 <command detect_errors="exit_code"><![CDATA[
12 #import re 12 #import re
13 13
14 ## Link input files 14 ## Link input files
15 15
16 #set ext = '.fastq' 16 #set ext = '.fastqsanger'
17 17
18 #if $single_paired.single_paired_selector == 'paired_collection': 18 #if $single_paired.single_paired_selector == 'paired_collection'
19 #if $single_paired.paired_input.forward.is_of_type('fastq.gz'): 19 #if $single_paired.paired_input.forward.is_of_type('fastqsanger.gz')
20 #set ext = '.fastq.gz' 20 #set ext = '.fastqsanger.gz'
21 #elif $single_paired.paired_input.forward.is_of_type('fastqillumina.gz')
22 #set ext = '.fastqillumina.gz'
21 #end if 23 #end if
22 #set $in1 = $single_paired.paired_input.forward 24 #set $in1 = $single_paired.paired_input.forward
23 #set $in2 = $single_paired.paired_input.reverse 25 #set $in2 = $single_paired.paired_input.reverse
24 #set $in1_name = re.sub('[^\w\-\s]', '_', str($single_paired.paired_input.name)) + $ext 26 #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 27 #set $in2_name = re.sub('[^\w\-\s]', '_', str("%s_%s" % ($single_paired.paired_input.name, "R2"))) + $ext
26 #set out1 = $output_paired_coll.forward 28 #set out1 = $output_paired_coll.forward
27 #set out2 = $output_paired_coll.reverse 29 #set out2 = $output_paired_coll.reverse
28 ln -sf '$in1' '$in1_name' && 30 ln -sf '$in1' '$in1_name' &&
29 ln -sf '$in2' '$in2_name' && 31 ln -sf '$in2' '$in2_name' &&
30 #else 32 #else
31 #if $in1.is_of_type('fastq.gz') 33 #if $in1.is_of_type('fastqsanger.gz')
32 #set ext = '.fastq.gz' 34 #set ext = '.fastqsanger.gz'
35 #elif $in1.is_of_type('fastqillumina.gz')
36 #set ext = '.fastqillumina.gz'
33 #end if 37 #end if
34 38
35 #set $in1_name = re.sub('[^\w\-\s]', '_', str($in1.element_identifier)) + $ext 39 #set $in1_name = re.sub('[^\w\-\s]', '_', str($in1.element_identifier)) + $ext
36 ln -sf '$in1' '$in1_name' && 40 ln -sf '$in1' '$in1_name' &&
37 41
39 #set $in2_name = re.sub('[^\w\-\s]', '_', str("%s_R2" % $in2.element_identifier)) + $ext 43 #set $in2_name = re.sub('[^\w\-\s]', '_', str("%s_R2" % $in2.element_identifier)) + $ext
40 ln -sf '$in2' '$in2_name' && 44 ln -sf '$in2' '$in2_name' &&
41 #end if 45 #end if
42 #end if 46 #end if
43 47
48 cp '$c1' galaxy.json &&
44 49
45 ## Run fastp 50 ## Run fastp
46 51
47 fastp 52 fastp
48 53
52 #if $in1.is_of_type('fastqillumina', 'fastqsolexa', 'fastqillumina.gz', 'fastqsolexa.gz'): 57 #if $in1.is_of_type('fastqillumina', 'fastqsolexa', 'fastqillumina.gz', 'fastqsolexa.gz'):
53 --phred64 58 --phred64
54 #end if 59 #end if
55 60
56 -i '$in1_name' 61 -i '$in1_name'
57 -o first${ext} 62
58 63 ## Merge reads
59 #if str($single_paired.single_paired_selector).startswith('paired'): 64
65 #if str($single_paired.single_paired_selector).startswith('paired')
60 -I '$in2_name' 66 -I '$in2_name'
61 -O second${ext} 67 #if $single_paired.merge_reads.merge
62 #end if 68 $single_paired.merge_reads.merge
63 69 --merged_out '$merged_reads'
70 #if $single_paired.merge_reads.include_unmerged
71 $single_paired.merge_reads.include_unmerged
72 #else
73 --out1 '$unmerged_out1'
74 --out2 '$unmerged_out2'
75 --unpaired1 '$unpaired1'
76 --unpaired2 '$unpaired2'
77 #end if
78 #else
79 -o first${ext}
80 -O second${ext}
81 #end if
82 #else
83 -o first${ext}
84 #end if
64 85
65 ## Adapter Trimming Options 86 ## Adapter Trimming Options
66 87
67 $single_paired.adapter_trimming_options.disable_adapter_trimming 88 $single_paired.adapter_trimming_options.disable_adapter_trimming
68 89
198 219
199 ## Base correction by overlap analysis options 220 ## Base correction by overlap analysis options
200 221
201 $read_mod_options.base_correction_options.correction 222 $read_mod_options.base_correction_options.correction
202 223
203 && 224 #if str($single_paired.single_paired_selector).startswith('single')
204 225 &&
205 mv first${ext} '${out1}' 226 mv first${ext} '${out1}'
206 #if str($single_paired.single_paired_selector).startswith('paired'): 227 #elif str($single_paired.single_paired_selector).startswith('paired') and not $single_paired.merge_reads.merge:
228 &&
229 mv first${ext} '${out1}'
207 && 230 &&
208 mv second${ext} '${out2}' 231 mv second${ext} '${out2}'
209 #end if 232 #end if
210 ]]></command> 233 ]]></command>
234 <configfiles>
235 <configfile name="c1">
236 #set $ext1 = "fastqsanger"
237 #set $ext2 = "fastqsanger"
238 #if str($single_paired.single_paired_selector) == "single"
239 #if $in1.ext.endswith("gz")
240 #set $ext1 = "fastqsanger.gz"
241 #end if
242 #elif str($single_paired.single_paired_selector) == "paired"
243 #if $in1.ext.endswith("gz")
244 #set $ext1 = "fastqsanger.gz"
245 #end if
246 #if $in2.ext.endswith("gz")
247 #set $ext2 = "fastqsanger.gz"
248 #end if
249 #else
250 #if $paired_input.forward.ext.endswith("gz")
251 #set $ext1 = "fastqsanger.gz"
252 #end if
253 #if $paired_input.reverse.ext.endswith("gz")
254 #set $ext2 = "fastqsanger.gz"
255 #end if
256 #end if
257 {
258 "out1": {"ext": "$ext1"},
259 "out2": {"ext": "$ext2"},
260 "merged_reads": {"ext": "$ext1"},
261 "unmerged_out1": {"ext": "$ext1"},
262 "unmerged_out2": {"ext": "$ext2"},
263 "unpaired1": {"ext": "$ext1"},
264 "unpaired2": {"ext": "$ext2"}
265 }
266 </configfile>
267 </configfiles>
211 <inputs> 268 <inputs>
212 <conditional name="single_paired"> 269 <conditional name="single_paired">
213 <param name="single_paired_selector" type="select" label="Single-end or paired reads"> 270 <param name="single_paired_selector" type="select" label="Single-end or paired reads">
214 <option value="single" selected="true">Single-end</option> 271 <option value="single" selected="true">Single-end</option>
215 <option value="paired">Paired</option> 272 <option value="paired">Paired</option>
221 <expand macro="global_trimming_options" /> 278 <expand macro="global_trimming_options" />
222 </when> 279 </when>
223 <when value="paired"> 280 <when value="paired">
224 <expand macro="in" read_number="1" argument="-i"/> 281 <expand macro="in" read_number="1" argument="-i"/>
225 <expand macro="in" read_number="2" argument="-I"/> 282 <expand macro="in" read_number="2" argument="-I"/>
283 <expand macro="merge_reads" />
226 <expand macro="adapter_trimming_options"> 284 <expand macro="adapter_trimming_options">
227 <expand macro="adapter_sequence" read_number="2"/> 285 <expand macro="adapter_sequence" read_number="2"/>
228 <expand macro="detect_adapter_for_pe" /> 286 <expand macro="detect_adapter_for_pe" />
229 </expand> 287 </expand>
230 <expand macro="global_trimming_options_paired" /> 288 <expand macro="global_trimming_options_paired" />
231 </when> 289 </when>
232 <when value="paired_collection"> 290 <when value="paired_collection">
233 <param name="paired_input" type="data_collection" format="fastq,fastq.gz" label="Select paired collection(s)" collection_type="paired"/> 291 <param name="paired_input" type="data_collection" format="fastqsanger,fastqsanger.gz,fastqillumina,fastqillumina.gz" label="Select paired collection(s)" collection_type="paired"/>
292 <expand macro="merge_reads" />
234 <expand macro="adapter_trimming_options"> 293 <expand macro="adapter_trimming_options">
235 <expand macro="adapter_sequence" read_number="2"/> 294 <expand macro="adapter_sequence" read_number="2"/>
236 <expand macro="detect_adapter_for_pe" /> 295 <expand macro="detect_adapter_for_pe" />
237 </expand> 296 </expand>
238 <expand macro="global_trimming_options_paired" /> 297 <expand macro="global_trimming_options_paired" />
313 </section> 372 </section>
314 </section> 373 </section>
315 374
316 <section name="output_options" title="Output Options" expanded="False"> 375 <section name="output_options" title="Output Options" expanded="False">
317 <param name="report_html" type="boolean" truevalue="True" falsevalue="False" checked="True" label="Output HTML report" help="fastp provides a QC report for the data Before and After filtering within a single HTML page, which enables comparison of the quality statistics changed by the preprocessing step directly"/> 376 <param name="report_html" type="boolean" truevalue="True" falsevalue="False" checked="True" label="Output HTML report" help="fastp provides a QC report for the data Before and After filtering within a single HTML page, which enables comparison of the quality statistics changed by the preprocessing step directly"/>
318 <param name="report_json" type="boolean" truevalue="True" falsevalue="False" checked="False" 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"/> 377 <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"/>
319 </section> 378 </section>
320 </inputs> 379 </inputs>
321 380
322 <outputs> 381 <outputs>
323 <data name="out1" format_source="in1" label="${tool.name} on ${on_string}: Read 1 output"> 382 <data name="out1" format="auto" label="${tool.name} on ${on_string}: Read 1 output">
324 <filter>single_paired['single_paired_selector'] in ["single", "paired"]</filter> 383 <filter>single_paired['single_paired_selector'] in ["single", "paired"] and not single_paired['merge_reads']['merge']</filter>
325 </data> 384 </data>
326 <data name="out2" format_source="in2" label="${tool.name} on ${on_string}: Read 2 output"> 385 <data name="out2" format="auto" label="${tool.name} on ${on_string}: Read 2 output">
327 <filter>single_paired['single_paired_selector'] == "paired"</filter> 386 <filter>single_paired['single_paired_selector'] == "paired" and not single_paired['merge_reads']['merge']</filter>
328 </data> 387 </data>
329 <collection name="output_paired_coll" type="paired" format_source="paired_input['forward']" label="${tool.name} on ${on_string}: Paired-end output"> 388 <collection name="output_paired_coll" type="paired" format_source="paired_input['forward']" label="${tool.name} on ${on_string}: Paired-end output">
330 <filter>single_paired['single_paired_selector'] == "paired_collection"</filter> 389 <filter>single_paired['single_paired_selector'] == "paired_collection" and not single_paired['merge_reads']['merge']</filter>
331 </collection> 390 </collection>
332 <data name="report_html" format="html" from_work_dir="fastp.html" label="${tool.name} on ${on_string}: HTML report"> 391 <data name="report_html" format="html" from_work_dir="fastp.html" label="${tool.name} on ${on_string}: HTML report">
333 <filter>output_options['report_html'] is True</filter> 392 <filter>output_options['report_html'] is True</filter>
334 </data> 393 </data>
335 <data name="report_json" format="json" from_work_dir="fastp.json" label="${tool.name} on ${on_string}: JSON report"> 394 <data name="report_json" format="json" from_work_dir="fastp.json" label="${tool.name} on ${on_string}: JSON report">
336 <filter>output_options['report_json'] is True</filter> 395 <filter>output_options['report_json'] is True</filter>
337 </data> 396 </data>
397 <data name="merged_reads" format="auto" label="${tool.name} on ${on_string}: Merged reads">
398 <filter>single_paired['single_paired_selector'] in ["paired", "paired_collection"] and single_paired['merge_reads']['merge']</filter>
399 </data>
400 <data name="unmerged_out1" format="auto" label="${tool.name} on ${on_string}: Unmerged filtered reads1">
401 <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>
402 </data>
403 <data name="unmerged_out2" format="auto" label="${tool.name} on ${on_string}: Unmerged filtered reads2">
404 <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>
405 </data>
406 <data name="unpaired1" format="auto" label="${tool.name} on ${on_string}: Unmerged unfiltered reads1">
407 <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>
408 </data>
409 <data name="unpaired2" format="auto" label="${tool.name} on ${on_string}: Unmerged unfiltered reads2">
410 <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>
411 </data>
338 </outputs> 412 </outputs>
339 413
340 <tests> 414 <tests>
341 <!-- 1. Ensure default output works --> 415 <!-- 1. Ensure default output works -->
342 <test expect_num_outputs="2"> 416 <test expect_num_outputs="3">
343 <param name="in1" ftype="fastqsanger" value="R1.fq"/> 417 <param name="in1" ftype="fastqsanger" value="R1.fq"/>
344 <param name="single_paired_selector" value="single"/> 418 <param name="single_paired_selector" value="single"/>
345 <output name="out1" ftype="fastqsanger" file="out1.fq"/> 419 <output name="out1" ftype="fastqsanger" file="out1.fq"/>
346 <output name="report_html"> 420 <output name="report_html">
421 <assert_contents>
422 <has_text text="fastp report"/>
423 </assert_contents>
424 </output>
425 <output name="report_json">
347 <assert_contents> 426 <assert_contents>
348 <has_text text="fastp report"/> 427 <has_text text="fastp report"/>
349 </assert_contents> 428 </assert_contents>
350 </output> 429 </output>
351 </test> 430 </test>
356 <collection type="paired"> 435 <collection type="paired">
357 <element name="forward" value="bwa-mem-fastq1.fq" ftype="fastqsanger" /> 436 <element name="forward" value="bwa-mem-fastq1.fq" ftype="fastqsanger" />
358 <element name="reverse" value="bwa-mem-fastq2.fq" ftype="fastqsanger" /> 437 <element name="reverse" value="bwa-mem-fastq2.fq" ftype="fastqsanger" />
359 </collection> 438 </collection>
360 </param> 439 </param>
440 <param name="report_json" value="False" />
361 <output name="report_html"> 441 <output name="report_html">
362 <assert_contents> 442 <assert_contents>
363 <has_text text="fastp report"/> 443 <has_text text="fastp report"/>
364 </assert_contents> 444 </assert_contents>
365 </output> 445 </output>
368 <element name="reverse" value="out_bwa2.fq" ftype="fastqsanger"/> 448 <element name="reverse" value="out_bwa2.fq" ftype="fastqsanger"/>
369 </output_collection> 449 </output_collection>
370 </test> 450 </test>
371 <!-- 3. Ensure custom adapter works --> 451 <!-- 3. Ensure custom adapter works -->
372 <test expect_num_outputs="2"> 452 <test expect_num_outputs="2">
373 <param name="in1" ftype="fastq" value="R1.fq"/> 453 <param name="in1" ftype="fastqsanger" value="R1.fq"/>
374 <param name="single_paired_selector" value="single"/> 454 <param name="single_paired_selector" value="single"/>
375 <param name="adapter_sequence1" value="ATCG"/> 455 <param name="adapter_sequence1" value="ATCG"/>
376 <output name="out1" ftype="fastq" file="out_a.fq"/> 456 <param name="report_json" value="False" />
457 <output name="out1" ftype="fastqsanger" file="out_a.fq"/>
377 </test> 458 </test>
378 <!-- 4. Ensure UMI processing works --> 459 <!-- 4. Ensure UMI processing works -->
379 <test expect_num_outputs="2"> 460 <test expect_num_outputs="2">
380 <param name="in1" ftype="fastq" value="R1.fq"/> 461 <param name="in1" ftype="fastqsanger" value="R1.fq"/>
381 <param name="single_paired_selector" value="single"/> 462 <param name="single_paired_selector" value="single"/>
382 <section name="umi_processing"> 463 <section name="umi_processing">
383 <param name="umi" value="true"/> 464 <param name="umi" value="true"/>
384 <param name="umi_loc" value="read1"/> 465 <param name="umi_loc" value="read1"/>
385 <param name="umi_len" value="8"/> 466 <param name="umi_len" value="8"/>
386 </section> 467 </section>
387 <output name="out1" ftype="fastq" file="out2.fq"/> 468 <param name="report_json" value="False" />
469 <output name="out1" ftype="fastqsanger" file="out2.fq"/>
388 </test> 470 </test>
389 <!-- 5. Ensure UMI processing with different lengths works --> 471 <!-- 5. Ensure UMI processing with different lengths works -->
390 <test expect_num_outputs="2"> 472 <test expect_num_outputs="2">
391 <param name="in1" ftype="fastq" value="R1.fq"/> 473 <param name="in1" ftype="fastqsanger" value="R1.fq"/>
392 <param name="single_paired_selector" value="single"/> 474 <param name="single_paired_selector" value="single"/>
393 <section name="umi_processing"> 475 <section name="umi_processing">
394 <param name="umi" value="true"/> 476 <param name="umi" value="true"/>
395 <param name="umi_loc" value="read1"/> 477 <param name="umi_loc" value="read1"/>
396 <param name="umi_len" value="12"/> 478 <param name="umi_len" value="12"/>
397 </section> 479 </section>
398 <output name="out1" ftype="fastq" file="out3.fq"/> 480 <param name="report_json" value="False" />
399 </test> 481 <output name="out1" ftype="fastqsanger" file="out3.fq"/>
400 <!-- 6. Ensure paired-end fastq works --> 482 </test>
483 <!-- 6. Ensure paired-end fastqsanger works -->
401 <test expect_num_outputs="3"> 484 <test expect_num_outputs="3">
402 <param name="in1" ftype="fastq" value="bwa-mem-fastq1.fq"/> 485 <param name="in1" ftype="fastqsanger" value="bwa-mem-fastq1.fq"/>
403 <param name="in2" ftype="fastq" value="bwa-mem-fastq2.fq"/> 486 <param name="in2" ftype="fastqsanger" value="bwa-mem-fastq2.fq"/>
404 <param name="single_paired_selector" value="paired"/> 487 <param name="single_paired_selector" value="paired"/>
405 <output name="out1" ftype="fastq" file="out_bwa1.fq"/> 488 <param name="report_json" value="False" />
406 <output name="out2" ftype="fastq" file="out_bwa2.fq"/> 489 <output name="out1" ftype="fastqsanger" file="out_bwa1.fq"/>
490 <output name="out2" ftype="fastqsanger" file="out_bwa2.fq"/>
407 </test> 491 </test>
408 <!-- 7. Ensure paired-end UMI processing of Read 1 works --> 492 <!-- 7. Ensure paired-end UMI processing of Read 1 works -->
409 <test expect_num_outputs="3"> 493 <test expect_num_outputs="3">
410 <param name="in1" ftype="fastq" value="bwa-mem-fastq1.fq"/> 494 <param name="in1" ftype="fastqsanger" value="bwa-mem-fastq1.fq"/>
411 <param name="in2" ftype="fastq" value="bwa-mem-fastq2.fq"/> 495 <param name="in2" ftype="fastqsanger" value="bwa-mem-fastq2.fq"/>
412 <param name="single_paired_selector" value="paired"/> 496 <param name="single_paired_selector" value="paired"/>
413 <section name="umi_processing"> 497 <section name="umi_processing">
414 <param name="umi" value="true"/> 498 <param name="umi" value="true"/>
415 <param name="umi_loc" value="read1"/> 499 <param name="umi_loc" value="read1"/>
416 <param name="umi_len" value="8"/> 500 <param name="umi_len" value="8"/>
417 </section> 501 </section>
418 <output name="out1" ftype="fastq" file="out_bwa_umi_read1_1.fq"/> 502 <param name="report_json" value="False" />
419 <output name="out2" ftype="fastq" file="out_bwa_umi_read1_2.fq"/> 503 <output name="out1" ftype="fastqsanger" file="out_bwa_umi_read1_1.fq"/>
504 <output name="out2" ftype="fastqsanger" file="out_bwa_umi_read1_2.fq"/>
420 </test> 505 </test>
421 <!-- 8. Ensure paired-end UMI processing of Read 2 works --> 506 <!-- 8. Ensure paired-end UMI processing of Read 2 works -->
422 <test expect_num_outputs="3"> 507 <test expect_num_outputs="4">
423 <param name="in1" ftype="fastq" value="bwa-mem-fastq1.fq"/> 508 <param name="in1" ftype="fastqsanger" value="bwa-mem-fastq1.fq"/>
424 <param name="in2" ftype="fastq" value="bwa-mem-fastq2.fq"/> 509 <param name="in2" ftype="fastqsanger" value="bwa-mem-fastq2.fq"/>
425 <param name="single_paired_selector" value="paired"/> 510 <param name="single_paired_selector" value="paired"/>
426 <section name="umi_processing"> 511 <section name="umi_processing">
427 <param name="umi" value="true"/> 512 <param name="umi" value="true"/>
428 <param name="umi_loc" value="read2"/> 513 <param name="umi_loc" value="read2"/>
429 <param name="umi_len" value="8"/> 514 <param name="umi_len" value="8"/>
430 </section> 515 </section>
431 <output name="out1" ftype="fastq" file="out_bwa_umi_read2_1.fq"/> 516 <output name="out1" ftype="fastqsanger" file="out_bwa_umi_read2_1.fq"/>
432 <output name="out2" ftype="fastq" file="out_bwa_umi_read2_2.fq"/> 517 <output name="out2" ftype="fastqsanger" file="out_bwa_umi_read2_2.fq"/>
518 <output name="report_json">
519 <assert_contents>
520 <has_text text="fastp report"/>
521 </assert_contents>
522 </output>
433 </test> 523 </test>
434 <!-- 9. Ensure JSON report output works --> 524 <!-- 9. Ensure JSON report output works -->
435 <test expect_num_outputs="2"> 525 <test expect_num_outputs="2">
436 <param name="in1" ftype="fastqsanger" value="R1.fq"/> 526 <param name="in1" ftype="fastqsanger" value="R1.fq"/>
437 <param name="single_paired_selector" value="single"/> 527 <param name="single_paired_selector" value="single"/>
438 <param name="report_html" value="False"/> 528 <param name="report_html" value="False"/>
439 <param name="report_json" value="True"/>
440 <output name="out1" ftype="fastqsanger" file="out1.fq"/> 529 <output name="out1" ftype="fastqsanger" file="out1.fq"/>
441 <output name="report_json"> 530 <output name="report_json">
442 <assert_contents> 531 <assert_contents>
443 <has_text text="fastp report"/> 532 <has_text text="fastp report"/>
444 </assert_contents> 533 </assert_contents>
445 </output> 534 </output>
446 </test> 535 </test>
447 <!-- 10. Ensure polyG trimming works --> 536 <!-- 10. Ensure polyG trimming works -->
448 <test expect_num_outputs="2"> 537 <test expect_num_outputs="3">
449 <param name="in1" ftype="fastq.gz" value="R1.fq.gz"/> 538 <param name="in1" ftype="fastqsanger.gz" value="R1.fq.gz"/>
450 <param name="single_paired_selector" value="single"/> 539 <param name="single_paired_selector" value="single"/>
451 <param name="trimming_select" value="-g"/> 540 <param name="trimming_select" value="-g"/>
452 <param name="poly_g_min_len" value="10"/> 541 <param name="poly_g_min_len" value="10"/>
453 <output name="out1" ftype="fastq.gz" decompress="True" file="out1.fq.gz"/> 542 <output name="out1" ftype="fastqsanger.gz" decompress="True" file="out1.fq.gz"/>
543 <output name="report_json">
544 <assert_contents>
545 <has_text text="fastp report"/>
546 </assert_contents>
547 </output>
454 </test> 548 </test>
455 <!-- 11. Ensure polyX trimming works --> 549 <!-- 11. Ensure polyX trimming works -->
456 <test expect_num_outputs="2"> 550 <test expect_num_outputs="3">
457 <param name="in1" ftype="fastq.gz" value="R1.fq.gz"/> 551 <param name="in1" ftype="fastqsanger.gz" value="R1.fq.gz"/>
458 <param name="single_paired_selector" value="single"/> 552 <param name="single_paired_selector" value="single"/>
459 <param name="trimming_select" value="-G"/> 553 <param name="trimming_select" value="-G"/>
460 <param name="polyx_trimming_select" value="-x"/> 554 <param name="polyx_trimming_select" value="-x"/>
461 <param name="poly_x_min_len" value="10"/> 555 <param name="poly_x_min_len" value="10"/>
462 <output name="out1" ftype="fastq.gz" decompress="True" file="out1.fq.gz"/> 556 <output name="out1" ftype="fastqsanger.gz" decompress="True" file="out1.fq.gz"/>
463 </test> 557 <output name="report_json">
464 <!-- 12. Test fastq files with different length --> 558 <assert_contents>
559 <has_text text="fastp report"/>
560 </assert_contents>
561 </output>
562 </test>
563 <!-- 12. Test fastqsanger files with different length -->
465 <test expect_exit_code="255" expect_failure="true"> 564 <test expect_exit_code="255" expect_failure="true">
466 <param name="single_paired_selector" value="paired_collection"/> 565 <param name="single_paired_selector" value="paired_collection"/>
467 <param name="paired_input"> 566 <param name="paired_input">
468 <collection type="paired"> 567 <collection type="paired">
469 <element name="forward" value="bwa-mem-fastq1.fq" ftype="fastqsanger" /> 568 <element name="forward" value="bwa-mem-fastq1.fq" ftype="fastqsanger" />
470 <element name="reverse" value="bwa-mem-fastq2_too_long.fq" ftype="fastqsanger" /> 569 <element name="reverse" value="bwa-mem-fastq2_too_long.fq" ftype="fastqsanger" />
471 </collection> 570 </collection>
472 </param> 571 </param>
473 </test> 572 </test>
573 <!-- 13. Test merge reads in combination with paired -->
574 <test expect_num_outputs="5">
575 <param name="in1" ftype="fastqsanger" value="bwa-mem-fastq1.fq"/>
576 <param name="in2" ftype="fastqsanger" value="bwa-mem-fastq2.fq"/>
577 <param name="single_paired_selector" value="paired"/>
578 <param name="merge" value="--merge" />
579 <param name="report_html" value="False" />
580 <param name="report_json" value="False" />
581 <output name="merged_reads" ftype="fastqsanger" file="bwa-mem-merged-reads.fastqsanger" />
582 <output name="unmerged_out1" ftype="fastqsanger" file="bwa-mem-unmerged-filtered-reads1.fastqsanger" />
583 <output name="unmerged_out2" ftype="fastqsanger" file="bwa-mem-unmerged-filtered-reads2.fastqsanger" />
584 <output name="unpaired1" ftype="fastqsanger" file="bwa-mem-unmerged-unfiltered-reads1.fastqsanger" />
585 <output name="unpaired2" ftype="fastqsanger">
586 <assert_contents>
587 <has_size size="0" />
588 </assert_contents>
589 </output>
590 </test>
591 <!-- 14. Test merge and include_unmerged in combination with paired collection -->
592 <test expect_num_outputs="2">
593 <param name="single_paired_selector" value="paired_collection"/>
594 <param name="paired_input">
595 <collection type="paired">
596 <element name="forward" value="bwa-mem-fastq1.fq" ftype="fastqsanger" />
597 <element name="reverse" value="bwa-mem-fastq2.fq" ftype="fastqsanger" />
598 </collection>
599 </param>
600 <param name="merge" value="--merge" />
601 <param name="include_unmerged" value="--include_unmerged" />
602 <param name="report_html" value="False" />
603 <output name="merged_reads" ftype="fastqsanger" file="bwa-mem-merged-read-include-unmerged.fastqsanger" />
604 <output name="report_json">
605 <assert_contents>
606 <has_text text="fastp report"/>
607 </assert_contents>
608 </output>
609 </test>
610 <!--15. Test paired collection in combination with compressed input-->
611 <test expect_num_outputs="4">
612 <param name="single_paired_selector" value="paired_collection"/>
613 <param name="paired_input">
614 <collection type="paired">
615 <element name="forward" value="bwa-mem-fastq-paired-collection/input_forward.fastqsanger.gz" ftype="fastqsanger.gz" />
616 <element name="reverse" value="bwa-mem-fastq-paired-collection/input_reverse.fastqsanger.gz" ftype="fastqsanger.gz" />
617 </collection>
618 </param>
619 <param name="report_json" value="False" />
620 <output name="report_html">
621 <assert_contents>
622 <has_text text="fastp report"/>
623 </assert_contents>
624 </output>
625 <output_collection name="output_paired_coll" type="paired">
626 <element name="forward" value="bwa-mem-fastq-paired-collection/output_forward.fastqsanger.gz" decompress="True" ftype="fastqsanger.gz"/>
627 <element name="reverse" value="bwa-mem-fastq-paired-collection/output_reverse.fastqsanger.gz" decompress="True" ftype="fastqsanger.gz"/>
628 </output_collection>
629 </test>
474 </tests> 630 </tests>
475 <help><![CDATA[ 631 <help><![CDATA[
476 .. class:: infomark 632 .. class:: infomark
477 633
478 **What it does** 634 **What it does**
492 648
493 5. Correct mismatched base pairs in overlapped regions of paired end reads, if one base is with high quality while the other is with ultra-low quality 649 5. Correct mismatched base pairs in overlapped regions of paired end reads, if one base is with high quality while the other is with ultra-low quality
494 650
495 6. Trim polyG in 3' ends, which is commonly seen in NovaSeq/NextSeq data. Trim polyX in 3' ends to remove unwanted polyX tailing (i.e. polyA tailing for mRNA-Seq data) 651 6. Trim polyG in 3' ends, which is commonly seen in NovaSeq/NextSeq data. Trim polyX in 3' ends to remove unwanted polyX tailing (i.e. polyA tailing for mRNA-Seq data)
496 652
497 7. Preprocess unique molecular identifer (UMI) enabled data, shift UMI to sequence name 653 7. Preprocess unique molecular identifier (UMI) enabled data, shift UMI to sequence name
498 654
499 8. Report JSON format result for further interpreting 655 8. Report JSON format result for further interpreting
500 656
501 9. Visualize quality control and filtering results on a single HTML page (like FASTQC but faster and more informative) 657 9. Visualize quality control and filtering results on a single HTML page (like FASTQC but faster and more informative)
502 658
503 10. Split the output to multiple files (0001.R1.gz, 0002.R1.gz...) to support parallel processing. Two modes can be used, limiting the total split file number, or limitting the lines of each split file (*Not enabled in this Galaxy tool*) 659 10. Split the output to multiple files (0001.R1.gz, 0002.R1.gz...) to support parallel processing. Two modes can be used, limiting the total split file number, or limiting the lines of each split file (*Not enabled in this Galaxy tool*)
504 660
505 11. Support long reads (data from PacBio / Nanopore devices) 661 11. Support long reads (data from PacBio / Nanopore devices)
506 662
507 ----- 663 -----
508 664
509 **Inputs** 665 **Inputs**
510 666
511 Single-end or Paired-end FASTQ or FASTQ.GZ reads 667 Single-end or Paired-end (compressed) fastqsagnger or fastqillumina files
512 668
513 ----- 669 -----
514 670
515 **Outputs** 671 **Outputs**
516 672
517 * Processed reads 673 * Processed reads
674 * Merged reads
675 * Unmerged filtered reads1, reads that cannot be merged successfully, but both pass all the filters.
676 * Unmerged filtered reads2, reads that cannot be merged successfully, but both pass all the filters.
677 * Unmerged unfiltered reads1, reads that cannot be merged, **read1** passes filters but **read2** doesn't.
678 * Unmerged unfiltered reads2, reads that cannot be merged, **read2** passes filters but **read1** doesn't.
518 679
519 Optionally, under **Output Options** you can choose to output 680 Optionally, under **Output Options** you can choose to output
520 681
521 * HTML report (default is Yes) 682 * HTML report (default is Yes)
522 * JSON report (compatible with MultiQC) 683 * JSON report (compatible with MultiQC)