Mercurial > repos > iuc > fastp
changeset 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 | |
files | fastp.xml macros.xml test-data/bwa-mem-fastq1.fq.gz test-data/bwa-mem-fastq2.fq.gz test-data/bwa-mem-merged-read-include-unmerged.fastqsanger.gz test-data/bwa-mem-merged-reads.fastqsanger.gz test-data/bwa-mem-unmerged-filtered-reads1.fastqsanger.gz test-data/bwa-mem-unmerged-filtered-reads2.fastqsanger.gz test-data/bwa-mem-unmerged-unfiltered-reads1.fastqsanger.gz test-data/out1.fq.gz |
diffstat | 10 files changed, 300 insertions(+), 203 deletions(-) [+] |
line wrap: on
line diff
--- a/fastp.xml Fri Nov 15 15:31:53 2024 +0000 +++ b/fastp.xml Sat Feb 08 15:15:16 2025 +0000 @@ -1,4 +1,4 @@ -<tool id="fastp" name="fastp" version="@TOOL_VERSION@+galaxy3" profile="23.1"> +<tool id="fastp" name="fastp" version="@TOOL_VERSION@+galaxy4" profile="23.1"> <description>fast all-in-one preprocessing for FASTQ files</description> <macros> <import>macros.xml</import> @@ -23,8 +23,6 @@ #set $in2 = $single_paired.paired_input.reverse #set $in1_name = re.sub('[^\w\-\s]', '_', str($single_paired.paired_input.name)) + $ext #set $in2_name = re.sub('[^\w\-\s]', '_', str("%s_%s" % ($single_paired.paired_input.name, "R2"))) + $ext - #set out1 = $output_paired_coll.forward - #set out2 = $output_paired_coll.reverse ln -sf '$in1' '$in1_name' && ln -sf '$in2' '$in2_name' && #else @@ -34,11 +32,6 @@ #set $in1_name = re.sub('[^\w\-\s]', '_', str($in1.element_identifier)) + $ext ln -sf '$in1' '$in1_name' && - - #if str($single_paired.single_paired_selector) == 'paired': - #set $in2_name = re.sub('[^\w\-\s]', '_', str("%s_R2" % $in2.element_identifier)) + $ext - ln -sf '$in2' '$in2_name' && - #end if #end if ## Run fastp @@ -56,14 +49,14 @@ -I '$in2_name' #if $single_paired.merge_reads.merge $single_paired.merge_reads.merge - --merged_out '$merged_reads' + --merged_out merged${ext} #if $single_paired.merge_reads.include_unmerged $single_paired.merge_reads.include_unmerged #else - --out1 '$unmerged_out1' - --out2 '$unmerged_out2' - --unpaired1 '$unpaired1' - --unpaired2 '$unpaired2' + --out1 'unmerged_R1${ext}' + --out2 'unmerged_R2${ext}' + --unpaired1 'unpaired_R1${ext}' + --unpaired2 'unpaired_R2${ext}' #end if #else -o first${ext} @@ -211,21 +204,28 @@ $read_mod_options.base_correction_options.correction -#if str($single_paired.single_paired_selector).startswith('single') - && - mv first${ext} '${out1}' -#elif str($single_paired.single_paired_selector).startswith('paired') and not $single_paired.merge_reads.merge: - && - mv first${ext} '${out1}' - && - mv second${ext} '${out2}' +#if str($single_paired.single_paired_selector) == 'paired_collection' + #if $single_paired.merge_reads.merge + && mv merged${ext} '$merged_reads' + #if not $single_paired.merge_reads.include_unmerged + && mv 'unmerged_R1${ext}' '$unmerged_out_coll.forward' + && mv 'unmerged_R2${ext}' '$unmerged_out_coll.reverse' + && mv 'unpaired_R1${ext}' '$unpaired_out_coll.forward' + && mv 'unpaired_R2${ext}' '$unpaired_out_coll.reverse' + #end if + #else + && mv first${ext} '$output_paired_coll.forward' + && mv second${ext} '$output_paired_coll.reverse' + #end if +#else + && mv first${ext} '${out1}' #end if + ]]></command> <inputs> <conditional name="single_paired"> <param name="single_paired_selector" type="select" label="Single-end or paired reads"> <option value="single" selected="true">Single-end</option> - <option value="paired">Paired</option> <option value="paired_collection">Paired Collection</option> </param> <when value="single"> @@ -233,16 +233,6 @@ <expand macro="adapter_trimming_options" /> <expand macro="global_trimming_options" /> </when> - <when value="paired"> - <expand macro="in" read_number="1" argument="-i"/> - <expand macro="in" read_number="2" argument="-I"/> - <expand macro="merge_reads" /> - <expand macro="adapter_trimming_options"> - <expand macro="adapter_sequence" read_number="2"/> - <expand macro="detect_adapter_for_pe" /> - </expand> - <expand macro="global_trimming_options_paired" /> - </when> <when value="paired_collection"> <param name="paired_input" type="data_collection" format="fastqsanger,fastqsanger.gz" label="Select paired collection(s)" collection_type="paired"/> <expand macro="merge_reads" /> @@ -281,7 +271,7 @@ </section> <!-- Read Modification Options --> - <section name="read_mod_options" title="Read Modification Options"> + <section name="read_mod_options" title="Read Modification Options"> <conditional name="polyg_tail_trimming"> <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."> <option value="" selected="true">Automatic trimming for Illumina NextSeq/NovaSeq data</option> @@ -335,48 +325,37 @@ </inputs> <outputs> - <data name="out1" format_source="in1" label="${tool.name} on ${on_string}: Read 1 output"> - <filter>single_paired['single_paired_selector'] in ["single", "paired"] and not single_paired['merge_reads']['merge']</filter> + <data name="out1" format_source="single_paired|in1" label="${tool.name} on ${on_string}: Read 1 output"> + <filter>single_paired['single_paired_selector'] == "single"</filter> </data> - <data name="out2" format_source="in2" label="${tool.name} on ${on_string}: Read 2 output"> - <filter>single_paired['single_paired_selector'] == "paired" and not single_paired['merge_reads']['merge']</filter> - </data> - <collection name="output_paired_coll" type="paired" format_source="paired_input['forward']" label="${tool.name} on ${on_string}: Paired-end output"> + <collection name="output_paired_coll" type="paired" format_source="single_paired|paired_input['forward']" label="${tool.name} on ${on_string}: Paired-end output"> <filter>single_paired['single_paired_selector'] == "paired_collection" and not single_paired['merge_reads']['merge']</filter> </collection> + <data name="report_html" format="html" from_work_dir="fastp.html" label="${tool.name} on ${on_string}: HTML report"> <filter>output_options['report_html'] is True</filter> </data> <data name="report_json" format="json" from_work_dir="fastp.json" label="${tool.name} on ${on_string}: JSON report"> <filter>output_options['report_json'] is True</filter> </data> - <data name="merged_reads" format_source="in1" label="${tool.name} on ${on_string}: Merged reads"> - <filter>single_paired['single_paired_selector'] in ["paired", "paired_collection"] and single_paired['merge_reads']['merge']</filter> - <expand macro="format_actions" read_number="1" forward_reverse="forward" /> - </data> - <data name="unmerged_out1" format_source="in1" label="${tool.name} on ${on_string}: Unmerged filtered reads1"> - <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> - <expand macro="format_actions" read_number="1" forward_reverse="forward" /> + <data name="merged_reads" format_source="single_paired|paired_input['forward']" label="${tool.name} on ${on_string}: Merged reads"> + <filter>single_paired['single_paired_selector'] == "paired_collection" and single_paired['merge_reads']['merge']</filter> </data> - <data name="unmerged_out2" format_source="in2" label="${tool.name} on ${on_string}: Unmerged filtered reads2"> - <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> - <expand macro="format_actions" read_number="2" forward_reverse="reverse" /> - </data> - <data name="unpaired1" format_source="in1" label="${tool.name} on ${on_string}: Unmerged unfiltered reads1"> - <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> - <expand macro="format_actions" read_number="1" forward_reverse="forward" /> - </data> - <data name="unpaired2" format_source="in2" label="${tool.name} on ${on_string}: Unmerged unfiltered reads2"> - <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> - <expand macro="format_actions" read_number="2" forward_reverse="reverse" /> - </data> + <collection name="unmerged_out_coll" type="paired" format_source="single_paired|paired_input['forward']" label="${tool.name} on ${on_string}: Unmerged filtered"> + <filter>single_paired['single_paired_selector'] == "paired_collection" and single_paired['merge_reads']['merge'] and not single_paired['merge_reads']['include_unmerged']</filter> + </collection> + <collection name="unpaired_out_coll" type="paired" format_source="single_paired|paired_input['forward']" label="${tool.name} on ${on_string}: Unmerged unfiltered"> + <filter>single_paired['single_paired_selector'] == "paired_collection" and single_paired['merge_reads']['merge'] and not single_paired['merge_reads']['include_unmerged']</filter> + </collection> </outputs> <tests> <!-- 1. Ensure default output works --> <test expect_num_outputs="3"> - <param name="in1" ftype="fastqsanger" value="R1.fq"/> - <param name="single_paired_selector" value="single"/> + <conditional name="single_paired"> + <param name="single_paired_selector" value="single"/> + <param name="in1" ftype="fastqsanger" value="R1.fq"/> + </conditional> <output name="out1" ftype="fastqsanger" file="out1.fq"/> <output name="report_html"> <assert_contents> @@ -391,14 +370,18 @@ </test> <!-- 2. Ensure paired collection works --> <test expect_num_outputs="4"> - <param name="single_paired_selector" value="paired_collection"/> - <param name="paired_input"> - <collection type="paired"> - <element name="forward" value="bwa-mem-fastq1.fq" ftype="fastqsanger" /> - <element name="reverse" value="bwa-mem-fastq2.fq" ftype="fastqsanger" /> - </collection> - </param> - <param name="report_json" value="False" /> + <conditional name="single_paired"> + <param name="single_paired_selector" value="paired_collection"/> + <param name="paired_input"> + <collection type="paired"> + <element name="forward" value="bwa-mem-fastq1.fq" ftype="fastqsanger" /> + <element name="reverse" value="bwa-mem-fastq2.fq" ftype="fastqsanger" /> + </collection> + </param> + </conditional> + <section name="output_options"> + <param name="report_json" value="False" /> + </section> <output name="report_html"> <assert_contents> <has_text text="fastp report"/> @@ -411,82 +394,117 @@ </test> <!-- 3. Ensure custom adapter works --> <test expect_num_outputs="2"> - <param name="in1" ftype="fastqsanger" value="R1.fq"/> - <param name="single_paired_selector" value="single"/> - <param name="adapter_sequence1" value="ATCG"/> - <param name="report_json" value="False" /> + <conditional name="single_paired"> + <param name="single_paired_selector" value="single"/> + <param name="in1" ftype="fastqsanger" value="R1.fq"/> + <section name="adapter_trimming_options"> + <param name="adapter_sequence1" value="ATCG"/> + </section> + </conditional> + <section name="output_options"> + <param name="report_json" value="False" /> + </section> <output name="out1" ftype="fastqsanger" file="out_a.fq"/> </test> <!-- 4. Ensure UMI processing works --> <test expect_num_outputs="2"> - <param name="in1" ftype="fastqsanger" value="R1.fq"/> - <param name="single_paired_selector" value="single"/> - <section name="umi_processing"> - <param name="umi" value="true"/> - <param name="umi_loc" value="read1"/> - <param name="umi_len" value="8"/> + <conditional name="single_paired"> + <param name="in1" ftype="fastqsanger" value="R1.fq"/> + <param name="single_paired_selector" value="single"/> + </conditional> + <section name="read_mod_options"> + <section name="umi_processing"> + <param name="umi" value="true"/> + <param name="umi_loc" value="read1"/> + <param name="umi_len" value="8"/> + </section> </section> - <param name="report_json" value="False" /> + <section name="output_options"> + <param name="report_json" value="False" /> + </section> <output name="out1" ftype="fastqsanger" file="out2.fq"/> </test> <!-- 5. Ensure UMI processing with different lengths works --> <test expect_num_outputs="2"> - <param name="in1" ftype="fastqsanger" value="R1.fq"/> - <param name="single_paired_selector" value="single"/> - <section name="umi_processing"> - <param name="umi" value="true"/> - <param name="umi_loc" value="read1"/> - <param name="umi_len" value="12"/> + <conditional name="single_paired"> + <param name="in1" ftype="fastqsanger" value="R1.fq"/> + <param name="single_paired_selector" value="single"/> + </conditional> + <section name="read_mod_options"> + <section name="umi_processing"> + <param name="umi" value="true"/> + <param name="umi_loc" value="read1"/> + <param name="umi_len" value="12"/> + </section> </section> - <param name="report_json" value="False" /> + <section name="output_options"> + <param name="report_json" value="False" /> + </section> <output name="out1" ftype="fastqsanger" file="out3.fq"/> </test> - <!-- 6. Ensure paired-end fastqsanger works --> - <test expect_num_outputs="3"> - <param name="in1" ftype="fastqsanger" value="bwa-mem-fastq1.fq"/> - <param name="in2" ftype="fastqsanger" value="bwa-mem-fastq2.fq"/> - <param name="single_paired_selector" value="paired"/> - <param name="report_json" value="False" /> - <output name="out1" ftype="fastqsanger" file="out_bwa1.fq"/> - <output name="out2" ftype="fastqsanger" file="out_bwa2.fq"/> + <!-- 6. Ensure paired-end UMI processing of Read 1 works --> + <test expect_num_outputs="4"> + <conditional name="single_paired"> + <param name="single_paired_selector" value="paired_collection"/> + <param name="paired_input"> + <collection type="paired"> + <element name="forward" value="bwa-mem-fastq1.fq" ftype="fastqsanger" /> + <element name="reverse" value="bwa-mem-fastq2.fq" ftype="fastqsanger" /> + </collection> + </param> + </conditional> + <section name="read_mod_options"> + <section name="umi_processing"> + <param name="umi" value="true"/> + <param name="umi_loc" value="read1"/> + <param name="umi_len" value="8"/> + </section> + </section> + <section name="output_options"> + <param name="report_json" value="False" /> + </section> + <output_collection name="output_paired_coll" type="paired"> + <element name="forward" value="out_bwa_umi_read1_1.fq" ftype="fastqsanger"/> + <element name="reverse" value="out_bwa_umi_read1_2.fq" ftype="fastqsanger"/> + </output_collection> </test> - <!-- 7. Ensure paired-end UMI processing of Read 1 works --> - <test expect_num_outputs="3"> - <param name="in1" ftype="fastqsanger" value="bwa-mem-fastq1.fq"/> - <param name="in2" ftype="fastqsanger" value="bwa-mem-fastq2.fq"/> - <param name="single_paired_selector" value="paired"/> - <section name="umi_processing"> - <param name="umi" value="true"/> - <param name="umi_loc" value="read1"/> - <param name="umi_len" value="8"/> + <!-- 7. Ensure paired-end UMI processing of Read 2 works --> + <test expect_num_outputs="5"> + <conditional name="single_paired"> + <param name="single_paired_selector" value="paired_collection"/> + <param name="paired_input"> + <collection type="paired"> + <element name="forward" value="bwa-mem-fastq1.fq" ftype="fastqsanger" /> + <element name="reverse" value="bwa-mem-fastq2.fq" ftype="fastqsanger" /> + </collection> + </param> + </conditional> + <section name="read_mod_options"> + <section name="umi_processing"> + <param name="umi" value="true"/> + <param name="umi_loc" value="read2"/> + <param name="umi_len" value="8"/> + </section> </section> - <param name="report_json" value="False" /> - <output name="out1" ftype="fastqsanger" file="out_bwa_umi_read1_1.fq"/> - <output name="out2" ftype="fastqsanger" file="out_bwa_umi_read1_2.fq"/> - </test> - <!-- 8. Ensure paired-end UMI processing of Read 2 works --> - <test expect_num_outputs="4"> - <param name="in1" ftype="fastqsanger" value="bwa-mem-fastq1.fq"/> - <param name="in2" ftype="fastqsanger" value="bwa-mem-fastq2.fq"/> - <param name="single_paired_selector" value="paired"/> - <section name="umi_processing"> - <param name="umi" value="true"/> - <param name="umi_loc" value="read2"/> - <param name="umi_len" value="8"/> - </section> - <output name="out1" ftype="fastqsanger" file="out_bwa_umi_read2_1.fq"/> - <output name="out2" ftype="fastqsanger" file="out_bwa_umi_read2_2.fq"/> + <output_collection name="output_paired_coll" type="paired"> + <element name="forward" value="out_bwa_umi_read2_1.fq" ftype="fastqsanger"/> + <element name="reverse" value="out_bwa_umi_read2_2.fq" ftype="fastqsanger"/> + </output_collection> <output name="report_json"> <assert_contents> <has_text text="fastp report"/> </assert_contents> </output> </test> - <!-- 9. Ensure JSON report output works --> + <!-- 8. Ensure JSON report output works --> <test expect_num_outputs="2"> - <param name="in1" ftype="fastqsanger" value="R1.fq"/> - <param name="single_paired_selector" value="single"/> - <param name="report_html" value="False"/> + <conditional name="single_paired"> + <param name="single_paired_selector" value="single"/> + <param name="in1" ftype="fastqsanger" value="R1.fq"/> + </conditional> + <section name="output_options"> + <param name="report_html" value="False"/> + </section> <output name="out1" ftype="fastqsanger" file="out1.fq"/> <output name="report_json"> <assert_contents> @@ -494,73 +512,109 @@ </assert_contents> </output> </test> - <!-- 10. Ensure polyG trimming works --> + <!-- 9. Ensure polyG trimming works --> <test expect_num_outputs="3"> - <param name="in1" ftype="fastqsanger.gz" value="R1.fq.gz"/> - <param name="single_paired_selector" value="single"/> - <param name="trimming_select" value="-g"/> - <param name="poly_g_min_len" value="10"/> - <output name="out1" ftype="fastqsanger.gz" decompress="True" file="out1.fq.gz"/> + <conditional name="single_paired"> + <param name="single_paired_selector" value="single"/> + <param name="in1" ftype="fastqsanger.gz" value="R1.fq.gz"/> + </conditional> + <section name="read_mod_options"> + <conditional name="polyg_tail_trimming"> + <param name="trimming_select" value="-g"/> + <param name="poly_g_min_len" value="10"/> + </conditional> + </section> + <output name="out1" ftype="fastqsanger.gz" decompress="true" file="out1.fq.gz"/> <output name="report_json"> <assert_contents> <has_text text="fastp report"/> </assert_contents> </output> </test> - <!-- 11. Ensure polyX trimming works --> + <!-- 10. Ensure polyX trimming works --> <test expect_num_outputs="3"> - <param name="in1" ftype="fastqsanger.gz" value="R1.fq.gz"/> - <param name="single_paired_selector" value="single"/> - <param name="trimming_select" value="-G"/> - <param name="polyx_trimming_select" value="-x"/> - <param name="poly_x_min_len" value="10"/> - <output name="out1" ftype="fastqsanger.gz" decompress="True" file="out1.fq.gz"/> + <conditional name="single_paired"> + <param name="single_paired_selector" value="single"/> + <param name="in1" ftype="fastqsanger.gz" value="R1.fq.gz"/> + </conditional> + <section name="read_mod_options"> + <conditional name="polyg_tail_trimming"> + <param name="trimming_select" value="-G"/> + </conditional> + <conditional name="polyx_tail_trimming"> + <param name="polyx_trimming_select" value="-x"/> + <param name="poly_x_min_len" value="10"/> + </conditional> + </section> + <output name="out1" ftype="fastqsanger.gz" decompress="true" file="out1.fq.gz"/> <output name="report_json"> <assert_contents> <has_text text="fastp report"/> </assert_contents> </output> </test> - <!-- 12. Test fastqsanger files with different length --> + <!-- 11. Test fastqsanger files with different length --> <test expect_exit_code="255" expect_failure="true"> - <param name="single_paired_selector" value="paired_collection"/> - <param name="paired_input"> - <collection type="paired"> - <element name="forward" value="bwa-mem-fastq1.fq" ftype="fastqsanger" /> - <element name="reverse" value="bwa-mem-fastq2_too_long.fq" ftype="fastqsanger" /> - </collection> - </param> + <conditional name="single_paired"> + <param name="single_paired_selector" value="paired_collection"/> + <param name="paired_input"> + <collection type="paired"> + <element name="forward" value="bwa-mem-fastq1.fq" ftype="fastqsanger" /> + <element name="reverse" value="bwa-mem-fastq2_too_long.fq" ftype="fastqsanger" /> + </collection> + </param> + </conditional> </test> - <!-- 13. Test merge reads in combination with paired --> - <test expect_num_outputs="5"> - <param name="in1" ftype="fastqsanger" value="bwa-mem-fastq1.fq"/> - <param name="in2" ftype="fastqsanger" value="bwa-mem-fastq2.fq"/> - <param name="single_paired_selector" value="paired"/> - <param name="merge" value="--merge" /> - <param name="report_html" value="False" /> - <param name="report_json" value="False" /> + <!-- 12. Test merge reads in combination with paired --> + <test expect_num_outputs="7"> + <conditional name="single_paired"> + <param name="single_paired_selector" value="paired_collection"/> + <param name="paired_input"> + <collection type="paired"> + <element name="forward" value="bwa-mem-fastq1.fq" ftype="fastqsanger" /> + <element name="reverse" value="bwa-mem-fastq2.fq" ftype="fastqsanger" /> + </collection> + </param> + <conditional name="merge_reads"> + <param name="merge" value="--merge" /> + </conditional> + </conditional> + <section name="output_options"> + <param name="report_json" value="False" /> + <param name="report_html" value="False" /> + </section> <output name="merged_reads" ftype="fastqsanger" file="bwa-mem-merged-reads.fastqsanger" /> - <output name="unmerged_out1" ftype="fastqsanger" file="bwa-mem-unmerged-filtered-reads1.fastqsanger" /> - <output name="unmerged_out2" ftype="fastqsanger" file="bwa-mem-unmerged-filtered-reads2.fastqsanger" /> - <output name="unpaired1" ftype="fastqsanger" file="bwa-mem-unmerged-unfiltered-reads1.fastqsanger" /> - <output name="unpaired2" ftype="fastqsanger"> - <assert_contents> - <has_size size="0" /> - </assert_contents> - </output> + <output_collection name="unmerged_out_coll" type="paired"> + <element name="forward" value="bwa-mem-unmerged-filtered-reads1.fastqsanger" ftype="fastqsanger"/> + <element name="reverse" value="bwa-mem-unmerged-filtered-reads2.fastqsanger" ftype="fastqsanger"/> + </output_collection> + <output_collection name="unpaired_out_coll" type="paired"> + <element name="forward" value="bwa-mem-unmerged-unfiltered-reads1.fastqsanger" ftype="fastqsanger"/> + <element name="reverse" ftype="fastqsanger"> + <assert_contents> + <has_size size="0" /> + </assert_contents> + </element> + </output_collection> </test> - <!-- 14. Test merge and include_unmerged in combination with paired collection --> + <!-- 13. Test merge and include_unmerged in combination with paired collection --> <test expect_num_outputs="2"> - <param name="single_paired_selector" value="paired_collection"/> - <param name="paired_input"> - <collection type="paired"> - <element name="forward" value="bwa-mem-fastq1.fq" ftype="fastqsanger" /> - <element name="reverse" value="bwa-mem-fastq2.fq" ftype="fastqsanger" /> - </collection> - </param> - <param name="merge" value="--merge" /> - <param name="include_unmerged" value="--include_unmerged" /> - <param name="report_html" value="False" /> + <conditional name="single_paired"> + <param name="single_paired_selector" value="paired_collection"/> + <param name="paired_input"> + <collection type="paired"> + <element name="forward" value="bwa-mem-fastq1.fq" ftype="fastqsanger" /> + <element name="reverse" value="bwa-mem-fastq2.fq" ftype="fastqsanger" /> + </collection> + </param> + <conditional name="merge_reads"> + <param name="merge" value="--merge" /> + <param name="include_unmerged" value="true" /> + </conditional> + </conditional> + <section name="output_options"> + <param name="report_html" value="False" /> + </section> <output name="merged_reads" ftype="fastqsanger" file="bwa-mem-merged-read-include-unmerged.fastqsanger" /> <output name="report_json"> <assert_contents> @@ -568,24 +622,85 @@ </assert_contents> </output> </test> - <!--15. Test paired collection in combination with compressed input--> + <!-- 14. Test merge reads in combination with paired --> + <test expect_num_outputs="7"> + <conditional name="single_paired"> + <param name="single_paired_selector" value="paired_collection"/> + <param name="paired_input"> + <collection type="paired"> + <element name="forward" value="bwa-mem-fastq1.fq.gz" ftype="fastqsanger.gz" /> + <element name="reverse" value="bwa-mem-fastq2.fq.gz" ftype="fastqsanger.gz" /> + </collection> + </param> + <conditional name="merge_reads"> + <param name="merge" value="--merge" /> + </conditional> + </conditional> + <section name="output_options"> + <param name="report_html" value="False" /> + <param name="report_json" value="False" /> + </section> + <output name="merged_reads" ftype="fastqsanger.gz" decompress="true" file="bwa-mem-merged-reads.fastqsanger.gz" /> + <output_collection name="unmerged_out_coll" type="paired"> + <element name="forward" value="bwa-mem-unmerged-filtered-reads1.fastqsanger.gz" decompress="true" ftype="fastqsanger.gz"/> + <element name="reverse" value="bwa-mem-unmerged-filtered-reads2.fastqsanger.gz" decompress="true" ftype="fastqsanger.gz"/> + </output_collection> + <output_collection name="unpaired_out_coll" type="paired"> + <element name="forward" value="bwa-mem-unmerged-unfiltered-reads1.fastqsanger.gz" decompress="true" ftype="fastqsanger.gz"/> + <element name="reverse" ftype="fastqsanger.gz"> + <assert_contents> + <has_size size="0" /> + </assert_contents> + </element> + </output_collection> + </test> + <!-- 15. Test merge and include_unmerged in combination with paired collection --> + <test expect_num_outputs="2"> + <conditional name="single_paired"> + <param name="single_paired_selector" value="paired_collection"/> + <param name="paired_input"> + <collection type="paired"> + <element name="forward" value="bwa-mem-fastq1.fq.gz" ftype="fastqsanger.gz" /> + <element name="reverse" value="bwa-mem-fastq2.fq.gz" ftype="fastqsanger.gz" /> + </collection> + </param> + <conditional name="merge_reads"> + <param name="merge" value="--merge" /> + <param name="include_unmerged" value="true" /> + </conditional> + </conditional> + <section name="output_options"> + <param name="report_html" value="False" /> + </section> + <output name="merged_reads" ftype="fastqsanger.gz" decompress="true" file="bwa-mem-merged-read-include-unmerged.fastqsanger.gz" /> + <output name="report_json"> + <assert_contents> + <has_text text="fastp report"/> + </assert_contents> + </output> + </test> + <!--16. Test paired collection in combination with compressed input--> <test expect_num_outputs="4"> - <param name="single_paired_selector" value="paired_collection"/> - <param name="paired_input"> - <collection type="paired"> - <element name="forward" value="bwa-mem-fastq-paired-collection/input_forward.fastqsanger.gz" ftype="fastqsanger.gz" /> - <element name="reverse" value="bwa-mem-fastq-paired-collection/input_reverse.fastqsanger.gz" ftype="fastqsanger.gz" /> - </collection> - </param> - <param name="report_json" value="False" /> + <conditional name="single_paired"> + <param name="single_paired_selector" value="paired_collection"/> + <param name="paired_input"> + <collection type="paired"> + <element name="forward" value="bwa-mem-fastq-paired-collection/input_forward.fastqsanger.gz" ftype="fastqsanger.gz" /> + <element name="reverse" value="bwa-mem-fastq-paired-collection/input_reverse.fastqsanger.gz" ftype="fastqsanger.gz" /> + </collection> + </param> + </conditional> + <section name="output_options"> + <param name="report_json" value="False" /> + </section> <output name="report_html"> <assert_contents> <has_text text="fastp report"/> </assert_contents> </output> <output_collection name="output_paired_coll" type="paired"> - <element name="forward" value="bwa-mem-fastq-paired-collection/output_forward.fastqsanger.gz" decompress="True" ftype="fastqsanger.gz"/> - <element name="reverse" value="bwa-mem-fastq-paired-collection/output_reverse.fastqsanger.gz" decompress="True" ftype="fastqsanger.gz"/> + <element name="forward" value="bwa-mem-fastq-paired-collection/output_forward.fastqsanger.gz" decompress="true" ftype="fastqsanger.gz"/> + <element name="reverse" value="bwa-mem-fastq-paired-collection/output_reverse.fastqsanger.gz" decompress="true" ftype="fastqsanger.gz"/> </output_collection> </test> </tests> @@ -633,10 +748,8 @@ * Processed reads * Merged reads - * Unmerged filtered reads1, reads that cannot be merged successfully, but both pass all the filters. - * Unmerged filtered reads2, reads that cannot be merged successfully, but both pass all the filters. - * Unmerged unfiltered reads1, reads that cannot be merged, **read1** passes filters but **read2** doesn't. - * Unmerged unfiltered reads2, reads that cannot be merged, **read2** passes filters but **read1** doesn't. + * Unmerged filtered reads, reads that cannot be merged successfully, but both pass all the filters. + * Unmerged unfiltered reads, reads that cannot be merged, i.e. **forward** passes filters but **reverse** doesn't. Optionally, under **Output Options** you can choose to output @@ -649,4 +762,4 @@ <citations> <citation type="doi">10.1101/274100</citation> </citations> -</tool> \ No newline at end of file +</tool>
--- a/macros.xml Fri Nov 15 15:31:53 2024 +0000 +++ b/macros.xml Sat Feb 08 15:15:16 2025 +0000 @@ -69,20 +69,4 @@ help="The minimum length to detect polyG in the read tail. 10 by default."/> </xml> - <xml name="format_actions" token_read_number="1" token_forward_reverse="forward"> - <actions> - <conditional name="single_paired.single_paired_selector"> - <when value="paired"> - <action type="format"> - <option type="from_param" name="single_paired.in@READ_NUMBER@" param_attribute="ext" /> - </action> - </when> - <when value="paired_collection"> - <action type="format"> - <option type="from_param" name="single_paired.paired_input" param_attribute="@FORWARD_REVERSE@.ext" /> - </action> - </when> - </conditional> - </actions> - </xml> </macros> \ No newline at end of file