From 52931d73a78825908db1811fc8b3642697ed36b2 Mon Sep 17 00:00:00 2001 From: Francesco Tabaro Date: Thu, 21 Nov 2024 14:49:42 +0100 Subject: [PATCH 1/5] update multiqc module --- modules.json | 2 +- modules/nf-core/multiqc/environment.yml | 4 +- modules/nf-core/multiqc/main.nf | 10 +- modules/nf-core/multiqc/meta.yml | 91 ++++++++++--------- modules/nf-core/multiqc/tests/main.nf.test | 2 + .../nf-core/multiqc/tests/main.nf.test.snap | 24 ++--- modules/nf-core/multiqc/tests/nextflow.config | 5 + 7 files changed, 76 insertions(+), 62 deletions(-) create mode 100644 modules/nf-core/multiqc/tests/nextflow.config diff --git a/modules.json b/modules.json index d24d5855..75feab21 100644 --- a/modules.json +++ b/modules.json @@ -93,7 +93,7 @@ }, "multiqc": { "branch": "master", - "git_sha": "b80f5fd12ff7c43938f424dd76392a2704fa2396", + "git_sha": "cf17ca47590cc578dfb47db1c2a44ef86f89976d", "installed_by": ["modules"] }, "phantompeakqualtools": { diff --git a/modules/nf-core/multiqc/environment.yml b/modules/nf-core/multiqc/environment.yml index 2121492d..6f5b867b 100644 --- a/modules/nf-core/multiqc/environment.yml +++ b/modules/nf-core/multiqc/environment.yml @@ -1,7 +1,5 @@ -name: multiqc channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::multiqc=1.23 + - bioconda::multiqc=1.25.1 diff --git a/modules/nf-core/multiqc/main.nf b/modules/nf-core/multiqc/main.nf index 459dfea5..cc0643e1 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.23--pyhdfd78af_0' : - 'biocontainers/multiqc:1.23--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/multiqc:1.25.1--pyhdfd78af_0' : + 'biocontainers/multiqc:1.25.1--pyhdfd78af_0' }" input: path multiqc_files, stageAs: "?/*" @@ -25,9 +25,10 @@ process MULTIQC { script: def args = task.ext.args ?: '' + def prefix = task.ext.prefix ? "--filename ${task.ext.prefix}.html" : '' def config = multiqc_config ? "--config $multiqc_config" : '' def extra_config = extra_multiqc_config ? "--config $extra_multiqc_config" : '' - def logo = multiqc_logo ? /--cl-config 'custom_logo: "${multiqc_logo}"'/ : '' + def logo = multiqc_logo ? "--cl-config 'custom_logo: \"${multiqc_logo}\"'" : '' def replace = replace_names ? "--replace-names ${replace_names}" : '' def samples = sample_names ? "--sample-names ${sample_names}" : '' """ @@ -35,6 +36,7 @@ process MULTIQC { --force \\ $args \\ $config \\ + $prefix \\ $extra_config \\ $logo \\ $replace \\ @@ -50,7 +52,7 @@ process MULTIQC { stub: """ mkdir multiqc_data - touch multiqc_plots + mkdir multiqc_plots touch multiqc_report.html cat <<-END_VERSIONS > versions.yml diff --git a/modules/nf-core/multiqc/meta.yml b/modules/nf-core/multiqc/meta.yml index 382c08cb..b16c1879 100644 --- a/modules/nf-core/multiqc/meta.yml +++ b/modules/nf-core/multiqc/meta.yml @@ -1,5 +1,6 @@ name: multiqc -description: Aggregate results from bioinformatics analyses across many samples into a single report +description: Aggregate results from bioinformatics analyses across many samples into + a single report keywords: - QC - bioinformatics tools @@ -12,53 +13,59 @@ tools: homepage: https://multiqc.info/ documentation: https://multiqc.info/docs/ licence: ["GPL-3.0-or-later"] + identifier: biotools:multiqc input: - - multiqc_files: - type: file - description: | - List of reports / files recognised by MultiQC, for example the html and zip output of FastQC - - multiqc_config: - type: file - description: Optional config yml for MultiQC - pattern: "*.{yml,yaml}" - - extra_multiqc_config: - type: file - description: Second optional config yml for MultiQC. Will override common sections in multiqc_config. - pattern: "*.{yml,yaml}" - - multiqc_logo: - type: file - description: Optional logo file for MultiQC - pattern: "*.{png}" - - replace_names: - type: file - description: | - Optional two-column sample renaming file. First column a set of - patterns, second column a set of corresponding replacements. Passed via - MultiQC's `--replace-names` option. - pattern: "*.{tsv}" - - sample_names: - type: file - description: | - Optional TSV file with headers, passed to the MultiQC --sample_names - argument. - pattern: "*.{tsv}" + - - multiqc_files: + type: file + description: | + List of reports / files recognised by MultiQC, for example the html and zip output of FastQC + - - multiqc_config: + type: file + description: Optional config yml for MultiQC + pattern: "*.{yml,yaml}" + - - extra_multiqc_config: + type: file + description: Second optional config yml for MultiQC. Will override common sections + in multiqc_config. + pattern: "*.{yml,yaml}" + - - multiqc_logo: + type: file + description: Optional logo file for MultiQC + pattern: "*.{png}" + - - replace_names: + type: file + description: | + Optional two-column sample renaming file. First column a set of + patterns, second column a set of corresponding replacements. Passed via + MultiQC's `--replace-names` option. + pattern: "*.{tsv}" + - - sample_names: + type: file + description: | + Optional TSV file with headers, passed to the MultiQC --sample_names + argument. + pattern: "*.{tsv}" output: - report: - type: file - description: MultiQC report file - pattern: "multiqc_report.html" + - "*multiqc_report.html": + type: file + description: MultiQC report file + pattern: "multiqc_report.html" - data: - type: directory - description: MultiQC data dir - pattern: "multiqc_data" + - "*_data": + type: directory + description: MultiQC data dir + pattern: "multiqc_data" - plots: - type: file - description: Plots created by MultiQC - pattern: "*_data" + - "*_plots": + type: file + description: Plots created by MultiQC + pattern: "*_data" - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@abhi18av" - "@bunop" diff --git a/modules/nf-core/multiqc/tests/main.nf.test b/modules/nf-core/multiqc/tests/main.nf.test index 6aa27f4c..33316a7d 100644 --- a/modules/nf-core/multiqc/tests/main.nf.test +++ b/modules/nf-core/multiqc/tests/main.nf.test @@ -8,6 +8,8 @@ nextflow_process { tag "modules_nfcore" tag "multiqc" + config "./nextflow.config" + 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 45e95e5d..2fcbb5ff 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,87904cd321df21fac35d18f0fc01bb19" + "versions.yml:md5,41f391dcedce7f93ca188f3a3ffa0916" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-07-10T12:41:34.562023" + "timestamp": "2024-10-02T17:51:46.317523" }, "multiqc_stub": { "content": [ @@ -17,25 +17,25 @@ "multiqc_report.html", "multiqc_data", "multiqc_plots", - "versions.yml:md5,87904cd321df21fac35d18f0fc01bb19" + "versions.yml:md5,41f391dcedce7f93ca188f3a3ffa0916" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-07-10T11:27:11.933869532" + "timestamp": "2024-10-02T17:52:20.680978" }, "multiqc_versions_config": { "content": [ [ - "versions.yml:md5,87904cd321df21fac35d18f0fc01bb19" + "versions.yml:md5,41f391dcedce7f93ca188f3a3ffa0916" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-07-10T11:26:56.709849369" + "timestamp": "2024-10-02T17:52:09.185842" } } \ No newline at end of file diff --git a/modules/nf-core/multiqc/tests/nextflow.config b/modules/nf-core/multiqc/tests/nextflow.config new file mode 100644 index 00000000..c537a6a3 --- /dev/null +++ b/modules/nf-core/multiqc/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: 'MULTIQC' { + ext.prefix = null + } +} From 92da3acf81bec76dead467c30d28bcc1e58f7f5a Mon Sep 17 00:00:00 2001 From: Francesco Tabaro Date: Thu, 21 Nov 2024 18:03:45 +0100 Subject: [PATCH 2/5] update multiqc local module --- modules/local/multiqc.nf | 86 ++++++++++++++++++---------------------- 1 file changed, 38 insertions(+), 48 deletions(-) diff --git a/modules/local/multiqc.nf b/modules/local/multiqc.nf index 35596842..d0695b40 100644 --- a/modules/local/multiqc.nf +++ b/modules/local/multiqc.nf @@ -1,70 +1,60 @@ process MULTIQC { label 'process_medium' - - conda "bioconda::multiqc=1.23" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/multiqc:1.23--pyhdfd78af_0' : - 'biocontainers/multiqc:1.23--pyhdfd78af_0' }" + conda "bioconda::multiqc=1.25.1" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://depot.galaxyproject.org/singularity/multiqc:1.25.1--pyhdfd78af_0' + : 'biocontainers/multiqc:1.25.1--pyhdfd78af_0'}" input: path workflow_summary path multiqc_config path mqc_custom_config path logo - - path ('fastqc/*') - path ('trimgalore/fastqc/*') - path ('trimgalore/*') - - path ('alignment/library/*') - path ('alignment/library/*') - path ('alignment/library/*') - - path ('alignment/merged_library/unfiltered/*') - path ('alignment/merged_library/unfiltered/*') - path ('alignment/merged_library/unfiltered/*') - path ('alignment/merged_library/unfiltered/picard_metrics/*') - - path ('alignment/merged_library/filtered/*') - path ('alignment/merged_library/filtered/*') - path ('alignment/merged_library/filtered/*') - path ('alignment/merged_library/filtered/picard_metrics/*') - - path ('preseq/*') - - path ('deeptools/*') - path ('deeptools/*') - - path ('phantompeakqualtools/*') - path ('phantompeakqualtools/*') - path ('phantompeakqualtools/*') - path ('phantompeakqualtools/*') - - path ('macs3/peaks/*') - path ('macs3/peaks/*') - path ('macs3/annotation/*') - path ('macs3/featurecounts/*') - - path ('deseq2/*') - path ('deseq2/*') + path 'fastqc/*' + path 'trimgalore/fastqc/*' + path 'trimgalore/*' + path 'alignment/library/*' + path 'alignment/library/*' + path 'alignment/library/*' + path 'alignment/merged_library/unfiltered/*' + path 'alignment/merged_library/unfiltered/*' + path 'alignment/merged_library/unfiltered/*' + path 'alignment/merged_library/unfiltered/picard_metrics/*' + path 'alignment/merged_library/filtered/*' + path 'alignment/merged_library/filtered/*' + path 'alignment/merged_library/filtered/*' + path 'alignment/merged_library/filtered/picard_metrics/*' + path 'preseq/*' + path 'deeptools/*' + path 'deeptools/*' + path 'phantompeakqualtools/*' + path 'phantompeakqualtools/*' + path 'phantompeakqualtools/*' + path 'phantompeakqualtools/*' + path 'macs3/peaks/*' + path 'macs3/peaks/*' + path 'macs3/annotation/*' + path 'macs3/featurecounts/*' + path 'deseq2/*' + path 'deseq2/*' output: path "*multiqc_report.html", emit: report - path "*_data" , emit: data - path "*_plots" , optional:true, emit: plots - path "versions.yml" , emit: versions + path "*_data", emit: data + path "*_plots", optional: true, emit: plots + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' - def custom_config = params.multiqc_config ? "--config $mqc_custom_config" : '' + def args = task.ext.args ?: '' + def custom_config = params.multiqc_config ? "--config ${mqc_custom_config}" : '' """ multiqc \\ -f \\ - $args \\ - $custom_config \\ + ${args} \\ + ${custom_config} \\ . cat <<-END_VERSIONS > versions.yml From 62e6e7fb0bc0de550c912faa1ee5d35daa89b788 Mon Sep 17 00:00:00 2001 From: Francesco Tabaro Date: Thu, 28 Nov 2024 12:09:28 +0100 Subject: [PATCH 3/5] revert spacing --- modules/local/multiqc.nf | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/modules/local/multiqc.nf b/modules/local/multiqc.nf index d0695b40..38fc5391 100644 --- a/modules/local/multiqc.nf +++ b/modules/local/multiqc.nf @@ -10,45 +10,54 @@ process MULTIQC { path multiqc_config path mqc_custom_config path logo + path 'fastqc/*' path 'trimgalore/fastqc/*' path 'trimgalore/*' + path 'alignment/library/*' path 'alignment/library/*' path 'alignment/library/*' + path 'alignment/merged_library/unfiltered/*' path 'alignment/merged_library/unfiltered/*' path 'alignment/merged_library/unfiltered/*' path 'alignment/merged_library/unfiltered/picard_metrics/*' + path 'alignment/merged_library/filtered/*' path 'alignment/merged_library/filtered/*' path 'alignment/merged_library/filtered/*' path 'alignment/merged_library/filtered/picard_metrics/*' + path 'preseq/*' + path 'deeptools/*' path 'deeptools/*' + path 'phantompeakqualtools/*' path 'phantompeakqualtools/*' path 'phantompeakqualtools/*' path 'phantompeakqualtools/*' + path 'macs3/peaks/*' path 'macs3/peaks/*' path 'macs3/annotation/*' path 'macs3/featurecounts/*' + path 'deseq2/*' path 'deseq2/*' output: path "*multiqc_report.html", emit: report - path "*_data", emit: data - path "*_plots", optional: true, emit: plots - path "versions.yml", emit: versions + path "*_data" , emit: data + path "*_plots" , optional: true, emit: plots + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' + def args = task.ext.args ?: '' def custom_config = params.multiqc_config ? "--config ${mqc_custom_config}" : '' """ multiqc \\ From 1b7b81e1404e12a90fc20f49be7ab94c94a446f7 Mon Sep 17 00:00:00 2001 From: Francesco Tabaro Date: Thu, 28 Nov 2024 13:28:46 +0100 Subject: [PATCH 4/5] update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 98c7d558..ecbcd5f2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [[PR #434](https://github.com/nf-core/chipseq/pull/434)] - Prevent pipeline fails from erroneous param validation when igenomes is used. - [[#432](https://github.com/nf-core/chipseq/issues/432)] - Fix `GFFREAD` call to have the two expected input channels. +- [[#428](https://github.com/nf-core/chipseq/issues/428)] - Bump MultiQC version to 1.25.1 ### Parameters From 1bd251d65b1176fe7c9f58e09805faf68ad8832a Mon Sep 17 00:00:00 2001 From: Francesco Tabaro Date: Thu, 28 Nov 2024 13:50:50 +0100 Subject: [PATCH 5/5] correct merging error --- subworkflows/local/prepare_genome.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/prepare_genome.nf b/subworkflows/local/prepare_genome.nf index b053c219..e7fdca23 100644 --- a/subworkflows/local/prepare_genome.nf +++ b/subworkflows/local/prepare_genome.nf @@ -73,7 +73,7 @@ workflow PREPARE_GENOME { ch_gff = GUNZIP_GFF([[:], file(gff, checkIfExists: true)]).gunzip.map { it[1] } ch_versions = ch_versions.mix(GUNZIP_GFF.out.versions).map { [ [:], it ] } } else { - ch_gff = Channel.value(file(gff, checkIfExists: true)) + ch_gff = Channel.value(file(gff, checkIfExists: true)).map{ [ [:], it ] } } ch_gtf = GFFREAD(ch_gff, []).gtf.map { it[1] }