diff --git a/CHANGELOG.md b/CHANGELOG.md index 3da552eb6..750a30fbb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -82,6 +82,7 @@ Thank you to everyone else that has contributed by reporting bugs, enhancements - [PR #1304](https://github.com/nf-core/rnaseq/pull/1304) - Remove redundant gene TPM outputs - [PR #1306](https://github.com/nf-core/rnaseq/pull/1306) - Overhaul strandedness detection / comparison - [PR #1307](https://github.com/nf-core/rnaseq/pull/1307) - Clarify infer strandedness step in subway map and text +- [PR #1308](https://github.com/nf-core/rnaseq/pull/1308) - Various MultiQC issues: FastQC sections for raw and trimmed reads // umi-tools dedup and extraction plots, custom content styling. - [PR #1309](https://github.com/nf-core/rnaseq/pull/1309) - Document FASTP sampling - [PR #1310](https://github.com/nf-core/rnaseq/pull/1310) - Reinstate pseudoalignment subworkflow config - [PR #1312](https://github.com/nf-core/rnaseq/pull/1312) - Fix issues with unzipping of GTF/ GFF files without absolute paths diff --git a/docs/usage.md b/docs/usage.md index cf9c607dc..7aba570d4 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -146,12 +146,13 @@ The `--umitools_grouping_method` parameter affects [how similar, but non-identic #### Examples: -| UMI type | Source | Pipeline parameters | -| ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | -| In read name | [Illumina BCL convert >3.7.5](https://emea.support.illumina.com/content/dam/illumina-support/documents/documentation/software_documentation/bcl_convert/bcl-convert-v3-7-5-software-guide-1000000163594-00.pdf) | `--with_umi --skip_umi_extract --umitools_umi_separator ":"` | -| In sequence | [Lexogen QuantSeq® 3’ mRNA-Seq V2 FWD](https://www.lexogen.com/quantseq-3mrna-sequencing) + [UMI Second Strand Synthesis Module](https://faqs.lexogen.com/faq/how-can-i-add-umis-to-my-quantseq-libraries) | `--with_umi --umitools_extract_method "regex" --umitools_bc_pattern "^(?P.{6})(?P.{4}).*"` | -| In sequence | [Lexogen CORALL® Total RNA-Seq V1](https://www.lexogen.com/corall-total-rna-seq/)
> _mind [Appendix H](https://www.lexogen.com/wp-content/uploads/2020/04/095UG190V0130_CORALL-Total-RNA-Seq_2020-03-31.pdf) regarding optional trimming_ | `--with_umi --umitools_extract_method "regex" --umitools_bc_pattern "^(?P.{12}).*"`
Optional: `--clip_r2 9 --three_prime_clip_r2 12` | -| In sequence | [Takara Bio SMARTer® Stranded Total RNA-Seq Kit v3](https://www.takarabio.com/documents/User%20Manual/SMARTer%20Stranded%20Total%20RNA/SMARTer%20Stranded%20Total%20RNA-Seq%20Kit%20v3%20-%20Pico%20Input%20Mammalian%20User%20Manual-a_114949.pdf) | `--with_umi --umitools_extract_method "regex" --umitools_bc_pattern2 "^(?P.{8})(?P.{6}).*"` | +| UMI type | Source | Pipeline parameters | +| ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| In read name | [Illumina BCL convert >3.7.5](https://emea.support.illumina.com/content/dam/illumina-support/documents/documentation/software_documentation/bcl_convert/bcl-convert-v3-7-5-software-guide-1000000163594-00.pdf) | `--with_umi --skip_umi_extract --umitools_umi_separator ":"` | +| In sequence | [Lexogen QuantSeq® 3’ mRNA-Seq V2 FWD](https://www.lexogen.com/quantseq-3mrna-sequencing) + [UMI Second Strand Synthesis Module](https://faqs.lexogen.com/faq/how-can-i-add-umis-to-my-quantseq-libraries) | `--with_umi --umitools_extract_method "regex" --umitools_bc_pattern "^(?P.{6})(?P.{4}).*"` | +| In sequence | [Lexogen CORALL® Total RNA-Seq V1](https://www.lexogen.com/corall-total-rna-seq/)
> _mind [Appendix H](https://www.lexogen.com/wp-content/uploads/2020/04/095UG190V0130_CORALL-Total-RNA-Seq_2020-03-31.pdf) regarding optional trimming_ | `--with_umi --umitools_extract_method "regex" --umitools_bc_pattern "^(?P.{12}).*"`
Optional: `--clip_r2 9 --three_prime_clip_r2 12` | +| In sequence | [Takara Bio SMARTer® Stranded Total RNA-Seq Kit v3](https://www.takarabio.com/documents/User%20Manual/SMARTer%20Stranded%20Total%20RNA/SMARTer%20Stranded%20Total%20RNA-Seq%20Kit%20v3%20-%20Pico%20Input%20Mammalian%20User%20Manual-a_114949.pdf) | `--with_umi --umitools_extract_method "regex" --umitools_bc_pattern2 "^(?P.{8})(?P.{6}).*"` | +| In sequence | [Watchmaker mRNA Library Prep Kit](https://watchmakergenomics.com/wp-content/uploads/2023/11/M223_mRNA-Library-Prep-Kit-_UG_WMUG214_v1-1-0823.pdf) with [Twist UMI Adapter System](https://www.twistbioscience.com/sites/default/files/resources/2023-03/DOC-001337_TechNote-ProcessingSequencingDataUtilizingUMI-REV1-singles.pdf) | `--with_umi --umitools_extract_method "regex" --umitools_bc_pattern "^(?P.{5})(?P.{2}).*" --umitools_bc_pattern2 "^(?P.{5})(?P.{2}).*"` | > _No warranty for the accuracy or completeness of the parameters is implied_ diff --git a/modules.json b/modules.json index 506e788c2..320ddb009 100644 --- a/modules.json +++ b/modules.json @@ -37,9 +37,8 @@ }, "dupradar": { "branch": "master", - "git_sha": "f632a6e25b05497477920183cff33ba72ab7b6fc", - "installed_by": ["modules"], - "patch": "modules/nf-core/dupradar/dupradar.diff" + "git_sha": "055416736dcb4955960ecc17dea61eb41b68c024", + "installed_by": ["modules"] }, "fastp": { "branch": "master", @@ -93,7 +92,7 @@ }, "multiqc": { "branch": "master", - "git_sha": "314d742bdb357a1df5f9b88427b3b6ac78aa33f7", + "git_sha": "45d482f013f7da8a3e050e855f04ada418d91c3c", "installed_by": ["modules"] }, "picard/markduplicates": { diff --git a/modules/nf-core/dupradar/dupradar.diff b/modules/nf-core/dupradar/dupradar.diff deleted file mode 100644 index c24bc6570..000000000 --- a/modules/nf-core/dupradar/dupradar.diff +++ /dev/null @@ -1,130 +0,0 @@ -Changes in module 'nf-core/dupradar' ---- /dev/null -+++ modules/nf-core/dupradar/nextflow.config -@@ -0,0 +1,35 @@ -+if (!params.skip_alignment && !params.skip_qc) { -+ if (!params.skip_dupradar) { -+ process { -+ withName: 'DUPRADAR' { -+ publishDir = [ -+ [ -+ path: { "${params.outdir}/${params.aligner}/dupradar/scatter_plot" }, -+ mode: params.publish_dir_mode, -+ pattern: "*Dens.pdf" -+ ], -+ [ -+ path: { "${params.outdir}/${params.aligner}/dupradar/box_plot" }, -+ mode: params.publish_dir_mode, -+ pattern: "*Boxplot.pdf" -+ ], -+ [ -+ path: { "${params.outdir}/${params.aligner}/dupradar/histogram" }, -+ mode: params.publish_dir_mode, -+ pattern: "*Hist.pdf" -+ ], -+ [ -+ path: { "${params.outdir}/${params.aligner}/dupradar/gene_data" }, -+ mode: params.publish_dir_mode, -+ pattern: "*Matrix.txt" -+ ], -+ [ -+ path: { "${params.outdir}/${params.aligner}/dupradar/intercepts_slope" }, -+ mode: params.publish_dir_mode, -+ pattern: "*slope.txt" -+ ] -+ ] -+ } -+ } -+ } -+} - ---- modules/nf-core/dupradar/tests/main.nf.test.snap -+++ modules/nf-core/dupradar/tests/main.nf.test.snap -@@ -50,8 +50,8 @@ - "strandedness": "forward" - }, - [ -- "test_dup_intercept_mqc.txt:md5,d69369924aeb9695b0e97e755e0d9ea3", -- "test_duprateExpDensCurve_mqc.txt:md5,f4a50dc09de81219ed4449c11153ba6e" -+ "test_dup_intercept_mqc.txt:md5,002855b42a71aa0f407ef7fa19df9ac3", -+ "test_duprateExpDensCurve_mqc.txt:md5,5c6ab345e3e0089d409624d6a4bf4e40" - ] - ] - ] -@@ -150,8 +150,8 @@ - "strandedness": "forward" - }, - [ -- "test_dup_intercept_mqc.txt:md5,7b6fb70cbede0d20ffa576a0cc0b249d", -- "test_duprateExpDensCurve_mqc.txt:md5,49b44937123c14b622f346cb6156dd4f" -+ "test_dup_intercept_mqc.txt:md5,11961f0962ffc70e42aa57a12984e0fc", -+ "test_duprateExpDensCurve_mqc.txt:md5,eb742e354c8d5d6bed8d2ebac087f0ac" - ] - ] - ] -@@ -357,4 +357,4 @@ - }, - "timestamp": "2024-03-07T13:07:43.344100132" - } --}+} - ---- modules/nf-core/dupradar/tests/main.nf.test -+++ modules/nf-core/dupradar/tests/main.nf.test -@@ -3,10 +3,6 @@ - name "Test Process DUPRADAR" - script "../main.nf" - process "DUPRADAR" -- -- tag "modules" -- tag "modules_nfcore" -- tag "dupradar" - - test("sarscov2 - bam - single_end") { - - ---- modules/nf-core/dupradar/templates/dupradar.r -+++ modules/nf-core/dupradar/templates/dupradar.r -@@ -88,7 +88,6 @@ - # max: 100 - # min: 0 - # scale: 'RdYlGn-rev' --# format: '{:.2f}%' - Sample dupRadar_intercept" - - write(line,file=paste0(output_prefix, "_dup_intercept_mqc.txt"),append=TRUE) -@@ -115,15 +114,15 @@ - # This plot shows the general linear models - a summary of the gene duplication distributions. \" - #pconfig: - # title: 'DupRadar General Linear Model' --# xLog: True -+# xlog: True - # xlab: 'expression (reads/kbp)' - # ylab: '% duplicate reads' - # ymax: 100 - # ymin: 0 - # tt_label: '{point.x:.1f} reads/kbp: {point.y:,.2f}% duplicates' --# xPlotLines: -+# x_lines: - # - color: 'green' --# dashStyle: 'LongDash' -+# dash: 'LongDash' - # label: - # style: {color: 'green'} - # text: '0.5 RPKM' -@@ -132,7 +131,7 @@ - # value: 0.5 - # width: 1 - # - color: 'red' --# dashStyle: 'LongDash' -+# dash: 'LongDash' - # label: - # style: {color: 'red'} - # text: '1 read/bp' - ---- modules/nf-core/dupradar/tests/tags.yml -+++ /dev/null -@@ -1,2 +0,0 @@ --dupradar: -- - "modules/nf-core/dupradar/**" - -************************************************************ diff --git a/modules/nf-core/dupradar/main.nf b/modules/nf-core/dupradar/main.nf index 6ed502bbe..8f3665a67 100644 --- a/modules/nf-core/dupradar/main.nf +++ b/modules/nf-core/dupradar/main.nf @@ -34,7 +34,8 @@ process DUPRADAR { touch ${meta.id}_expressionHist.pdf touch ${meta.id}_dupMatrix.txt touch ${meta.id}_intercept_slope.txt - touch ${meta.id}_mqc.txt + touch ${meta.id}_dup_intercept_mqc.txt + touch ${meta.id}_duprateExpDensCurve_mqc.txt touch ${meta.id}.R_sessionInfo.log cat <<-END_VERSIONS > versions.yml diff --git a/modules/nf-core/dupradar/templates/dupradar.r b/modules/nf-core/dupradar/templates/dupradar.r index 95e7b4d88..7653e5873 100755 --- a/modules/nf-core/dupradar/templates/dupradar.r +++ b/modules/nf-core/dupradar/templates/dupradar.r @@ -124,19 +124,13 @@ line="#id: dupradar # - color: 'green' # dash: 'LongDash' # label: -# style: {color: 'green'} # text: '0.5 RPKM' -# verticalAlign: 'bottom' -# y: -65 # value: 0.5 # width: 1 # - color: 'red' # dash: 'LongDash' # label: -# style: {color: 'red'} # text: '1 read/bp' -# verticalAlign: 'bottom' -# y: -65 # value: 1000 # width: 1" diff --git a/modules/nf-core/dupradar/tests/main.nf.test b/modules/nf-core/dupradar/tests/main.nf.test index e4bfcb917..ef213df9f 100644 --- a/modules/nf-core/dupradar/tests/main.nf.test +++ b/modules/nf-core/dupradar/tests/main.nf.test @@ -4,18 +4,22 @@ nextflow_process { script "../main.nf" process "DUPRADAR" + tag "modules" + tag "modules_nfcore" + tag "dupradar" + test("sarscov2 - bam - single_end") { config './nextflow.config' - + when { process { """ - input[0] = [ + input[0] = [ [ id:'test', single_end:true, strandedness:'forward' ], // meta map file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.single_end.bam", checkIfExists: true) ] - input[1] = [ + input[1] = [ [ id:'sarscov2' ], // meta map file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) ] @@ -26,32 +30,33 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(file(process.out.scatter2d[0][1]).name).match('scatter_single_end') }, - { assert snapshot(file(process.out.boxplot[0][1]).name).match('boxplot_single_end') }, - { assert snapshot(file(process.out.hist[0][1]).name).match('hist_single_end') }, - { assert snapshot(process.out.dupmatrix).match('dupmatrix_single_end') }, - { assert snapshot(process.out.intercept_slopt).match('intercept_slope_single_end') }, - { assert snapshot(process.out.multiqc).match('multiqc_single_end') }, - { assert snapshot(process.out.versions).match('versions_single_end') } + { assert snapshot( + file(process.out.boxplot[0][1]).name, + file(process.out.hist[0][1]).name, + file(process.out.scatter2d[0][1]).name, + process.out.dupmatrix, + process.out.intercept_slopt, + process.out.multiqc, + process.out.versions + ).match() } ) } - } - + test("sarscov2 - bam - single_end - stub") { config './nextflow.config' - + options '-stub' when { process { """ - input[0] = [ + input[0] = [ [ id:'test', single_end:true, strandedness:'forward' ], // meta map file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.single_end.bam", checkIfExists: true) ] - input[1] = [ + input[1] = [ [ id:'sarscov2' ], // meta map file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) ] @@ -62,16 +67,9 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(file(process.out.scatter2d[0][1]).name).match('scatter_single_end_stub') }, - { assert snapshot(file(process.out.boxplot[0][1]).name).match('boxplot_single_end_stub') }, - { assert snapshot(file(process.out.hist[0][1]).name).match('hist_single_end_stub') }, - { assert snapshot(process.out.dupmatrix).match('dupmatrix_single_end_stub') }, - { assert snapshot(process.out.intercept_slopt).match('intercept_slope_single_end_stub') }, - { assert snapshot(process.out.multiqc).match('multiqc_single_end_stub') }, - { assert snapshot(process.out.versions).match('versions_single_end_stub') } + { assert snapshot(process.out).match() } ) } - } test("sarscov2 - bam - paired_end") { @@ -81,11 +79,11 @@ nextflow_process { when { process { """ - input[0] = [ + input[0] = [ [ id:'test', single_end:false, strandedness:'forward' ], // meta map file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.bam", checkIfExists: true) ] - input[1] = [ + input[1] = [ [ id:'sarscov2' ], // meta map file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) ] @@ -96,31 +94,33 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(file(process.out.scatter2d[0][1]).name).match('scatter_paired_end') }, - { assert snapshot(file(process.out.boxplot[0][1]).name).match('boxplot_paired_end') }, - { assert snapshot(file(process.out.hist[0][1]).name).match('hist_paired_end') }, - { assert snapshot(process.out.dupmatrix).match('dupmatrix_paired_end') }, - { assert snapshot(process.out.intercept_slopt).match('intercept_slope_paired_end') }, - { assert snapshot(process.out.multiqc).match('multiqc_paired_end') }, - { assert snapshot(process.out.versions).match('versions_paired_end') } + { assert snapshot( + file(process.out.boxplot[0][1]).name, + file(process.out.hist[0][1]).name, + file(process.out.scatter2d[0][1]).name, + process.out.dupmatrix, + process.out.intercept_slopt, + process.out.multiqc, + process.out.versions + ).match() } ) } } - + test("sarscov2 - bam - paired_end - stub") { config './nextflow.config' options '-stub' - + when { process { """ - input[0] = [ + input[0] = [ [ id:'test', single_end:false, strandedness:'forward' ], // meta map file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.bam", checkIfExists: true) ] - input[1] = [ + input[1] = [ [ id:'sarscov2' ], // meta map file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) ] @@ -131,13 +131,7 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(file(process.out.scatter2d[0][1]).name).match('scatter_paired_end_stub') }, - { assert snapshot(file(process.out.boxplot[0][1]).name).match('boxplot_paired_end_stub') }, - { assert snapshot(file(process.out.hist[0][1]).name).match('hist_paired_end_stub') }, - { assert snapshot(process.out.dupmatrix).match('dupmatrix_paired_end_stub') }, - { assert snapshot(process.out.intercept_slopt).match('intercept_slope_paired_end_stub') }, - { assert snapshot(process.out.multiqc).match('multiqc_paired_end_stub') }, - { assert snapshot(process.out.versions).match('versions_paired_end_stub') } + { assert snapshot(process.out).match() } ) } } diff --git a/modules/nf-core/dupradar/tests/main.nf.test.snap b/modules/nf-core/dupradar/tests/main.nf.test.snap index 79587a439..dc7aba4a5 100644 --- a/modules/nf-core/dupradar/tests/main.nf.test.snap +++ b/modules/nf-core/dupradar/tests/main.nf.test.snap @@ -1,16 +1,9 @@ { - "boxplot_single_end": { - "content": [ - "test_duprateExpBoxplot.pdf" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:33.021785925" - }, - "multiqc_single_end_stub": { + "sarscov2 - bam - single_end": { "content": [ + "test_duprateExpBoxplot.pdf", + "test_expressionHist.pdf", + "test_duprateExpDens.pdf", [ [ { @@ -18,164 +11,201 @@ "single_end": true, "strandedness": "forward" }, - "test_mqc.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_dupMatrix.txt:md5,2beda4c140548a2b8c91bf6bde01ddc6" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:43.36647107" - }, - "versions_paired_end_stub": { - "content": [ - [ - "versions.yml:md5,cd524e9e74304c2930cf28e2d741d351" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:08:05.545356706" - }, - "multiqc_paired_end": { - "content": [ + ], + null, [ [ { "id": "test", - "single_end": false, + "single_end": true, "strandedness": "forward" }, [ - "test_dup_intercept_mqc.txt:md5,002855b42a71aa0f407ef7fa19df9ac3", - "test_duprateExpDensCurve_mqc.txt:md5,5c6ab345e3e0089d409624d6a4bf4e40" + "test_dup_intercept_mqc.txt:md5,11961f0962ffc70e42aa57a12984e0fc", + "test_duprateExpDensCurve_mqc.txt:md5,f7d3432ef52047336b156446281aa6ac" ] ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:55.730550241" - }, - "boxplot_paired_end_stub": { - "content": [ - "test_duprateExpBoxplot.pdf" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:08:05.512885589" - }, - "scatter_single_end": { - "content": [ - "test_duprateExpDens.pdf" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:33.010955775" - }, - "hist_single_end_stub": { - "content": [ - "test_expressionHist.pdf" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:43.353498911" - }, - "scatter_paired_end_stub": { - "content": [ - "test_duprateExpDens.pdf" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:08:05.507974569" - }, - "dupmatrix_single_end": { - "content": [ - [ - [ - { - "id": "test", - "single_end": true, - "strandedness": "forward" - }, - "test_dupMatrix.txt:md5,2beda4c140548a2b8c91bf6bde01ddc6" - ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:33.027798024" - }, - "dupmatrix_single_end_stub": { - "content": [ + ], [ - [ - { - "id": "test", - "single_end": true, - "strandedness": "forward" - }, - "test_dupMatrix.txt:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + "versions.yml:md5,cd524e9e74304c2930cf28e2d741d351" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-07T13:07:43.358373221" + "timestamp": "2024-07-11T11:21:44.31238184" }, - "multiqc_single_end": { + "sarscov2 - bam - single_end - stub": { "content": [ - [ - [ - { - "id": "test", - "single_end": true, - "strandedness": "forward" - }, + { + "0": [ [ - "test_dup_intercept_mqc.txt:md5,11961f0962ffc70e42aa57a12984e0fc", - "test_duprateExpDensCurve_mqc.txt:md5,eb742e354c8d5d6bed8d2ebac087f0ac" + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test_duprateExpDens.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test_duprateExpBoxplot.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test_expressionHist.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test_dupMatrix.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test_intercept_slope.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + [ + "test_dup_intercept_mqc.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_duprateExpDensCurve_mqc.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "6": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test.R_sessionInfo.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + "versions.yml:md5,cd524e9e74304c2930cf28e2d741d351" + ], + "boxplot": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test_duprateExpBoxplot.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "dupmatrix": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test_dupMatrix.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "hist": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test_expressionHist.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" ] + ], + "intercept_slope": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test_intercept_slope.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "multiqc": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + [ + "test_dup_intercept_mqc.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_duprateExpDensCurve_mqc.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "scatter2d": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test_duprateExpDens.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "session_info": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test.R_sessionInfo.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,cd524e9e74304c2930cf28e2d741d351" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:33.036463063" - }, - "versions_single_end": { - "content": [ - [ - "versions.yml:md5,cd524e9e74304c2930cf28e2d741d351" - ] + } ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-07T13:07:33.043006923" + "timestamp": "2024-07-11T11:21:56.741878886" }, - "multiqc_paired_end_stub": { + "sarscov2 - bam - paired_end": { "content": [ + "test_duprateExpBoxplot.pdf", + "test_expressionHist.pdf", + "test_duprateExpDens.pdf", [ [ { @@ -183,18 +213,10 @@ "single_end": false, "strandedness": "forward" }, - "test_mqc.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_dupMatrix.txt:md5,5a327feaba56e5ea96a2cb7e8577e196" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:08:05.537047876" - }, - "dupmatrix_paired_end_stub": { - "content": [ + ], + null, [ [ { @@ -202,159 +224,183 @@ "single_end": false, "strandedness": "forward" }, - "test_dupMatrix.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + [ + "test_dup_intercept_mqc.txt:md5,002855b42a71aa0f407ef7fa19df9ac3", + "test_duprateExpDensCurve_mqc.txt:md5,e797d8e256c5b2ab3aad1801360f1a77" + ] ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:08:05.527609018" - }, - "boxplot_paired_end": { - "content": [ - "test_duprateExpBoxplot.pdf" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:55.709324683" - }, - "hist_paired_end": { - "content": [ - "test_expressionHist.pdf" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:55.713514333" - }, - "versions_paired_end": { - "content": [ - [ - "versions.yml:md5,cd524e9e74304c2930cf28e2d741d351" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:55.737814831" - }, - "versions_single_end_stub": { - "content": [ + ], [ "versions.yml:md5,cd524e9e74304c2930cf28e2d741d351" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:43.372024419" - }, - "hist_single_end": { - "content": [ - "test_expressionHist.pdf" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:33.024192244" - }, - "boxplot_single_end_stub": { - "content": [ - "test_duprateExpBoxplot.pdf" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:43.349385822" - }, - "intercept_slope_paired_end": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:55.723431072" - }, - "intercept_slope_single_end_stub": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:43.36234388" - }, - "intercept_slope_paired_end_stub": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:08:05.532566607" - }, - "hist_paired_end_stub": { - "content": [ - "test_expressionHist.pdf" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:08:05.518776728" - }, - "scatter_paired_end": { - "content": [ - "test_duprateExpDens.pdf" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-07T13:07:55.703114124" + "timestamp": "2024-07-11T11:22:10.053957095" }, - "dupmatrix_paired_end": { + "sarscov2 - bam - paired_end - stub": { "content": [ - [ - [ - { - "id": "test", - "single_end": false, - "strandedness": "forward" - }, - "test_dupMatrix.txt:md5,5a327feaba56e5ea96a2cb7e8577e196" + { + "0": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test_duprateExpDens.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test_duprateExpBoxplot.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test_expressionHist.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test_dupMatrix.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test_intercept_slope.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + [ + "test_dup_intercept_mqc.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_duprateExpDensCurve_mqc.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "6": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test.R_sessionInfo.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + "versions.yml:md5,cd524e9e74304c2930cf28e2d741d351" + ], + "boxplot": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test_duprateExpBoxplot.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "dupmatrix": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test_dupMatrix.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "hist": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test_expressionHist.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "intercept_slope": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test_intercept_slope.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "multiqc": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + [ + "test_dup_intercept_mqc.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_duprateExpDensCurve_mqc.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "scatter2d": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test_duprateExpDens.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "session_info": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test.R_sessionInfo.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,cd524e9e74304c2930cf28e2d741d351" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:55.717362643" - }, - "intercept_slope_single_end": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:33.033103464" - }, - "scatter_single_end_stub": { - "content": [ - "test_duprateExpDens.pdf" + } ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-07T13:07:43.344100132" + "timestamp": "2024-07-11T11:22:22.134058061" } -} +} \ No newline at end of file diff --git a/modules/nf-core/dupradar/tests/tags.yml b/modules/nf-core/dupradar/tests/tags.yml new file mode 100644 index 000000000..255dc4ef3 --- /dev/null +++ b/modules/nf-core/dupradar/tests/tags.yml @@ -0,0 +1,2 @@ +dupradar: + - "modules/nf-core/dupradar/**" diff --git a/modules/nf-core/multiqc/environment.yml b/modules/nf-core/multiqc/environment.yml index ecb7dd7b2..2121492d6 100644 --- a/modules/nf-core/multiqc/environment.yml +++ b/modules/nf-core/multiqc/environment.yml @@ -4,4 +4,4 @@ channels: - bioconda - defaults dependencies: - - bioconda::multiqc=1.22.3 + - bioconda::multiqc=1.23 diff --git a/modules/nf-core/multiqc/main.nf b/modules/nf-core/multiqc/main.nf index 2581a4963..ac624e869 100644 --- a/modules/nf-core/multiqc/main.nf +++ b/modules/nf-core/multiqc/main.nf @@ -3,8 +3,8 @@ process MULTIQC { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/multiqc:1.22.3--pyhdfd78af_0' : - 'biocontainers/multiqc:1.22.3--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/multiqc:1.23--pyhdfd78af_0' : + 'biocontainers/multiqc:1.23--pyhdfd78af_0' }" input: path multiqc_files, stageAs: "?/*" diff --git a/modules/nf-core/multiqc/tests/main.nf.test b/modules/nf-core/multiqc/tests/main.nf.test index 813b438eb..f1c4242ef 100644 --- a/modules/nf-core/multiqc/tests/main.nf.test +++ b/modules/nf-core/multiqc/tests/main.nf.test @@ -4,6 +4,10 @@ nextflow_process { script "../main.nf" process "MULTIQC" + tag "modules" + tag "modules_nfcore" + tag "multiqc" + test("sarscov2 single-end [fastqc]") { when { diff --git a/modules/nf-core/multiqc/tests/main.nf.test.snap b/modules/nf-core/multiqc/tests/main.nf.test.snap index 0a4760e42..45e95e5de 100644 --- a/modules/nf-core/multiqc/tests/main.nf.test.snap +++ b/modules/nf-core/multiqc/tests/main.nf.test.snap @@ -2,14 +2,14 @@ "multiqc_versions_single": { "content": [ [ - "versions.yml:md5,bf3b209659477254bb8fa5a9405f9984" + "versions.yml:md5,87904cd321df21fac35d18f0fc01bb19" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-25T12:31:21.878452033" + "timestamp": "2024-07-10T12:41:34.562023" }, "multiqc_stub": { "content": [ @@ -17,25 +17,25 @@ "multiqc_report.html", "multiqc_data", "multiqc_plots", - "versions.yml:md5,bf3b209659477254bb8fa5a9405f9984" + "versions.yml:md5,87904cd321df21fac35d18f0fc01bb19" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-25T12:32:02.322196503" + "timestamp": "2024-07-10T11:27:11.933869532" }, "multiqc_versions_config": { "content": [ [ - "versions.yml:md5,bf3b209659477254bb8fa5a9405f9984" + "versions.yml:md5,87904cd321df21fac35d18f0fc01bb19" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-25T12:31:50.064227638" + "timestamp": "2024-07-10T11:26:56.709849369" } } \ No newline at end of file diff --git a/modules/nf-core/multiqc/tests/tags.yml b/modules/nf-core/multiqc/tests/tags.yml new file mode 100644 index 000000000..bea6c0d37 --- /dev/null +++ b/modules/nf-core/multiqc/tests/tags.yml @@ -0,0 +1,2 @@ +multiqc: + - modules/nf-core/multiqc/** diff --git a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test index 1a95c0bb5..cc9c57c04 100644 --- a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test +++ b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test @@ -3,6 +3,19 @@ nextflow_workflow { name "Test Workflow BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS" script "../main.nf" workflow "BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS" + tag "subworkflows" + tag "subworkflows_nfcore" + tag "subworkflows/bam_dedup_stats_samtools_umitools" + tag "subworkflows/bam_stats_samtools" + tag "bam_dedup_stats_samtools_umitools" + tag "bam_stats_samtools" + tag "samtools" + tag "samtools/index" + tag "samtools/stats" + tag "samtools/idxstats" + tag "samtools/flagstat" + tag "umitools" + tag "umitools/dedup" test("sarscov2_bam_bai") { diff --git a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/tags.yml b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/tags.yml new file mode 100644 index 000000000..bfd5e023e --- /dev/null +++ b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/tags.yml @@ -0,0 +1,2 @@ +subworkflows/bam_dedup_stats_samtools_umitools: + - subworkflows/nf-core/bam_dedup_stats_samtools_umitools/** diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/nextflow.config b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/nextflow.config index 061689d5f..38685f1d0 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/nextflow.config +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/nextflow.config @@ -3,12 +3,19 @@ if (!(params.skip_fastqc || params.skip_qc)) { process { withName: '.*:FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_RAW' { ext.args = '--quiet' + ext.prefix = { "${meta.id}_raw" } + publishDir = [ + path: { "${params.outdir}/fastqc/raw" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] } withName: '.*:FASTQ_FASTQC_UMITOOLS_FASTP:FASTQC_TRIM' { ext.args = '--quiet' + ext.prefix = { "${meta.id}_trimmed" } publishDir = [ - path: { "${params.outdir}/${params.trimmer}/fastqc" }, + path: { "${params.outdir}/fastqc/trim" }, mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/nextflow.config b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/nextflow.config index 6de6b513d..46c7a72b6 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/nextflow.config +++ b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/nextflow.config @@ -3,6 +3,12 @@ if (!(params.skip_fastqc || params.skip_qc)) { process { withName: '.*:FASTQ_FASTQC_UMITOOLS_TRIMGALORE:FASTQC' { ext.args = '--quiet' + ext.prefix = { "${meta.id}_raw" } + publishDir = [ + path: { "${params.outdir}/fastqc/raw" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] } } } @@ -32,9 +38,10 @@ if (!params.skip_trimming) { // Convert the map back to a list and then to a single string final_args_map.collect { key, value -> "${key} ${value}" }.join(' ').trim() } + ext.prefix = { "${meta.id}_trimmed" } publishDir = [ [ - path: { "${params.outdir}/${params.trimmer}/fastqc" }, + path: { "${params.outdir}/fastqc/trim" }, mode: params.publish_dir_mode, pattern: "*.{html,zip}" ], diff --git a/workflows/rnaseq/assets/multiqc/deseq2_clustering_header.txt b/workflows/rnaseq/assets/multiqc/deseq2_clustering_header.txt index c7bef7392..5e9ded7db 100644 --- a/workflows/rnaseq/assets/multiqc/deseq2_clustering_header.txt +++ b/workflows/rnaseq/assets/multiqc/deseq2_clustering_header.txt @@ -8,4 +8,5 @@ #anchor: 'deseq2_clustering' #pconfig: # title: 'DESeq2: Heatmap of the sample-to-sample distances' +# xlog: True # reverse_colors: True diff --git a/workflows/rnaseq/assets/multiqc/multiqc_config.yml b/workflows/rnaseq/assets/multiqc/multiqc_config.yml index 47bd0a770..6af9a02e4 100644 --- a/workflows/rnaseq/assets/multiqc/multiqc_config.yml +++ b/workflows/rnaseq/assets/multiqc/multiqc_config.yml @@ -1,11 +1,11 @@ report_comment: > This report has been generated by the nf-core/rnaseq analysis pipeline. For information about how to interpret these results, please see the documentation. report_section_order: - "nf-core-rnaseq-methods-description": + "nf-core-rnaseq-methods-description-module": order: -1000 - software_versions: + "software_versions-module": order: -1001 - "nf-core-rnaseq-summary": + "nf-core-rnaseq-summary-module": order: -1002 export_plots: true @@ -21,6 +21,7 @@ run_modules: - star - hisat2 - rsem + - umitools - salmon - kallisto - samtools @@ -46,20 +47,24 @@ top_modules: module_order: - fastqc: name: "FastQC (raw)" + anchor: "fastqc_raw" info: "This section of the report shows FastQC results before adapter trimming." path_filters: - - "./fastqc/raw/*.zip" + - "*_raw*fastqc.zip" - cutadapt - fastp - fastqc: name: "FastQC (trimmed)" + anchor: "fastqc_trimmed" info: "This section of the report shows FastQC results after adapter trimming." path_filters: - - "./fastqc/trim/*.zip" + - "*_trimmed*fastqc.zip" # Don't show % Dups in the General Stats table (we have this from Picard) table_columns_visible: - fastqc: + "FastQC (raw)": + percent_duplicates: False + "FastQC (trimmed)": percent_duplicates: False extra_fn_clean_exts: diff --git a/workflows/rnaseq/main.nf b/workflows/rnaseq/main.nf index 288ed8c60..4eefce0ed 100755 --- a/workflows/rnaseq/main.nf +++ b/workflows/rnaseq/main.nf @@ -163,9 +163,10 @@ workflow RNASEQ { ) ch_filtered_reads = FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.reads ch_trim_read_count = FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.trim_read_count - ch_multiqc_files = ch_multiqc_files.mix(FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.fastqc_zip.collect{it[1]}) - ch_multiqc_files = ch_multiqc_files.mix(FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.trim_zip.collect{it[1]}) - ch_multiqc_files = ch_multiqc_files.mix(FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.trim_log.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.fastqc_zip.collect{it[1]}) // FastQC report - untrimmed + ch_multiqc_files = ch_multiqc_files.mix(FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.umi_log.collect{it[1]}) // umi-tools extract logs + ch_multiqc_files = ch_multiqc_files.mix(FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.trim_zip.collect{it[1]}) // FastQC report - trimmed + ch_multiqc_files = ch_multiqc_files.mix(FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.trim_log.collect{it[1]}) // Trim Galore! trimming report ch_versions = ch_versions.mix(FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.versions) } @@ -190,6 +191,7 @@ workflow RNASEQ { ch_multiqc_files = ch_multiqc_files.mix(FASTQ_FASTQC_UMITOOLS_FASTP.out.fastqc_raw_zip.collect{it[1]}) ch_multiqc_files = ch_multiqc_files.mix(FASTQ_FASTQC_UMITOOLS_FASTP.out.fastqc_trim_zip.collect{it[1]}) ch_multiqc_files = ch_multiqc_files.mix(FASTQ_FASTQC_UMITOOLS_FASTP.out.trim_json.collect{it[1]}) + ch_multiqc_files = ch_multiqc_files.mix(FASTQ_FASTQC_UMITOOLS_FASTP.out.umi_log.collect{it[1]}) // umi-tools extract logs ch_versions = ch_versions.mix(FASTQ_FASTQC_UMITOOLS_FASTP.out.versions) } @@ -372,6 +374,7 @@ workflow RNASEQ { ) ch_genome_bam = BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.bam ch_genome_bam_index = BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.bai + ch_multiqc_files = ch_multiqc_files.mix(BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.deduplog.collect{it[1]}) ch_multiqc_files = ch_multiqc_files.mix(BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.stats.collect{it[1]}) ch_multiqc_files = ch_multiqc_files.mix(BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.flagstat.collect{it[1]}) ch_multiqc_files = ch_multiqc_files.mix(BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.idxstats.collect{it[1]}) @@ -525,6 +528,7 @@ workflow RNASEQ { ) ch_genome_bam = BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.bam ch_genome_bam_index = BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.bai + ch_multiqc_files = ch_multiqc_files.mix(BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.deduplog.collect{it[1]}) ch_multiqc_files = ch_multiqc_files.mix(BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.stats.collect{it[1]}) ch_multiqc_files = ch_multiqc_files.mix(BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.flagstat.collect{it[1]}) ch_multiqc_files = ch_multiqc_files.mix(BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME.out.idxstats.collect{it[1]}) diff --git a/workflows/rnaseq/nextflow.config b/workflows/rnaseq/nextflow.config index b603e12cd..c7eeac733 100644 --- a/workflows/rnaseq/nextflow.config +++ b/workflows/rnaseq/nextflow.config @@ -89,7 +89,7 @@ if (!params.skip_alignment && params.aligner == 'star_salmon') { ext.prefix = { "${meta.id}.umi_dedup.transcriptome.filtered" } publishDir = [ [ - path: { "${params.outdir}/${params.aligner}/umitools/log" }, + path: { "${params.outdir}/${params.aligner}/umitools/prepare_for_salmon_log" }, mode: params.publish_dir_mode, pattern: '*.log' ], @@ -144,6 +144,11 @@ if (!params.skip_alignment && params.aligner == 'star_salmon') { mode: params.publish_dir_mode, pattern: '*.tsv' ], + [ + path: { "${params.outdir}/${params.aligner}/umitools/transcriptomic_dedup_log" }, + mode: params.publish_dir_mode, + pattern: '*.log' + ], [ path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, mode: params.publish_dir_mode, @@ -233,6 +238,11 @@ if (!params.skip_alignment) { mode: params.publish_dir_mode, pattern: '*.tsv' ], + [ + path: { "${params.outdir}/${params.aligner}/umitools/genomic_dedup_log" }, + mode: params.publish_dir_mode, + pattern: '*.log' + ], [ path: { params.save_align_intermeds || params.with_umi || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, mode: params.publish_dir_mode,