comparison fastq_manipulation.xml @ 6:e06d41f3ed3e draft default tip

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/main/tool_collections/galaxy_sequence_utils/fastq_manipulation commit a5766d27dcddd1891766476a913d0eae1ec7a3c9
author iuc
date Sun, 23 Nov 2025 17:50:28 +0000
parents e30352e889fe
children
comparison
equal deleted inserted replaced
5:e30352e889fe 6:e06d41f3ed3e
18 <configfiles> 18 <configfiles>
19 <configfile name="fastq_manipulation_file"><![CDATA[##create an importable module 19 <configfile name="fastq_manipulation_file"><![CDATA[##create an importable module
20 #import binascii 20 #import binascii
21 import binascii 21 import binascii
22 import re 22 import re
23 import six 23
24 24 maketrans = str.maketrans
25 if six.PY2:
26 from string import maketrans
27 else:
28 maketrans = str.maketrans
29
30 25
31 ##does read match 26 ##does read match
32 def match_read(fastq_read): 27 def match_read(fastq_read):
33 #for $match_block in $match_blocks: 28 #for $match_block in $match_blocks:
34 #if $match_block['match_type']['match_type_selector'] == 'identifier': 29 #if $match_block['match_type']['match_type_selector'] == 'identifier':
251 </outputs> 246 </outputs>
252 <tests> 247 <tests>
253 <!-- match all and do nothing --> 248 <!-- match all and do nothing -->
254 <test> 249 <test>
255 <param name="input_file" value="sanger_full_range_original_sanger.fastqsanger" ftype="fastqsanger" /> 250 <param name="input_file" value="sanger_full_range_original_sanger.fastqsanger" ftype="fastqsanger" />
256 <param name="match_type_selector" value="identifier" /> 251 <repeat name="match_blocks">
257 <param name="match_selector" value="regex" /> 252 <conditional name="match_type">
258 <param name="match_by" value=".*" /> 253 <param name="match_type_selector" value="identifier" />
259 <param name="manipulation_type_selector" value="identifier" /> 254 <conditional name="match">
260 <param name="manipulation_selector" value="translate" /> 255 <param name="match_selector" value="regex" />
261 <param name="from" value="" /> 256 <param name="match_by" value=".*" />
262 <param name="to" value="" /> 257 </conditional>
258 </conditional>
259 </repeat>
260 <repeat name="manipulate_blocks">
261 <conditional name="manipulation_type">
262 <param name="manipulation_type_selector" value="identifier" />
263 <conditional name="manipulation">
264 <param name="manipulation_selector" value="translate" />
265 <param name="from" value="" />
266 <param name="to" value="" />
267 </conditional>
268 </conditional>
269 </repeat>
263 <output name="output_file" file="sanger_full_range_original_sanger.fastqsanger" ftype="fastqsanger" /> 270 <output name="output_file" file="sanger_full_range_original_sanger.fastqsanger" ftype="fastqsanger" />
264 </test> 271 </test>
265 <!-- match None and do nothing --> 272 <!-- match None and do nothing -->
266 <test> 273 <test>
267 <param name="input_file" value="sanger_full_range_original_sanger.fastqsanger" ftype="fastqsanger" /> 274 <param name="input_file" value="sanger_full_range_original_sanger.fastqsanger" ftype="fastqsanger" />
268 <param name="match_type_selector" value="identifier" /> 275 <repeat name="match_blocks">
269 <param name="match_selector" value="regex" /> 276 <conditional name="match_type">
270 <param name="match_by" value="STRINGDOESNOTEXIST" /> 277 <param name="match_type_selector" value="identifier" />
271 <param name="manipulation_type_selector" value="identifier" /> 278 <conditional name="match">
272 <param name="manipulation_selector" value="translate" /> 279 <param name="match_selector" value="regex" />
273 <param name="from" value="" /> 280 <param name="match_by" value="STRINGDOESNOTEXIST" />
274 <param name="to" value="" /> 281 </conditional>
282 </conditional>
283 </repeat>
284 <repeat name="manipulate_blocks">
285 <conditional name="manipulation_type">
286 <param name="manipulation_type_selector" value="identifier" />
287 <conditional name="manipulation">
288 <param name="manipulation_selector" value="translate" />
289 <param name="from" value="" />
290 <param name="to" value="" />
291 </conditional>
292 </conditional>
293 </repeat>
275 <output name="output_file" file="sanger_full_range_original_sanger.fastqsanger" ftype="fastqsanger" /> 294 <output name="output_file" file="sanger_full_range_original_sanger.fastqsanger" ftype="fastqsanger" />
276 </test> 295 </test>
277 <!-- match all and remove --> 296 <!-- match all and remove -->
278 <test> 297 <test>
279 <param name="input_file" value="sanger_full_range_original_sanger.fastqsanger" ftype="fastqsanger" /> 298 <param name="input_file" value="sanger_full_range_original_sanger.fastqsanger" ftype="fastqsanger" />
280 <param name="match_type_selector" value="identifier" /> 299 <repeat name="match_blocks">
281 <param name="match_selector" value="regex" /> 300 <conditional name="match_type">
282 <param name="match_by" value=".*" /> 301 <param name="match_type_selector" value="identifier" />
283 <param name="manipulation_type_selector" value="miscellaneous" /> 302 <conditional name="match">
284 <param name="manipulation_selector" value="remove" /> 303 <param name="match_selector" value="regex" />
304 <param name="match_by" value=".*" />
305 </conditional>
306 </conditional>
307 </repeat>
308 <repeat name="manipulate_blocks">
309 <conditional name="manipulation_type">
310 <param name="manipulation_type_selector" value="miscellaneous" />
311 <conditional name="manipulation">
312 <param name="manipulation_selector" value="remove" />
313 </conditional>
314 </conditional>
315 </repeat>
285 <output name="output_file" file="empty_file.dat" ftype="fastqsanger" /> 316 <output name="output_file" file="empty_file.dat" ftype="fastqsanger" />
286 </test> 317 </test>
287 <!-- match None and remove --> 318 <!-- match None and remove -->
288 <test> 319 <test>
289 <param name="input_file" value="sanger_full_range_original_sanger.fastqsanger" ftype="fastqsanger" /> 320 <param name="input_file" value="sanger_full_range_original_sanger.fastqsanger" ftype="fastqsanger" />
290 <param name="match_type_selector" value="identifier" /> 321 <repeat name="match_blocks">
291 <param name="match_selector" value="regex" /> 322 <conditional name="match_type">
292 <param name="match_by" value="STRINGDOESNOTEXIST" /> 323 <param name="match_type_selector" value="identifier" />
293 <param name="manipulation_type_selector" value="miscellaneous" /> 324 <conditional name="match">
294 <param name="manipulation_selector" value="remove" /> 325 <param name="match_selector" value="regex" />
326 <param name="match_by" value="STRINGDOESNOTEXIST" />
327 </conditional>
328 </conditional>
329 </repeat>
330 <repeat name="manipulate_blocks">
331 <conditional name="manipulation_type">
332 <param name="manipulation_type_selector" value="miscellaneous" />
333 <conditional name="manipulation">
334 <param name="manipulation_selector" value="remove" />
335 </conditional>
336 </conditional>
337 </repeat>
295 <output name="output_file" file="sanger_full_range_original_sanger.fastqsanger" ftype="fastqsanger" /> 338 <output name="output_file" file="sanger_full_range_original_sanger.fastqsanger" ftype="fastqsanger" />
296 </test> 339 </test>
297 <!-- match all and trim to 4 inner-most bases --> 340 <!-- match all and trim to 4 inner-most bases -->
298 <test> 341 <test>
299 <param name="input_file" value="sanger_full_range_original_sanger.fastqsanger" ftype="fastqsanger" /> 342 <param name="input_file" value="sanger_full_range_original_sanger.fastqsanger" ftype="fastqsanger" />
300 <param name="match_type_selector" value="identifier" /> 343 <repeat name="match_blocks">
301 <param name="match_selector" value="regex" /> 344 <conditional name="match_type">
302 <param name="match_by" value=".*" /> 345 <param name="match_type_selector" value="identifier" />
303 <param name="manipulation_type_selector" value="sequence" /> 346 <conditional name="match">
304 <param name="manipulation_selector" value="trim" /> 347 <param name="match_selector" value="regex" />
305 <param name="base_offset_type" value="offsets_absolute"/> 348 <param name="match_by" value=".*" />
306 <param name="left_column_offset" value="45"/> 349 </conditional>
307 <param name="right_column_offset" value="45"/> 350 </conditional>
308 <param name="keep_zero_length" value="true" /> 351 </repeat>
352 <repeat name="manipulate_blocks">
353 <conditional name="manipulation_type">
354 <param name="manipulation_type_selector" value="sequence" />
355 <conditional name="manipulation">
356 <param name="manipulation_selector" value="trim" />
357 <conditional name="offset_type">
358 <param name="base_offset_type" value="offsets_absolute"/>
359 <param name="left_column_offset" value="45"/>
360 <param name="right_column_offset" value="45"/>
361 </conditional>
362 <param name="keep_zero_length" value="true" />
363 </conditional>
364 </conditional>
365 </repeat>
309 <output name="output_file" file="fastq_trimmer_out1.fastqsanger" ftype="fastqsanger" /> 366 <output name="output_file" file="fastq_trimmer_out1.fastqsanger" ftype="fastqsanger" />
310 </test> 367 </test>
311 <test> 368 <test>
312 <param name="input_file" value="sanger_full_range_original_sanger.fastqsanger" ftype="fastqsanger" /> 369 <param name="input_file" value="sanger_full_range_original_sanger.fastqsanger" ftype="fastqsanger" />
313 <param name="match_type_selector" value="identifier" /> 370 <repeat name="match_blocks">
314 <param name="match_selector" value="regex" /> 371 <conditional name="match_type">
315 <param name="match_by" value=".*" /> 372 <param name="match_type_selector" value="identifier" />
316 <param name="manipulation_type_selector" value="sequence" /> 373 <conditional name="match">
317 <param name="manipulation_selector" value="trim" /> 374 <param name="match_selector" value="regex" />
318 <param name="base_offset_type" value="offsets_percent"/> 375 <param name="match_by" value=".*" />
319 <param name="left_column_offset" value="47.87"/> 376 </conditional>
320 <param name="right_column_offset" value="47.87"/> 377 </conditional>
321 <param name="keep_zero_length" value="true" /> 378 </repeat>
379 <repeat name="manipulate_blocks">
380 <conditional name="manipulation_type">
381 <param name="manipulation_type_selector" value="sequence" />
382 <conditional name="manipulation">
383 <param name="manipulation_selector" value="trim" />
384 <conditional name="offset_type">
385 <param name="base_offset_type" value="offsets_percent"/>
386 <param name="left_column_offset" value="47.87"/>
387 <param name="right_column_offset" value="47.87"/>
388 </conditional>
389 <param name="keep_zero_length" value="true" />
390 </conditional>
391 </conditional>
392 </repeat>
322 <output name="output_file" file="fastq_trimmer_out1.fastqsanger" ftype="fastqsanger" /> 393 <output name="output_file" file="fastq_trimmer_out1.fastqsanger" ftype="fastqsanger" />
323 </test> 394 </test>
324 <!-- match all and rev comp --> 395 <!-- match all and rev comp -->
325 <test> 396 <test>
326 <param name="input_file" value="sanger_full_range_original_sanger.fastqsanger" ftype="fastqsanger" /> 397 <param name="input_file" value="sanger_full_range_original_sanger.fastqsanger" ftype="fastqsanger" />
327 <param name="match_type_selector" value="identifier" /> 398 <repeat name="match_blocks">
328 <param name="match_selector" value="regex" /> 399 <conditional name="match_type">
329 <param name="match_by" value=".*" /> 400 <param name="match_type_selector" value="identifier" />
330 <param name="manipulation_type_selector" value="sequence" /> 401 <conditional name="match">
331 <param name="manipulation_selector" value="rev_comp" /> 402 <param name="match_selector" value="regex" />
403 <param name="match_by" value=".*" />
404 </conditional>
405 </conditional>
406 </repeat>
407 <repeat name="manipulate_blocks">
408 <conditional name="manipulation_type">
409 <param name="manipulation_type_selector" value="sequence" />
410 <conditional name="manipulation">
411 <param name="manipulation_selector" value="rev_comp" />
412 </conditional>
413 </conditional>
414 </repeat>
332 <output name="output_file" file="sanger_full_range_rev_comp.fastqsanger" ftype="fastqsanger" /> 415 <output name="output_file" file="sanger_full_range_rev_comp.fastqsanger" ftype="fastqsanger" />
333 </test> 416 </test>
334 <!-- match all and rev comp, with ambiguous DNA --> 417 <!-- match all and rev comp, with ambiguous DNA -->
335 <test> 418 <test>
336 <param name="input_file" value="misc_dna_original_sanger.fastqsanger" ftype="fastqsanger" /> 419 <param name="input_file" value="misc_dna_original_sanger.fastqsanger" ftype="fastqsanger" />
337 <param name="match_type_selector" value="identifier" /> 420 <repeat name="match_blocks">
338 <param name="match_selector" value="regex" /> 421 <conditional name="match_type">
339 <param name="match_by" value=".*" /> 422 <param name="match_type_selector" value="identifier" />
340 <param name="manipulation_type_selector" value="sequence" /> 423 <conditional name="match">
341 <param name="manipulation_selector" value="rev_comp" /> 424 <param name="match_selector" value="regex" />
425 <param name="match_by" value=".*" />
426 </conditional>
427 </conditional>
428 </repeat>
429 <repeat name="manipulate_blocks">
430 <conditional name="manipulation_type">
431 <param name="manipulation_type_selector" value="sequence" />
432 <conditional name="manipulation">
433 <param name="manipulation_selector" value="rev_comp" />
434 </conditional>
435 </conditional>
436 </repeat>
342 <output name="output_file" file="misc_dna_as_sanger_rev_comp_1.fastqsanger" ftype="fastqsanger" /> 437 <output name="output_file" file="misc_dna_as_sanger_rev_comp_1.fastqsanger" ftype="fastqsanger" />
343 </test> 438 </test>
344 <!-- match all and rev comp, with ambiguous RNA --> 439 <!-- match all and rev comp, with ambiguous RNA -->
345 <test> 440 <test>
346 <param name="input_file" value="misc_rna_original_sanger.fastqsanger" ftype="fastqsanger" /> 441 <param name="input_file" value="misc_rna_original_sanger.fastqsanger" ftype="fastqsanger" />
347 <param name="match_type_selector" value="identifier" /> 442 <repeat name="match_blocks">
348 <param name="match_selector" value="regex" /> 443 <conditional name="match_type">
349 <param name="match_by" value=".*" /> 444 <param name="match_type_selector" value="identifier" />
350 <param name="manipulation_type_selector" value="sequence" /> 445 <conditional name="match">
351 <param name="manipulation_selector" value="rev_comp" /> 446 <param name="match_selector" value="regex" />
447 <param name="match_by" value=".*" />
448 </conditional>
449 </conditional>
450 </repeat>
451 <repeat name="manipulate_blocks">
452 <conditional name="manipulation_type">
453 <param name="manipulation_type_selector" value="sequence" />
454 <conditional name="manipulation">
455 <param name="manipulation_selector" value="rev_comp" />
456 </conditional>
457 </conditional>
458 </repeat>
352 <output name="output_file" file="misc_rna_as_sanger_rev_comp_1.fastqsanger" ftype="fastqsanger" /> 459 <output name="output_file" file="misc_rna_as_sanger_rev_comp_1.fastqsanger" ftype="fastqsanger" />
353 </test> 460 </test>
354 <!-- match first seq and rev comp --> 461 <!-- match first seq and rev comp -->
355 <test> 462 <test>
356 <param name="input_file" value="sanger_full_range_original_sanger.fastqsanger" ftype="fastqsanger" /> 463 <param name="input_file" value="sanger_full_range_original_sanger.fastqsanger" ftype="fastqsanger" />
357 <param name="match_type_selector" value="identifier" /> 464 <repeat name="match_blocks">
358 <param name="match_selector" value="regex" /> 465 <conditional name="match_type">
359 <param name="match_by" value="FAKE0001" /> 466 <param name="match_type_selector" value="identifier" />
360 <param name="manipulation_type_selector" value="sequence" /> 467 <conditional name="match">
361 <param name="manipulation_selector" value="rev_comp" /> 468 <param name="match_selector" value="regex" />
469 <param name="match_by" value="FAKE0001" />
470 </conditional>
471 </conditional>
472 </repeat>
473 <repeat name="manipulate_blocks">
474 <conditional name="manipulation_type">
475 <param name="manipulation_type_selector" value="sequence" />
476 <conditional name="manipulation">
477 <param name="manipulation_selector" value="rev_comp" />
478 </conditional>
479 </conditional>
480 </repeat>
362 <output name="output_file" file="sanger_full_range_rev_comp_1_seq.fastqsanger" ftype="fastqsanger" /> 481 <output name="output_file" file="sanger_full_range_rev_comp_1_seq.fastqsanger" ftype="fastqsanger" />
363 </test> 482 </test>
364 <!-- match first seq and rev comp: i.e. undo above --> 483 <!-- match first seq and rev comp: i.e. undo above -->
365 <test> 484 <test>
366 <param name="input_file" value="sanger_full_range_rev_comp_1_seq.fastqsanger" ftype="fastqsanger" /> 485 <param name="input_file" value="sanger_full_range_rev_comp_1_seq.fastqsanger" ftype="fastqsanger" />
367 <param name="match_type_selector" value="identifier" /> 486 <repeat name="match_blocks">
368 <param name="match_selector" value="regex" /> 487 <conditional name="match_type">
369 <param name="match_by" value="FAKE0001" /> 488 <param name="match_type_selector" value="identifier" />
370 <param name="manipulation_type_selector" value="sequence" /> 489 <conditional name="match">
371 <param name="manipulation_selector" value="rev_comp" /> 490 <param name="match_selector" value="regex" />
491 <param name="match_by" value="FAKE0001" />
492 </conditional>
493 </conditional>
494 </repeat>
495 <repeat name="manipulate_blocks">
496 <conditional name="manipulation_type">
497 <param name="manipulation_type_selector" value="sequence" />
498 <conditional name="manipulation">
499 <param name="manipulation_selector" value="rev_comp" />
500 </conditional>
501 </conditional>
502 </repeat>
372 <output name="output_file" file="sanger_full_range_original_sanger.fastqsanger" ftype="fastqsanger" /> 503 <output name="output_file" file="sanger_full_range_original_sanger.fastqsanger" ftype="fastqsanger" />
373 </test> 504 </test>
374 <!-- match all and DNA to RNA --> 505 <!-- match all and DNA to RNA -->
375 <test> 506 <test>
376 <param name="input_file" value="sanger_full_range_original_sanger.fastqsanger" ftype="fastqsanger" /> 507 <param name="input_file" value="sanger_full_range_original_sanger.fastqsanger" ftype="fastqsanger" />
377 <param name="match_type_selector" value="identifier" /> 508 <repeat name="match_blocks">
378 <param name="match_selector" value="regex" /> 509 <conditional name="match_type">
379 <param name="match_by" value=".*" /> 510 <param name="match_type_selector" value="identifier" />
380 <param name="manipulation_type_selector" value="sequence" /> 511 <conditional name="match">
381 <param name="manipulation_selector" value="dna_to_rna" /> 512 <param name="match_selector" value="regex" />
513 <param name="match_by" value=".*" />
514 </conditional>
515 </conditional>
516 </repeat>
517 <repeat name="manipulate_blocks">
518 <conditional name="manipulation_type">
519 <param name="manipulation_type_selector" value="sequence" />
520 <conditional name="manipulation">
521 <param name="manipulation_selector" value="dna_to_rna" />
522 </conditional>
523 </conditional>
524 </repeat>
382 <output name="output_file" file="sanger_full_range_as_rna.fastqsanger" ftype="fastqsanger" /> 525 <output name="output_file" file="sanger_full_range_as_rna.fastqsanger" ftype="fastqsanger" />
383 </test> 526 </test>
384 <!-- match all and RNA to DNA--> 527 <!-- match all and RNA to DNA-->
385 <test> 528 <test>
386 <param name="input_file" value="sanger_full_range_as_rna.fastqsanger" ftype="fastqsanger" /> 529 <param name="input_file" value="sanger_full_range_as_rna.fastqsanger" ftype="fastqsanger" />
387 <param name="match_type_selector" value="identifier" /> 530 <repeat name="match_blocks">
388 <param name="match_selector" value="regex" /> 531 <conditional name="match_type">
389 <param name="match_by" value=".*" /> 532 <param name="match_type_selector" value="identifier" />
390 <param name="manipulation_type_selector" value="sequence" /> 533 <conditional name="match">
391 <param name="manipulation_selector" value="rna_to_dna" /> 534 <param name="match_selector" value="regex" />
535 <param name="match_by" value=".*" />
536 </conditional>
537 </conditional>
538 </repeat>
539 <repeat name="manipulate_blocks">
540 <conditional name="manipulation_type">
541 <param name="manipulation_type_selector" value="sequence" />
542 <conditional name="manipulation">
543 <param name="manipulation_selector" value="rna_to_dna" />
544 </conditional>
545 </conditional>
546 </repeat>
392 <output name="output_file" file="sanger_full_range_original_sanger.fastqsanger" ftype="fastqsanger" /> 547 <output name="output_file" file="sanger_full_range_original_sanger.fastqsanger" ftype="fastqsanger" />
393 </test> 548 </test>
394 <!-- match all and RNA to DNA (gz compressed) --> 549 <!-- match all and RNA to DNA (gz compressed) -->
395 <test> 550 <test>
396 <param name="input_file" value="sanger_full_range_as_rna.fastqsanger.gz" ftype="fastqsanger.gz" /> 551 <param name="input_file" value="sanger_full_range_as_rna.fastqsanger.gz" ftype="fastqsanger.gz" />
397 <param name="match_type_selector" value="identifier" /> 552 <repeat name="match_blocks">
398 <param name="match_selector" value="regex" /> 553 <conditional name="match_type">
399 <param name="match_by" value=".*" /> 554 <param name="match_type_selector" value="identifier" />
400 <param name="manipulation_type_selector" value="sequence" /> 555 <conditional name="match">
401 <param name="manipulation_selector" value="rna_to_dna" /> 556 <param name="match_selector" value="regex" />
557 <param name="match_by" value=".*" />
558 </conditional>
559 </conditional>
560 </repeat>
561 <repeat name="manipulate_blocks">
562 <conditional name="manipulation_type">
563 <param name="manipulation_type_selector" value="sequence" />
564 <conditional name="manipulation">
565 <param name="manipulation_selector" value="rna_to_dna" />
566 </conditional>
567 </conditional>
568 </repeat>
402 <output name="output_file" file="sanger_full_range_original_sanger.fastqsanger" ftype="fastqsanger.gz" decompress="true" /> 569 <output name="output_file" file="sanger_full_range_original_sanger.fastqsanger" ftype="fastqsanger.gz" decompress="true" />
403 </test> 570 </test>
404 <!-- match all and RNA to DNA (bz2 compressed) --> 571 <!-- match all and RNA to DNA (bz2 compressed) -->
405 <test> 572 <test>
406 <param name="input_file" value="sanger_full_range_as_rna.fastqsanger.bz2" ftype="fastqsanger.bz2" /> 573 <param name="input_file" value="sanger_full_range_as_rna.fastqsanger.bz2" ftype="fastqsanger.bz2" />
407 <param name="match_type_selector" value="identifier" /> 574 <repeat name="match_blocks">
408 <param name="match_selector" value="regex" /> 575 <conditional name="match_type">
409 <param name="match_by" value=".*" /> 576 <param name="match_type_selector" value="identifier" />
410 <param name="manipulation_type_selector" value="sequence" /> 577 <conditional name="match">
411 <param name="manipulation_selector" value="rna_to_dna" /> 578 <param name="match_selector" value="regex" />
579 <param name="match_by" value=".*" />
580 </conditional>
581 </conditional>
582 </repeat>
583 <repeat name="manipulate_blocks">
584 <conditional name="manipulation_type">
585 <param name="manipulation_type_selector" value="sequence" />
586 <conditional name="manipulation">
587 <param name="manipulation_selector" value="rna_to_dna" />
588 </conditional>
589 </conditional>
590 </repeat>
412 <output name="output_file" file="sanger_full_range_original_sanger.fastqsanger" ftype="fastqsanger.bz2" decompress="true" /> 591 <output name="output_file" file="sanger_full_range_original_sanger.fastqsanger" ftype="fastqsanger.bz2" decompress="true" />
413 </test> 592 </test>
414 </tests> 593 </tests>
415 <help><![CDATA[ 594 <help><![CDATA[
416 This tool allows you to build complex manipulations to be applied to each matching read in a FASTQ file. A read must match all matching directives in order for it to be manipulated; if a read does not match, it is output in a non-modified manner. All reads matching will have each of the specified manipulations performed upon them, in the order specified. 595 This tool allows you to build complex manipulations to be applied to each matching read in a FASTQ file. A read must match all matching directives in order for it to be manipulated; if a read does not match, it is output in a non-modified manner. All reads matching will have each of the specified manipulations performed upon them, in the order specified.