From 6b8beb69065c0ca1b34191de23a789483777210b Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Sun, 6 Sep 2026 22:42:44 +0100 Subject: [PATCH] fix(fastq_qc_trim_filter_setstrandedness): expose fastp's merged reads instead of silently dropping them --- .../nf-core/fastq_qc_trim_filter_setstrandedness/main.nf | 3 +++ .../fastq_qc_trim_filter_setstrandedness/meta.yml | 9 +++++++++ .../tests/main.nf.test | 1 + 3 files changed, 13 insertions(+) diff --git a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf index 9f73ee0d99ef..1f6c1fb510bb 100644 --- a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf +++ b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf @@ -132,6 +132,7 @@ workflow FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS { ch_filtered_reads = channel.empty() ch_trim_read_count = channel.empty() + ch_trim_reads_merged = channel.empty() ch_multiqc_files = channel.empty() ch_lint_log_raw = channel.empty() ch_lint_log_trimmed = channel.empty() @@ -240,6 +241,7 @@ workflow FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS { ) ch_filtered_reads = FASTQ_FASTQC_UMITOOLS_FASTP.out.reads ch_trim_read_count = FASTQ_FASTQC_UMITOOLS_FASTP.out.trim_read_count + ch_trim_reads_merged = FASTQ_FASTQC_UMITOOLS_FASTP.out.trim_reads_merged // Capture individual outputs for workflow outputs ch_fastqc_raw_html = FASTQ_FASTQC_UMITOOLS_FASTP.out.fastqc_raw_html @@ -433,6 +435,7 @@ workflow FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS { reads_cat = ch_reads_cat reads_trimmed = ch_reads_trimmed trim_read_count = ch_trim_read_count + trim_reads_merged = ch_trim_reads_merged multiqc_files = ch_multiqc_files.transpose() // Individual outputs for workflow outputs diff --git a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/meta.yml b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/meta.yml index 9dff009d3eab..637b92e9f8b0 100644 --- a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/meta.yml +++ b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/meta.yml @@ -171,6 +171,15 @@ output: Number of reads remaining after trimming for all input samples. Structure: [ val(meta), val(count) ] + - trim_reads_merged: + type: file + description: | + fastp's merged overlapping read pairs, produced only when `trimmer == 'fastp'` and + `fastp_merge == true`. Empty otherwise. These reads are excluded from `reads`; + callers that want to use them downstream must consume this channel separately. + + Structure: [ val(meta), path(reads) ] + pattern: "*.merged.fastq.gz" - multiqc_files: type: file description: | diff --git a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test index 4ce8a2d9d0f9..12ecf9f416b7 100644 --- a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test @@ -122,6 +122,7 @@ nextflow_workflow { { assert pelines2.size() == 4508 }, { assert workflow.out.trim_read_count[0][1] == 3022 }, { assert sortmernaRrnaCount == 20 }, // 10 pairs = 20 individual reads (100% detection) + { assert path(workflow.out.trim_reads_merged[0][1]).linesGzip.size() == 3022 * 4 }, // fastp's merged overlapping read pairs, excluded from `reads` { assert snapshot( pelines1.join('\n').md5(), pelines2.join('\n').md5(),