comparison fastp.xml @ 11:d5ae828d1c3c draft

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/fastp commit 6b8fbd9db12329e2f49eee672b185015c3e35d4f
author iuc
date Tue, 13 Aug 2024 12:18:28 +0000
parents e9f30696da0e
children 6292d4ff1ddd
comparison
equal deleted inserted replaced
10:75d9fef449c7 11:d5ae828d1c3c
1 <tool id="fastp" name="fastp" version="@WRAPPER_VERSION@+galaxy0"> 1 <tool id="fastp" name="fastp" version="@TOOL_VERSION@+galaxy1" 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 <requirements> 7 <requirements>
7 <requirement type="package" version="@WRAPPER_VERSION@">fastp</requirement> 8 <requirement type="package" version="@TOOL_VERSION@">fastp</requirement>
8 </requirements> 9 </requirements>
9 <version_command>fastp -v</version_command> 10 <version_command>fastp -v</version_command>
10 <command detect_errors="exit_code"><![CDATA[ 11 <command detect_errors="exit_code"><![CDATA[
11 #import re 12 #import re
12 13
22 #set $in2 = $single_paired.paired_input.reverse 23 #set $in2 = $single_paired.paired_input.reverse
23 #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
24 #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
25 #set out1 = $output_paired_coll.forward 26 #set out1 = $output_paired_coll.forward
26 #set out2 = $output_paired_coll.reverse 27 #set out2 = $output_paired_coll.reverse
27 ln -s '$in1' '$in1_name' && 28 ln -sf '$in1' '$in1_name' &&
28 ln -s '$in2' '$in2_name' && 29 ln -sf '$in2' '$in2_name' &&
29 #else 30 #else
30 #if $in1.is_of_type('fastq.gz') 31 #if $in1.is_of_type('fastq.gz')
31 #set ext = '.fastq.gz' 32 #set ext = '.fastq.gz'
32 #end if 33 #end if
33 34
34 #set $in1_name = re.sub('[^\w\-\s]', '_', str($in1.element_identifier)) + $ext 35 #set $in1_name = re.sub('[^\w\-\s]', '_', str($in1.element_identifier)) + $ext
35 ln -s '$in1' '$in1_name' && 36 ln -sf '$in1' '$in1_name' &&
36 37
37 #if str($single_paired.single_paired_selector) == 'paired': 38 #if str($single_paired.single_paired_selector) == 'paired':
38 #set $in2_name = re.sub('[^\w\-\s]', '_', str("%s_R2" % $in2.element_identifier)) + $ext 39 #set $in2_name = re.sub('[^\w\-\s]', '_', str("%s_R2" % $in2.element_identifier)) + $ext
39 ln -s '$in2' '$in2_name' && 40 ln -sf '$in2' '$in2_name' &&
40 #end if 41 #end if
41 #end if 42 #end if
42 43
43 44
44 ## Run fastp 45 ## Run fastp
70 #end if 71 #end if
71 72
72 #if str($single_paired.single_paired_selector).startswith('paired'): 73 #if str($single_paired.single_paired_selector).startswith('paired'):
73 #if str($single_paired.adapter_trimming_options.adapter_sequence2): 74 #if str($single_paired.adapter_trimming_options.adapter_sequence2):
74 --adapter_sequence_r2 '$single_paired.adapter_trimming_options.adapter_sequence2' 75 --adapter_sequence_r2 '$single_paired.adapter_trimming_options.adapter_sequence2'
75 #else 76 #end if
76 --detect_adapter_for_pe 77 $single_paired.adapter_trimming_options.detect_adapter_for_pe
77 #end if
78 #end if 78 #end if
79 79
80 80
81 ## Global Trimming Options 81 ## Global Trimming Options
82 82
207 && 207 &&
208 mv second${ext} '${out2}' 208 mv second${ext} '${out2}'
209 #end if 209 #end if
210 ]]></command> 210 ]]></command>
211 <inputs> 211 <inputs>
212
213 <conditional name="single_paired"> 212 <conditional name="single_paired">
214 <param name="single_paired_selector" type="select" label="Single-end or paired reads"> 213 <param name="single_paired_selector" type="select" label="Single-end or paired reads">
215 <option value="single" selected="true">Single-end</option> 214 <option value="single" selected="true">Single-end</option>
216 <option value="paired">Paired</option> 215 <option value="paired">Paired</option>
217 <option value="paired_collection">Paired Collection</option> 216 <option value="paired_collection">Paired Collection</option>
224 <when value="paired"> 223 <when value="paired">
225 <expand macro="in" read_number="1" argument="-i"/> 224 <expand macro="in" read_number="1" argument="-i"/>
226 <expand macro="in" read_number="2" argument="-I"/> 225 <expand macro="in" read_number="2" argument="-I"/>
227 <expand macro="adapter_trimming_options"> 226 <expand macro="adapter_trimming_options">
228 <expand macro="adapter_sequence" read_number="2"/> 227 <expand macro="adapter_sequence" read_number="2"/>
228 <expand macro="detect_adapter_for_pe" />
229 </expand> 229 </expand>
230 <expand macro="global_trimming_options_paired" /> 230 <expand macro="global_trimming_options_paired" />
231 </when> 231 </when>
232 <when value="paired_collection"> 232 <when value="paired_collection">
233 <param name="paired_input" type="data_collection" collection_type="paired" format="fastq,fastq.gz" label="Select paired collection(s)"/> 233 <param name="paired_input" type="data_collection" format="fastq,fastq.gz" label="Select paired collection(s)" collection_type="paired"/>
234 <expand macro="adapter_trimming_options"> 234 <expand macro="adapter_trimming_options">
235 <expand macro="adapter_sequence" read_number="2"/> 235 <expand macro="adapter_sequence" read_number="2"/>
236 <expand macro="detect_adapter_for_pe" />
236 </expand> 237 </expand>
237 <expand macro="global_trimming_options_paired" /> 238 <expand macro="global_trimming_options_paired" />
238 </when> 239 </when>
239 </conditional> 240 </conditional>
240 241
253 </section> 254 </section>
254 255
255 <section name="length_filtering_options" title="Length filtering options" expanded="True"> 256 <section name="length_filtering_options" title="Length filtering options" expanded="True">
256 <param name="disable_length_filtering" argument="-L" type="boolean" truevalue="-L" falsevalue="" checked="false" label="Disable length filtering" help="Length filtering is enabled by default. If this option is specified, length filtering is disabled."/> 257 <param name="disable_length_filtering" argument="-L" type="boolean" truevalue="-L" falsevalue="" checked="false" label="Disable length filtering" help="Length filtering is enabled by default. If this option is specified, length filtering is disabled."/>
257 <param name="length_required" argument="-l" type="integer" optional="true" label="Length required" help="Reads shorter than this value will be discarded. Default is 15."/> 258 <param name="length_required" argument="-l" type="integer" optional="true" label="Length required" help="Reads shorter than this value will be discarded. Default is 15."/>
258 <param name="length_limit" argument="--length_limit" type="integer" optional="true" label="Maximum length" help="Reads longer than this value will be discarded. Default is 0 and means no limitation."/> 259 <param argument="--length_limit" type="integer" optional="true" label="Maximum length" help="Reads longer than this value will be discarded. Default is 0 and means no limitation."/>
259 </section> 260 </section>
260 261
261 <section name="low_complexity_filter" title="Low complexity filtering options" expanded="True"> 262 <section name="low_complexity_filter" title="Low complexity filtering options" expanded="True">
262 <param name="enable_low_complexity_filter" argument="-y" type="boolean" truevalue="-y" falsevalue="" checked="false" label="Enable low complexity filter" help="The complexity is defined as the percentage of base that is different from its next base, default is No"/> 263 <param name="enable_low_complexity_filter" argument="-y" type="boolean" truevalue="-y" falsevalue="" checked="false" label="Enable low complexity filter" help="The complexity is defined as the percentage of base that is different from its next base, default is No"/>
263 <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."/> 264 <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."/>
285 <param name="polyx_trimming_select" type="select" label="PolyX tail trimming" help="Similar to polyG tail trimming. When polyG tail trimming and polyX tail trimming are both enabled, fastp will perform polyG trimming first, then perform polyX trimming. Disabled by default."> 286 <param name="polyx_trimming_select" type="select" label="PolyX tail trimming" help="Similar to polyG tail trimming. When polyG tail trimming and polyX tail trimming are both enabled, fastp will perform polyG trimming first, then perform polyX trimming. Disabled by default.">
286 <option value="" selected="true">Disable polyX trimming</option> 287 <option value="" selected="true">Disable polyX trimming</option>
287 <option value="-x">Enable polyX tail trimming</option> 288 <option value="-x">Enable polyX tail trimming</option>
288 </param> 289 </param>
289 <when value="-x"> 290 <when value="-x">
290 <param name="poly_x_min_len" argument="--poly_x_min_len" type="integer" optional="true" label="PolyX minimum length" 291 <param argument="--poly_x_min_len" type="integer" optional="true" label="PolyX minimum length"
291 help="The minimum length to detect polyX in the read tail. 10 by default."/> 292 help="The minimum length to detect polyX in the read tail. 10 by default."/>
292 </when> 293 </when>
293 <when value="" /> 294 <when value="" />
294 </conditional> 295 </conditional>
295 296
296 <section name="umi_processing" title="UMI processing" expanded="True"> 297 <section name="umi_processing" title="UMI processing" expanded="True">
297 <param name="umi" argument="-U" type="boolean" truevalue="-U" falsevalue="" checked="false" label="Enable unique molecular identifer" help="Enable unique molecular identifer (UMI) preprocessing."/> 298 <param name="umi" argument="-U" type="boolean" truevalue="-U" falsevalue="" checked="false" label="Enable unique molecular identifer" help="Enable unique molecular identifer (UMI) preprocessing."/>
298 <param name="umi_loc" argument="--umi_loc" type="text" optional="true" label="UMI location" help="Specify the location of UMI, can be (index1/index2/read1/read2/per_index/per_read, default is none."/> 299 <param argument="--umi_loc" type="text" optional="true" label="UMI location" help="Specify the location of UMI, can be (index1/index2/read1/read2/per_index/per_read, default is none."/>
299 <param name="umi_len" argument="--umi_len" type="integer" optional="true" label="UMI length" help="If the UMI is in read1/read2, its length should be provided."/> 300 <param argument="--umi_len" type="integer" optional="true" label="UMI length" help="If the UMI is in read1/read2, its length should be provided."/>
300 <param name="umi_prefix" argument="--umi_prefix" type="text" optional="true" label="UMI prefix" help="If specified, an underline will be used to connect prefix and UMI (i.e. prefix=UMI, UMI=AATTCG, final=UMI_AATTCG). No prefix by default."/> 301 <param argument="--umi_prefix" type="text" optional="true" label="UMI prefix" help="If specified, an underline will be used to connect prefix and UMI (i.e. prefix=UMI, UMI=AATTCG, final=UMI_AATTCG). No prefix by default."/>
301 </section> 302 </section>
302 303
303 <section name="cutting_by_quality_options" title="Per read cutting by quality options" expanded="True"> 304 <section name="cutting_by_quality_options" title="Per read cutting by quality options" expanded="True">
304 <param name="cut_by_quality5" argument="-5" type="boolean" truevalue="-5" falsevalue="" checked="false" label="Cut by quality in front (5')" help="Enable per read cutting by quality in front (5'), default is disabled (WARNING: this will interfere deduplication for both PE/SE data)."/> 305 <param name="cut_by_quality5" argument="-5" type="boolean" truevalue="-5" falsevalue="" checked="false" label="Cut by quality in front (5')" help="Enable per read cutting by quality in front (5'), default is disabled (WARNING: this will interfere deduplication for both PE/SE data)."/>
305 <param name="cut_by_quality3" argument="-3" type="boolean" truevalue="-3" falsevalue="" checked="false" label="Cut by quality in tail (3')" help="Enable per read cutting by quality in tail (3'), default is disabled (WARNING: this will interfere deduplication for SE data)."/> 306 <param name="cut_by_quality3" argument="-3" type="boolean" truevalue="-3" falsevalue="" checked="false" label="Cut by quality in tail (3')" help="Enable per read cutting by quality in tail (3'), default is disabled (WARNING: this will interfere deduplication for SE data)."/>
335 <filter>output_options['report_json'] is True</filter> 336 <filter>output_options['report_json'] is True</filter>
336 </data> 337 </data>
337 </outputs> 338 </outputs>
338 339
339 <tests> 340 <tests>
340 <!-- Ensure default output works --> 341 <!-- 1. Ensure default output works -->
341 <test expect_num_outputs="2"> 342 <test expect_num_outputs="2">
342 <param name="in1" ftype="fastqsanger" value="R1.fq"/> 343 <param name="in1" ftype="fastqsanger" value="R1.fq"/>
343 <param name="single_paired_selector" value="single"/> 344 <param name="single_paired_selector" value="single"/>
344 <output name="out1" ftype="fastqsanger" file="out1.fq"/> 345 <output name="out1" ftype="fastqsanger" file="out1.fq"/>
345 <output name="report_html"> 346 <output name="report_html">
346 <assert_contents> 347 <assert_contents>
347 <has_text text="fastp report"/> 348 <has_text text="fastp report"/>
348 </assert_contents> 349 </assert_contents>
349 </output> 350 </output>
350 </test> 351 </test>
351 <!-- Ensure paired collection works --> 352 <!-- 2. Ensure paired collection works -->
352 <test expect_num_outputs="4"> 353 <test expect_num_outputs="4">
353 <param name="single_paired_selector" value="paired_collection"/> 354 <param name="single_paired_selector" value="paired_collection"/>
354 <param name="paired_input"> 355 <param name="paired_input">
355 <collection type="paired"> 356 <collection type="paired">
356 <element name="forward" value="bwa-mem-fastq1.fq" ftype="fastqsanger" /> 357 <element name="forward" value="bwa-mem-fastq1.fq" ftype="fastqsanger" />
365 <output_collection name="output_paired_coll" type="paired"> 366 <output_collection name="output_paired_coll" type="paired">
366 <element name="forward" value="out_bwa1.fq" ftype="fastqsanger"/> 367 <element name="forward" value="out_bwa1.fq" ftype="fastqsanger"/>
367 <element name="reverse" value="out_bwa2.fq" ftype="fastqsanger"/> 368 <element name="reverse" value="out_bwa2.fq" ftype="fastqsanger"/>
368 </output_collection> 369 </output_collection>
369 </test> 370 </test>
370 <!-- Ensure custom adapter works --> 371 <!-- 3. Ensure custom adapter works -->
371 <test expect_num_outputs="2"> 372 <test expect_num_outputs="2">
372 <param name="in1" ftype="fastq" value="R1.fq"/> 373 <param name="in1" ftype="fastq" value="R1.fq"/>
373 <param name="single_paired_selector" value="single"/> 374 <param name="single_paired_selector" value="single"/>
374 <param name="adapter_sequence1" value="ATCG"/> 375 <param name="adapter_sequence1" value="ATCG"/>
375 <output name="out1" ftype="fastq" file="out_a.fq"/> 376 <output name="out1" ftype="fastq" file="out_a.fq"/>
376 </test> 377 </test>
377 <!-- Ensure UMI processing works --> 378 <!-- 4. Ensure UMI processing works -->
378 <test expect_num_outputs="2"> 379 <test expect_num_outputs="2">
379 <param name="in1" ftype="fastq" value="R1.fq"/> 380 <param name="in1" ftype="fastq" value="R1.fq"/>
380 <param name="single_paired_selector" value="single"/> 381 <param name="single_paired_selector" value="single"/>
381 <section name="umi_processing"> 382 <section name="umi_processing">
382 <param name="umi" value="true"/> 383 <param name="umi" value="true"/>
383 <param name="umi_loc" value="read1"/> 384 <param name="umi_loc" value="read1"/>
384 <param name="umi_len" value="8"/> 385 <param name="umi_len" value="8"/>
385 </section> 386 </section>
386 <output name="out1" ftype="fastq" file="out2.fq"/> 387 <output name="out1" ftype="fastq" file="out2.fq"/>
387 </test> 388 </test>
388 <!-- Ensure UMI processing with different lengths works --> 389 <!-- 5. Ensure UMI processing with different lengths works -->
389 <test expect_num_outputs="2"> 390 <test expect_num_outputs="2">
390 <param name="in1" ftype="fastq" value="R1.fq"/> 391 <param name="in1" ftype="fastq" value="R1.fq"/>
391 <param name="single_paired_selector" value="single"/> 392 <param name="single_paired_selector" value="single"/>
392 <section name="umi_processing"> 393 <section name="umi_processing">
393 <param name="umi" value="true"/> 394 <param name="umi" value="true"/>
394 <param name="umi_loc" value="read1"/> 395 <param name="umi_loc" value="read1"/>
395 <param name="umi_len" value="12"/> 396 <param name="umi_len" value="12"/>
396 </section> 397 </section>
397 <output name="out1" ftype="fastq" file="out3.fq"/> 398 <output name="out1" ftype="fastq" file="out3.fq"/>
398 </test> 399 </test>
399 <!-- Ensure paired-end fastq works --> 400 <!-- 6. Ensure paired-end fastq works -->
400 <test expect_num_outputs="3"> 401 <test expect_num_outputs="3">
401 <param name="in1" ftype="fastq" value="bwa-mem-fastq1.fq"/> 402 <param name="in1" ftype="fastq" value="bwa-mem-fastq1.fq"/>
402 <param name="in2" ftype="fastq" value="bwa-mem-fastq2.fq"/> 403 <param name="in2" ftype="fastq" value="bwa-mem-fastq2.fq"/>
403 <param name="single_paired_selector" value="paired"/> 404 <param name="single_paired_selector" value="paired"/>
404 <output name="out1" ftype="fastq" file="out_bwa1.fq"/> 405 <output name="out1" ftype="fastq" file="out_bwa1.fq"/>
405 <output name="out2" ftype="fastq" file="out_bwa2.fq"/> 406 <output name="out2" ftype="fastq" file="out_bwa2.fq"/>
406 </test> 407 </test>
407 <!-- Ensure paired-end UMI processing of Read 1 works --> 408 <!-- 7. Ensure paired-end UMI processing of Read 1 works -->
408 <test expect_num_outputs="3"> 409 <test expect_num_outputs="3">
409 <param name="in1" ftype="fastq" value="bwa-mem-fastq1.fq"/> 410 <param name="in1" ftype="fastq" value="bwa-mem-fastq1.fq"/>
410 <param name="in2" ftype="fastq" value="bwa-mem-fastq2.fq"/> 411 <param name="in2" ftype="fastq" value="bwa-mem-fastq2.fq"/>
411 <param name="single_paired_selector" value="paired"/> 412 <param name="single_paired_selector" value="paired"/>
412 <section name="umi_processing"> 413 <section name="umi_processing">
415 <param name="umi_len" value="8"/> 416 <param name="umi_len" value="8"/>
416 </section> 417 </section>
417 <output name="out1" ftype="fastq" file="out_bwa_umi_read1_1.fq"/> 418 <output name="out1" ftype="fastq" file="out_bwa_umi_read1_1.fq"/>
418 <output name="out2" ftype="fastq" file="out_bwa_umi_read1_2.fq"/> 419 <output name="out2" ftype="fastq" file="out_bwa_umi_read1_2.fq"/>
419 </test> 420 </test>
420 <!-- Ensure paired-end UMI processing of Read 2 works --> 421 <!-- 8. Ensure paired-end UMI processing of Read 2 works -->
421 <test expect_num_outputs="3"> 422 <test expect_num_outputs="3">
422 <param name="in1" ftype="fastq" value="bwa-mem-fastq1.fq"/> 423 <param name="in1" ftype="fastq" value="bwa-mem-fastq1.fq"/>
423 <param name="in2" ftype="fastq" value="bwa-mem-fastq2.fq"/> 424 <param name="in2" ftype="fastq" value="bwa-mem-fastq2.fq"/>
424 <param name="single_paired_selector" value="paired"/> 425 <param name="single_paired_selector" value="paired"/>
425 <section name="umi_processing"> 426 <section name="umi_processing">
428 <param name="umi_len" value="8"/> 429 <param name="umi_len" value="8"/>
429 </section> 430 </section>
430 <output name="out1" ftype="fastq" file="out_bwa_umi_read2_1.fq"/> 431 <output name="out1" ftype="fastq" file="out_bwa_umi_read2_1.fq"/>
431 <output name="out2" ftype="fastq" file="out_bwa_umi_read2_2.fq"/> 432 <output name="out2" ftype="fastq" file="out_bwa_umi_read2_2.fq"/>
432 </test> 433 </test>
433 <!-- Ensure JSON report output works --> 434 <!-- 9. Ensure JSON report output works -->
434 <test expect_num_outputs="2"> 435 <test expect_num_outputs="2">
435 <param name="in1" ftype="fastqsanger" value="R1.fq"/> 436 <param name="in1" ftype="fastqsanger" value="R1.fq"/>
436 <param name="single_paired_selector" value="single"/> 437 <param name="single_paired_selector" value="single"/>
437 <param name="report_html" value="False"/> 438 <param name="report_html" value="False"/>
438 <param name="report_json" value="True"/> 439 <param name="report_json" value="True"/>
441 <assert_contents> 442 <assert_contents>
442 <has_text text="fastp report"/> 443 <has_text text="fastp report"/>
443 </assert_contents> 444 </assert_contents>
444 </output> 445 </output>
445 </test> 446 </test>
446 <!-- Ensure polyG trimming works --> 447 <!-- 10. Ensure polyG trimming works -->
447 <test expect_num_outputs="2"> 448 <test expect_num_outputs="2">
448 <param name="in1" ftype="fastq.gz" value="R1.fq.gz"/> 449 <param name="in1" ftype="fastq.gz" value="R1.fq.gz"/>
449 <param name="single_paired_selector" value="single"/> 450 <param name="single_paired_selector" value="single"/>
450 <param name="trimming_select" value="-g"/> 451 <param name="trimming_select" value="-g"/>
451 <param name="poly_g_min_len" value="10"/> 452 <param name="poly_g_min_len" value="10"/>
452 <output name="out1" ftype="fastq.gz" decompress="True" file="out1.fq.gz"/> 453 <output name="out1" ftype="fastq.gz" decompress="True" file="out1.fq.gz"/>
453 </test> 454 </test>
454 <!-- Ensure polyX trimming works --> 455 <!-- 11. Ensure polyX trimming works -->
455 <test expect_num_outputs="2"> 456 <test expect_num_outputs="2">
456 <param name="in1" ftype="fastq.gz" value="R1.fq.gz"/> 457 <param name="in1" ftype="fastq.gz" value="R1.fq.gz"/>
457 <param name="single_paired_selector" value="single"/> 458 <param name="single_paired_selector" value="single"/>
458 <param name="trimming_select" value="-G"/> 459 <param name="trimming_select" value="-G"/>
459 <param name="polyx_trimming_select" value="-x"/> 460 <param name="polyx_trimming_select" value="-x"/>
460 <param name="poly_x_min_len" value="10"/> 461 <param name="poly_x_min_len" value="10"/>
461 <output name="out1" ftype="fastq.gz" decompress="True" file="out1.fq.gz"/> 462 <output name="out1" ftype="fastq.gz" decompress="True" file="out1.fq.gz"/>
462 </test> 463 </test>
464 <!-- 12. Test fastq files with different length -->
465 <test expect_exit_code="255" expect_failure="true">
466 <param name="single_paired_selector" value="paired_collection"/>
467 <param name="paired_input">
468 <collection type="paired">
469 <element name="forward" value="bwa-mem-fastq1.fq" ftype="fastqsanger" />
470 <element name="reverse" value="bwa-mem-fastq2_too_long.fq" ftype="fastqsanger" />
471 </collection>
472 </param>
473 </test>
463 </tests> 474 </tests>
464 <help><![CDATA[ 475 <help><![CDATA[
465 .. class:: infomark 476 .. class:: infomark
466 477
467 **What it does** 478 **What it does**
468 479
469 fastp_ is a tool designed to provide fast all-in-one preprocessing for FASTQ files. This tool is developed in C++ with multithreading supported to afford high performance. 480 fastp_ is a tool designed to provide fast all-in-one preprocessing for FASTQ files. This tool is developed in C++ with multithreading supported to
481 afford high performance.
470 482
471 *Features* 483 *Features*
472 484
473 1. Filter out bad reads (too low quality, too short, or too many N...) 485 1. Filter out bad reads (too low quality, too short, or too many N...)
474 486