diff --git a/.nf-core.yml b/.nf-core.yml index 028d101dc..9e28e97e4 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -3,7 +3,7 @@ lint: - config_defaults: - params.bamtools_filter_se_config - params.bamtools_filter_pe_config -nf_core_version: 3.5.1 +nf_core_version: 3.5.2 repository_type: pipeline template: author: Espinosa-Carrasco J, Patel H, Wang C, Ewels P diff --git a/CHANGELOG.md b/CHANGELOG.md index 6fe77b9e9..17c7b08d5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## v2.2.0dev - [date] +## v2.2.0dev - 2026-03-14 ### Enhancements & fixes @@ -14,6 +14,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [[#451](https://github.com/nf-core/chipseq/issues/451)] - Pass `map.single_read` to `SUBREAD_FEATURECOUNTS` as to correctly set parameter `-p`. - [[PR #462](https://github.com/nf-core/chipseq/pull/462)] - Updated pipeline template to [nf-core/tools 3.2.1](https://github.com/nf-core/tools/releases/tag/3.2.1) - [[#468](https://github.com/nf-core/chipseq/issues/468)] - Changed bigWig generation to use `-bga` option instead of `-bg` in `bedtools genomecov` for lower background levels and better IGV visualization. Users can revert to previous behavior using configuration. See [documentation](https://nf-co.re/chipseq/dev/docs/output/#normalised-bigwig-files) for details. +- [[#484](https://github.com/nf-core/chipseq/issues/484)] - Updated modules and subworkflows +- [[#483](https://github.com/nf-core/chipseq/issues/483)] - Updated nf-core related things to topics, still a few nf-core modules are pending and the local modules + need to be fixed. +- [[#489](https://github.com/nf-core/chipseq/issues/489)]CUSTOM_GETCHROMSIZES was changed to SAMTOOLS_FAIDX instead, since CUSTOM_GETCHROMSIZES is deprecated. ### Parameters @@ -27,12 +31,63 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Software dependencies -Note, since the pipeline is now using Nextflow DSL2, each process will be run with its own [Biocontainer](https://biocontainers.pro/#/registry). This means that on occasion it is entirely possible for the pipeline to be using different versions of the same tool. However, the overall software dependency changes compared to the last release have been listed below for reference. +Note, since the pipeline is now using Nextflow DSL2, each process will be run with its own +[Biocontainer](https://biocontainers.pro/#/registry). This means that on occasion it is entirely possible for the +pipeline to be using different versions of the same tool. However, the overall software dependency changes compared to +the last release have been listed below for reference. + +### Software updates | Dependency | Old version | New version | | ---------- | ----------- | ----------- | -| | | | -| | | | +| macs3 | 3.0.1 | 3.0.4 | + +> **NB:** Dependency has been **updated** if both old and new version information is present. +> **NB:** Dependency has been **added** if just the new version information is present. +> **NB:** Dependency has been **removed** if version information isn't present. + +### Software update local modules + +| Dependency | Old version | New version | +| --------------------------- | ----------- | ----------- | +| bamtools | 2.5.2 | 2.5.3 | +| samtools | 1.15.1 | 1.23 | +| pysam | 0.19.0 | 0.23.3 | +| bedtools | 2.30.0 | 2.31.1 | +| bioconductor-biostrings | 2.58.0 | 2.78.0 | +| r-base | 4.0.3 | 4.5.3 | +| r-reshape2 | 1.4.4 | 1.4.5 | +| r-optparse | 1.6.6 | 1.7.5 | +| r-ggplot2 | 3.3.3 | 4.0.2 | +| r-scales | 1.1.1 | 1.4.0 | +| r-viridis | 0.5.1 | 0.6.5 | +| r-tidyverse | 1.3.0 | 2.0.0 | +| bioconductor-complexheatmap | 2.6.2 | 2.26.1 | +| star | 2.6.1d | 2.7.11b | +| | | | + +### Local modules refactoring and topic channels update + +| Module | Updated to wave containers | Topic channel added | refactoring (adding .yml files) | +| ----------------------------------- | -------------------------- | ------------------- | ------------------------------- | +| annotate_boolean_peaks | | | | +| bam_remove_orphans | x | x | x | +| bamtools_filter | x | x | x | +| deseq2_qc | | | | +| frip_score | x | x | x | +| genome_blacklist_regions | x | x | x | +| gtf2bed | | | | +| igv | | | | +| macs3_consensus | x | x | x | +| multiqc | | | | +| multiqc_custom_peaks | | | | +| multiqc_custom_phantompeakqualtools | | | | +| plot_homer_annotatepeaks | x | x | x | +| plot_macs3_qc | x | x | x | +| samplesheet_check | | | | +| star_align | x | x | x | +| star_genomegenerate | x | x | x | +| | | | | ## [[2.1.0](https://github.com/nf-core/chipseq/releases/tag/2.1.0)] - 2024-10-07 diff --git a/conf/modules.config b/conf/modules.config index 8741b7532..dadf360dc 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -87,14 +87,6 @@ process { ] } - withName: 'CUSTOM_GETCHROMSIZES' { - publishDir = [ - path: { "${params.outdir}/genome" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - withName: 'GENOME_BLACKLIST_REGIONS' { publishDir = [ path: { "${params.outdir}/genome" }, diff --git a/main.nf b/main.nf index 8499932d5..64a966667 100755 --- a/main.nf +++ b/main.nf @@ -66,7 +66,6 @@ workflow NFCORE_CHIPSEQ { params.chromap_index, params.star_index, ) - ch_versions = ch_versions.mix(PREPARE_GENOME.out.versions) // // WORKFLOW: Run nf-core/chipseq workflow diff --git a/modules.json b/modules.json index 0304fa026..36fe4b010 100644 --- a/modules.json +++ b/modules.json @@ -7,179 +7,179 @@ "nf-core": { "bedtools/genomecov": { "branch": "master", - "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", + "git_sha": "88d43dad73a675e66bff49ebb57fe657a5909018", "installed_by": ["modules"] }, "bowtie2/align": { "branch": "master", - "git_sha": "9bfc81874554e87740bcb3e5e07acf0a153c9ecb", + "git_sha": "92b8df948fd8cdb223e051f5f5e414818a073ee0", "installed_by": ["fastq_align_bowtie2", "modules"] }, "bowtie2/build": { "branch": "master", - "git_sha": "1fea64f5132a813ec97c1c6d3a74e0aee7142b6d", + "git_sha": "447f7bc0fa41dfc2400c8cad4c0291880dc060cf", "installed_by": ["modules"] }, "bwa/index": { "branch": "master", - "git_sha": "e0ff65e1fb313677de09f5f477ae3da30ce19b7b", + "git_sha": "baa9ee31e48f115832c8eb91a980bf35c9ffc9b9", "installed_by": ["modules"] }, "bwa/mem": { "branch": "master", - "git_sha": "2201e21b09213f083832ac58e33353d410a6fde7", + "git_sha": "707241c72951f24fd89982c4c80c5983a4c437ef", "installed_by": ["fastq_align_bwa", "modules"] }, "chromap/chromap": { "branch": "master", - "git_sha": "8438ab16df8334b8e15526cef7e8eda7f218ea20", + "git_sha": "e753770db613ce014b3c4bc94f6cba443427b726", "installed_by": ["fastq_align_chromap", "modules"], "patch": "modules/nf-core/chromap/chromap/chromap-chromap.diff" }, "chromap/index": { "branch": "master", - "git_sha": "8438ab16df8334b8e15526cef7e8eda7f218ea20", - "installed_by": ["modules"] - }, - "custom/getchromsizes": { - "branch": "master", - "git_sha": "1ceaa8ba4d0fd886dbca0e545815d905b7407de7", + "git_sha": "e753770db613ce014b3c4bc94f6cba443427b726", "installed_by": ["modules"] }, "deeptools/computematrix": { "branch": "master", - "git_sha": "dd51244ab3b1e4a30ddeb93ba3c6ef3ce1f02ef8", + "git_sha": "b985685ece5113213a0ad282da9f93c40dfe7119", "installed_by": ["modules"] }, "deeptools/plotfingerprint": { "branch": "master", - "git_sha": "dd51244ab3b1e4a30ddeb93ba3c6ef3ce1f02ef8", + "git_sha": "b985685ece5113213a0ad282da9f93c40dfe7119", "installed_by": ["modules"] }, "deeptools/plotheatmap": { "branch": "master", - "git_sha": "dd51244ab3b1e4a30ddeb93ba3c6ef3ce1f02ef8", + "git_sha": "b985685ece5113213a0ad282da9f93c40dfe7119", "installed_by": ["modules"] }, "deeptools/plotprofile": { "branch": "master", - "git_sha": "dd51244ab3b1e4a30ddeb93ba3c6ef3ce1f02ef8", + "git_sha": "b985685ece5113213a0ad282da9f93c40dfe7119", "installed_by": ["modules"] }, "fastqc": { "branch": "master", - "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", + "git_sha": "3009f27c4e4b6e99da4eeebe82799e13924a4a1f", "installed_by": ["fastq_fastqc_umitools_trimgalore", "modules"] }, "gffread": { "branch": "master", - "git_sha": "6c996d7fbe0816dcbb68ce587ad5f873313682a1", + "git_sha": "51f2b493a7ff28b40a9f99faca64245521f2bb24", "installed_by": ["modules"] }, "gunzip": { "branch": "master", - "git_sha": "4e5f4687318f24ba944a13609d3ea6ebd890737d", + "git_sha": "96c57dfd98a0641886a67bd449fe33ee2ec0e374", "installed_by": ["modules"] }, "homer/annotatepeaks": { "branch": "master", - "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", + "git_sha": "e753770db613ce014b3c4bc94f6cba443427b726", "installed_by": ["modules"] }, "khmer/uniquekmers": { "branch": "master", - "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", + "git_sha": "e753770db613ce014b3c4bc94f6cba443427b726", "installed_by": ["modules"] }, "macs3/callpeak": { "branch": "master", - "git_sha": "3a3f471ed42f640115b2661edee5b258e6a254c1", + "git_sha": "16e30c88ed0d6b0fb3964513bb83b364e11d9b49", "installed_by": ["modules"] }, "multiqc": { "branch": "master", - "git_sha": "af27af1be706e6a2bb8fe454175b0cdf77f47b49", + "git_sha": "2c73cc8fa92cf48de3da0b643fdf357a8a290b36", "installed_by": ["modules"] }, "phantompeakqualtools": { "branch": "master", - "git_sha": "ec48f56f6e1571e23800aaaba41cceda13408e02", + "git_sha": "e753770db613ce014b3c4bc94f6cba443427b726", "installed_by": ["modules"] }, "picard/collectmultiplemetrics": { "branch": "master", - "git_sha": "0dee12b56ccecc416d6f7a1ccd85fd571eab3307", + "git_sha": "a631e12055f6c23ba2c942d3902b3ed1b9eed859", "installed_by": ["modules"] }, "picard/markduplicates": { "branch": "master", - "git_sha": "46eca555142d6e597729fcb682adcc791796f514", + "git_sha": "a631e12055f6c23ba2c942d3902b3ed1b9eed859", "installed_by": ["bam_markduplicates_picard", "modules"] }, "picard/mergesamfiles": { "branch": "master", - "git_sha": "0dee12b56ccecc416d6f7a1ccd85fd571eab3307", + "git_sha": "a631e12055f6c23ba2c942d3902b3ed1b9eed859", "installed_by": ["modules"] }, "preseq/lcextrap": { "branch": "master", - "git_sha": "2c6b1144ed58b6184ad58fc4e6b6a90219b4bf4f", + "git_sha": "b80fa93d646109e3dc86e79010bf7c0b0af8ce29", + "installed_by": ["modules"] + }, + "samtools/faidx": { + "branch": "master", + "git_sha": "b2e78932ef01165fd85829513eaca29eff8e640a", "installed_by": ["modules"] }, "samtools/flagstat": { "branch": "master", - "git_sha": "e334e12a1e985adc5ffc3fc78a68be1de711de45", + "git_sha": "1d2fbdcbca677bbe8da0f9d0d2bb7c02f2cab1c9", "installed_by": ["bam_stats_samtools", "modules"], "patch": "modules/nf-core/samtools/flagstat/samtools-flagstat.diff" }, "samtools/idxstats": { "branch": "master", - "git_sha": "46eca555142d6e597729fcb682adcc791796f514", + "git_sha": "1d2fbdcbca677bbe8da0f9d0d2bb7c02f2cab1c9", "installed_by": ["bam_stats_samtools", "modules"] }, "samtools/index": { "branch": "master", - "git_sha": "46eca555142d6e597729fcb682adcc791796f514", + "git_sha": "1d2fbdcbca677bbe8da0f9d0d2bb7c02f2cab1c9", "installed_by": ["bam_markduplicates_picard", "bam_sort_stats_samtools", "modules"] }, "samtools/sort": { "branch": "master", - "git_sha": "46eca555142d6e597729fcb682adcc791796f514", + "git_sha": "5cb9a8694da0a0e550921636bb60bc8c56445fd7", "installed_by": ["bam_sort_stats_samtools", "modules"] }, "samtools/stats": { "branch": "master", - "git_sha": "46eca555142d6e597729fcb682adcc791796f514", + "git_sha": "fe93fde0845f907fc91ad7cc7d797930408824df", "installed_by": ["bam_stats_samtools", "modules"] }, "subread/featurecounts": { "branch": "master", - "git_sha": "b4919e9a2b4d8b71061e601633db4600a3858fa1", + "git_sha": "95cc6bff05f02c53ac9478f7b8d749969c514fca", "installed_by": ["modules"] }, "trimgalore": { "branch": "master", - "git_sha": "b4919e9a2b4d8b71061e601633db4600a3858fa1", + "git_sha": "eed5d14302a6c9070dcc25feeab707a27a4b3254", "installed_by": ["fastq_fastqc_umitools_trimgalore", "modules"] }, "ucsc/bedgraphtobigwig": { "branch": "master", - "git_sha": "46eca555142d6e597729fcb682adcc791796f514", + "git_sha": "b1c64e862fb5ed7f13b6f8f3ef8f04e700d41438", "installed_by": ["modules"] }, "umitools/extract": { "branch": "master", - "git_sha": "b4919e9a2b4d8b71061e601633db4600a3858fa1", + "git_sha": "bd6d730b3f32742f402189113ba9480006a3350f", "installed_by": ["fastq_fastqc_umitools_trimgalore"] }, "untar": { "branch": "master", - "git_sha": "4e5f4687318f24ba944a13609d3ea6ebd890737d", + "git_sha": "447f7bc0fa41dfc2400c8cad4c0291880dc060cf", "installed_by": ["modules"] }, "untarfiles": { "branch": "master", - "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", + "git_sha": "bc71bfe17a9c2057f1781b5b16987dcc14d1063f", "installed_by": ["modules"] } } @@ -188,37 +188,37 @@ "nf-core": { "bam_markduplicates_picard": { "branch": "master", - "git_sha": "46eca555142d6e597729fcb682adcc791796f514", + "git_sha": "a631e12055f6c23ba2c942d3902b3ed1b9eed859", "installed_by": ["subworkflows"] }, "bam_sort_stats_samtools": { "branch": "master", - "git_sha": "46eca555142d6e597729fcb682adcc791796f514", + "git_sha": "7ac6cbe7c17c2dad685da7f70496c8f48ea48687", "installed_by": ["fastq_align_bowtie2", "fastq_align_bwa", "fastq_align_chromap"] }, "bam_stats_samtools": { "branch": "master", - "git_sha": "0eacd714effe5aac1c1de26593873960b3346cab", + "git_sha": "7ac6cbe7c17c2dad685da7f70496c8f48ea48687", "installed_by": ["bam_markduplicates_picard", "bam_sort_stats_samtools"] }, "fastq_align_bowtie2": { "branch": "master", - "git_sha": "0eacd714effe5aac1c1de26593873960b3346cab", + "git_sha": "9afa0584136287aa20fc18296f45f103c0c4e69a", "installed_by": ["subworkflows"] }, "fastq_align_bwa": { "branch": "master", - "git_sha": "e0ff65e1fb313677de09f5f477ae3da30ce19b7b", + "git_sha": "9afa0584136287aa20fc18296f45f103c0c4e69a", "installed_by": ["subworkflows"] }, "fastq_align_chromap": { "branch": "master", - "git_sha": "cfd937a668919d948f6fcbf4218e79de50c2f36f", + "git_sha": "9afa0584136287aa20fc18296f45f103c0c4e69a", "installed_by": ["subworkflows"] }, "fastq_fastqc_umitools_trimgalore": { "branch": "master", - "git_sha": "46eca555142d6e597729fcb682adcc791796f514", + "git_sha": "8f2ec534d0418bf724cfd5f053176a9c500fae78", "installed_by": ["subworkflows"] }, "utils_nextflow_pipeline": { @@ -228,12 +228,12 @@ }, "utils_nfcore_pipeline": { "branch": "master", - "git_sha": "271e7fc14eb1320364416d996fb077421f3faed2", + "git_sha": "f0b535b3ae20080f8db03dd5388876ad1ec29d70", "installed_by": ["subworkflows"] }, "utils_nfschema_plugin": { "branch": "master", - "git_sha": "4b406a74dc0449c0401ed87d5bfff4252fd277fd", + "git_sha": "fdc08b8b1ae74f56686ce21f7ea11ad11990ce57", "installed_by": ["subworkflows"] } } diff --git a/modules/local/annotate_boolean_peaks.nf b/modules/local/annotate_boolean_peaks/main.nf similarity index 100% rename from modules/local/annotate_boolean_peaks.nf rename to modules/local/annotate_boolean_peaks/main.nf diff --git a/modules/local/bam_remove_orphans.nf b/modules/local/bam_remove_orphans.nf deleted file mode 100644 index 6d43011d6..000000000 --- a/modules/local/bam_remove_orphans.nf +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Remove orphan reads from paired-end BAM file - */ -process BAM_REMOVE_ORPHANS { - tag "$meta.id" - label 'process_medium' - - conda "bioconda::pysam=0.19.0 bioconda::samtools=1.15.1" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/mulled-v2-57736af1eb98c01010848572c9fec9fff6ffaafd:402e865b8f6af2f3e58c6fc8d57127ff0144b2c7-0' : - 'biocontainers/mulled-v2-57736af1eb98c01010848572c9fec9fff6ffaafd:402e865b8f6af2f3e58c6fc8d57127ff0144b2c7-0' }" - - input: - tuple val(meta), path(bam) - - output: - tuple val(meta), path("${prefix}.bam"), emit: bam - path "versions.yml" , emit: versions - - when: - task.ext.when == null || task.ext.when - - script: // This script is bundled with the pipeline, in nf-core/chipseq/bin/ - def args = task.ext.args ?: '' - prefix = task.ext.prefix ?: "${meta.id}" - if (!meta.single_end) { - """ - samtools sort -n -@ $task.cpus -o ${prefix}.name.sorted.bam -T ${prefix}.name.sorted $bam - bampe_rm_orphan.py ${prefix}.name.sorted.bam ${prefix}.bam $args - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - END_VERSIONS - """ - } else { - """ - ln -s $bam ${prefix}.bam - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - END_VERSIONS - """ - } - - stub: - prefix = task.ext.prefix ?: "${meta.id}" - """ - touch ${prefix}.bam - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - END_VERSIONS - """ -} diff --git a/modules/local/bam_remove_orphans/environment.yml b/modules/local/bam_remove_orphans/environment.yml new file mode 100644 index 000000000..008d1bc69 --- /dev/null +++ b/modules/local/bam_remove_orphans/environment.yml @@ -0,0 +1,8 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + - bioconda::pysam=0.23.3 + - bioconda::samtools=1.23 diff --git a/modules/local/bam_remove_orphans/main.nf b/modules/local/bam_remove_orphans/main.nf new file mode 100644 index 000000000..4dcd7764f --- /dev/null +++ b/modules/local/bam_remove_orphans/main.nf @@ -0,0 +1,42 @@ +/* + * Remove orphan reads from paired-end BAM file + */ +process BAM_REMOVE_ORPHANS { + tag "$meta.id" + label 'process_medium' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/87/87b06acf94e50ddd0d4ce705952ecb496a81b6665f7971cd7492f270d921cb6c/data' + : 'community.wave.seqera.io/library/pysam_samtools:b9e3a5f6b6caee59'}" + + input: + tuple val(meta), path(bam) + + output: + tuple val(meta), path("${prefix}.bam"), emit: bam + tuple val("${task.process}"), val('samtools'), eval("samtools --version | sed '1!d;s/.* //'"), topic: versions, emit: versions_samtools + + when: + task.ext.when == null || task.ext.when + + script: // This script is bundled with the pipeline, in nf-core/chipseq/bin/ + def args = task.ext.args ?: '' + prefix = task.ext.prefix ?: "${meta.id}" + if (!meta.single_end) { + """ + samtools sort -n -@ $task.cpus -o ${prefix}.name.sorted.bam -T ${prefix}.name.sorted $bam + bampe_rm_orphan.py ${prefix}.name.sorted.bam ${prefix}.bam $args + """ + } else { + """ + ln -s $bam ${prefix}.bam + """ + } + + stub: + prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.bam + """ +} diff --git a/modules/local/bamtools_filter.nf b/modules/local/bamtools_filter.nf deleted file mode 100644 index 49349ddec..000000000 --- a/modules/local/bamtools_filter.nf +++ /dev/null @@ -1,55 +0,0 @@ -process BAMTOOLS_FILTER { - tag "$meta.id" - label 'process_medium' - - conda "bioconda::bamtools=2.5.2 bioconda::samtools=1.15.1" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/mulled-v2-0560a8046fc82aa4338588eca29ff18edab2c5aa:5687a7da26983502d0a8a9a6b05ed727c740ddc4-0' : - 'biocontainers/mulled-v2-0560a8046fc82aa4338588eca29ff18edab2c5aa:5687a7da26983502d0a8a9a6b05ed727c740ddc4-0' }" - - input: - tuple val(meta), path(bam), path(bai) - path bed - path bamtools_filter_se_config - path bamtools_filter_pe_config - - output: - tuple val(meta), path("*.bam"), emit: bam - path "versions.yml" , emit: versions - - when: - task.ext.when == null || task.ext.when - - script: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" - def blacklist = bed ? "-L $bed" : '' - def config = meta.single_end ? bamtools_filter_se_config : bamtools_filter_pe_config - """ - samtools view \\ - $args \\ - $blacklist \\ - -b $bam \\ - | bamtools filter \\ - -out ${prefix}.bam \\ - -script $config - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - bamtools: \$(echo \$(bamtools --version 2>&1) | sed 's/^.*bamtools //; s/Part .*\$//') - END_VERSIONS - """ - - stub: - def prefix = task.ext.prefix ?: "${meta.id}" - """ - touch ${prefix}.bam - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - bamtools: \$(echo \$(bamtools --version 2>&1) | sed 's/^.*bamtools //; s/Part .*\$//') - END_VERSIONS - """ -} diff --git a/modules/local/bamtools_filter/environment.yml b/modules/local/bamtools_filter/environment.yml new file mode 100644 index 000000000..c4856afad --- /dev/null +++ b/modules/local/bamtools_filter/environment.yml @@ -0,0 +1,8 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + - bioconda::bamtools=2.5.3 + - bioconda::samtools=1.23 diff --git a/modules/local/bamtools_filter/main.nf b/modules/local/bamtools_filter/main.nf new file mode 100644 index 000000000..a42742343 --- /dev/null +++ b/modules/local/bamtools_filter/main.nf @@ -0,0 +1,44 @@ +process BAMTOOLS_FILTER { + tag "$meta.id" + label 'process_medium' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/b9/b935ba4da9d5bcaa5b036493218c4d76f4a018751fc6db47f144e88c16128eb5/data' + : 'community.wave.seqera.io/library/bamtools_samtools:d0efa2e3de1e3441'}" + + input: + tuple val(meta), path(bam), path(bai) + path bed + path bamtools_filter_se_config + path bamtools_filter_pe_config + + output: + tuple val(meta), path("*.bam"), emit: bam + tuple val("${task.process}"), val('samtools'), eval("samtools --version | sed '1!d;s/.* //'"), topic: versions, emit: versions_samtools + tuple val("${task.process}"), val('bamtools'), eval("bamtools --version | sed '2!d;s/bamtools //g'"), topic: versions, emit: versions_bamtools + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def blacklist = bed ? "-L $bed" : '' + def config = meta.single_end ? bamtools_filter_se_config : bamtools_filter_pe_config + """ + samtools view \\ + $args \\ + $blacklist \\ + -b $bam \\ + | bamtools filter \\ + -out ${prefix}.bam \\ + -script $config + """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.bam + """ +} diff --git a/modules/local/deseq2_qc.nf b/modules/local/deseq2_qc/main.nf similarity index 100% rename from modules/local/deseq2_qc.nf rename to modules/local/deseq2_qc/main.nf diff --git a/modules/local/frip_score.nf b/modules/local/frip_score.nf deleted file mode 100644 index ae304d56a..000000000 --- a/modules/local/frip_score.nf +++ /dev/null @@ -1,46 +0,0 @@ -process FRIP_SCORE { - tag "$meta.id" - label 'process_medium' - - conda "bioconda::bedtools=2.30.0 bioconda::samtools=1.15.1" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/mulled-v2-8186960447c5cb2faa697666dc1e6d919ad23f3e:3127fcae6b6bdaf8181e21a26ae61231030a9fcb-0': - 'biocontainers/mulled-v2-8186960447c5cb2faa697666dc1e6d919ad23f3e:3127fcae6b6bdaf8181e21a26ae61231030a9fcb-0' }" - - input: - tuple val(meta), path(bam), path(peak) - - output: - tuple val(meta), path("*.txt"), emit: txt - path "versions.yml" , emit: versions - - when: - task.ext.when == null || task.ext.when - - script: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" - """ - READS_IN_PEAKS=\$(intersectBed -a $bam -b $peak $args | awk -F '\t' '{sum += \$NF} END {print sum}') - samtools flagstat $bam > ${bam}.flagstat - grep 'mapped (' ${bam}.flagstat | grep -v "primary" | awk -v a="\$READS_IN_PEAKS" -v OFS='\t' '{print "${prefix}", a/\$1}' > ${prefix}.FRiP.txt - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bedtools: \$(bedtools --version | sed -e "s/bedtools v//g") - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - END_VERSIONS - """ - - stub: - def prefix = task.ext.prefix ?: "${meta.id}" - """ - touch ${prefix}.FRiP.txt - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bedtools: \$(bedtools --version | sed -e "s/bedtools v//g") - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - END_VERSIONS - """ -} diff --git a/modules/local/frip_score/environment.yml b/modules/local/frip_score/environment.yml new file mode 100644 index 000000000..57658a99e --- /dev/null +++ b/modules/local/frip_score/environment.yml @@ -0,0 +1,8 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + - bioconda::bedtools=2.31.1 + - bioconda::samtools=1.23 diff --git a/modules/local/frip_score/main.nf b/modules/local/frip_score/main.nf new file mode 100644 index 000000000..f23f9d4ab --- /dev/null +++ b/modules/local/frip_score/main.nf @@ -0,0 +1,35 @@ +process FRIP_SCORE { + tag "$meta.id" + label 'process_medium' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/92/92ad9212aec8a409dba3ed5468c74d59c93f4eb30a663379f8b405e24fbbf97f/data': + 'community.wave.seqera.io/library/bedtools_samtools:163d535533d93abd' }" + + input: + tuple val(meta), path(bam), path(peak) + + output: + tuple val(meta), path("*.txt"), emit: txt + tuple val("${task.process}"), val('bedtools'), eval("bedtools --version | sed -e 's/bedtools v//'"), topic: versions, emit: versions_bedtools + tuple val("${task.process}"), val('samtools'), eval("samtools --version | sed '1!d;s/.* //'"), topic: versions, emit: versions_samtools + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + """ + READS_IN_PEAKS=\$(intersectBed -a $bam -b $peak $args | awk -F '\t' '{sum += \$NF} END {print sum}') + samtools flagstat $bam > ${bam}.flagstat + grep 'mapped (' ${bam}.flagstat | grep -v "primary" | awk -v a="\$READS_IN_PEAKS" -v OFS='\t' '{print "${prefix}", a/\$1}' > ${prefix}.FRiP.txt + """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.FRiP.txt + """ +} diff --git a/modules/local/genome_blacklist_regions.nf b/modules/local/genome_blacklist_regions.nf deleted file mode 100644 index c365c8a70..000000000 --- a/modules/local/genome_blacklist_regions.nf +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Prepare genome intervals for filtering by removing regions in blacklist file - */ -process GENOME_BLACKLIST_REGIONS { - tag "$sizes" - - conda "bioconda::bedtools=2.30.0" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bedtools:2.30.0--hc088bd4_0': - 'biocontainers/bedtools:2.30.0--hc088bd4_0' }" - - input: - path sizes - path blacklist - - output: - path '*.bed' , emit: bed - path "versions.yml", emit: versions - - when: - task.ext.when == null || task.ext.when - - script: - def file_out = "${sizes.simpleName}.include_regions.bed" - if (blacklist) { - """ - sortBed -i $blacklist -g $sizes | complementBed -i stdin -g $sizes > $file_out - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bedtools: \$(bedtools --version | sed -e "s/bedtools v//g") - END_VERSIONS - """ - } else { - """ - awk '{print \$1, '0' , \$2}' OFS='\t' $sizes > $file_out - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bedtools: \$(bedtools --version | sed -e "s/bedtools v//g") - END_VERSIONS - """ - } -} diff --git a/modules/local/genome_blacklist_regions/environment.yml b/modules/local/genome_blacklist_regions/environment.yml new file mode 100644 index 000000000..45c307b0e --- /dev/null +++ b/modules/local/genome_blacklist_regions/environment.yml @@ -0,0 +1,7 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + - bioconda::bedtools=2.31.1 diff --git a/modules/local/genome_blacklist_regions/main.nf b/modules/local/genome_blacklist_regions/main.nf new file mode 100644 index 000000000..39fcf265b --- /dev/null +++ b/modules/local/genome_blacklist_regions/main.nf @@ -0,0 +1,35 @@ +/* + * Prepare genome intervals for filtering by removing regions in blacklist file + */ +process GENOME_BLACKLIST_REGIONS { + tag "$sizes" + label 'process_single' + + conda "${moduleDir}/environment.yml" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/7d/7df273d12f0c4d8539440b68876edf39b739cb78bb806418c5b5d057fe11bdbd/data' + : 'community.wave.seqera.io/library/bedtools:2.31.1--7c4ce4cb07c09ee4'}" + + input: + path sizes + path blacklist + + output: + path '*.bed' , emit: bed + tuple val("${task.process}"), val('bedtools'), eval("bedtools --version | sed -e 's/bedtools v//g'"), topic: versions, emit: versions_bedtools + + when: + task.ext.when == null || task.ext.when + + script: + def file_out = "${sizes.simpleName}.include_regions.bed" + if (blacklist) { + """ + sortBed -i $blacklist -g $sizes | complementBed -i stdin -g $sizes > $file_out + """ + } else { + """ + awk '{print \$1, '0' , \$2}' OFS='\t' $sizes > $file_out + """ + } +} diff --git a/modules/local/gtf2bed.nf b/modules/local/gtf2bed/main.nf similarity index 100% rename from modules/local/gtf2bed.nf rename to modules/local/gtf2bed/main.nf diff --git a/modules/local/igv.nf b/modules/local/igv/main.nf similarity index 100% rename from modules/local/igv.nf rename to modules/local/igv/main.nf diff --git a/modules/local/macs3_consensus/environment.yml b/modules/local/macs3_consensus/environment.yml new file mode 100644 index 000000000..db6afbc5a --- /dev/null +++ b/modules/local/macs3_consensus/environment.yml @@ -0,0 +1,10 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + - conda-forge::biopython=1.86 + - conda-forge::r-optparse=1.7.1 + - conda-forge::r-upsetr=1.4.0 + - bioconda::bedtools=2.31.1 diff --git a/modules/local/macs3_consensus.nf b/modules/local/macs3_consensus/main.nf similarity index 76% rename from modules/local/macs3_consensus.nf rename to modules/local/macs3_consensus/main.nf index 520727a8b..1fe0f4665 100644 --- a/modules/local/macs3_consensus.nf +++ b/modules/local/macs3_consensus/main.nf @@ -5,10 +5,10 @@ process MACS3_CONSENSUS { tag "$meta.id" label 'process_long' - conda "conda-forge::biopython conda-forge::r-optparse=1.7.1 conda-forge::r-upsetr=1.4.0 bioconda::bedtools=2.30.0" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/mulled-v2-2f48cc59b03027e31ead6d383fe1b8057785dd24:5d182f583f4696f4c4d9f3be93052811b383341f-0': - 'biocontainers/mulled-v2-2f48cc59b03027e31ead6d383fe1b8057785dd24:5d182f583f4696f4c4d9f3be93052811b383341f-0' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/4e/4e436f4ee12251d8c31265011461931589fd7c2df00779dc58a8a44222f4bd65/data': + 'community.wave.seqera.io/library/bedtools_biopython_r-optparse_r-upsetr:fcaaffce306c29ed' }" input: tuple val(meta), path(peaks) @@ -21,7 +21,9 @@ process MACS3_CONSENSUS { tuple val(meta), path("*.antibody.txt") , emit: txt tuple val(meta), path("*.boolean.txt") , emit: boolean_txt tuple val(meta), path("*.intersect.txt"), emit: intersect_txt - path "versions.yml" , emit: versions + + tuple val("${task.process}"), val('python'), eval("python --version | sed 's/Python //'"), topic: versions, emit: versions_python + tuple val("${task.process}"), val('R'), eval('R --version | sed "1!d; s/.*version //; s/ .*//"'), topic: versions, emit: versions_r when: task.ext.when == null || task.ext.when @@ -53,12 +55,10 @@ process MACS3_CONSENSUS { plot_peak_intersect.r -i ${prefix}.boolean.intersect.txt -o ${prefix}.boolean.intersect.plot.pdf echo "${prefix}.bed\t${meta.id}/${prefix}.bed" > ${prefix}.antibody.txt - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - python: \$(python --version | sed 's/Python //g') - r-base: \$(echo \$(R --version 2>&1) | sed 's/^.*R version //; s/ .*\$//') - END_VERSIONS """ - + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.antibody.txt + """ } diff --git a/modules/local/multiqc.nf b/modules/local/multiqc/main.nf similarity index 100% rename from modules/local/multiqc.nf rename to modules/local/multiqc/main.nf diff --git a/modules/local/multiqc_custom_peaks.nf b/modules/local/multiqc_custom_peaks/main.nf similarity index 100% rename from modules/local/multiqc_custom_peaks.nf rename to modules/local/multiqc_custom_peaks/main.nf diff --git a/modules/local/multiqc_custom_phantompeakqualtools.nf b/modules/local/multiqc_custom_phantompeakqualtools/main.nf similarity index 100% rename from modules/local/multiqc_custom_phantompeakqualtools.nf rename to modules/local/multiqc_custom_phantompeakqualtools/main.nf diff --git a/modules/local/plot_homer_annotatepeaks/environment.yml b/modules/local/plot_homer_annotatepeaks/environment.yml new file mode 100644 index 000000000..ba939ca0a --- /dev/null +++ b/modules/local/plot_homer_annotatepeaks/environment.yml @@ -0,0 +1,15 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + - bioconda::bioconductor-biostrings=2.78.0 + - bioconda::bioconductor-complexheatmap=2.26.1 + - conda-forge::r-base=4.5.3 + - conda-forge::r-ggplot2=4.0.2 + - conda-forge::r-optparse=1.7.5 + - conda-forge::r-reshape2=1.4.5 + - conda-forge::r-scales=1.4.0 + - conda-forge::r-tidyverse=2.0.0 + - conda-forge::r-viridis=0.6.5 diff --git a/modules/local/plot_homer_annotatepeaks.nf b/modules/local/plot_homer_annotatepeaks/main.nf similarity index 52% rename from modules/local/plot_homer_annotatepeaks.nf rename to modules/local/plot_homer_annotatepeaks/main.nf index ef4b1ce64..f81a21ff0 100644 --- a/modules/local/plot_homer_annotatepeaks.nf +++ b/modules/local/plot_homer_annotatepeaks/main.nf @@ -1,10 +1,10 @@ process PLOT_HOMER_ANNOTATEPEAKS { label 'process_medium' - conda "conda-forge::r-base=4.0.3 conda-forge::r-reshape2=1.4.4 conda-forge::r-optparse=1.6.6 conda-forge::r-ggplot2=3.3.3 conda-forge::r-scales=1.1.1 conda-forge::r-viridis=0.5.1 conda-forge::r-tidyverse=1.3.0 bioconda::bioconductor-biostrings=2.58.0 bioconda::bioconductor-complexheatmap=2.6.2" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/mulled-v2-ad9dd5f398966bf899ae05f8e7c54d0fb10cdfa7:05678da05b8e5a7a5130e90a9f9a6c585b965afa-0': - 'biocontainers/mulled-v2-ad9dd5f398966bf899ae05f8e7c54d0fb10cdfa7:05678da05b8e5a7a5130e90a9f9a6c585b965afa-0' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/23/23e639aceaf0ba484c7d306cbd39c038117c12d35beccfa6e811c96d22bea799/data': + 'community.wave.seqera.io/library/bioconductor-biostrings_bioconductor-complexheatmap_r-base_r-ggplot2_pruned:d46617a59d25f733' }" input: path annos @@ -15,7 +15,7 @@ process PLOT_HOMER_ANNOTATEPEAKS { path '*.txt' , emit: txt path '*.pdf' , emit: pdf path '*.tsv' , emit: tsv - path "versions.yml", emit: versions + tuple val("${task.process}"), val('R'), eval('R --version | sed "1!d; s/.*version //; s/ .*//"'), topic: versions, emit: versions_r when: task.ext.when == null || task.ext.when @@ -31,10 +31,5 @@ process PLOT_HOMER_ANNOTATEPEAKS { $args find ./ -type f -name "*summary.txt" -exec cat {} \\; | cat $mqc_header - > ${prefix}.summary_mqc.tsv - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - r-base: \$(echo \$(R --version 2>&1) | sed 's/^.*R version //; s/ .*\$//') - END_VERSIONS """ } diff --git a/modules/local/plot_macs3_qc.nf b/modules/local/plot_macs3_qc.nf deleted file mode 100644 index 1722cadde..000000000 --- a/modules/local/plot_macs3_qc.nf +++ /dev/null @@ -1,35 +0,0 @@ -process PLOT_MACS3_QC { - label 'process_medium' - - conda "conda-forge::r-base=4.0.3 conda-forge::r-reshape2=1.4.4 conda-forge::r-optparse=1.6.6 conda-forge::r-ggplot2=3.3.3 conda-forge::r-scales=1.1.1 conda-forge::r-viridis=0.5.1 conda-forge::r-tidyverse=1.3.0 bioconda::bioconductor-biostrings=2.58.0 bioconda::bioconductor-complexheatmap=2.6.2" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/mulled-v2-ad9dd5f398966bf899ae05f8e7c54d0fb10cdfa7:05678da05b8e5a7a5130e90a9f9a6c585b965afa-0': - 'biocontainers/mulled-v2-ad9dd5f398966bf899ae05f8e7c54d0fb10cdfa7:05678da05b8e5a7a5130e90a9f9a6c585b965afa-0' }" - - input: - path peaks - val is_narrow_peak - - output: - path '*.txt' , emit: txt - path '*.pdf' , emit: pdf - path "versions.yml", emit: versions - - when: - task.ext.when == null || task.ext.when - - script: // This script is bundled with the pipeline, in nf-core/chipseq/bin/ - def args = task.ext.args ?: '' - def peak_type = is_narrow_peak ? 'narrowPeak' : 'broadPeak' - """ - plot_macs3_qc.r \\ - -i ${peaks.join(',')} \\ - -s ${peaks.join(',').replaceAll("_peaks.${peak_type}","")} \\ - $args - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - r-base: \$(echo \$(R --version 2>&1) | sed 's/^.*R version //; s/ .*\$//') - END_VERSIONS - """ -} diff --git a/modules/local/plot_macs3_qc/environment.yml b/modules/local/plot_macs3_qc/environment.yml new file mode 100644 index 000000000..ba939ca0a --- /dev/null +++ b/modules/local/plot_macs3_qc/environment.yml @@ -0,0 +1,15 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + - bioconda::bioconductor-biostrings=2.78.0 + - bioconda::bioconductor-complexheatmap=2.26.1 + - conda-forge::r-base=4.5.3 + - conda-forge::r-ggplot2=4.0.2 + - conda-forge::r-optparse=1.7.5 + - conda-forge::r-reshape2=1.4.5 + - conda-forge::r-scales=1.4.0 + - conda-forge::r-tidyverse=2.0.0 + - conda-forge::r-viridis=0.6.5 diff --git a/modules/local/plot_macs3_qc/main.nf b/modules/local/plot_macs3_qc/main.nf new file mode 100644 index 000000000..a911aa789 --- /dev/null +++ b/modules/local/plot_macs3_qc/main.nf @@ -0,0 +1,30 @@ +process PLOT_MACS3_QC { + label 'process_medium' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/23/23e639aceaf0ba484c7d306cbd39c038117c12d35beccfa6e811c96d22bea799/data': + 'community.wave.seqera.io/library/bioconductor-biostrings_bioconductor-complexheatmap_r-base_r-ggplot2_pruned:d46617a59d25f733' }" + + input: + path peaks + val is_narrow_peak + + output: + path '*.txt' , emit: txt + path '*.pdf' , emit: pdf + tuple val("${task.process}"), val('R'), eval('R --version | sed "1!d; s/.*version //; s/ .*//"'), topic: versions, emit: versions_r + + when: + task.ext.when == null || task.ext.when + + script: // This script is bundled with the pipeline, in nf-core/chipseq/bin/ + def args = task.ext.args ?: '' + def peak_type = is_narrow_peak ? 'narrowPeak' : 'broadPeak' + """ + plot_macs3_qc.r \\ + -i ${peaks.join(',')} \\ + -s ${peaks.join(',').replaceAll("_peaks.${peak_type}","")} \\ + $args + """ +} diff --git a/modules/local/samplesheet_check.nf b/modules/local/samplesheet_check/main.nf similarity index 100% rename from modules/local/samplesheet_check.nf rename to modules/local/samplesheet_check/main.nf diff --git a/modules/local/star_align/environment.yml b/modules/local/star_align/environment.yml new file mode 100644 index 000000000..e6f120836 --- /dev/null +++ b/modules/local/star_align/environment.yml @@ -0,0 +1,7 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + - bioconda::star=2.7.11b diff --git a/modules/local/star_align.nf b/modules/local/star_align/main.nf similarity index 84% rename from modules/local/star_align.nf rename to modules/local/star_align/main.nf index 6a45b7315..d70ea6466 100644 --- a/modules/local/star_align.nf +++ b/modules/local/star_align/main.nf @@ -3,10 +3,10 @@ process STAR_ALIGN { label 'process_high' // Note: 2.7X indices incompatible with AWS iGenomes. - conda "bioconda::star=2.6.1d" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/star:2.6.1d--0' : - 'biocontainers/star:2.6.1d--0' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/9b/9b8ecb2f9a77b5e7573ef6fae2f4c2e771064f7a129ed1329913c1025c33f365/data' : + 'community.wave.seqera.io/library/star:2.7.11b--822039d47adf19a7' }" input: tuple val(meta) , path(reads) @@ -18,7 +18,7 @@ process STAR_ALIGN { tuple val(meta), path('*Log.final.out') , emit: log_final tuple val(meta), path('*Log.out') , emit: log_out tuple val(meta), path('*Log.progress.out'), emit: log_progress - path "versions.yml" , emit: versions + tuple val("${task.process}"), val('star'), eval('STAR --version | sed -e "s/STAR_//"'), topic: versions, emit: versions_star tuple val(meta), path('*sortedByCoord.out.bam') , optional:true, emit: bam_sorted tuple val(meta), path('*toTranscriptome.out.bam'), optional:true, emit: bam_transcript @@ -53,9 +53,5 @@ process STAR_ALIGN { mv ${prefix}.Unmapped.out.mate2 ${prefix}.unmapped_2.fastq gzip ${prefix}.unmapped_2.fastq fi - cat <<-END_VERSIONS > versions.yml - "${task.process}": - star: \$(STAR --version | sed -e "s/STAR_//g") - END_VERSIONS """ } diff --git a/modules/local/star_genomegenerate/environment.yml b/modules/local/star_genomegenerate/environment.yml new file mode 100644 index 000000000..90f026bc7 --- /dev/null +++ b/modules/local/star_genomegenerate/environment.yml @@ -0,0 +1,9 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + - bioconda::star=2.7.11b + - bioconda::samtools=1.20 + - conda-forge::gawk=5.1.0 diff --git a/modules/local/star_genomegenerate.nf b/modules/local/star_genomegenerate/main.nf similarity index 74% rename from modules/local/star_genomegenerate.nf rename to modules/local/star_genomegenerate/main.nf index a36af0a82..1bd03cff7 100644 --- a/modules/local/star_genomegenerate.nf +++ b/modules/local/star_genomegenerate/main.nf @@ -3,10 +3,10 @@ process STAR_GENOMEGENERATE { label 'process_high' // Note: 2.7X indices incompatible with AWS iGenomes. - conda "bioconda::star=2.6.1d bioconda::samtools=1.10 conda-forge::gawk=5.1.0" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/mulled-v2-1fa26d1ce03c295fe2fdcf85831a92fbcbd7e8c2:59cdd445419f14abac76b31dd0d71217994cbcc9-0' : - 'biocontainers/mulled-v2-1fa26d1ce03c295fe2fdcf85831a92fbcbd7e8c2:59cdd445419f14abac76b31dd0d71217994cbcc9-0' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/52/52097ce908b427400215cbcfbf143810dc2e901b043cc153ea1d4ef5b2b025e9/data' : + 'community.wave.seqera.io/library/samtools_star_gawk:da63acc62f0ad3b8' }" input: path fasta @@ -14,7 +14,8 @@ process STAR_GENOMEGENERATE { output: path "star" , emit: index - path "versions.yml", emit: versions + tuple val("${task.process}"), val('samtools'), eval("samtools --version | sed '1!d;s/.* //'"), topic: versions, emit: versions_samtools + tuple val("${task.process}"), val('star'), eval('STAR --version | sed -e "s/STAR_//"'), topic: versions, emit: versions_star when: task.ext.when == null || task.ext.when @@ -52,10 +53,6 @@ process STAR_GENOMEGENERATE { --genomeSAindexNbases \$NUM_BASES \\ $memory \\ ${args.join(' ')} - cat <<-END_VERSIONS > versions.yml - "${task.process}": - star: \$(STAR --version | sed -e "s/STAR_//g") - END_VERSIONS """ } } diff --git a/modules/nf-core/bedtools/genomecov/main.nf b/modules/nf-core/bedtools/genomecov/main.nf index 35e2ab14b..710da5b47 100644 --- a/modules/nf-core/bedtools/genomecov/main.nf +++ b/modules/nf-core/bedtools/genomecov/main.nf @@ -1,66 +1,57 @@ process BEDTOOLS_GENOMECOV { - tag "$meta.id" + tag "${meta.id}" label 'process_single' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/63/6397750e9730a3fbcc5b4c43f14bd141c64c723fd7dad80e47921a68a7c3cd21/data': - 'community.wave.seqera.io/library/bedtools_coreutils:a623c13f66d5262b' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/63/6397750e9730a3fbcc5b4c43f14bd141c64c723fd7dad80e47921a68a7c3cd21/data' + : 'community.wave.seqera.io/library/bedtools_coreutils:a623c13f66d5262b'}" input: tuple val(meta), path(intervals), val(scale) - path sizes - val extension - val sort + path sizes + val extension + val sort output: tuple val(meta), path("*.${extension}"), emit: genomecov - path "versions.yml" , emit: versions + tuple val("${task.process}"), val('bedtools'), eval("bedtools --version | sed -e 's/bedtools v//g'"), topic: versions, emit: versions_bedtools when: task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' + def args = task.ext.args ?: '' def args_list = args.tokenize() - args += (scale > 0 && scale != 1) ? " -scale $scale" : "" + args += scale > 0 && scale != 1 ? " -scale ${scale}" : "" if (!args_list.contains('-bg') && (scale > 0 && scale != 1)) { args += " -bg" } // Sorts output file by chromosome and position using additional options for performance and consistency // See https://www.biostars.org/p/66927/ for further details - def buffer = task.memory ? "--buffer-size=${task.memory.toGiga().intdiv(2)}G" : '' - def sort_cmd = sort ? "| LC_ALL=C sort --parallel=$task.cpus $buffer -k1,1 -k2,2n" : '' + def buffer = task.memory ? "--buffer-size=${task.memory.toGiga().intdiv(2)}G" : '' + def sort_cmd = sort ? "| LC_ALL=C sort --parallel=${task.cpus} ${buffer} -k1,1 -k2,2n" : '' def prefix = task.ext.prefix ?: "${meta.id}" if (intervals.name =~ /\.bam/) { """ bedtools \\ genomecov \\ - -ibam $intervals \\ - $args \\ - $sort_cmd \\ + -ibam ${intervals} \\ + ${args} \\ + ${sort_cmd} \\ > ${prefix}.${extension} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bedtools: \$(bedtools --version | sed -e "s/bedtools v//g") - END_VERSIONS """ - } else { + } + else { """ bedtools \\ genomecov \\ - -i $intervals \\ - -g $sizes \\ - $args \\ - $sort_cmd \\ + -i ${intervals} \\ + -g ${sizes} \\ + ${args} \\ + ${sort_cmd} \\ > ${prefix}.${extension} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bedtools: \$(bedtools --version | sed -e "s/bedtools v//g") - END_VERSIONS """ } @@ -68,10 +59,5 @@ process BEDTOOLS_GENOMECOV { def prefix = task.ext.prefix ?: "${meta.id}" """ touch ${prefix}.${extension} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bedtools: \$(bedtools --version | sed -e "s/bedtools v//g") - END_VERSIONS """ } diff --git a/modules/nf-core/bedtools/genomecov/meta.yml b/modules/nf-core/bedtools/genomecov/meta.yml index 9be3b3f94..69b911c23 100644 --- a/modules/nf-core/bedtools/genomecov/meta.yml +++ b/modules/nf-core/bedtools/genomecov/meta.yml @@ -55,13 +55,27 @@ output: description: Computed genome coverage file pattern: "*.${extension}" ontologies: [] + versions_bedtools: + - - ${task.process}: + type: string + description: The name of the process + - bedtools: + type: string + description: The name of the tool + - "bedtools --version | sed -e 's/bedtools v//g'": + type: eval + description: The expression to obtain the version of the tool +topics: versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" - ontologies: - - edam: http://edamontology.org/format_3750 # YAML + - - ${task.process}: + type: string + description: The name of the process + - bedtools: + type: string + description: The name of the tool + - "bedtools --version | sed -e 's/bedtools v//g'": + type: eval + description: The expression to obtain the version of the tool authors: - "@edmundmiller" - "@sruthipsuresh" diff --git a/modules/nf-core/bedtools/genomecov/tests/main.nf.test.snap b/modules/nf-core/bedtools/genomecov/tests/main.nf.test.snap index da6dbe875..4175ae7c9 100644 --- a/modules/nf-core/bedtools/genomecov/tests/main.nf.test.snap +++ b/modules/nf-core/bedtools/genomecov/tests/main.nf.test.snap @@ -11,7 +11,11 @@ ] ], "1": [ - "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + [ + "BEDTOOLS_GENOMECOV", + "bedtools", + "2.31.1" + ] ], "genomecov": [ [ @@ -21,16 +25,20 @@ "test.coverage.txt:md5,01291b6e1beab72e046653e709eb0e10" ] ], - "versions": [ - "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + "versions_bedtools": [ + [ + "BEDTOOLS_GENOMECOV", + "bedtools", + "2.31.1" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-07-05T11:59:33.898146" + "timestamp": "2026-01-21T11:30:01.187722797" }, "sarscov2 - no scale - stub": { "content": [ @@ -44,7 +52,11 @@ ] ], "1": [ - "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + [ + "BEDTOOLS_GENOMECOV", + "bedtools", + "2.31.1" + ] ], "genomecov": [ [ @@ -54,16 +66,20 @@ "test.coverage.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + "versions_bedtools": [ + [ + "BEDTOOLS_GENOMECOV", + "bedtools", + "2.31.1" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-07-05T11:59:52.483371" + "timestamp": "2026-01-21T11:30:16.248235814" }, "sarscov2 - scale": { "content": [ @@ -77,7 +93,11 @@ ] ], "1": [ - "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + [ + "BEDTOOLS_GENOMECOV", + "bedtools", + "2.31.1" + ] ], "genomecov": [ [ @@ -87,16 +107,20 @@ "test.coverage.txt:md5,de3c59c0ea123bcdbbad27bc0a0a601e" ] ], - "versions": [ - "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + "versions_bedtools": [ + [ + "BEDTOOLS_GENOMECOV", + "bedtools", + "2.31.1" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-07-05T11:59:43.69501" + "timestamp": "2026-01-21T11:30:08.76325362" }, "sarscov2 - scale - stub": { "content": [ @@ -110,7 +134,11 @@ ] ], "1": [ - "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + [ + "BEDTOOLS_GENOMECOV", + "bedtools", + "2.31.1" + ] ], "genomecov": [ [ @@ -120,16 +148,20 @@ "test.coverage.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + "versions_bedtools": [ + [ + "BEDTOOLS_GENOMECOV", + "bedtools", + "2.31.1" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-07-05T12:00:09.930036" + "timestamp": "2026-01-21T11:30:32.324649338" }, "sarscov2 - no scale": { "content": [ @@ -143,7 +175,11 @@ ] ], "1": [ - "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + [ + "BEDTOOLS_GENOMECOV", + "bedtools", + "2.31.1" + ] ], "genomecov": [ [ @@ -153,16 +189,20 @@ "test.coverage.txt:md5,66083198daca6c001d328ba9616e9b53" ] ], - "versions": [ - "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + "versions_bedtools": [ + [ + "BEDTOOLS_GENOMECOV", + "bedtools", + "2.31.1" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-07-05T11:59:25.448817" + "timestamp": "2026-01-21T11:29:54.109132031" }, "sarscov2 - dummy sizes - stub": { "content": [ @@ -176,7 +216,11 @@ ] ], "1": [ - "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + [ + "BEDTOOLS_GENOMECOV", + "bedtools", + "2.31.1" + ] ], "genomecov": [ [ @@ -186,15 +230,19 @@ "test.coverage.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + "versions_bedtools": [ + [ + "BEDTOOLS_GENOMECOV", + "bedtools", + "2.31.1" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-07-05T12:00:01.086433" + "timestamp": "2026-01-21T11:30:23.839839194" } } \ No newline at end of file diff --git a/modules/nf-core/bedtools/genomecov/tests/nextflow.config b/modules/nf-core/bedtools/genomecov/tests/nextflow.config index bdb74ae5a..670ef7fd5 100644 --- a/modules/nf-core/bedtools/genomecov/tests/nextflow.config +++ b/modules/nf-core/bedtools/genomecov/tests/nextflow.config @@ -3,5 +3,5 @@ process { withName: BEDTOOLS_GENOMECOV { ext.prefix = { "${meta.id}.coverage" } } - + } diff --git a/modules/nf-core/bowtie2/align/environment.yml b/modules/nf-core/bowtie2/align/environment.yml index d2796359a..066ff52e0 100644 --- a/modules/nf-core/bowtie2/align/environment.yml +++ b/modules/nf-core/bowtie2/align/environment.yml @@ -1,9 +1,13 @@ -name: bowtie2_align +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::bowtie2=2.5.2 - - bioconda::samtools=1.18 - - conda-forge::pigz=2.6 + # renovate: datasource=conda depName=bioconda/bowtie2 + - bioconda::bowtie2=2.5.4 + # renovate: datasource=conda depName=bioconda/htslib + - bioconda::htslib=1.21 + # renovate: datasource=conda depName=bioconda/samtools + - bioconda::samtools=1.21 + - conda-forge::pigz=2.8 diff --git a/modules/nf-core/bowtie2/align/main.nf b/modules/nf-core/bowtie2/align/main.nf index 809525ad3..0a8c1a0c9 100644 --- a/modules/nf-core/bowtie2/align/main.nf +++ b/modules/nf-core/bowtie2/align/main.nf @@ -4,8 +4,8 @@ process BOWTIE2_ALIGN { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/mulled-v2-ac74a7f02cebcfcc07d8e8d1d750af9c83b4d45a:f70b31a2db15c023d641c32f433fb02cd04df5a6-0' : - 'biocontainers/mulled-v2-ac74a7f02cebcfcc07d8e8d1d750af9c83b4d45a:f70b31a2db15c023d641c32f433fb02cd04df5a6-0' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/b4/b41b403e81883126c3227fc45840015538e8e2212f13abc9ae84e4b98891d51c/data' : + 'community.wave.seqera.io/library/bowtie2_htslib_samtools_pigz:edeb13799090a2a6' }" input: tuple val(meta) , path(reads) @@ -22,7 +22,9 @@ process BOWTIE2_ALIGN { tuple val(meta), path("*.crai") , emit: crai , optional:true tuple val(meta), path("*.log") , emit: log tuple val(meta), path("*fastq.gz") , emit: fastq , optional:true - path "versions.yml" , emit: versions + tuple val("${task.process}"), val('bowtie2'), eval("bowtie2 --version 2>&1 | sed -n '1s/.*bowtie2-align-s version //p'"), emit: versions_bowtie2, topic: versions + tuple val("${task.process}"), val('samtools'), eval("samtools version | sed '1!d;s/.* //'"), emit: versions_samtools, topic: versions + tuple val("${task.process}"), val('pigz'), eval("pigz --version 2>&1 | sed 's/pigz //'"), emit: versions_pigz, topic: versions when: task.ext.when == null || task.ext.when @@ -31,6 +33,7 @@ process BOWTIE2_ALIGN { def args = task.ext.args ?: "" def args2 = task.ext.args2 ?: "" def prefix = task.ext.prefix ?: "${meta.id}" + def rg = args.contains("--rg-id") ? "" : "--rg-id ${prefix} --rg SM:${prefix}" def unaligned = "" def reads_args = "" @@ -59,8 +62,9 @@ process BOWTIE2_ALIGN { $reads_args \\ --threads $task.cpus \\ $unaligned \\ + $rg \\ $args \\ - 2> >(tee ${prefix}.bowtie2.log >&2) \\ + 2>| >(tee ${prefix}.bowtie2.log >&2) \\ | samtools $samtools_command $args2 --threads $task.cpus ${reference} -o ${prefix}.${extension} - if [ -f ${prefix}.unmapped.fastq.1.gz ]; then @@ -70,13 +74,6 @@ process BOWTIE2_ALIGN { if [ -f ${prefix}.unmapped.fastq.2.gz ]; then mv ${prefix}.unmapped.fastq.2.gz ${prefix}.unmapped_2.fastq.gz fi - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bowtie2: \$(echo \$(bowtie2 --version 2>&1) | sed 's/^.*bowtie2-align-s version //; s/ .*\$//') - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - pigz: \$( pigz --version 2>&1 | sed 's/pigz //g' ) - END_VERSIONS """ stub: @@ -90,7 +87,6 @@ process BOWTIE2_ALIGN { } else { create_unmapped = save_unaligned ? "touch ${prefix}.unmapped_1.fastq.gz && touch ${prefix}.unmapped_2.fastq.gz" : "" } - def reference = fasta && extension=="cram" ? "--reference ${fasta}" : "" if (!fasta && extension=="cram") error "Fasta reference is required for CRAM output" def create_index = "" @@ -105,13 +101,6 @@ process BOWTIE2_ALIGN { ${create_index} touch ${prefix}.bowtie2.log ${create_unmapped} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bowtie2: \$(echo \$(bowtie2 --version 2>&1) | sed 's/^.*bowtie2-align-s version //; s/ .*\$//') - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - pigz: \$( pigz --version 2>&1 | sed 's/pigz //g' ) - END_VERSIONS """ } diff --git a/modules/nf-core/bowtie2/align/meta.yml b/modules/nf-core/bowtie2/align/meta.yml index 38610e0ed..2d8051daa 100644 --- a/modules/nf-core/bowtie2/align/meta.yml +++ b/modules/nf-core/bowtie2/align/meta.yml @@ -14,37 +14,41 @@ tools: sequencing reads to long reference sequences. homepage: http://bowtie-bio.sourceforge.net/bowtie2/index.shtml documentation: http://bowtie-bio.sourceforge.net/bowtie2/manual.shtml - doi: 10.1038/nmeth.1923 + doi: 10.1186/gb-2009-10-3-r25 licence: ["GPL-3.0-or-later"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - reads: - type: file - description: | - List of input FastQ files of size 1 and 2 for single-end and paired-end data, - respectively. - - meta2: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'test', single_end:false ] - - index: - type: file - description: Bowtie2 genome index files - pattern: "*.ebwt" - - meta3: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'test', single_end:false ] - - fasta: - type: file - description: Bowtie2 genome fasta file - pattern: "*.fasta" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - reads: + type: file + description: | + List of input FastQ files of size 1 and 2 for single-end and paired-end data, + respectively. + ontologies: [] + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'test', single_end:false ] + - index: + type: file + description: Bowtie2 genome index files + pattern: "*.ebwt" + ontologies: [] + - - meta3: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'test', single_end:false ] + - fasta: + type: file + description: Bowtie2 genome fasta file + pattern: "*.fasta" + ontologies: [] - save_unaligned: type: boolean description: | @@ -55,38 +59,131 @@ input: description: use samtools sort (true) or samtools view (false) pattern: "true or false" output: - - sam: - type: file - description: Output SAM file containing read alignments - pattern: "*.sam" - - bam: - type: file - description: Output BAM file containing read alignments - pattern: "*.bam" - - cram: - type: file - description: Output CRAM file containing read alignments - pattern: "*.cram" - - csi: - type: file - description: Output SAM/BAM index for large inputs - pattern: "*.csi" - - crai: - type: file - description: Output CRAM index - pattern: "*.crai" - - log: - type: file - description: Aligment log - pattern: "*.log" - - fastq: - type: file - description: Unaligned FastQ files - pattern: "*.fastq.gz" - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + sam: + - - meta: + type: map + description: Groovy Map containing sample information + - "*.sam": + type: file + description: Output SAM file containing read alignments + pattern: "*.sam" + ontologies: [] + bam: + - - meta: + type: map + description: Groovy Map containing sample information + - "*.bam": + type: file + description: Output BAM file containing read alignments + pattern: "*.bam" + ontologies: [] + cram: + - - meta: + type: map + description: Groovy Map containing sample information + - "*.cram": + type: file + description: Output CRAM file containing read alignments + pattern: "*.cram" + ontologies: [] + csi: + - - meta: + type: map + description: Groovy Map containing sample information + - "*.csi": + type: file + description: Output SAM/BAM index for large inputs + pattern: "*.csi" + ontologies: [] + crai: + - - meta: + type: map + description: Groovy Map containing sample information + - "*.crai": + type: file + description: Output CRAM index + pattern: "*.crai" + ontologies: [] + log: + - - meta: + type: map + description: Groovy Map containing sample information + - "*.log": + type: file + description: Alignment log + pattern: "*.log" + ontologies: [] + fastq: + - - meta: + type: map + description: Groovy Map containing sample information + - "*fastq.gz": + type: file + description: Unaligned FastQ files + pattern: "*.fastq.gz" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + versions_bowtie2: + - - ${task.process}: + type: string + description: The name of the process + - bowtie2: + type: string + description: The name of the tool + - "bowtie2 --version 2>&1 | sed -n '1s/.*bowtie2-align-s version //p'": + type: eval + description: The expression to obtain the version of bowtie2 + versions_samtools: + - - ${task.process}: + type: string + description: The name of the process + - samtools: + type: string + description: The name of the tool + - "samtools version | sed '1!d;s/.* //'": + type: eval + description: The expression to obtain the version of samtools + versions_pigz: + - - ${task.process}: + type: string + description: The name of the process + - pigz: + type: string + description: The name of the tool + - "pigz --version 2>&1 | sed 's/pigz //'": + type: eval + description: The expression to obtain the version of pigz + +topics: + versions: + - - ${task.process}: + type: string + description: The name of the process + - bowtie2: + type: string + description: The name of the tool + - "bowtie2 --version 2>&1 | sed -n '1s/.*bowtie2-align-s version //p'": + type: eval + description: The expression to obtain the version of bowtie2 + - - ${task.process}: + type: string + description: The name of the process + - samtools: + type: string + description: The name of the tool + - "samtools version | sed '1!d;s/.* //'": + type: eval + description: The expression to obtain the version of samtools + - - ${task.process}: + type: string + description: The name of the process + - pigz: + type: string + description: The name of the tool + - "pigz --version 2>&1 | sed 's/pigz //'": + type: eval + description: The expression to obtain the version of pigz + authors: - "@joseespinosa" - "@drpatelh" diff --git a/modules/nf-core/bowtie2/align/tests/large_index.config b/modules/nf-core/bowtie2/align/tests/large_index.config index fdc1c59dd..b2f0c4058 100644 --- a/modules/nf-core/bowtie2/align/tests/large_index.config +++ b/modules/nf-core/bowtie2/align/tests/large_index.config @@ -2,4 +2,4 @@ process { withName: BOWTIE2_BUILD { ext.args = '--large-index' } -} \ No newline at end of file +} diff --git a/modules/nf-core/bowtie2/align/tests/main.nf.test b/modules/nf-core/bowtie2/align/tests/main.nf.test index 0de5950fe..1705b66dc 100644 --- a/modules/nf-core/bowtie2/align/tests/main.nf.test +++ b/modules/nf-core/bowtie2/align/tests/main.nf.test @@ -47,7 +47,7 @@ nextflow_process { file(process.out.bam[0][1]).name, process.out.log, process.out.fastq, - process.out.versions + process.out.findAll { key, val -> key.startsWith('versions') } ).match() } ) } @@ -93,7 +93,7 @@ nextflow_process { file(process.out.sam[0][1]).readLines()[0..4], process.out.log, process.out.fastq, - process.out.versions + process.out.findAll { key, val -> key.startsWith('versions') } ).match() } ) } @@ -139,7 +139,7 @@ nextflow_process { file(process.out.sam[0][1]).readLines()[0..4], process.out.log, process.out.fastq, - process.out.versions + process.out.findAll { key, val -> key.startsWith('versions') } ).match() } ) } @@ -184,7 +184,7 @@ nextflow_process { file(process.out.bam[0][1]).name, process.out.log, process.out.fastq, - process.out.versions + process.out.findAll { key, val -> key.startsWith('versions') } ).match() } ) } @@ -232,7 +232,7 @@ nextflow_process { file(process.out.bam[0][1]).name, process.out.log, process.out.fastq, - process.out.versions + process.out.findAll { key, val -> key.startsWith('versions') } ).match() } ) } @@ -280,7 +280,7 @@ nextflow_process { file(process.out.bam[0][1]).name, process.out.log, process.out.fastq, - process.out.versions + process.out.findAll { key, val -> key.startsWith('versions') } ).match() } ) } @@ -326,7 +326,7 @@ nextflow_process { file(process.out.bam[0][1]).name, process.out.log, process.out.fastq, - process.out.versions + process.out.findAll { key, val -> key.startsWith('versions') } ).match() } ) } @@ -375,7 +375,7 @@ nextflow_process { file(process.out.bam[0][1]).name, process.out.log, process.out.fastq, - process.out.versions + process.out.findAll { key, val -> key.startsWith('versions') } ).match() } ) } @@ -423,7 +423,7 @@ nextflow_process { file(process.out.bam[0][1]).name, process.out.log, process.out.fastq, - process.out.versions + process.out.findAll { key, val -> key.startsWith('versions') } ).match() } ) } @@ -468,7 +468,7 @@ nextflow_process { file(process.out.bam[0][1]).name, process.out.log, process.out.fastq, - process.out.versions + process.out.findAll { key, val -> key.startsWith('versions') } ).match() } ) @@ -566,7 +566,7 @@ nextflow_process { file(process.out.csi[0][1]).name, file(process.out.log[0][1]).name, process.out.fastq, - process.out.versions + process.out.findAll { key, val -> key.startsWith('versions') } ).match() } ) } @@ -613,7 +613,7 @@ nextflow_process { file(process.out.csi[0][1]).name, file(process.out.log[0][1]).name, process.out.fastq, - process.out.versions + process.out.findAll { key, val -> key.startsWith('versions') } ).match() } ) } diff --git a/modules/nf-core/bowtie2/align/tests/main.nf.test.snap b/modules/nf-core/bowtie2/align/tests/main.nf.test.snap index 028e7da68..b1df41e78 100644 --- a/modules/nf-core/bowtie2/align/tests/main.nf.test.snap +++ b/modules/nf-core/bowtie2/align/tests/main.nf.test.snap @@ -14,24 +14,44 @@ [ ], - [ - "versions.yml:md5,01d18ab035146ea790e9a0f70adb758f" - ] + { + "versions_bowtie2": [ + [ + "BOWTIE2_ALIGN", + "bowtie2", + "2.5.4" + ] + ], + "versions_pigz": [ + [ + "BOWTIE2_ALIGN", + "pigz", + "2.8" + ] + ], + "versions_samtools": [ + [ + "BOWTIE2_ALIGN", + "samtools", + "1.21" + ] + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-03-18T13:19:25.337323" + "timestamp": "2026-02-03T15:18:12.706444258" }, "sarscov2 - fastq, index, fasta, false, false - sam2": { "content": [ [ - "ERR5069949.2151832\t16\tMT192765.1\t17453\t42\t150M\t*\t0\t0\tACGCACATTGCTAACTAAGGGCACACTAGAACCAGAATATTTCAATTCAGTGTGTAGACTTATGAAAACTATAGGTCCAGACATGTTCCTCGGAACTTGTCGGCGTTGTCCTGCTGAAATTGTTGACACTGTGAGTGCTTTGGTTTATGA\tAAAA&1 | head -1 | sed "s/^.*bowtie2-align-s version //; s/ .*//"'), emit: versions_bowtie2, topic: versions when: task.ext.when == null || task.ext.when @@ -22,10 +22,6 @@ process BOWTIE2_BUILD { """ mkdir bowtie2 bowtie2-build $args --threads $task.cpus $fasta bowtie2/${fasta.baseName} - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bowtie2: \$(echo \$(bowtie2 --version 2>&1) | sed 's/^.*bowtie2-align-s version //; s/ .*\$//') - END_VERSIONS """ stub: @@ -33,10 +29,5 @@ process BOWTIE2_BUILD { mkdir bowtie2 touch bowtie2/${fasta.baseName}.{1..4}.bt2 touch bowtie2/${fasta.baseName}.rev.{1,2}.bt2 - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bowtie2: \$(echo \$(bowtie2 --version 2>&1) | sed 's/^.*bowtie2-align-s version //; s/ .*\$//') - END_VERSIONS """ } diff --git a/modules/nf-core/bowtie2/build/meta.yml b/modules/nf-core/bowtie2/build/meta.yml index 2d6879919..3a9d31cf5 100644 --- a/modules/nf-core/bowtie2/build/meta.yml +++ b/modules/nf-core/bowtie2/build/meta.yml @@ -15,29 +15,52 @@ tools: documentation: http://bowtie-bio.sourceforge.net/bowtie2/manual.shtml doi: 10.1038/nmeth.1923 licence: ["GPL-3.0-or-later"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'test', single_end:false ] - - fasta: - type: file - description: Input genome fasta file + - - meta: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'test', single_end:false ] + - fasta: + type: file + description: Input genome fasta file + ontologies: [] output: - - meta: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'test', single_end:false ] - - index: - type: file - description: Bowtie2 genome index files - pattern: "*.bt2" - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + index: + - - meta: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'test', single_end:false ] + - bowtie2: + type: directory + description: Bowtie2 genome index files + pattern: "*.bt2" + ontologies: [] + versions_bowtie2: + - - ${task.process}: + type: string + description: The name of the process + - bowtie2: + type: string + description: The name of the tool + - 'bowtie2 --version 2>&1 | head -1 | sed "s/^.*bowtie2-align-s version //; s/ .*//"': + type: eval + description: The expression to obtain the version of the tool + +topics: + versions: + - - ${task.process}: + type: string + description: The name of the process + - bowtie2: + type: string + description: The name of the tool + - 'bowtie2 --version 2>&1 | head -1 | sed "s/^.*bowtie2-align-s version //; s/ .*//"': + type: eval + description: The expression to obtain the version of the tool + authors: - "@joseespinosa" - "@drpatelh" diff --git a/modules/nf-core/bowtie2/build/tests/main.nf.test b/modules/nf-core/bowtie2/build/tests/main.nf.test index 163760257..a4bad2a10 100644 --- a/modules/nf-core/bowtie2/build/tests/main.nf.test +++ b/modules/nf-core/bowtie2/build/tests/main.nf.test @@ -1,7 +1,7 @@ nextflow_process { name "Test Process BOWTIE2_BUILD" - script "modules/nf-core/bowtie2/build/main.nf" + script "../main.nf" process "BOWTIE2_BUILD" tag "modules" tag "modules_nfcore" @@ -15,15 +15,20 @@ nextflow_process { """ input[0] = [ [ id:'test' ], - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] """ } } then { - assert process.success - assert snapshot(process.out).match() + assertAll ( + { assert process.success }, + { assert snapshot( + process.out.index, + process.out.findAll { key, val -> key.startsWith('versions') } + ).match() } + ) } } diff --git a/modules/nf-core/bowtie2/build/tests/main.nf.test.snap b/modules/nf-core/bowtie2/build/tests/main.nf.test.snap index 6875e0213..9f1bf0803 100644 --- a/modules/nf-core/bowtie2/build/tests/main.nf.test.snap +++ b/modules/nf-core/bowtie2/build/tests/main.nf.test.snap @@ -1,45 +1,35 @@ { "Should run without failures": { "content": [ - { - "0": [ + [ + [ + { + "id": "test" + }, [ - { - "id": "test" - }, - [ - "genome.1.bt2:md5,cbe3d0bbea55bc57c99b4bfa25b5fbdf", - "genome.2.bt2:md5,47b153cd1319abc88dda532462651fcf", - "genome.3.bt2:md5,4ed93abba181d8dfab2e303e33114777", - "genome.4.bt2:md5,c25be5f8b0378abf7a58c8a880b87626", - "genome.rev.1.bt2:md5,52be6950579598a990570fbcf5372184", - "genome.rev.2.bt2:md5,e3b4ef343dea4dd571642010a7d09597" - ] + "genome.1.bt2:md5,cbe3d0bbea55bc57c99b4bfa25b5fbdf", + "genome.2.bt2:md5,47b153cd1319abc88dda532462651fcf", + "genome.3.bt2:md5,4ed93abba181d8dfab2e303e33114777", + "genome.4.bt2:md5,c25be5f8b0378abf7a58c8a880b87626", + "genome.rev.1.bt2:md5,52be6950579598a990570fbcf5372184", + "genome.rev.2.bt2:md5,e3b4ef343dea4dd571642010a7d09597" ] - ], - "1": [ - "versions.yml:md5,1df11e9b82891527271c889c880d3974" - ], - "index": [ + ] + ], + { + "versions_bowtie2": [ [ - { - "id": "test" - }, - [ - "genome.1.bt2:md5,cbe3d0bbea55bc57c99b4bfa25b5fbdf", - "genome.2.bt2:md5,47b153cd1319abc88dda532462651fcf", - "genome.3.bt2:md5,4ed93abba181d8dfab2e303e33114777", - "genome.4.bt2:md5,c25be5f8b0378abf7a58c8a880b87626", - "genome.rev.1.bt2:md5,52be6950579598a990570fbcf5372184", - "genome.rev.2.bt2:md5,e3b4ef343dea4dd571642010a7d09597" - ] + "BOWTIE2_BUILD", + "bowtie2", + "2.5.4" ] - ], - "versions": [ - "versions.yml:md5,1df11e9b82891527271c889c880d3974" ] } ], - "timestamp": "2023-11-23T11:51:01.107681997" + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.2" + }, + "timestamp": "2026-01-28T17:52:30.165111" } } \ No newline at end of file diff --git a/modules/nf-core/bowtie2/build/tests/tags.yml b/modules/nf-core/bowtie2/build/tests/tags.yml deleted file mode 100644 index 81aa61dab..000000000 --- a/modules/nf-core/bowtie2/build/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -bowtie2/build: - - modules/nf-core/bowtie2/build/** diff --git a/modules/nf-core/bwa/index/environment.yml b/modules/nf-core/bwa/index/environment.yml index 126e00344..54e679492 100644 --- a/modules/nf-core/bwa/index/environment.yml +++ b/modules/nf-core/bwa/index/environment.yml @@ -1,7 +1,13 @@ -name: bwa_index +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda - - defaults + dependencies: - - bioconda::bwa=0.7.18 + # renovate: datasource=conda depName=bioconda/bwa + - bioconda::bwa=0.7.19 + # renovate: datasource=conda depName=bioconda/htslib + - bioconda::htslib=1.22.1 + # renovate: datasource=conda depName=bioconda/samtools + - bioconda::samtools=1.22.1 diff --git a/modules/nf-core/bwa/index/main.nf b/modules/nf-core/bwa/index/main.nf index 2e48b6caa..03f00422f 100644 --- a/modules/nf-core/bwa/index/main.nf +++ b/modules/nf-core/bwa/index/main.nf @@ -1,18 +1,20 @@ process BWA_INDEX { tag "$fasta" - label 'process_single' + // NOTE requires 5.37N memory where N is the size of the database + // source: https://bio-bwa.sourceforge.net/bwa.shtml#8 + memory { 7.B * fasta.size() } conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bwa:0.7.18--he4a0461_0' : - 'biocontainers/bwa:0.7.18--he4a0461_0' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/d7/d7e24dc1e4d93ca4d3a76a78d4c834a7be3985b0e1e56fddd61662e047863a8a/data' : + 'community.wave.seqera.io/library/bwa_htslib_samtools:83b50ff84ead50d0' }" input: tuple val(meta), path(fasta) output: - tuple val(meta), path(bwa) , emit: index - path "versions.yml" , emit: versions + tuple val(meta), path("bwa"), emit: index + tuple val("${task.process}"), val('bwa'), eval('bwa 2>&1 | sed -n "s/^Version: //p"'), topic: versions, emit: versions_bwa when: task.ext.when == null || task.ext.when @@ -27,27 +29,16 @@ process BWA_INDEX { $args \\ -p bwa/${prefix} \\ $fasta - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bwa: \$(echo \$(bwa 2>&1) | sed 's/^.*Version: //; s/Contact:.*\$//') - END_VERSIONS """ stub: def prefix = task.ext.prefix ?: "${fasta.baseName}" """ mkdir bwa - touch bwa/${prefix}.amb touch bwa/${prefix}.ann touch bwa/${prefix}.bwt touch bwa/${prefix}.pac touch bwa/${prefix}.sa - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bwa: \$(echo \$(bwa 2>&1) | sed 's/^.*Version: //; s/Contact:.*\$//') - END_VERSIONS """ } diff --git a/modules/nf-core/bwa/index/meta.yml b/modules/nf-core/bwa/index/meta.yml index 6bbc87a64..f5bf7f52a 100644 --- a/modules/nf-core/bwa/index/meta.yml +++ b/modules/nf-core/bwa/index/meta.yml @@ -14,33 +14,58 @@ tools: documentation: https://bio-bwa.sourceforge.net/bwa.shtml arxiv: arXiv:1303.3997 licence: ["GPL-3.0-or-later"] + identifier: "biotools:bwa" input: - - meta: - type: map - description: | - Groovy Map containing reference information. - e.g. [ id:'test', single_end:false ] - - fasta: - type: file - description: Input genome fasta file + - - meta: + type: map + description: | + Groovy Map containing reference information. + e.g. [ id:'test', single_end:false ] + - fasta: + type: file + description: Input genome fasta file + ontologies: + - edam: "http://edamontology.org/data_2044" # Sequence + - edam: "http://edamontology.org/format_1929" # FASTA output: - - meta: - type: map - description: | - Groovy Map containing reference information. - e.g. [ id:'test', single_end:false ] - - index: - type: file - description: BWA genome index files - pattern: "*.{amb,ann,bwt,pac,sa}" - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + index: + - - meta: + type: map + description: | + Groovy Map containing reference information. + e.g. [ id:'test', single_end:false ] + - bwa: + type: map + description: | + Groovy Map containing reference information. + e.g. [ id:'test', single_end:false ] + pattern: "*.{amb,ann,bwt,pac,sa}" + ontologies: + - edam: "http://edamontology.org/data_3210" # Genome index + versions_bwa: + - - ${task.process}: + type: string + description: The process the versions were collected from + - bwa: + type: string + description: The tool name + - 'bwa 2>&1 | sed -n "s/^Version: //p"': + type: string + description: The command used to generate the version of the tool +topics: + versions: + - - ${task.process}: + type: string + description: The process the versions were collected from + - bwa: + type: string + description: The tool name + - 'bwa 2>&1 | sed -n "s/^Version: //p"': + type: string + description: The command used to generate the version of the tool authors: - "@drpatelh" - "@maxulysse" maintainers: - - "@drpatelh" - "@maxulysse" - "@gallvp" diff --git a/modules/nf-core/bwa/index/tests/main.nf.test b/modules/nf-core/bwa/index/tests/main.nf.test index af33e73ca..f0fba82a1 100644 --- a/modules/nf-core/bwa/index/tests/main.nf.test +++ b/modules/nf-core/bwa/index/tests/main.nf.test @@ -22,8 +22,32 @@ nextflow_process { } then { + assert process.success + assertAll( + { assert snapshot(process.out).match() } + ) + } + + } + + test("BWA index - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [id: 'test'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + """ + } + } + + then { + assert process.success assertAll( - { assert process.success }, { assert snapshot(process.out).match() } ) } diff --git a/modules/nf-core/bwa/index/tests/main.nf.test.snap b/modules/nf-core/bwa/index/tests/main.nf.test.snap index 7c8f04657..21a6f73c3 100644 --- a/modules/nf-core/bwa/index/tests/main.nf.test.snap +++ b/modules/nf-core/bwa/index/tests/main.nf.test.snap @@ -1,4 +1,57 @@ { + "BWA index - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + [ + "genome.amb:md5,d41d8cd98f00b204e9800998ecf8427e", + "genome.ann:md5,d41d8cd98f00b204e9800998ecf8427e", + "genome.bwt:md5,d41d8cd98f00b204e9800998ecf8427e", + "genome.pac:md5,d41d8cd98f00b204e9800998ecf8427e", + "genome.sa:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "1": [ + [ + "BWA_INDEX", + "bwa", + "0.7.19-r1273" + ] + ], + "index": [ + [ + { + "id": "test" + }, + [ + "genome.amb:md5,d41d8cd98f00b204e9800998ecf8427e", + "genome.ann:md5,d41d8cd98f00b204e9800998ecf8427e", + "genome.bwt:md5,d41d8cd98f00b204e9800998ecf8427e", + "genome.pac:md5,d41d8cd98f00b204e9800998ecf8427e", + "genome.sa:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "versions_bwa": [ + [ + "BWA_INDEX", + "bwa", + "0.7.19-r1273" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.2" + }, + "timestamp": "2026-01-23T16:58:59.966558606" + }, "BWA index": { "content": [ { @@ -17,7 +70,11 @@ ] ], "1": [ - "versions.yml:md5,a64462ac7dfb21f4ade9b02e7f65c5bb" + [ + "BWA_INDEX", + "bwa", + "0.7.19-r1273" + ] ], "index": [ [ @@ -33,15 +90,19 @@ ] ] ], - "versions": [ - "versions.yml:md5,a64462ac7dfb21f4ade9b02e7f65c5bb" + "versions_bwa": [ + [ + "BWA_INDEX", + "bwa", + "0.7.19-r1273" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-05-16T11:40:09.925307" + "timestamp": "2026-01-23T16:58:53.330725134" } } \ No newline at end of file diff --git a/modules/nf-core/bwa/index/tests/tags.yml b/modules/nf-core/bwa/index/tests/tags.yml deleted file mode 100644 index 28bb483c4..000000000 --- a/modules/nf-core/bwa/index/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -bwa/index: - - modules/nf-core/bwa/index/** diff --git a/modules/nf-core/bwa/mem/environment.yml b/modules/nf-core/bwa/mem/environment.yml index 3aa9f0cca..54e679492 100644 --- a/modules/nf-core/bwa/mem/environment.yml +++ b/modules/nf-core/bwa/mem/environment.yml @@ -1,10 +1,13 @@ -name: bwa_mem +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda - - defaults + dependencies: - - bwa=0.7.18 + # renovate: datasource=conda depName=bioconda/bwa + - bioconda::bwa=0.7.19 + # renovate: datasource=conda depName=bioconda/htslib + - bioconda::htslib=1.22.1 # renovate: datasource=conda depName=bioconda/samtools - - samtools=1.20 - - htslib=1.20.0 + - bioconda::samtools=1.22.1 diff --git a/modules/nf-core/bwa/mem/main.nf b/modules/nf-core/bwa/mem/main.nf index 9c815f0c8..e3732673e 100644 --- a/modules/nf-core/bwa/mem/main.nf +++ b/modules/nf-core/bwa/mem/main.nf @@ -4,8 +4,8 @@ process BWA_MEM { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/mulled-v2-fe8faa35dbf6dc65a0f7f5d4ea12e31a79f73e40:1bd8542a8a0b42e0981337910954371d0230828e-0' : - 'biocontainers/mulled-v2-fe8faa35dbf6dc65a0f7f5d4ea12e31a79f73e40:1bd8542a8a0b42e0981337910954371d0230828e-0' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/d7/d7e24dc1e4d93ca4d3a76a78d4c834a7be3985b0e1e56fddd61662e047863a8a/data' : + 'community.wave.seqera.io/library/bwa_htslib_samtools:83b50ff84ead50d0' }" input: tuple val(meta) , path(reads) @@ -18,7 +18,8 @@ process BWA_MEM { tuple val(meta), path("*.cram") , emit: cram, optional: true tuple val(meta), path("*.csi") , emit: csi, optional: true tuple val(meta), path("*.crai") , emit: crai, optional: true - path "versions.yml" , emit: versions + tuple val("${task.process}"), val('bwa'), eval('bwa 2>&1 | sed -n "s/^Version: //p"'), topic: versions, emit: versions_bwa + tuple val("${task.process}"), val('samtools'), eval("samtools version | sed '1!d;s/.* //'"), topic: versions, emit: versions_samtools when: task.ext.when == null || task.ext.when @@ -44,19 +45,11 @@ process BWA_MEM { \$INDEX \\ $reads \\ | samtools $samtools_command $args2 ${reference} --threads $task.cpus -o ${prefix}.${extension} - - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bwa: \$(echo \$(bwa 2>&1) | sed 's/^.*Version: //; s/Contact:.*\$//') - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - END_VERSIONS """ stub: - def args = task.ext.args ?: '' def args2 = task.ext.args2 ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def samtools_command = sort_bam ? 'sort' : 'view' def extension = args2.contains("--output-fmt sam") ? "sam" : args2.contains("--output-fmt cram") ? "cram": sort_bam && args2.contains("-O cram")? "cram": @@ -66,11 +59,5 @@ process BWA_MEM { touch ${prefix}.${extension} touch ${prefix}.csi touch ${prefix}.crai - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bwa: \$(echo \$(bwa 2>&1) | sed 's/^.*Version: //; s/Contact:.*\$//') - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - END_VERSIONS """ } diff --git a/modules/nf-core/bwa/mem/meta.yml b/modules/nf-core/bwa/mem/meta.yml index b126dd86a..450a3fe99 100644 --- a/modules/nf-core/bwa/mem/meta.yml +++ b/modules/nf-core/bwa/mem/meta.yml @@ -16,56 +16,129 @@ tools: homepage: http://bio-bwa.sourceforge.net/ documentation: https://bio-bwa.sourceforge.net/bwa.shtml arxiv: arXiv:1303.3997 - licence: ["GPL-3.0-or-later"] + licence: + - "GPL-3.0-or-later" + identifier: "biotools:bwa" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - reads: - type: file - description: | - List of input FastQ files of size 1 and 2 for single-end and paired-end data, - respectively. - - meta2: - type: map - description: | - Groovy Map containing reference information. - e.g. [ id:'test', single_end:false ] - - index: - type: file - description: BWA genome index files - pattern: "Directory containing BWA index *.{amb,ann,bwt,pac,sa}" - - fasta: - type: file - description: Reference genome in FASTA format - pattern: "*.{fasta,fa}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - reads: + type: file + description: | + List of input FastQ files of size 1 and 2 for single-end and paired-end data, + respectively. + ontologies: + - edam: "http://edamontology.org/data_2044" + - edam: "http://edamontology.org/format_1930" + - - meta2: + type: map + description: | + Groovy Map containing reference information. + e.g. [ id:'test', single_end:false ] + - index: + type: file + description: BWA genome index files + pattern: "Directory containing BWA index *.{amb,ann,bwt,pac,sa}" + ontologies: + - edam: "http://edamontology.org/data_3210" + - - meta3: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - fasta: + type: file + description: Reference genome in FASTA format + pattern: "*.{fasta,fa}" + ontologies: + - edam: "http://edamontology.org/data_2044" + - edam: "http://edamontology.org/format_1929" - sort_bam: type: boolean description: use samtools sort (true) or samtools view (false) pattern: "true or false" output: - - bam: - type: file - description: Output BAM file containing read alignments - pattern: "*.{bam}" - - cram: - type: file - description: Output CRAM file containing read alignments - pattern: "*.{cram}" - - csi: - type: file - description: Optional index file for BAM file - pattern: "*.{csi}" - - crai: - type: file - description: Optional index file for CRAM file - pattern: "*.{crai}" - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + bam: + - - meta: + type: map + description: Groovy Map containing sample information + - "*.bam": + type: file + description: Output BAM file containing read alignments + pattern: "*.{bam}" + ontologies: + - edam: "http://edamontology.org/format_2572" + cram: + - - meta: + type: map + description: Groovy Map containing sample information + - "*.cram": + type: file + description: Output CRAM file containing read alignments + pattern: "*.{cram}" + ontologies: + - edam: "http://edamontology.org/format_3462" + csi: + - - meta: + type: map + description: Groovy Map containing sample information + - "*.csi": + type: file + description: Optional index file for BAM file + pattern: "*.{csi}" + ontologies: [] + crai: + - - meta: + type: map + description: Groovy Map containing sample information + - "*.crai": + type: file + description: Optional index file for CRAM file + pattern: "*.{crai}" + ontologies: [] + versions_bwa: + - - ${task.process}: + type: string + description: The name of the process + - bwa: + type: string + description: The name of the tool + - 'bwa 2>&1 | sed -n "s/^Version: //p"': + type: eval + description: The expression to obtain the version of the tool + versions_samtools: + - - ${task.process}: + type: string + description: The name of the process + - samtools: + type: string + description: The name of the tool + - samtools version | sed '1!d;s/.* //': + type: eval + description: The expression to obtain the version of the tool +topics: + versions: + - - ${task.process}: + type: string + description: The name of the process + - bwa: + type: string + description: The name of the tool + - 'bwa 2>&1 | sed -n "s/^Version: //p"': + type: eval + description: The expression to obtain the version of the tool + - - ${task.process}: + type: string + description: The name of the process + - samtools: + type: string + description: The name of the tool + - samtools version | sed '1!d;s/.* //': + type: eval + description: The expression to obtain the version of the tool authors: - "@drpatelh" - "@jeremy1805" diff --git a/modules/nf-core/bwa/mem/tests/main.nf.test b/modules/nf-core/bwa/mem/tests/main.nf.test index 5de2c2f45..6486ab000 100644 --- a/modules/nf-core/bwa/mem/tests/main.nf.test +++ b/modules/nf-core/bwa/mem/tests/main.nf.test @@ -48,8 +48,7 @@ nextflow_process { process.out.cram, process.out.csi, process.out.crai, - process.out.versions, - bam(process.out.bam[0][1]).getHeaderMD5(), + process.out.findAll { key, val -> key.startsWith("versions") }, bam(process.out.bam[0][1]).getReadsMD5() ).match() } @@ -83,8 +82,7 @@ nextflow_process { process.out.cram, process.out.csi, process.out.crai, - process.out.versions, - bam(process.out.bam[0][1]).getHeaderMD5(), + process.out.findAll { key, val -> key.startsWith("versions") }, bam(process.out.bam[0][1]).getReadsMD5() ).match() } @@ -119,8 +117,7 @@ nextflow_process { process.out.cram, process.out.csi, process.out.crai, - process.out.versions, - bam(process.out.bam[0][1]).getHeaderMD5(), + process.out.findAll { key, val -> key.startsWith("versions") }, bam(process.out.bam[0][1]).getReadsMD5() ).match() } @@ -155,8 +152,7 @@ nextflow_process { process.out.cram, process.out.csi, process.out.crai, - process.out.versions, - bam(process.out.bam[0][1]).getHeaderMD5(), + process.out.findAll { key, val -> key.startsWith("versions") }, bam(process.out.bam[0][1]).getReadsMD5() ).match() } @@ -191,8 +187,7 @@ nextflow_process { process.out.cram, process.out.csi, process.out.crai, - process.out.versions, - bam(process.out.bam[0][1]).getHeaderMD5(), + process.out.findAll { key, val -> key.startsWith("versions") }, bam(process.out.bam[0][1]).getReadsMD5() ).match() } diff --git a/modules/nf-core/bwa/mem/tests/main.nf.test.snap b/modules/nf-core/bwa/mem/tests/main.nf.test.snap index 2079ea224..8aca4b234 100644 --- a/modules/nf-core/bwa/mem/tests/main.nf.test.snap +++ b/modules/nf-core/bwa/mem/tests/main.nf.test.snap @@ -10,17 +10,29 @@ [ ], - [ - "versions.yml:md5,478b816fbd37871f5e8c617833d51d80" - ], - "b6d9cb250261a4c125413c5d867d87a7", + { + "versions_bwa": [ + [ + "BWA_MEM", + "bwa", + "0.7.19-r1273" + ] + ], + "versions_samtools": [ + [ + "BWA_MEM", + "samtools", + "1.22.1" + ] + ] + }, "798439cbd7fd81cbcc5078022dc5479d" ], + "timestamp": "2026-02-18T12:42:52.901827", "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-08-02T12:22:28.051598" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } }, "Single-End Sort": { "content": [ @@ -33,17 +45,29 @@ [ ], - [ - "versions.yml:md5,478b816fbd37871f5e8c617833d51d80" - ], - "848434ae4b79cfdcb2281c60b33663ce", + { + "versions_bwa": [ + [ + "BWA_MEM", + "bwa", + "0.7.19-r1273" + ] + ], + "versions_samtools": [ + [ + "BWA_MEM", + "samtools", + "1.22.1" + ] + ] + }, "94fcf617f5b994584c4e8d4044e16b4f" ], + "timestamp": "2026-02-18T12:43:01.149915", "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-08-02T12:22:39.671154" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } }, "Paired-End": { "content": [ @@ -56,17 +80,29 @@ [ ], - [ - "versions.yml:md5,478b816fbd37871f5e8c617833d51d80" - ], - "5b34d31be84478761f789e3e2e805e31", + { + "versions_bwa": [ + [ + "BWA_MEM", + "bwa", + "0.7.19-r1273" + ] + ], + "versions_samtools": [ + [ + "BWA_MEM", + "samtools", + "1.22.1" + ] + ] + }, "57aeef88ed701a8ebc8e2f0a381b2a6" ], + "timestamp": "2026-02-18T12:43:09.528042", "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-08-02T12:22:51.919479" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } }, "Paired-End Sort": { "content": [ @@ -79,17 +115,29 @@ [ ], - [ - "versions.yml:md5,478b816fbd37871f5e8c617833d51d80" - ], - "69003376d9a8952622d8587b39c3eaae", + { + "versions_bwa": [ + [ + "BWA_MEM", + "bwa", + "0.7.19-r1273" + ] + ], + "versions_samtools": [ + [ + "BWA_MEM", + "samtools", + "1.22.1" + ] + ] + }, "af8628d9df18b2d3d4f6fd47ef2bb872" ], + "timestamp": "2026-02-18T12:43:17.876121", "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-08-02T12:23:00.833562" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } }, "Single-end - stub": { "content": [ @@ -125,7 +173,18 @@ ] ], "4": [ - "versions.yml:md5,478b816fbd37871f5e8c617833d51d80" + [ + "BWA_MEM", + "bwa", + "0.7.19-r1273" + ] + ], + "5": [ + [ + "BWA_MEM", + "samtools", + "1.22.1" + ] ], "bam": [ [ @@ -157,16 +216,27 @@ "test.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,478b816fbd37871f5e8c617833d51d80" + "versions_bwa": [ + [ + "BWA_MEM", + "bwa", + "0.7.19-r1273" + ] + ], + "versions_samtools": [ + [ + "BWA_MEM", + "samtools", + "1.22.1" + ] ] } ], + "timestamp": "2026-02-18T12:43:33.853248", "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-08-02T12:31:29.46282" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } }, "Paired-End - no fasta": { "content": [ @@ -179,17 +249,29 @@ [ ], - [ - "versions.yml:md5,478b816fbd37871f5e8c617833d51d80" - ], - "5b34d31be84478761f789e3e2e805e31", + { + "versions_bwa": [ + [ + "BWA_MEM", + "bwa", + "0.7.19-r1273" + ] + ], + "versions_samtools": [ + [ + "BWA_MEM", + "samtools", + "1.22.1" + ] + ] + }, "57aeef88ed701a8ebc8e2f0a381b2a6" ], + "timestamp": "2026-02-18T12:43:26.121474", "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-08-02T12:23:09.942545" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } }, "Paired-end - stub": { "content": [ @@ -225,7 +307,18 @@ ] ], "4": [ - "versions.yml:md5,478b816fbd37871f5e8c617833d51d80" + [ + "BWA_MEM", + "bwa", + "0.7.19-r1273" + ] + ], + "5": [ + [ + "BWA_MEM", + "samtools", + "1.22.1" + ] ], "bam": [ [ @@ -257,15 +350,26 @@ "test.csi:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,478b816fbd37871f5e8c617833d51d80" + "versions_bwa": [ + [ + "BWA_MEM", + "bwa", + "0.7.19-r1273" + ] + ], + "versions_samtools": [ + [ + "BWA_MEM", + "samtools", + "1.22.1" + ] ] } ], + "timestamp": "2026-02-18T12:43:42.119907", "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-08-02T12:31:37.757037" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } } } \ No newline at end of file diff --git a/modules/nf-core/bwa/mem/tests/tags.yml b/modules/nf-core/bwa/mem/tests/tags.yml deleted file mode 100644 index 82992d1f0..000000000 --- a/modules/nf-core/bwa/mem/tests/tags.yml +++ /dev/null @@ -1,3 +0,0 @@ -bwa/mem: - - modules/nf-core/bwa/index/** - - modules/nf-core/bwa/mem/** diff --git a/modules/nf-core/chromap/chromap/chromap-chromap.diff b/modules/nf-core/chromap/chromap/chromap-chromap.diff index 1abc66366..281269e2f 100644 --- a/modules/nf-core/chromap/chromap/chromap-chromap.diff +++ b/modules/nf-core/chromap/chromap/chromap-chromap.diff @@ -1,4 +1,5 @@ -Changes in module 'nf-core/chromap/chromap' +Changes in component 'nf-core/chromap/chromap' +'modules/nf-core/chromap/chromap/environment.yml' is unchanged 'modules/nf-core/chromap/chromap/meta.yml' is unchanged Changes in 'chromap/chromap/main.nf': --- modules/nf-core/chromap/chromap/main.nf @@ -33,9 +34,7 @@ Changes in 'chromap/chromap/main.nf': cat <<-END_VERSIONS > versions.yml -'modules/nf-core/chromap/chromap/environment.yml' is unchanged 'modules/nf-core/chromap/chromap/tests/main.nf.test.snap' is unchanged -'modules/nf-core/chromap/chromap/tests/tags.yml' is unchanged 'modules/nf-core/chromap/chromap/tests/nextflow.config' is unchanged 'modules/nf-core/chromap/chromap/tests/main.nf.test' is unchanged ************************************************************ diff --git a/modules/nf-core/chromap/chromap/environment.yml b/modules/nf-core/chromap/chromap/environment.yml index 616ea6d2e..ee8f77a8d 100644 --- a/modules/nf-core/chromap/chromap/environment.yml +++ b/modules/nf-core/chromap/chromap/environment.yml @@ -1,8 +1,8 @@ -name: chromap_chromap +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::chromap=0.2.6 - bioconda::samtools=1.20 diff --git a/modules/nf-core/chromap/chromap/meta.yml b/modules/nf-core/chromap/chromap/meta.yml index 140299ed6..f9ec083e4 100644 --- a/modules/nf-core/chromap/chromap/meta.yml +++ b/modules/nf-core/chromap/chromap/meta.yml @@ -21,77 +21,114 @@ tools: documentation: https://github.com/haowenz/chromap tool_dev_url: https://github.com/haowenz/chromap licence: ["GPL v3"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - reads: - type: file - description: | - List of input FastQ files of size 1 and 2 for single-end and paired-end data, - respectively. - - meta2: - type: map - description: | - Groovy Map containing information for the fasta - e.g. [ id:'test' ] - - fasta: - type: file - description: | - The fasta reference file. - - meta3: - type: map - description: | - Groovy Map containing information for the index - e.g. [ id:'test' ] - - index: - type: file - description: | - Chromap genome index files (*.index) + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - reads: + type: file + description: | + List of input FastQ files of size 1 and 2 for single-end and paired-end data, + respectively. + ontologies: [] + - - meta2: + type: map + description: | + Groovy Map containing information for the fasta + e.g. [ id:'test' ] + - fasta: + type: file + description: | + The fasta reference file. + ontologies: [] + - - meta3: + type: map + description: | + Groovy Map containing information for the index + e.g. [ id:'test' ] + - index: + type: file + description: | + Chromap genome index files (*.index) + ontologies: [] - barcodes: type: file description: | Cell barcode files + ontologies: [] - whitelist: type: file description: | Cell barcode whitelist file + ontologies: [] - chr_order: type: file description: | Custom chromosome order + ontologies: [] - pairs_chr_order: type: file description: | Natural chromosome order for pairs flipping + ontologies: [] output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - - bed: - type: file - description: BED file - pattern: "*.bed.gz" - - bam: - type: file - description: BAM file - pattern: "*.bam" - - tagAlign: - type: file - description: tagAlign file - pattern: "*.tagAlign.gz" - - pairs: - type: file - description: pairs file - pattern: "*.pairs.gz" + bed: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.bed.gz": + type: file + description: BED file + pattern: "*.bed.gz" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + bam: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.bam": + type: file + description: BAM file + pattern: "*.bam" + ontologies: [] + tagAlign: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.tagAlign.gz": + type: file + description: tagAlign file + pattern: "*.tagAlign.gz" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + pairs: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.pairs.gz": + type: file + description: pairs file + pattern: "*.pairs.gz" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@mahesh-panchal" - "@joseespinosa" diff --git a/modules/nf-core/chromap/chromap/tests/main.nf.test b/modules/nf-core/chromap/chromap/tests/main.nf.test index a20382f9b..1b0dcdcb8 100644 --- a/modules/nf-core/chromap/chromap/tests/main.nf.test +++ b/modules/nf-core/chromap/chromap/tests/main.nf.test @@ -37,7 +37,7 @@ nextflow_process { file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] input[1] = [ - [:], + [:], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] input[2] = CHROMAP_INDEX.out.index @@ -70,7 +70,7 @@ nextflow_process { ] ] input[1] = [ - [:], + [:], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] input[2] = CHROMAP_INDEX.out.index @@ -96,18 +96,18 @@ nextflow_process { when { config "./nextflow.config" - + process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - [ + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ] input[1] = [ - [:], + [:], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] input[2] = CHROMAP_INDEX.out.index @@ -122,12 +122,12 @@ nextflow_process { then { assertAll( { assert process.success }, - { + { assert snapshot( bam(process.out.bam[0][1]).getHeaderMD5(), bam(process.out.bam[0][1]).getReadsMD5(), process.out.versions - ) + ) } ) } @@ -146,7 +146,7 @@ nextflow_process { file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] input[1] = [ - [:], + [:], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] input[2] = CHROMAP_INDEX.out.index diff --git a/modules/nf-core/chromap/chromap/tests/tags.yml b/modules/nf-core/chromap/chromap/tests/tags.yml deleted file mode 100644 index 3b288fa27..000000000 --- a/modules/nf-core/chromap/chromap/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -chromap/chromap: - - modules/nf-core/chromap/chromap/** diff --git a/modules/nf-core/chromap/index/environment.yml b/modules/nf-core/chromap/index/environment.yml index d83b301af..af9c7980d 100644 --- a/modules/nf-core/chromap/index/environment.yml +++ b/modules/nf-core/chromap/index/environment.yml @@ -1,7 +1,7 @@ -name: chromap_index +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::chromap=0.2.6 diff --git a/modules/nf-core/chromap/index/meta.yml b/modules/nf-core/chromap/index/meta.yml index 6559509ca..aeae076f2 100644 --- a/modules/nf-core/chromap/index/meta.yml +++ b/modules/nf-core/chromap/index/meta.yml @@ -12,29 +12,36 @@ tools: documentation: https://github.com/haowenz/chromap tool_dev_url: https://github.com/haowenz/chromap licence: ["GPL v3"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'test' ] - - fasta: - type: file - description: Fasta reference file. + - - meta: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'test' ] + - fasta: + type: file + description: Fasta reference file. + ontologies: [] output: - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - - meta: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'test' ] - - index: - type: file - description: Index file of the reference genome - pattern: "*.{index}" + index: + - - meta: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'test' ] + - "*.index": + type: file + description: Index file of the reference genome + pattern: "*.{index}" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@mahesh-panchal" - "@joseespinosa" diff --git a/modules/nf-core/chromap/index/tests/main.nf.test b/modules/nf-core/chromap/index/tests/main.nf.test index 619e085bb..4c135f437 100644 --- a/modules/nf-core/chromap/index/tests/main.nf.test +++ b/modules/nf-core/chromap/index/tests/main.nf.test @@ -16,7 +16,7 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] """ } @@ -27,7 +27,7 @@ nextflow_process { { assert process.success }, { assert snapshot(file(process.out.index[0][1]).name, process.out.versions) - .match() + .match() } ) } @@ -40,9 +40,9 @@ nextflow_process { when { process { """ - input[0] = [ + input[0] = [ [ id:'test' ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] """ } diff --git a/modules/nf-core/chromap/index/tests/tags.yml b/modules/nf-core/chromap/index/tests/tags.yml deleted file mode 100644 index 360817cbc..000000000 --- a/modules/nf-core/chromap/index/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -chromap/index: - - modules/nf-core/chromap/index/** diff --git a/modules/nf-core/custom/getchromsizes/environment.yml b/modules/nf-core/custom/getchromsizes/environment.yml deleted file mode 100644 index 2ecd0128f..000000000 --- a/modules/nf-core/custom/getchromsizes/environment.yml +++ /dev/null @@ -1,8 +0,0 @@ -name: custom_getchromsizes -channels: - - conda-forge - - bioconda - - defaults -dependencies: - - bioconda::samtools=1.20 - - bioconda::htslib=1.20 diff --git a/modules/nf-core/custom/getchromsizes/main.nf b/modules/nf-core/custom/getchromsizes/main.nf deleted file mode 100644 index 3edf7c221..000000000 --- a/modules/nf-core/custom/getchromsizes/main.nf +++ /dev/null @@ -1,47 +0,0 @@ -process CUSTOM_GETCHROMSIZES { - tag "$fasta" - label 'process_single' - - conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.20--h50ea8bc_0' : - 'biocontainers/samtools:1.20--h50ea8bc_0' }" - - input: - tuple val(meta), path(fasta) - - output: - tuple val(meta), path ("*.sizes"), emit: sizes - tuple val(meta), path ("*.fai") , emit: fai - tuple val(meta), path ("*.gzi") , emit: gzi, optional: true - path "versions.yml" , emit: versions - - when: - task.ext.when == null || task.ext.when - - script: - def args = task.ext.args ?: '' - """ - samtools faidx $fasta - cut -f 1,2 ${fasta}.fai > ${fasta}.sizes - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - getchromsizes: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - END_VERSIONS - """ - - stub: - """ - touch ${fasta}.fai - touch ${fasta}.sizes - if [[ "${fasta.extension}" == "gz" ]]; then - touch ${fasta}.gzi - fi - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - getchromsizes: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - END_VERSIONS - """ -} diff --git a/modules/nf-core/custom/getchromsizes/meta.yml b/modules/nf-core/custom/getchromsizes/meta.yml deleted file mode 100644 index 529be07e4..000000000 --- a/modules/nf-core/custom/getchromsizes/meta.yml +++ /dev/null @@ -1,54 +0,0 @@ -name: custom_getchromsizes -description: Generates a FASTA file of chromosome sizes and a fasta index file -keywords: - - fasta - - chromosome - - indexing -tools: - - samtools: - description: Tools for dealing with SAM, BAM and CRAM files - homepage: http://www.htslib.org/ - documentation: http://www.htslib.org/doc/samtools.html - tool_dev_url: https://github.com/samtools/samtools - doi: 10.1093/bioinformatics/btp352 - licence: ["MIT"] -input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - fasta: - type: file - description: FASTA file - pattern: "*.{fa,fasta,fna,fas}" -output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - sizes: - type: file - description: File containing chromosome lengths - pattern: "*.{sizes}" - - fai: - type: file - description: FASTA index file - pattern: "*.{fai}" - - gzi: - type: file - description: Optional gzip index file for compressed inputs - pattern: "*.gzi" - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" -authors: - - "@tamara-hodgetts" - - "@chris-cheshire" - - "@muffato" -maintainers: - - "@tamara-hodgetts" - - "@chris-cheshire" - - "@muffato" diff --git a/modules/nf-core/custom/getchromsizes/tests/main.nf.test b/modules/nf-core/custom/getchromsizes/tests/main.nf.test deleted file mode 100644 index 2f741a4bb..000000000 --- a/modules/nf-core/custom/getchromsizes/tests/main.nf.test +++ /dev/null @@ -1,99 +0,0 @@ -nextflow_process { - - name "Test Process CUSTOM_GETCHROMSIZES" - script "../main.nf" - process "CUSTOM_GETCHROMSIZES" - - tag "modules" - tag "modules_nfcore" - tag "custom" - tag "custom/getchromsizes" - - test("test_custom_getchromsizes") { - - when { - process { - """ - input[0] = Channel.of([ - [ id:'test' ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) - ]) - """ - } - } - - then { - assertAll ( - { assert process.success }, - { assert snapshot(process.out).match() } - ) - } - } - - test("test_custom_getchromsizes_bgzip") { - - when { - process { - """ - input[0] = Channel.of([ - [ id:'test' ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.gz', checkIfExists: true) - ]) - """ - } - } - - then { - assertAll ( - { assert process.success }, - { assert snapshot(process.out).match() } - ) - } - } - - test("test_custom_getchromsizes - stub") { - - options "-stub" - - when { - process { - """ - input[0] = Channel.of([ - [ id:'test' ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) - ]) - """ - } - } - - then { - assertAll ( - { assert process.success }, - { assert snapshot(process.out).match() } - ) - } - } - - test("test_custom_getchromsizes_bgzip - stub") { - - options "-stub" - - when { - process { - """ - input[0] = Channel.of([ - [ id:'test' ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.gz', checkIfExists: true) - ]) - """ - } - } - - then { - assertAll ( - { assert process.success }, - { assert snapshot(process.out).match() } - ) - } - } -} diff --git a/modules/nf-core/custom/getchromsizes/tests/tags.yml b/modules/nf-core/custom/getchromsizes/tests/tags.yml deleted file mode 100644 index d89a805fd..000000000 --- a/modules/nf-core/custom/getchromsizes/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -custom/getchromsizes: - - modules/nf-core/custom/getchromsizes/** diff --git a/modules/nf-core/deeptools/computematrix/environment.yml b/modules/nf-core/deeptools/computematrix/environment.yml index 279d1eac6..9d0790593 100644 --- a/modules/nf-core/deeptools/computematrix/environment.yml +++ b/modules/nf-core/deeptools/computematrix/environment.yml @@ -1,7 +1,7 @@ -name: deeptools_computematrix +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda - - defaults dependencies: - - "bioconda::deeptools=3.5.5" + - bioconda::deeptools=3.5.6 diff --git a/modules/nf-core/deeptools/computematrix/main.nf b/modules/nf-core/deeptools/computematrix/main.nf index e8a360013..5fa7ae797 100644 --- a/modules/nf-core/deeptools/computematrix/main.nf +++ b/modules/nf-core/deeptools/computematrix/main.nf @@ -4,8 +4,8 @@ process DEEPTOOLS_COMPUTEMATRIX { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/deeptools:3.5.5--pyhdfd78af_0': - 'biocontainers/deeptools:3.5.5--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/deeptools:3.5.6--pyhdfd78af_0': + 'biocontainers/deeptools:3.5.6--pyhdfd78af_0' }" input: tuple val(meta), path(bigwig) @@ -14,7 +14,7 @@ process DEEPTOOLS_COMPUTEMATRIX { output: tuple val(meta), path("*.mat.gz") , emit: matrix tuple val(meta), path("*.mat.tab"), emit: table - path "versions.yml" , emit: versions + tuple val("${task.process}"), val('deeptools'), eval('computeMatrix --version | sed "s/computeMatrix //g"') , emit: versions_deeptools, topic: versions when: task.ext.when == null || task.ext.when @@ -30,11 +30,6 @@ process DEEPTOOLS_COMPUTEMATRIX { --outFileName ${prefix}.computeMatrix.mat.gz \\ --outFileNameMatrix ${prefix}.computeMatrix.vals.mat.tab \\ --numberOfProcessors $task.cpus - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - deeptools: \$(computeMatrix --version | sed -e "s/computeMatrix //g") - END_VERSIONS """ stub: @@ -42,10 +37,5 @@ process DEEPTOOLS_COMPUTEMATRIX { """ echo "" | gzip > ${prefix}.computeMatrix.mat.gz touch ${prefix}.computeMatrix.vals.mat.tab - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - deeptools: \$(computeMatrix --version | sed -e "s/computeMatrix //g") - END_VERSIONS """ } diff --git a/modules/nf-core/deeptools/computematrix/meta.yml b/modules/nf-core/deeptools/computematrix/meta.yml index a48dec392..1b6fe9c44 100644 --- a/modules/nf-core/deeptools/computematrix/meta.yml +++ b/modules/nf-core/deeptools/computematrix/meta.yml @@ -1,5 +1,6 @@ name: deeptools_computematrix -description: calculates scores per genome regions for other deeptools plotting utilities +description: calculates scores per genome regions for other deeptools plotting + utilities keywords: - genome - regions @@ -7,46 +8,77 @@ keywords: - matrix tools: - deeptools: - description: A set of user-friendly tools for normalization and visualization of deep-sequencing data + description: A set of user-friendly tools for normalization and + visualization of deep-sequencing data documentation: https://deeptools.readthedocs.io/en/develop/index.html tool_dev_url: https://github.com/deeptools/deepTools doi: "10.1093/nar/gku365" - licence: ["GPL v3"] + licence: + - "GPL v3" + identifier: biotools:deeptools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test' ] - - bigwig: - type: file - description: bigwig file containing genomic scores - pattern: "*.{bw,bigwig}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - bigwig: + type: file + description: bigwig file containing genomic scores + pattern: "*.{bw,bigwig}" + ontologies: [] - bed: type: file description: bed file containing genomic regions pattern: "*.{bed}" + ontologies: [] output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - matrix: - type: file - description: | - gzipped matrix file needed by the plotHeatmap and plotProfile - deeptools utilities - pattern: "*.{computeMatrix.mat.gz}" - - table: - type: file - description: | - tabular file containing the scores of the generated matrix - pattern: "*.{computeMatrix.vals.mat.tab}" - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + matrix: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.mat.gz": + type: file + description: | + gzipped matrix file needed by the plotHeatmap and plotProfile + deeptools utilities + pattern: "*.{computeMatrix.mat.gz}" + ontologies: [] + table: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.mat.tab": + type: file + description: | + tabular file containing the scores of the generated matrix + pattern: "*.{computeMatrix.vals.mat.tab}" + ontologies: [] + versions_deeptools: + - - ${task.process}: + type: string + description: The name of the process + - deeptools: + type: string + description: The name of the tool + - computeMatrix --version | sed "s/computeMatrix //g": + type: eval + description: The expression to obtain the version of the tool +topics: + versions: + - - ${task.process}: + type: string + description: The name of the process + - deeptools: + type: string + description: The name of the tool + - computeMatrix --version | sed "s/computeMatrix //g": + type: eval + description: The expression to obtain the version of the tool authors: - "@jeremy1805" - "@edmundmiller" diff --git a/modules/nf-core/deeptools/computematrix/tests/main.nf.test b/modules/nf-core/deeptools/computematrix/tests/main.nf.test index 39873aa36..1a34a8537 100644 --- a/modules/nf-core/deeptools/computematrix/tests/main.nf.test +++ b/modules/nf-core/deeptools/computematrix/tests/main.nf.test @@ -14,7 +14,7 @@ nextflow_process { when { process { - """ + """ input[0] = [ [ id:'test' ], // meta map file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina//bigwig/test.bigwig', checkIfExists: true) @@ -31,7 +31,7 @@ nextflow_process { { assert process.success }, { assert snapshot(file(process.out.matrix.get(0).get(1)).name, process.out.table, - process.out.versions) + process.out.findAll { key, val -> key.startsWith('version') }) .match() } ) diff --git a/modules/nf-core/deeptools/computematrix/tests/main.nf.test.snap b/modules/nf-core/deeptools/computematrix/tests/main.nf.test.snap index a1916610e..c1d7b27c2 100644 --- a/modules/nf-core/deeptools/computematrix/tests/main.nf.test.snap +++ b/modules/nf-core/deeptools/computematrix/tests/main.nf.test.snap @@ -19,7 +19,11 @@ ] ], "2": [ - "versions.yml:md5,ccf4527952be3b834d42b6a968193b09" + [ + "DEEPTOOLS_COMPUTEMATRIX", + "deeptools", + "3.5.6" + ] ], "matrix": [ [ @@ -37,16 +41,20 @@ "test.computeMatrix.vals.mat.tab:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,ccf4527952be3b834d42b6a968193b09" + "versions_deeptools": [ + [ + "DEEPTOOLS_COMPUTEMATRIX", + "deeptools", + "3.5.6" + ] ] } ], + "timestamp": "2026-02-17T09:15:39.755493", "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" - }, - "timestamp": "2024-08-05T10:31:20.853496401" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } }, "sarscov2 - bigwig - bed": { "content": [ @@ -59,14 +67,20 @@ "test.computeMatrix.vals.mat.tab:md5,19e22051cc44edb7db3e0f8345330d90" ] ], - [ - "versions.yml:md5,ccf4527952be3b834d42b6a968193b09" - ] + { + "versions_deeptools": [ + [ + "DEEPTOOLS_COMPUTEMATRIX", + "deeptools", + "3.5.6" + ] + ] + } ], + "timestamp": "2026-02-17T09:15:32.56899", "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" - }, - "timestamp": "2024-08-05T10:31:15.614009233" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } } } \ No newline at end of file diff --git a/modules/nf-core/deeptools/computematrix/tests/nextflow.config b/modules/nf-core/deeptools/computematrix/tests/nextflow.config index f9e94fb20..4b12c3916 100644 --- a/modules/nf-core/deeptools/computematrix/tests/nextflow.config +++ b/modules/nf-core/deeptools/computematrix/tests/nextflow.config @@ -4,4 +4,4 @@ process { ext.args = 'scale-regions -b 1000' } -} \ No newline at end of file +} diff --git a/modules/nf-core/deeptools/computematrix/tests/tags.yml b/modules/nf-core/deeptools/computematrix/tests/tags.yml deleted file mode 100644 index 603becce0..000000000 --- a/modules/nf-core/deeptools/computematrix/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -deeptools/computematrix: - - "modules/nf-core/deeptools/computematrix/**" diff --git a/modules/nf-core/deeptools/plotfingerprint/environment.yml b/modules/nf-core/deeptools/plotfingerprint/environment.yml index b867b9a54..9d0790593 100644 --- a/modules/nf-core/deeptools/plotfingerprint/environment.yml +++ b/modules/nf-core/deeptools/plotfingerprint/environment.yml @@ -1,7 +1,7 @@ -name: deeptools_plotfingerprint +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda - - defaults dependencies: - - "bioconda::deeptools=3.5.5" + - bioconda::deeptools=3.5.6 diff --git a/modules/nf-core/deeptools/plotfingerprint/main.nf b/modules/nf-core/deeptools/plotfingerprint/main.nf index 0dba2ff7a..ae54cd6c5 100644 --- a/modules/nf-core/deeptools/plotfingerprint/main.nf +++ b/modules/nf-core/deeptools/plotfingerprint/main.nf @@ -4,8 +4,8 @@ process DEEPTOOLS_PLOTFINGERPRINT { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/deeptools:3.5.5--pyhdfd78af_0': - 'biocontainers/deeptools:3.5.5--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/deeptools:3.5.6--pyhdfd78af_0': + 'biocontainers/deeptools:3.5.6--pyhdfd78af_0' }" input: tuple val(meta), path(bams), path(bais) @@ -14,7 +14,7 @@ process DEEPTOOLS_PLOTFINGERPRINT { tuple val(meta), path("*.pdf") , emit: pdf tuple val(meta), path("*.raw.txt") , emit: matrix tuple val(meta), path("*.qcmetrics.txt"), emit: metrics - path "versions.yml" , emit: versions + tuple val("${task.process}"), val('deeptools'), eval('plotFingerprint --version | sed "s/plotFingerprint //g"') , emit: versions_deeptools, topic: versions when: task.ext.when == null || task.ext.when @@ -32,11 +32,6 @@ process DEEPTOOLS_PLOTFINGERPRINT { --outRawCounts ${prefix}.plotFingerprint.raw.txt \\ --outQualityMetrics ${prefix}.plotFingerprint.qcmetrics.txt \\ --numberOfProcessors $task.cpus - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - deeptools: \$(plotFingerprint --version | sed -e "s/plotFingerprint //g") - END_VERSIONS """ stub: @@ -45,10 +40,5 @@ process DEEPTOOLS_PLOTFINGERPRINT { touch ${prefix}.plotFingerprint.pdf touch ${prefix}.plotFingerprint.raw.txt touch ${prefix}.plotFingerprint.qcmetrics.txt - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - deeptools: \$(plotFingerprint --version | sed -e "s/plotFingerprint //g") - END_VERSIONS """ } diff --git a/modules/nf-core/deeptools/plotfingerprint/meta.yml b/modules/nf-core/deeptools/plotfingerprint/meta.yml index f82174401..6ee24c3dd 100644 --- a/modules/nf-core/deeptools/plotfingerprint/meta.yml +++ b/modules/nf-core/deeptools/plotfingerprint/meta.yml @@ -7,50 +7,88 @@ keywords: - bam tools: - deeptools: - description: A set of user-friendly tools for normalization and visualization of deep-sequencing data + description: A set of user-friendly tools for normalization and + visualization of deep-sequencing data documentation: https://deeptools.readthedocs.io/en/develop/index.html tool_dev_url: https://github.com/deeptools/deepTools doi: "10.1093/nar/gku365" - licence: ["GPL v3"] + licence: + - "GPL v3" + identifier: biotools:deeptools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test' ] - - bam: - type: file - description: One or more BAM files - pattern: "*.{bam}" - - bais: - type: file - description: Corresponding BAM file indexes - pattern: "*.bam.bai" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - bams: + type: file + description: BAM files + pattern: "*.bam" + ontologies: [] + - bais: + type: file + description: Corresponding BAM file indexes + pattern: "*.bam.bai" + ontologies: [] output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - pdf: - type: file - description: | - Output figure containing resulting plot - pattern: "*.{plotFingerprint.pdf}" - - matrix: - type: file - description: | - Output file summarizing the read counts per bin - pattern: "*.{plotFingerprint.raw.txt}" - - metrics: - type: file - description: | - file containing BAM file quality metrics - pattern: "*.{qcmetrics.txt}" - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + pdf: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.pdf": + type: file + description: | + Output figure containing resulting plot + pattern: "*.{plotFingerprint.pdf}" + ontologies: [] + matrix: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.raw.txt": + type: file + description: | + Output file summarizing the read counts per bin + pattern: "*.{plotFingerprint.raw.txt}" + ontologies: [] + metrics: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.qcmetrics.txt": + type: file + description: | + file containing BAM file quality metrics + pattern: "*.{qcmetrics.txt}" + ontologies: [] + versions_deeptools: + - - ${task.process}: + type: string + description: The name of the process + - deeptools: + type: string + description: The name of the tool + - plotFingerprint --version | sed "s/plotFingerprint //g": + type: eval + description: The expression to obtain the version of the tool +topics: + versions: + - - ${task.process}: + type: string + description: The name of the process + - deeptools: + type: string + description: The name of the tool + - plotFingerprint --version | sed "s/plotFingerprint //g": + type: eval + description: The expression to obtain the version of the tool authors: - "@edmundmiller" - "@drpatelh" diff --git a/modules/nf-core/deeptools/plotfingerprint/tests/main.nf.test b/modules/nf-core/deeptools/plotfingerprint/tests/main.nf.test index 818c6c9f4..5c4edadf9 100644 --- a/modules/nf-core/deeptools/plotfingerprint/tests/main.nf.test +++ b/modules/nf-core/deeptools/plotfingerprint/tests/main.nf.test @@ -13,7 +13,7 @@ nextflow_process { when { process { - """ + """ input[0] = [ [ id:'test', single_end:false ], // meta map file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), @@ -28,8 +28,8 @@ nextflow_process { { assert process.success }, { assert snapshot(file(process.out.pdf.get(0).get(1)).name, file(process.out.matrix.get(0).get(1)).name, - process.out.metrics.collect { file(it[1]).readLines().contains("0.24184576629880325") }, - process.out.versions) + process.out.metrics.collect { file(it[1]).readLines().contains("0.24184576629880325") }, + process.out.findAll { key, val -> key.startsWith('version') }) .match() } ) @@ -42,7 +42,7 @@ nextflow_process { when { process { - """ + """ input[0] = [ [ id:'test', single_end:false ], // meta map file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), diff --git a/modules/nf-core/deeptools/plotfingerprint/tests/main.nf.test.snap b/modules/nf-core/deeptools/plotfingerprint/tests/main.nf.test.snap index 502f8cd69..1f7bb3831 100644 --- a/modules/nf-core/deeptools/plotfingerprint/tests/main.nf.test.snap +++ b/modules/nf-core/deeptools/plotfingerprint/tests/main.nf.test.snap @@ -6,15 +6,21 @@ [ false ], - [ - "versions.yml:md5,2dd872e44f5b7284c080491607d9b42a" - ] + { + "versions_deeptools": [ + [ + "DEEPTOOLS_PLOTFINGERPRINT", + "deeptools", + "3.5.6" + ] + ] + } ], + "timestamp": "2026-02-17T09:51:08.91017", "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" - }, - "timestamp": "2024-08-05T10:14:38.559795237" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } }, "homo_sampiens - bam - stub": { "content": [ @@ -47,7 +53,11 @@ ] ], "3": [ - "versions.yml:md5,2dd872e44f5b7284c080491607d9b42a" + [ + "DEEPTOOLS_PLOTFINGERPRINT", + "deeptools", + "3.5.6" + ] ], "matrix": [ [ @@ -76,15 +86,19 @@ "test.plotFingerprint.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,2dd872e44f5b7284c080491607d9b42a" + "versions_deeptools": [ + [ + "DEEPTOOLS_PLOTFINGERPRINT", + "deeptools", + "3.5.6" + ] ] } ], + "timestamp": "2026-02-17T09:42:56.510167", "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" - }, - "timestamp": "2024-08-05T10:14:45.23521809" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } } } \ No newline at end of file diff --git a/modules/nf-core/deeptools/plotfingerprint/tests/tags.yml b/modules/nf-core/deeptools/plotfingerprint/tests/tags.yml deleted file mode 100644 index 372cefc9e..000000000 --- a/modules/nf-core/deeptools/plotfingerprint/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -deeptools/bamcoverage: - - "modules/nf-core/deeptools/bamcoverage/**" diff --git a/modules/nf-core/deeptools/plotheatmap/environment.yml b/modules/nf-core/deeptools/plotheatmap/environment.yml index 3e0f55990..9d0790593 100644 --- a/modules/nf-core/deeptools/plotheatmap/environment.yml +++ b/modules/nf-core/deeptools/plotheatmap/environment.yml @@ -1,9 +1,7 @@ --- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json -name: "deeptools_plotheatmap" channels: - conda-forge - bioconda - - defaults dependencies: - - "bioconda::deeptools=3.5.5" + - bioconda::deeptools=3.5.6 diff --git a/modules/nf-core/deeptools/plotheatmap/main.nf b/modules/nf-core/deeptools/plotheatmap/main.nf index 0bc6d1489..4c51657af 100644 --- a/modules/nf-core/deeptools/plotheatmap/main.nf +++ b/modules/nf-core/deeptools/plotheatmap/main.nf @@ -4,8 +4,8 @@ process DEEPTOOLS_PLOTHEATMAP { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/deeptools:3.5.5--pyhdfd78af_0': - 'biocontainers/deeptools:3.5.5--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/deeptools:3.5.6--pyhdfd78af_0': + 'biocontainers/deeptools:3.5.6--pyhdfd78af_0' }" input: tuple val(meta), path(matrix) @@ -13,7 +13,7 @@ process DEEPTOOLS_PLOTHEATMAP { output: tuple val(meta), path("*.pdf"), emit: pdf tuple val(meta), path("*.tab"), emit: table - path "versions.yml" , emit: versions + tuple val("${task.process}"), val('deeptools'), eval('plotHeatmap --version | sed "s/plotHeatmap //g"') , emit: versions_deeptools, topic: versions when: task.ext.when == null || task.ext.when @@ -27,11 +27,6 @@ process DEEPTOOLS_PLOTHEATMAP { --matrixFile $matrix \\ --outFileName ${prefix}.plotHeatmap.pdf \\ --outFileNameMatrix ${prefix}.plotHeatmap.mat.tab - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - deeptools: \$(plotHeatmap --version | sed -e "s/plotHeatmap //g") - END_VERSIONS """ stub: @@ -39,10 +34,5 @@ process DEEPTOOLS_PLOTHEATMAP { """ touch ${prefix}.plotHeatmap.pdf touch ${prefix}.plotHeatmap.mat.tab - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - deeptools: \$(plotFingerprint --version | sed -e "s/plotFingerprint //g") - END_VERSIONS """ } diff --git a/modules/nf-core/deeptools/plotheatmap/meta.yml b/modules/nf-core/deeptools/plotheatmap/meta.yml index 54ddeb0a0..1dd10ad18 100644 --- a/modules/nf-core/deeptools/plotheatmap/meta.yml +++ b/modules/nf-core/deeptools/plotheatmap/meta.yml @@ -7,44 +7,71 @@ keywords: - matrix tools: - deeptools: - description: A set of user-friendly tools for normalization and visualization of deep-sequencing data + description: A set of user-friendly tools for normalization and + visualization of deep-sequencing data documentation: https://deeptools.readthedocs.io/en/develop/index.html tool_dev_url: https://github.com/deeptools/deepTools doi: "10.1093/nar/gku365" - licence: ["GPL v3"] + licence: + - "GPL v3" + identifier: biotools:deeptools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test' ] - - matrix: - type: file - description: | - gzipped matrix file produced by deeptools_ - computematrix deeptools utility - pattern: "*.{mat.gz}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - matrix: + type: file + description: | + gzipped matrix file produced by deeptools_ + computematrix deeptools utility + pattern: "*.{mat.gz}" + ontologies: [] output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - pdf: - type: file - description: | - Output figure containing resulting plot - pattern: "*.{plotHeatmap.pdf}" - - matrix: - type: file - description: | - File containing the matrix of values - used to generate the heatmap - pattern: "*.{plotHeatmap.mat.tab}" - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + pdf: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.pdf": + type: file + description: | + Output figure containing resulting plot + pattern: "*.{plotHeatmap.pdf}" + ontologies: [] + table: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.tab": + type: file + description: Output table + ontologies: [] + versions_deeptools: + - - ${task.process}: + type: string + description: The name of the process + - deeptools: + type: string + description: The name of the tool + - plotHeatmap --version | sed "s/plotHeatmap //g": + type: eval + description: The expression to obtain the version of the tool +topics: + versions: + - - ${task.process}: + type: string + description: The name of the process + - deeptools: + type: string + description: The name of the tool + - plotHeatmap --version | sed "s/plotHeatmap //g": + type: eval + description: The expression to obtain the version of the tool authors: - "@edmundmiller" - "@drpatelh" diff --git a/modules/nf-core/deeptools/plotheatmap/tests/main.nf.test b/modules/nf-core/deeptools/plotheatmap/tests/main.nf.test index b0bcaa9c7..e03186e20 100644 --- a/modules/nf-core/deeptools/plotheatmap/tests/main.nf.test +++ b/modules/nf-core/deeptools/plotheatmap/tests/main.nf.test @@ -13,7 +13,7 @@ nextflow_process { when { process { - """ + """ input[0] = [ [ id:'test', single_end:false ], // meta map file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/deeptools/test.computeMatrix.mat.gz', checkIfExists: true), @@ -27,7 +27,7 @@ nextflow_process { { assert process.success }, { assert snapshot(file(process.out.pdf.get(0).get(1)).name, file(process.out.table.get(0).get(1)).name, - process.out.versions) + process.out.findAll { key, val -> key.startsWith('version') }) .match() } ) diff --git a/modules/nf-core/deeptools/plotheatmap/tests/main.nf.test.snap b/modules/nf-core/deeptools/plotheatmap/tests/main.nf.test.snap index 6cf07363f..726ed4cf9 100644 --- a/modules/nf-core/deeptools/plotheatmap/tests/main.nf.test.snap +++ b/modules/nf-core/deeptools/plotheatmap/tests/main.nf.test.snap @@ -21,7 +21,11 @@ ] ], "2": [ - "versions.yml:md5,f4040282400b8087dc94f1fa0b1cfefc" + [ + "DEEPTOOLS_PLOTHEATMAP", + "deeptools", + "3.5.6" + ] ], "pdf": [ [ @@ -41,29 +45,39 @@ "test.plotHeatmap.mat.tab:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,f4040282400b8087dc94f1fa0b1cfefc" + "versions_deeptools": [ + [ + "DEEPTOOLS_PLOTHEATMAP", + "deeptools", + "3.5.6" + ] ] } ], + "timestamp": "2026-02-17T09:56:26.321822", "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" - }, - "timestamp": "2024-08-05T10:17:23.70673465" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } }, "sarscov2 - mat": { "content": [ "test.plotHeatmap.pdf", "test.plotHeatmap.mat.tab", - [ - "versions.yml:md5,f4040282400b8087dc94f1fa0b1cfefc" - ] + { + "versions_deeptools": [ + [ + "DEEPTOOLS_PLOTHEATMAP", + "deeptools", + "3.5.6" + ] + ] + } ], + "timestamp": "2026-02-17T09:56:17.569358", "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" - }, - "timestamp": "2024-08-05T10:17:17.327116658" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } } } \ No newline at end of file diff --git a/modules/nf-core/deeptools/plotheatmap/tests/tags.yml b/modules/nf-core/deeptools/plotheatmap/tests/tags.yml deleted file mode 100644 index 1c94a7456..000000000 --- a/modules/nf-core/deeptools/plotheatmap/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -deeptools/plotheatmap: - - "modules/nf-core/deeptools/plotheatmap/**" diff --git a/modules/nf-core/deeptools/plotprofile/environment.yml b/modules/nf-core/deeptools/plotprofile/environment.yml index 44784d3a1..9d0790593 100644 --- a/modules/nf-core/deeptools/plotprofile/environment.yml +++ b/modules/nf-core/deeptools/plotprofile/environment.yml @@ -1,7 +1,7 @@ -name: deeptools_plotprofile +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda - - defaults dependencies: - - "bioconda::deeptools=3.5.5" + - bioconda::deeptools=3.5.6 diff --git a/modules/nf-core/deeptools/plotprofile/main.nf b/modules/nf-core/deeptools/plotprofile/main.nf index 4e9b44bdf..f74dc6517 100644 --- a/modules/nf-core/deeptools/plotprofile/main.nf +++ b/modules/nf-core/deeptools/plotprofile/main.nf @@ -4,8 +4,8 @@ process DEEPTOOLS_PLOTPROFILE { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/deeptools:3.5.5--pyhdfd78af_0': - 'biocontainers/deeptools:3.5.5--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/deeptools:3.5.6--pyhdfd78af_0': + 'biocontainers/deeptools:3.5.6--pyhdfd78af_0' }" input: tuple val(meta), path(matrix) @@ -13,7 +13,7 @@ process DEEPTOOLS_PLOTPROFILE { output: tuple val(meta), path("*.pdf"), emit: pdf tuple val(meta), path("*.tab"), emit: table - path "versions.yml" , emit: versions + tuple val("${task.process}"), val('deeptools'), eval('plotProfile --version | sed "s/plotProfile //g"') , emit: versions_deeptools, topic: versions when: task.ext.when == null || task.ext.when @@ -27,11 +27,6 @@ process DEEPTOOLS_PLOTPROFILE { --matrixFile $matrix \\ --outFileName ${prefix}.plotProfile.pdf \\ --outFileNameData ${prefix}.plotProfile.tab - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - deeptools: \$(plotProfile --version | sed -e "s/plotProfile //g") - END_VERSIONS """ stub: @@ -39,10 +34,5 @@ process DEEPTOOLS_PLOTPROFILE { """ touch ${prefix}.plotProfile.pdf touch ${prefix}.plotProfile.tab - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - deeptools: \$(plotProfile --version | sed -e "s/plotProfile //g") - END_VERSIONS """ } diff --git a/modules/nf-core/deeptools/plotprofile/meta.yml b/modules/nf-core/deeptools/plotprofile/meta.yml index f7f105055..d0ad0a330 100644 --- a/modules/nf-core/deeptools/plotprofile/meta.yml +++ b/modules/nf-core/deeptools/plotprofile/meta.yml @@ -7,44 +7,73 @@ keywords: - matrix tools: - deeptools: - description: A set of user-friendly tools for normalization and visualization of deep-sequencing data + description: A set of user-friendly tools for normalization and + visualization of deep-sequencing data documentation: https://deeptools.readthedocs.io/en/develop/index.html tool_dev_url: https://github.com/deeptools/deepTools doi: "10.1093/nar/gku365" - licence: ["GPL v3"] + licence: + - "GPL v3" + identifier: biotools:deeptools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test' ] - - matrix: - type: file - description: | - gzipped matrix file produced by deeptools_ - computematrix deeptools utility - pattern: "*.{mat.gz}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - matrix: + type: file + description: | + gzipped matrix file produced by deeptools_ + computematrix deeptools utility + pattern: "*.{mat.gz}" + ontologies: [] output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - pdf: - type: file - description: | - Output figure containing resulting plot - pattern: "*.{plotProfile.pdf}" - - matrix: - type: file - description: | - File containing the matrix of values - used to generate the profile - pattern: "*.{plotProfile.mat.tab}" - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + pdf: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.pdf": + type: file + description: | + Output figure containing resulting plot + pattern: "*.{plotProfile.pdf}" + ontologies: [] + table: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.tab": + type: file + description: Output table + pattern: "*.tab" + ontologies: + - edam: http://edamontology.org/format_3475 + versions_deeptools: + - - ${task.process}: + type: string + description: The name of the process + - deeptools: + type: string + description: The name of the tool + - plotProfile --version | sed "s/plotProfile //g": + type: eval + description: The expression to obtain the version of the tool +topics: + versions: + - - ${task.process}: + type: string + description: The name of the process + - deeptools: + type: string + description: The name of the tool + - plotProfile --version | sed "s/plotProfile //g": + type: eval + description: The expression to obtain the version of the tool authors: - "@edmundmiller" - "@drpatelh" diff --git a/modules/nf-core/deeptools/plotprofile/tests/main.nf.test b/modules/nf-core/deeptools/plotprofile/tests/main.nf.test index fe52873b3..58556a0e5 100644 --- a/modules/nf-core/deeptools/plotprofile/tests/main.nf.test +++ b/modules/nf-core/deeptools/plotprofile/tests/main.nf.test @@ -13,7 +13,7 @@ nextflow_process { when { process { - """ + """ input[0] = [ [ id:'test', single_end:false ], // meta map file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/deeptools/test.computeMatrix.mat.gz', checkIfExists: true), @@ -27,7 +27,7 @@ nextflow_process { { assert process.success }, { assert snapshot(file(process.out.pdf.get(0).get(1)).name, file(process.out.table.get(0).get(1)).name, - process.out.versions) + process.out.findAll { key, val -> key.startsWith('version') }) .match() } ) diff --git a/modules/nf-core/deeptools/plotprofile/tests/main.nf.test.snap b/modules/nf-core/deeptools/plotprofile/tests/main.nf.test.snap index 17bef5cf8..b09bb5e8e 100644 --- a/modules/nf-core/deeptools/plotprofile/tests/main.nf.test.snap +++ b/modules/nf-core/deeptools/plotprofile/tests/main.nf.test.snap @@ -21,7 +21,11 @@ ] ], "2": [ - "versions.yml:md5,668bc5d10cff87bd952f8b9294416ac3" + [ + "DEEPTOOLS_PLOTPROFILE", + "deeptools", + "3.5.6" + ] ], "pdf": [ [ @@ -41,29 +45,39 @@ "test.plotProfile.tab:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,668bc5d10cff87bd952f8b9294416ac3" + "versions_deeptools": [ + [ + "DEEPTOOLS_PLOTPROFILE", + "deeptools", + "3.5.6" + ] ] } ], + "timestamp": "2026-02-17T10:12:42.249884", "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" - }, - "timestamp": "2024-08-05T10:20:41.694233491" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } }, "sarscov2 - mat": { "content": [ "test.plotProfile.pdf", "test.plotProfile.tab", - [ - "versions.yml:md5,668bc5d10cff87bd952f8b9294416ac3" - ] + { + "versions_deeptools": [ + [ + "DEEPTOOLS_PLOTPROFILE", + "deeptools", + "3.5.6" + ] + ] + } ], + "timestamp": "2026-02-17T10:12:32.770162", "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" - }, - "timestamp": "2024-08-05T10:20:35.515374962" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } } } \ No newline at end of file diff --git a/modules/nf-core/deeptools/plotprofile/tests/tags.yml b/modules/nf-core/deeptools/plotprofile/tests/tags.yml deleted file mode 100644 index 60c022159..000000000 --- a/modules/nf-core/deeptools/plotprofile/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -deeptools/plotprofile: - - "modules/nf-core/deeptools/plotprofile/**" diff --git a/modules/nf-core/fastqc/main.nf b/modules/nf-core/fastqc/main.nf index 23e16634c..f5629527d 100644 --- a/modules/nf-core/fastqc/main.nf +++ b/modules/nf-core/fastqc/main.nf @@ -1,6 +1,6 @@ process FASTQC { tag "${meta.id}" - label 'process_medium' + label 'process_low' conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? @@ -11,9 +11,9 @@ process FASTQC { tuple val(meta), path(reads) output: - tuple val(meta), path("*.html"), emit: html - tuple val(meta), path("*.zip") , emit: zip - path "versions.yml" , emit: versions + tuple val(meta) , path("*.html") , emit: html + tuple val(meta) , path("*.zip") , emit: zip + tuple val("${task.process}"), val('fastqc'), eval('fastqc --version | sed "/FastQC v/!d; s/.*v//"'), emit: versions_fastqc, topic: versions when: task.ext.when == null || task.ext.when @@ -43,11 +43,6 @@ process FASTQC { --threads ${task.cpus} \\ --memory ${fastqc_memory} \\ ${renamed_files} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - fastqc: \$( fastqc --version | sed '/FastQC v/!d; s/.*v//' ) - END_VERSIONS """ stub: @@ -55,10 +50,5 @@ process FASTQC { """ touch ${prefix}.html touch ${prefix}.zip - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - fastqc: \$( fastqc --version | sed '/FastQC v/!d; s/.*v//' ) - END_VERSIONS """ } diff --git a/modules/nf-core/fastqc/meta.yml b/modules/nf-core/fastqc/meta.yml index c8d9d025a..49164c88f 100644 --- a/modules/nf-core/fastqc/meta.yml +++ b/modules/nf-core/fastqc/meta.yml @@ -53,13 +53,28 @@ output: description: FastQC report archive pattern: "*_{fastqc.zip}" ontologies: [] + versions_fastqc: + - - ${task.process}: + type: string + description: The process the versions were collected from + - fastqc: + type: string + description: The tool name + - fastqc --version | sed "/FastQC v/!d; s/.*v//": + type: eval + description: The expression to obtain the version of the tool + +topics: versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" - ontologies: - - edam: http://edamontology.org/format_3750 # YAML + - - ${task.process}: + type: string + description: The process the versions were collected from + - fastqc: + type: string + description: The tool name + - fastqc --version | sed "/FastQC v/!d; s/.*v//": + type: eval + description: The expression to obtain the version of the tool authors: - "@drpatelh" - "@grst" @@ -70,3 +85,27 @@ maintainers: - "@grst" - "@ewels" - "@FelixKrueger" +containers: + conda: + linux_amd64: + lock_file: https://wave.seqera.io/v1alpha1/builds/bd-af7a5314d5015c29_1/condalock + linux_arm64: + lock_file: https://wave.seqera.io/v1alpha1/builds/bd-df99cb252670875a_2/condalock + docker: + linux_amd64: + build_id: bd-af7a5314d5015c29_1 + name: community.wave.seqera.io/library/fastqc:0.12.1--af7a5314d5015c29 + scanId: sc-a618548acbee5a8a_30 + linux_arm64: + build_id: bd-df99cb252670875a_2 + name: community.wave.seqera.io/library/fastqc:0.12.1--df99cb252670875a + scanId: sc-b5913ed5d42b22d2_18 + singularity: + linux_amd64: + build_id: bd-104d26ddd9519960_1 + name: oras://community.wave.seqera.io/library/fastqc:0.12.1--104d26ddd9519960 + https: https://community.wave.seqera.io/v2/library/fastqc/blobs/sha256:e0c976cb2eca5fee72618a581537a4f8ea42fcae24c9b201e2e0f764fd28648a + linux_arm64: + build_id: bd-d56b505a93aef38a_1 + name: oras://community.wave.seqera.io/library/fastqc:0.12.1--d56b505a93aef38a + https: https://community.wave.seqera.io/v2/library/fastqc/blobs/sha256:fd39534bf298698cbe3ee4d4a6f1e73330ec4bca44c38dd9a4d06cb5ea838017 diff --git a/modules/nf-core/fastqc/tests/main.nf.test b/modules/nf-core/fastqc/tests/main.nf.test index e9d79a074..66c44da9b 100644 --- a/modules/nf-core/fastqc/tests/main.nf.test +++ b/modules/nf-core/fastqc/tests/main.nf.test @@ -30,7 +30,7 @@ nextflow_process { { assert process.out.html[0][1] ==~ ".*/test_fastqc.html" }, { assert process.out.zip[0][1] ==~ ".*/test_fastqc.zip" }, { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, - { assert snapshot(process.out.versions).match() } + { assert snapshot(sanitizeOutput(process.out).findAll { key, val -> key != 'html' && key != 'zip' }).match() } ) } } @@ -58,7 +58,7 @@ nextflow_process { { assert process.out.zip[0][1][1] ==~ ".*/test_2_fastqc.zip" }, { assert path(process.out.html[0][1][0]).text.contains("File typeConventional base calls") }, { assert path(process.out.html[0][1][1]).text.contains("File typeConventional base calls") }, - { assert snapshot(process.out.versions).match() } + { assert snapshot(sanitizeOutput(process.out).findAll { key, val -> key != 'html' && key != 'zip' }).match() } ) } } @@ -82,7 +82,7 @@ nextflow_process { { assert process.out.html[0][1] ==~ ".*/test_fastqc.html" }, { assert process.out.zip[0][1] ==~ ".*/test_fastqc.zip" }, { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, - { assert snapshot(process.out.versions).match() } + { assert snapshot(sanitizeOutput(process.out).findAll { key, val -> key != 'html' && key != 'zip' }).match() } ) } } @@ -106,7 +106,7 @@ nextflow_process { { assert process.out.html[0][1] ==~ ".*/test_fastqc.html" }, { assert process.out.zip[0][1] ==~ ".*/test_fastqc.zip" }, { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, - { assert snapshot(process.out.versions).match() } + { assert snapshot(sanitizeOutput(process.out).findAll { key, val -> key != 'html' && key != 'zip' }).match() } ) } } @@ -142,7 +142,7 @@ nextflow_process { { assert path(process.out.html[0][1][1]).text.contains("File typeConventional base calls") }, { assert path(process.out.html[0][1][2]).text.contains("File typeConventional base calls") }, { assert path(process.out.html[0][1][3]).text.contains("File typeConventional base calls") }, - { assert snapshot(process.out.versions).match() } + { assert snapshot(sanitizeOutput(process.out).findAll { key, val -> key != 'html' && key != 'zip' }).match() } ) } } @@ -166,7 +166,7 @@ nextflow_process { { assert process.out.html[0][1] ==~ ".*/mysample_fastqc.html" }, { assert process.out.zip[0][1] ==~ ".*/mysample_fastqc.zip" }, { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, - { assert snapshot(process.out.versions).match() } + { assert snapshot(sanitizeOutput(process.out).findAll { key, val -> key != 'html' && key != 'zip' }).match() } ) } } diff --git a/modules/nf-core/fastqc/tests/main.nf.test.snap b/modules/nf-core/fastqc/tests/main.nf.test.snap index d5db3092f..c8ee120f5 100644 --- a/modules/nf-core/fastqc/tests/main.nf.test.snap +++ b/modules/nf-core/fastqc/tests/main.nf.test.snap @@ -1,15 +1,21 @@ { "sarscov2 custom_prefix": { "content": [ - [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" - ] + { + "versions_fastqc": [ + [ + "FASTQC", + "fastqc", + "0.12.1" + ] + ] + } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.2", + "nextflow": "25.10.0" }, - "timestamp": "2024-07-22T11:02:16.374038" + "timestamp": "2025-10-28T16:39:14.518503" }, "sarscov2 single-end [fastq] - stub": { "content": [ @@ -33,7 +39,11 @@ ] ], "2": [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + [ + "FASTQC", + "fastqc", + "0.12.1" + ] ], "html": [ [ @@ -44,8 +54,12 @@ "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + "versions_fastqc": [ + [ + "FASTQC", + "fastqc", + "0.12.1" + ] ], "zip": [ [ @@ -59,10 +73,10 @@ } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.2", + "nextflow": "25.10.0" }, - "timestamp": "2024-07-22T11:02:24.993809" + "timestamp": "2025-10-28T16:39:19.309008" }, "sarscov2 custom_prefix - stub": { "content": [ @@ -86,7 +100,11 @@ ] ], "2": [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + [ + "FASTQC", + "fastqc", + "0.12.1" + ] ], "html": [ [ @@ -97,8 +115,12 @@ "mysample.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + "versions_fastqc": [ + [ + "FASTQC", + "fastqc", + "0.12.1" + ] ], "zip": [ [ @@ -112,58 +134,82 @@ } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.2", + "nextflow": "25.10.0" }, - "timestamp": "2024-07-22T11:03:10.93942" + "timestamp": "2025-10-28T16:39:44.94888" }, "sarscov2 interleaved [fastq]": { "content": [ - [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" - ] + { + "versions_fastqc": [ + [ + "FASTQC", + "fastqc", + "0.12.1" + ] + ] + } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.2", + "nextflow": "25.10.0" }, - "timestamp": "2024-07-22T11:01:42.355718" + "timestamp": "2025-10-28T16:38:45.168496" }, "sarscov2 paired-end [bam]": { "content": [ - [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" - ] + { + "versions_fastqc": [ + [ + "FASTQC", + "fastqc", + "0.12.1" + ] + ] + } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.2", + "nextflow": "25.10.0" }, - "timestamp": "2024-07-22T11:01:53.276274" + "timestamp": "2025-10-28T16:38:53.268919" }, "sarscov2 multiple [fastq]": { "content": [ - [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" - ] + { + "versions_fastqc": [ + [ + "FASTQC", + "fastqc", + "0.12.1" + ] + ] + } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.2", + "nextflow": "25.10.0" }, - "timestamp": "2024-07-22T11:02:05.527626" + "timestamp": "2025-10-28T16:39:05.050305" }, "sarscov2 paired-end [fastq]": { "content": [ - [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" - ] + { + "versions_fastqc": [ + [ + "FASTQC", + "fastqc", + "0.12.1" + ] + ] + } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.2", + "nextflow": "25.10.0" }, - "timestamp": "2024-07-22T11:01:31.188871" + "timestamp": "2025-10-28T16:38:37.2373" }, "sarscov2 paired-end [fastq] - stub": { "content": [ @@ -187,7 +233,11 @@ ] ], "2": [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + [ + "FASTQC", + "fastqc", + "0.12.1" + ] ], "html": [ [ @@ -198,8 +248,12 @@ "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + "versions_fastqc": [ + [ + "FASTQC", + "fastqc", + "0.12.1" + ] ], "zip": [ [ @@ -213,10 +267,10 @@ } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.2", + "nextflow": "25.10.0" }, - "timestamp": "2024-07-22T11:02:34.273566" + "timestamp": "2025-10-28T16:39:24.450398" }, "sarscov2 multiple [fastq] - stub": { "content": [ @@ -240,7 +294,11 @@ ] ], "2": [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + [ + "FASTQC", + "fastqc", + "0.12.1" + ] ], "html": [ [ @@ -251,8 +309,12 @@ "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + "versions_fastqc": [ + [ + "FASTQC", + "fastqc", + "0.12.1" + ] ], "zip": [ [ @@ -266,22 +328,28 @@ } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.2", + "nextflow": "25.10.0" }, - "timestamp": "2024-07-22T11:03:02.304411" + "timestamp": "2025-10-28T16:39:39.758762" }, "sarscov2 single-end [fastq]": { "content": [ - [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" - ] + { + "versions_fastqc": [ + [ + "FASTQC", + "fastqc", + "0.12.1" + ] + ] + } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.2", + "nextflow": "25.10.0" }, - "timestamp": "2024-07-22T11:01:19.095607" + "timestamp": "2025-10-28T16:38:29.555068" }, "sarscov2 interleaved [fastq] - stub": { "content": [ @@ -305,7 +373,11 @@ ] ], "2": [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + [ + "FASTQC", + "fastqc", + "0.12.1" + ] ], "html": [ [ @@ -316,8 +388,12 @@ "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + "versions_fastqc": [ + [ + "FASTQC", + "fastqc", + "0.12.1" + ] ], "zip": [ [ @@ -331,10 +407,10 @@ } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.2", + "nextflow": "25.10.0" }, - "timestamp": "2024-07-22T11:02:44.640184" + "timestamp": "2025-10-28T16:39:29.193136" }, "sarscov2 paired-end [bam] - stub": { "content": [ @@ -358,7 +434,11 @@ ] ], "2": [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + [ + "FASTQC", + "fastqc", + "0.12.1" + ] ], "html": [ [ @@ -369,8 +449,12 @@ "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + "versions_fastqc": [ + [ + "FASTQC", + "fastqc", + "0.12.1" + ] ], "zip": [ [ @@ -384,9 +468,9 @@ } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.2", + "nextflow": "25.10.0" }, - "timestamp": "2024-07-22T11:02:53.550742" + "timestamp": "2025-10-28T16:39:34.144919" } } \ No newline at end of file diff --git a/modules/nf-core/gffread/environment.yml b/modules/nf-core/gffread/environment.yml index c6df58ad0..46c5faece 100644 --- a/modules/nf-core/gffread/environment.yml +++ b/modules/nf-core/gffread/environment.yml @@ -1,7 +1,7 @@ -name: gffread +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::gffread=0.12.7 diff --git a/modules/nf-core/gffread/main.nf b/modules/nf-core/gffread/main.nf index da55cbab7..198afa8d6 100644 --- a/modules/nf-core/gffread/main.nf +++ b/modules/nf-core/gffread/main.nf @@ -15,7 +15,7 @@ process GFFREAD { tuple val(meta), path("*.gtf") , emit: gtf , optional: true tuple val(meta), path("*.gff3") , emit: gffread_gff , optional: true tuple val(meta), path("*.fasta"), emit: gffread_fasta , optional: true - path "versions.yml" , emit: versions + tuple val("${task.process}"), val('gffread'), eval('gffread --version 2>&1'), topic: versions, emit: versions_gffread when: task.ext.when == null || task.ext.when @@ -23,11 +23,11 @@ process GFFREAD { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def extension = args.contains("-T") ? 'gtf' : ( ( ['-w', '-x', '-y' ].any { args.contains(it) } ) ? 'fasta' : 'gff3' ) + def extension = args.contains("-T") ? 'gtf' : ( ( ['-w', '-x', '-y' ].any { flag -> args.contains(flag) } ) ? 'fasta' : 'gff3' ) def fasta_arg = fasta ? "-g $fasta" : '' def output_name = "${prefix}.${extension}" def output = extension == "fasta" ? "$output_name" : "-o $output_name" - def args_sorted = args.replaceAll(/(.*)(-[wxy])(.*)/) { all, pre, param, post -> "$pre $post $param" }.trim() + def args_sorted = args.replaceAll(/(.*)(-[wxy])(.*)/) { _all, pre, param, post -> "$pre $post $param" }.trim() // args_sorted = Move '-w', '-x', and '-y' to the end of the args string as gffread expects the file name after these parameters if ( "$output_name" in [ "$gff", "$fasta" ] ) error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" """ @@ -36,25 +36,15 @@ process GFFREAD { $fasta_arg \\ $args_sorted \\ $output - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - gffread: \$(gffread --version 2>&1) - END_VERSIONS """ stub: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def extension = args.contains("-T") ? 'gtf' : ( ( ['-w', '-x', '-y' ].any { args.contains(it) } ) ? 'fasta' : 'gff3' ) + def extension = args.contains("-T") ? 'gtf' : ( ( ['-w', '-x', '-y' ].any { flag -> args.contains(flag) } ) ? 'fasta' : 'gff3' ) def output_name = "${prefix}.${extension}" if ( "$output_name" in [ "$gff", "$fasta" ] ) error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" """ touch $output_name - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - gffread: \$(gffread --version 2>&1) - END_VERSIONS """ } diff --git a/modules/nf-core/gffread/meta.yml b/modules/nf-core/gffread/meta.yml index c06028208..abdae64d2 100644 --- a/modules/nf-core/gffread/meta.yml +++ b/modules/nf-core/gffread/meta.yml @@ -1,53 +1,96 @@ name: gffread -description: Validate, filter, convert and perform various other operations on GFF files +description: Validate, filter, convert and perform various other operations on GFF + files keywords: - gff - conversion - validation tools: - gffread: - description: GFF/GTF utility providing format conversions, region filtering, FASTA sequence extraction and more. + description: GFF/GTF utility providing format conversions, region filtering, FASTA + sequence extraction and more. homepage: http://ccb.jhu.edu/software/stringtie/gff.shtml#gffread documentation: http://ccb.jhu.edu/software/stringtie/gff.shtml#gffread tool_dev_url: https://github.com/gpertea/gffread doi: 10.12688/f1000research.23297.1 licence: ["MIT"] + identifier: biotools:gffread input: - - meta: - type: map - description: | - Groovy Map containing meta data - e.g. [ id:'test' ] - - gff: - type: file - description: A reference file in either the GFF3, GFF2 or GTF format. - pattern: "*.{gff, gtf}" + - - meta: + type: map + description: | + Groovy Map containing meta data + e.g. [ id:'test' ] + - gff: + type: file + description: A reference file in either the GFF3, GFF2 or GTF format. + pattern: "*.{gff, gtf}" + ontologies: [] - fasta: type: file description: A multi-fasta file with the genomic sequences pattern: "*.{fasta,fa,faa,fas,fsa}" + ontologies: [] output: - - meta: - type: map - description: | - Groovy Map containing meta data - e.g. [ id:'test' ] - - gtf: - type: file - description: GTF file resulting from the conversion of the GFF input file if '-T' argument is present - pattern: "*.{gtf}" - - gffread_gff: - type: file - description: GFF3 file resulting from the conversion of the GFF input file if '-T' argument is absent - pattern: "*.gff3" - - gffread_fasta: - type: file - description: Fasta file produced when either of '-w', '-x', '-y' parameters is present - pattern: "*.fasta" - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + gtf: + - - meta: + type: map + description: | + Groovy Map containing meta data + e.g. [ id:'test' ] + - "*.gtf": + type: file + description: GTF file resulting from the conversion of the GFF input file + if '-T' argument is present + pattern: "*.{gtf}" + ontologies: [] + gffread_gff: + - - meta: + type: map + description: | + Groovy Map containing meta data + e.g. [ id:'test' ] + - "*.gff3": + type: file + description: GFF3 file resulting from the conversion of the GFF input file + if '-T' argument is absent + pattern: "*.gff3" + ontologies: [] + gffread_fasta: + - - meta: + type: map + description: | + Groovy Map containing meta data + e.g. [ id:'test' ] + - "*.fasta": + type: file + description: Fasta file produced when either of '-w', '-x', '-y' parameters + is present + pattern: "*.fasta" + ontologies: [] + versions_gffread: + - - ${task.process}: + type: string + description: The process the versions were collected from + - gffread: + type: string + description: The tool name + - gffread --version 2>&1: + type: eval + description: The expression to obtain the version of the tool + +topics: + versions: + - - ${task.process}: + type: string + description: The process the versions were collected from + - gffread: + type: string + description: The tool name + - gffread --version 2>&1: + type: eval + description: The expression to obtain the version of the tool + authors: - "@edmundmiller" maintainers: diff --git a/modules/nf-core/gffread/tests/main.nf.test b/modules/nf-core/gffread/tests/main.nf.test index 4cd13dcd3..eed210f47 100644 --- a/modules/nf-core/gffread/tests/main.nf.test +++ b/modules/nf-core/gffread/tests/main.nf.test @@ -23,6 +23,7 @@ nextflow_process { file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gff3", checkIfExists: true) ] input[1] = [] + """ } } diff --git a/modules/nf-core/gffread/tests/main.nf.test.snap b/modules/nf-core/gffread/tests/main.nf.test.snap index 15262320d..cfdbe9ffc 100644 --- a/modules/nf-core/gffread/tests/main.nf.test.snap +++ b/modules/nf-core/gffread/tests/main.nf.test.snap @@ -17,7 +17,11 @@ ], "3": [ - "versions.yml:md5,05f671c6c6e530acedad0af0a5948dbd" + [ + "GFFREAD", + "gffread", + "0.12.7" + ] ], "gffread_fasta": [ @@ -33,16 +37,20 @@ "test.gtf:md5,1ea0ae98d3388e0576407dc4a24ef428" ] ], - "versions": [ - "versions.yml:md5,05f671c6c6e530acedad0af0a5948dbd" + "versions_gffread": [ + [ + "GFFREAD", + "gffread", + "0.12.7" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-04-09T10:48:56.496187" + "timestamp": "2026-01-19T14:04:00.517880519" }, "sarscov2-gff3-gff3": { "content": [ @@ -62,7 +70,11 @@ ], "3": [ - "versions.yml:md5,05f671c6c6e530acedad0af0a5948dbd" + [ + "GFFREAD", + "gffread", + "0.12.7" + ] ], "gffread_fasta": [ @@ -78,16 +90,20 @@ "gtf": [ ], - "versions": [ - "versions.yml:md5,05f671c6c6e530acedad0af0a5948dbd" + "versions_gffread": [ + [ + "GFFREAD", + "gffread", + "0.12.7" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-04-09T10:49:00.892782" + "timestamp": "2026-01-19T14:04:11.054206957" }, "sarscov2-gff3-gtf-stub": { "content": [ @@ -107,7 +123,11 @@ ], "3": [ - "versions.yml:md5,05f671c6c6e530acedad0af0a5948dbd" + [ + "GFFREAD", + "gffread", + "0.12.7" + ] ], "gffread_fasta": [ @@ -123,16 +143,20 @@ "test.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,05f671c6c6e530acedad0af0a5948dbd" + "versions_gffread": [ + [ + "GFFREAD", + "gffread", + "0.12.7" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-04-09T11:11:26.975666" + "timestamp": "2026-01-19T14:04:05.79250369" }, "sarscov2-gff3-fasta-stub": { "content": [ @@ -152,7 +176,11 @@ ] ], "3": [ - "versions.yml:md5,05f671c6c6e530acedad0af0a5948dbd" + [ + "GFFREAD", + "gffread", + "0.12.7" + ] ], "gffread_fasta": [ [ @@ -168,16 +196,20 @@ "gtf": [ ], - "versions": [ - "versions.yml:md5,05f671c6c6e530acedad0af0a5948dbd" + "versions_gffread": [ + [ + "GFFREAD", + "gffread", + "0.12.7" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-04-09T11:11:44.34792" + "timestamp": "2026-01-19T14:04:26.781173161" }, "sarscov2-gff3-gff3-stub": { "content": [ @@ -197,7 +229,11 @@ ], "3": [ - "versions.yml:md5,05f671c6c6e530acedad0af0a5948dbd" + [ + "GFFREAD", + "gffread", + "0.12.7" + ] ], "gffread_fasta": [ @@ -213,16 +249,20 @@ "gtf": [ ], - "versions": [ - "versions.yml:md5,05f671c6c6e530acedad0af0a5948dbd" + "versions_gffread": [ + [ + "GFFREAD", + "gffread", + "0.12.7" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-04-09T11:11:35.221671" + "timestamp": "2026-01-19T14:04:16.265299123" }, "sarscov2-gff3-fasta": { "content": [ @@ -242,7 +282,11 @@ ] ], "3": [ - "versions.yml:md5,05f671c6c6e530acedad0af0a5948dbd" + [ + "GFFREAD", + "gffread", + "0.12.7" + ] ], "gffread_fasta": [ [ @@ -258,15 +302,19 @@ "gtf": [ ], - "versions": [ - "versions.yml:md5,05f671c6c6e530acedad0af0a5948dbd" + "versions_gffread": [ + [ + "GFFREAD", + "gffread", + "0.12.7" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-04-09T10:54:02.88143" + "timestamp": "2026-01-19T14:04:21.551846584" } } \ No newline at end of file diff --git a/modules/nf-core/gffread/tests/tags.yml b/modules/nf-core/gffread/tests/tags.yml deleted file mode 100644 index 055760656..000000000 --- a/modules/nf-core/gffread/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -gffread: - - modules/nf-core/gffread/** diff --git a/modules/nf-core/gunzip/environment.yml b/modules/nf-core/gunzip/environment.yml index dfc02a7b5..9b926b1ff 100644 --- a/modules/nf-core/gunzip/environment.yml +++ b/modules/nf-core/gunzip/environment.yml @@ -1,9 +1,12 @@ -name: gunzip +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda - - defaults dependencies: + - conda-forge::coreutils=9.5 - conda-forge::grep=3.11 + - conda-forge::gzip=1.13 + - conda-forge::lbzip2=2.5 - conda-forge::sed=4.8 - conda-forge::tar=1.34 diff --git a/modules/nf-core/gunzip/main.nf b/modules/nf-core/gunzip/main.nf index 5e67e3b9b..a8533e74b 100644 --- a/modules/nf-core/gunzip/main.nf +++ b/modules/nf-core/gunzip/main.nf @@ -1,55 +1,45 @@ process GUNZIP { - tag "$archive" + tag "${archive}" label 'process_single' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/ubuntu:22.04' : - 'nf-core/ubuntu:22.04' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/52/52ccce28d2ab928ab862e25aae26314d69c8e38bd41ca9431c67ef05221348aa/data' + : 'community.wave.seqera.io/library/coreutils_grep_gzip_lbzip2_pruned:838ba80435a629f8'}" input: tuple val(meta), path(archive) output: - tuple val(meta), path("$gunzip"), emit: gunzip - path "versions.yml" , emit: versions + tuple val(meta), path("${gunzip}"), emit: gunzip + tuple val("${task.process}"), val('gunzip'), eval('gunzip --version 2>&1 | head -1 | sed "s/^.*(gzip) //; s/ Copyright.*//"'), topic: versions, emit: versions_gunzip when: task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' - def extension = ( archive.toString() - '.gz' ).tokenize('.')[-1] - def name = archive.toString() - '.gz' - ".$extension" - def prefix = task.ext.prefix ?: name - gunzip = prefix + ".$extension" + def args = task.ext.args ?: '' + def extension = (archive.toString() - '.gz').tokenize('.')[-1] + def name = archive.toString() - '.gz' - ".${extension}" + def prefix = task.ext.prefix ?: name + gunzip = prefix + ".${extension}" """ # Not calling gunzip itself because it creates files # with the original group ownership rather than the # default one for that user / the work directory gzip \\ -cd \\ - $args \\ - $archive \\ - > $gunzip - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - gunzip: \$(echo \$(gunzip --version 2>&1) | sed 's/^.*(gzip) //; s/ Copyright.*\$//') - END_VERSIONS + ${args} \\ + ${archive} \\ + > ${gunzip} """ stub: - def args = task.ext.args ?: '' - def extension = ( archive.toString() - '.gz' ).tokenize('.')[-1] - def name = archive.toString() - '.gz' - ".$extension" - def prefix = task.ext.prefix ?: name - gunzip = prefix + ".$extension" + def extension = (archive.toString() - '.gz').tokenize('.')[-1] + def name = archive.toString() - '.gz' - ".${extension}" + def prefix = task.ext.prefix ?: name + gunzip = prefix + ".${extension}" """ - touch $gunzip - cat <<-END_VERSIONS > versions.yml - "${task.process}": - gunzip: \$(echo \$(gunzip --version 2>&1) | sed 's/^.*(gzip) //; s/ Copyright.*\$//') - END_VERSIONS + touch ${gunzip} """ } diff --git a/modules/nf-core/gunzip/meta.yml b/modules/nf-core/gunzip/meta.yml index f32973a0a..bba6b3ba7 100644 --- a/modules/nf-core/gunzip/meta.yml +++ b/modules/nf-core/gunzip/meta.yml @@ -10,25 +10,53 @@ tools: gzip is a file format and a software application used for file compression and decompression. documentation: https://www.gnu.org/software/gzip/manual/gzip.html licence: ["GPL-3.0-or-later"] + identifier: "" input: - - meta: - type: map - description: | - Optional groovy Map containing meta information - e.g. [ id:'test', single_end:false ] - - archive: - type: file - description: File to be compressed/uncompressed - pattern: "*.*" + - - meta: + type: map + description: | + Optional groovy Map containing meta information + e.g. [ id:'test', single_end:false ] + - archive: + type: file + description: File to be compressed/uncompressed + pattern: "*.*" + ontologies: [] output: - - gunzip: - type: file - description: Compressed/uncompressed file - pattern: "*.*" - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + gunzip: + - - meta: + type: file + description: Compressed/uncompressed file + pattern: "*.*" + ontologies: [] + - ${gunzip}: + type: file + description: Compressed/uncompressed file + pattern: "*.*" + ontologies: [] + versions_gunzip: + - - ${task.process}: + type: string + description: The process the versions were collected from + - gunzip: + type: string + description: The tool name + - gunzip --version 2>&1 | head -1 | sed "s/^.*(gzip) //; s/ Copyright.*//": + type: eval + description: The expression to obtain the version of the tool + +topics: + versions: + - - ${task.process}: + type: string + description: The process the versions were collected from + - gunzip: + type: string + description: The tool name + - gunzip --version 2>&1 | head -1 | sed "s/^.*(gzip) //; s/ Copyright.*//": + type: eval + description: The expression to obtain the version of the tool + authors: - "@joseespinosa" - "@drpatelh" diff --git a/modules/nf-core/gunzip/tests/main.nf.test.snap b/modules/nf-core/gunzip/tests/main.nf.test.snap index 069967e76..111ba1bce 100644 --- a/modules/nf-core/gunzip/tests/main.nf.test.snap +++ b/modules/nf-core/gunzip/tests/main.nf.test.snap @@ -11,7 +11,11 @@ ] ], "1": [ - "versions.yml:md5,54376d32aca20e937a4ec26dac228e84" + [ + "GUNZIP", + "gunzip", + "1.13" + ] ], "gunzip": [ [ @@ -21,16 +25,20 @@ "test.xyz.fastq:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,54376d32aca20e937a4ec26dac228e84" + "versions_gunzip": [ + [ + "GUNZIP", + "gunzip", + "1.13" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-06-25T11:35:10.861293" + "timestamp": "2026-01-19T17:21:56.633550769" }, "Should run without failures - stub": { "content": [ @@ -44,7 +52,11 @@ ] ], "1": [ - "versions.yml:md5,54376d32aca20e937a4ec26dac228e84" + [ + "GUNZIP", + "gunzip", + "1.13" + ] ], "gunzip": [ [ @@ -54,16 +66,20 @@ "test_1.fastq:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,54376d32aca20e937a4ec26dac228e84" + "versions_gunzip": [ + [ + "GUNZIP", + "gunzip", + "1.13" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-06-25T11:35:05.857145" + "timestamp": "2026-01-19T17:21:51.435621199" }, "Should run without failures": { "content": [ @@ -77,7 +93,11 @@ ] ], "1": [ - "versions.yml:md5,54376d32aca20e937a4ec26dac228e84" + [ + "GUNZIP", + "gunzip", + "1.13" + ] ], "gunzip": [ [ @@ -87,16 +107,20 @@ "test_1.fastq:md5,4161df271f9bfcd25d5845a1e220dbec" ] ], - "versions": [ - "versions.yml:md5,54376d32aca20e937a4ec26dac228e84" + "versions_gunzip": [ + [ + "GUNZIP", + "gunzip", + "1.13" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2023-10-17T15:35:37.690477896" + "timestamp": "2026-01-19T17:21:40.613975821" }, "Should run without failures - prefix": { "content": [ @@ -110,7 +134,11 @@ ] ], "1": [ - "versions.yml:md5,54376d32aca20e937a4ec26dac228e84" + [ + "GUNZIP", + "gunzip", + "1.13" + ] ], "gunzip": [ [ @@ -120,15 +148,19 @@ "test.xyz.fastq:md5,4161df271f9bfcd25d5845a1e220dbec" ] ], - "versions": [ - "versions.yml:md5,54376d32aca20e937a4ec26dac228e84" + "versions_gunzip": [ + [ + "GUNZIP", + "gunzip", + "1.13" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-06-25T11:33:32.921739" + "timestamp": "2026-01-19T17:21:46.086880414" } } \ No newline at end of file diff --git a/modules/nf-core/gunzip/tests/tags.yml b/modules/nf-core/gunzip/tests/tags.yml deleted file mode 100644 index fd3f69154..000000000 --- a/modules/nf-core/gunzip/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -gunzip: - - modules/nf-core/gunzip/** diff --git a/modules/nf-core/homer/annotatepeaks/environment.yml b/modules/nf-core/homer/annotatepeaks/environment.yml index aef00e188..3a556e4c9 100644 --- a/modules/nf-core/homer/annotatepeaks/environment.yml +++ b/modules/nf-core/homer/annotatepeaks/environment.yml @@ -1,7 +1,12 @@ -name: homer_annotatepeaks +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda - - defaults dependencies: + - bioconda::bioconductor-deseq2=1.42.0 + - bioconda::bioconductor-edger=4.0.16 - bioconda::homer=4.11 + - bioconda::samtools=1.21 + - conda-forge::r-essentials=4.3 + - conda-forge::wget=1.21.4 diff --git a/modules/nf-core/homer/annotatepeaks/main.nf b/modules/nf-core/homer/annotatepeaks/main.nf index 32478df41..053d09d67 100644 --- a/modules/nf-core/homer/annotatepeaks/main.nf +++ b/modules/nf-core/homer/annotatepeaks/main.nf @@ -1,22 +1,20 @@ process HOMER_ANNOTATEPEAKS { - tag "$meta.id" + tag "${meta.id}" label 'process_medium' - - // WARN: Version information not provided by tool on CLI. Please update version string below when bumping container versions. conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/homer:4.11--pl526hc9558a2_3' : - 'biocontainers/homer:4.11--pl526hc9558a2_3' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/0f/0fe4a3875b78dce3c66b43fb96489769cc32e55e329e2525d2af09096af2252a/data' + : 'community.wave.seqera.io/library/bioconductor-deseq2_bioconductor-edger_homer_samtools_pruned:a8f4c58755bb281b'}" input: tuple val(meta), path(peak) - path fasta - path gtf + path fasta + path gtf output: tuple val(meta), path("*annotatePeaks.txt"), emit: txt tuple val(meta), path("*annStats.txt"), emit: stats, optional: true - path "versions.yml" , emit: versions + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when @@ -24,19 +22,33 @@ process HOMER_ANNOTATEPEAKS { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def VERSION = '4.11' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. + def VERSION = '4.11' + // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. """ annotatePeaks.pl \\ - $peak \\ - $fasta \\ - $args \\ - -gtf $gtf \\ - -cpu $task.cpus \\ + ${peak} \\ + ${fasta} \\ + ${args} \\ + -gtf ${gtf} \\ + -cpu ${task.cpus} \\ > ${prefix}.annotatePeaks.txt cat <<-END_VERSIONS > versions.yml "${task.process}": - homer: $VERSION + homer: ${VERSION} + END_VERSIONS + """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + def VERSION = '4.11' + // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. + """ + touch ${prefix}.annotatePeaks.txt + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + homer: ${VERSION} END_VERSIONS """ } diff --git a/modules/nf-core/homer/annotatepeaks/meta.yml b/modules/nf-core/homer/annotatepeaks/meta.yml index 0d76caba8..a40584520 100644 --- a/modules/nf-core/homer/annotatepeaks/meta.yml +++ b/modules/nf-core/homer/annotatepeaks/meta.yml @@ -11,42 +11,57 @@ tools: documentation: http://homer.ucsd.edu/homer/ doi: 10.1016/j.molcel.2010.05.004. licence: ["GPL-3.0-or-later"] + identifier: biotools:homer input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - peaks: - type: file - description: The peak files in bed format - pattern: "*.bed" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - peak: + type: file + description: Peak file to annotate + ontologies: [] - fasta: type: file description: Fasta file of reference genome pattern: "*.fasta" + ontologies: [] - gtf: type: file description: GTF file of reference genome pattern: "*.gtf" + ontologies: [] output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - annotated_peaks: - type: file - description: The annotated peaks - pattern: "*annotatePeaks.txt" - - annotation_stats: - type: file - description: the annStats file output from -annStats parameter - pattern: "*annStats.txt" - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + txt: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*annotatePeaks.txt": + type: file + description: Annotated peaks in txt file + pattern: "*annotatePeaks.txt" + ontologies: [] + stats: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*annStats.txt": + type: file + description: Annotation statistics in txt file + pattern: "*annStats.txt" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@drpatelh" - "@kevinmenden" diff --git a/modules/nf-core/homer/annotatepeaks/tests/main.nf.test b/modules/nf-core/homer/annotatepeaks/tests/main.nf.test new file mode 100644 index 000000000..7c66ef9d9 --- /dev/null +++ b/modules/nf-core/homer/annotatepeaks/tests/main.nf.test @@ -0,0 +1,68 @@ + +nextflow_process { + + name "Test Process HOMER_ANNOTATEPEAKS" + script "../main.nf" + process "HOMER_ANNOTATEPEAKS" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "homer" + tag "homer/annotatepeaks" + + test("test-homer-annotatepeaks") { + + when { + process { + """ + input[0] = [ + [ id:'test'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true) + ] + input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + input[2] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gtf', checkIfExists: true) + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + file(process.out.txt[0][1]).name, // unstable + process.out.stats, + process.out.versions + ).match() + } + ) + } + } + + test("test-homer-annotatepeaks-stub") { + options '-stub' + + when { + process { + """ + input[0] = [ + [ id:'test'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true) + ] + input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + input[2] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gtf', checkIfExists: true) + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match("stub") } + ) + } + } + +} diff --git a/modules/nf-core/homer/annotatepeaks/tests/main.nf.test.snap b/modules/nf-core/homer/annotatepeaks/tests/main.nf.test.snap new file mode 100644 index 000000000..f16b76ba6 --- /dev/null +++ b/modules/nf-core/homer/annotatepeaks/tests/main.nf.test.snap @@ -0,0 +1,62 @@ +{ + "test-homer-annotatepeaks": { + "content": [ + "test.annotatePeaks.txt", + [ + [ + { + "id": "test" + }, + "test.annStats.txt:md5,eba336bce28fb5ec5d4ea3215b502dc5" + ] + ], + [ + "versions.yml:md5,d109521b6e43672cf246fd269b3833c8" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-05T21:28:26.487711" + }, + "stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.annotatePeaks.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + + ], + "2": [ + "versions.yml:md5,d109521b6e43672cf246fd269b3833c8" + ], + "stats": [ + + ], + "txt": [ + [ + { + "id": "test" + }, + "test.annotatePeaks.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,d109521b6e43672cf246fd269b3833c8" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.1" + }, + "timestamp": "2024-11-23T14:37:35.102823" + } +} \ No newline at end of file diff --git a/modules/nf-core/homer/annotatepeaks/tests/nextflow.config b/modules/nf-core/homer/annotatepeaks/tests/nextflow.config new file mode 100644 index 000000000..309aac551 --- /dev/null +++ b/modules/nf-core/homer/annotatepeaks/tests/nextflow.config @@ -0,0 +1,3 @@ +process { + ext.args = {"-annStats ${meta.id}.annStats.txt"} +} diff --git a/modules/nf-core/khmer/uniquekmers/environment.yml b/modules/nf-core/khmer/uniquekmers/environment.yml index 9b7b75460..0b1809c42 100644 --- a/modules/nf-core/khmer/uniquekmers/environment.yml +++ b/modules/nf-core/khmer/uniquekmers/environment.yml @@ -1,7 +1,7 @@ -name: khmer_uniquekmers +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::khmer=3.0.0a3 diff --git a/modules/nf-core/khmer/uniquekmers/main.nf b/modules/nf-core/khmer/uniquekmers/main.nf index ebb2064db..86d55b630 100644 --- a/modules/nf-core/khmer/uniquekmers/main.nf +++ b/modules/nf-core/khmer/uniquekmers/main.nf @@ -8,27 +8,40 @@ process KHMER_UNIQUEKMERS { 'biocontainers/khmer:3.0.0a3--py37haa7609a_2' }" input: - path fasta - val kmer_size + tuple val(meta), path(fasta) + val kmer_size output: - path "report.txt" , emit: report - path "kmers.txt" , emit: kmers - path "versions.yml", emit: versions + tuple val(meta), path("*.report.txt") , emit: report + tuple val(meta), path("*.kmers.txt") , emit: kmers + 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 prefix = task.ext.prefix ?: "${meta.id}" """ unique-kmers.py \\ -k $kmer_size \\ - -R report.txt \\ + -R ${prefix}.report.txt \\ $args \\ $fasta - grep ^number report.txt | sed 's/^.*:.[[:blank:]]//g' > kmers.txt + grep ^number ${prefix}.report.txt | sed 's/^.*:.[[:blank:]]//g' > ${prefix}.kmers.txt + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + khmer: \$( unique-kmers.py --version 2>&1 | grep ^khmer | sed 's/^khmer //;s/ .*\$//' ) + END_VERSIONS + """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.report.txt + touch ${prefix}.kmers.txt cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/khmer/uniquekmers/meta.yml b/modules/nf-core/khmer/uniquekmers/meta.yml index bae4e6440..778d1c5cd 100644 --- a/modules/nf-core/khmer/uniquekmers/meta.yml +++ b/modules/nf-core/khmer/uniquekmers/meta.yml @@ -1,5 +1,6 @@ name: "khmer_uniquekmers" -description: In-memory nucleotide sequence k-mer counting, filtering, graph traversal and more +description: In-memory nucleotide sequence k-mer counting, filtering, graph traversal + and more keywords: - khmer - k-mer @@ -12,28 +13,52 @@ tools: tool_dev_url: https://github.com/dib-lab/khmer doi: "10.12688/f1000research.6924.1" licence: ["BSD License"] + identifier: biotools:khmer input: - - fasta: - type: file - description: fasta file - pattern: "*.{fa,fasta}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1' ]` + - fasta: + type: file + description: fasta file + pattern: "*.{fa,fasta}" + ontologies: + - edam: "http://edamontology.org/format_1929" # FASTA - kmer_size: - type: value + type: integer description: k-mer size to use - pattern: "[0-9]+" output: - - report: - type: file - description: Text file containing unique-kmers.py execution report - pattern: "report.txt" - - kmers: - type: file - description: Text file containing number of kmers - pattern: "kmers.txt" - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + report: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1' ]` + - "*.report.txt": + type: file + description: Text file containing unique-kmers.py execution report + pattern: "*.report.txt" + ontologies: [] + kmers: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1' ]` + - "*.kmers.txt": + type: file + description: Text file containing number of kmers + pattern: "*.kmers.txt" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@JoseEspinosa" maintainers: diff --git a/modules/nf-core/khmer/uniquekmers/tests/main.nf.test b/modules/nf-core/khmer/uniquekmers/tests/main.nf.test new file mode 100644 index 000000000..bea179b28 --- /dev/null +++ b/modules/nf-core/khmer/uniquekmers/tests/main.nf.test @@ -0,0 +1,57 @@ +nextflow_process { + + name "Test Process KHMER_UNIQUEKMERS" + + script "../main.nf" + process "KHMER_UNIQUEKMERS" + + tag "modules" + tag "modules_nfcore" + tag "khmer" + tag "khmer/uniquekmers" + + test("sarscov2 - fasta") { + + when { + process { + """ + input[0] = [ + [ id: 'test'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta',checkIfExists:true) + ] + input[1] = 50 + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("sarscov2 - fasta -- stub") { + options '-stub' + when { + process { + """ + input[0] = [ + [ id: 'test'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta',checkIfExists:true) + ] + input[1] = 50 + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out, + path(process.out.versions[0]).yaml + ).match() } + ) + } + } +} diff --git a/modules/nf-core/khmer/uniquekmers/tests/main.nf.test.snap b/modules/nf-core/khmer/uniquekmers/tests/main.nf.test.snap new file mode 100644 index 000000000..968989520 --- /dev/null +++ b/modules/nf-core/khmer/uniquekmers/tests/main.nf.test.snap @@ -0,0 +1,105 @@ +{ + "sarscov2 - fasta -- stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.report.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.kmers.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,5c1c80d104ef7daa0d017bf58024722d" + ], + "kmers": [ + [ + { + "id": "test" + }, + "test.kmers.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "report": [ + [ + { + "id": "test" + }, + "test.report.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,5c1c80d104ef7daa0d017bf58024722d" + ] + }, + { + "KHMER_UNIQUEKMERS": { + "khmer": "3.0.0a3" + } + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.4" + }, + "timestamp": "2025-04-24T19:41:02.690916494" + }, + "sarscov2 - fasta": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.report.txt:md5,ee489abd3b244dea3640649e1790d55e" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.kmers.txt:md5,496ebf23653a01c7a42d743e47c19f65" + ] + ], + "2": [ + "versions.yml:md5,5c1c80d104ef7daa0d017bf58024722d" + ], + "kmers": [ + [ + { + "id": "test" + }, + "test.kmers.txt:md5,496ebf23653a01c7a42d743e47c19f65" + ] + ], + "report": [ + [ + { + "id": "test" + }, + "test.report.txt:md5,ee489abd3b244dea3640649e1790d55e" + ] + ], + "versions": [ + "versions.yml:md5,5c1c80d104ef7daa0d017bf58024722d" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.4" + }, + "timestamp": "2025-04-24T19:40:56.950583876" + } +} \ No newline at end of file diff --git a/modules/nf-core/macs3/callpeak/environment.yml b/modules/nf-core/macs3/callpeak/environment.yml index d9caa561d..43002db05 100644 --- a/modules/nf-core/macs3/callpeak/environment.yml +++ b/modules/nf-core/macs3/callpeak/environment.yml @@ -1,9 +1,7 @@ --- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json -name: "macs3_callpeak" channels: - conda-forge - bioconda - - defaults dependencies: - - "bioconda::macs3=3.0.1" + - bioconda::macs3=3.0.4 diff --git a/modules/nf-core/macs3/callpeak/main.nf b/modules/nf-core/macs3/callpeak/main.nf index 53a1a200f..993137772 100644 --- a/modules/nf-core/macs3/callpeak/main.nf +++ b/modules/nf-core/macs3/callpeak/main.nf @@ -5,8 +5,8 @@ process MACS3_CALLPEAK { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/macs3:3.0.1--py311h0152c62_3': - 'biocontainers/macs3:3.0.1--py311h0152c62_3' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/2f/2fb492856efb63a7f824f0801b1386d08468cd4b7819ddc4c21e7f10e09b4fda/data': + 'community.wave.seqera.io/library/macs3:3.0.4--e0346d811b8b428e' }" input: tuple val(meta), path(ipbam), path(controlbam) @@ -15,7 +15,7 @@ process MACS3_CALLPEAK { output: tuple val(meta), path("*.{narrowPeak,broadPeak}"), emit: peak tuple val(meta), path("*.xls") , emit: xls - path "versions.yml" , emit: versions + tuple val("${task.process}"), val('macs3'), eval("macs3 --version | sed -e 's/macs3 //'"), topic: versions, emit: versions_macs3 tuple val(meta), path("*.gappedPeak"), optional:true, emit: gapped tuple val(meta), path("*.bed") , optional:true, emit: bed @@ -31,7 +31,7 @@ process MACS3_CALLPEAK { def format = meta.single_end ? 'BAM' : 'BAMPE' def control = controlbam ? "--control $controlbam" : '' if(args_list.contains('--format')){ - def id = args_list.findIndexOf{it=='--format'} + def id = args_list.findIndexOf{args_i -> args_i=='--format'} format = args_list[id+1] args_list.remove(id+1) args_list.remove(id) @@ -45,15 +45,9 @@ process MACS3_CALLPEAK { --name $prefix \\ --treatment $ipbam \\ $control - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - macs3: \$(macs3 --version | sed -e "s/macs3 //g") - END_VERSIONS """ stub: - def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" """ touch ${prefix}.gappedPeak @@ -61,10 +55,5 @@ process MACS3_CALLPEAK { touch ${prefix}.bdg touch ${prefix}.narrowPeak touch ${prefix}.xls - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - macs3: \$(macs3 --version | sed -e "s/macs3 //g") - END_VERSIONS """ } diff --git a/modules/nf-core/macs3/callpeak/meta.yml b/modules/nf-core/macs3/callpeak/meta.yml index 1603b8e2e..f7eae553c 100644 --- a/modules/nf-core/macs3/callpeak/meta.yml +++ b/modules/nf-core/macs3/callpeak/meta.yml @@ -1,7 +1,6 @@ ---- -# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json name: "macs3_callpeak" -description: Peak calling of enriched genomic regions of ChIP-seq and ATAC-seq experiments +description: Peak calling of enriched genomic regions of ChIP-seq and ATAC-seq + experiments keywords: - alignment - atac-seq @@ -14,20 +13,23 @@ tools: documentation: "https://macs3-project.github.io/MACS/" tool_dev_url: "https://github.com/macs3-project/MACS/" doi: "10.1101/496521" - licence: ["BSD-3-clause"] - + licence: + - "BSD-3-clause" + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. `[ id:'sample_1', single_end:false ]` - - ipbam: - type: file - description: The ChIP-seq treatment file - - controlbam: - type: file - description: The control file + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample_1', single_end:false ]` + - ipbam: + type: file + description: The ChIP-seq treatment file + ontologies: [] + - controlbam: + type: file + description: The control file + ontologies: [] - macs3_gsize: type: string description: | @@ -35,39 +37,87 @@ input: or shortcuts:'hs' for human (2,913,022,398), 'mm' for mouse (2,652,783,500), 'ce' for C. elegans (100,286,401) and 'dm' for fruitfly (142,573,017), Default:hs. - output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. `[ id:'sample1', single_end:false ]` - - versions: - type: file - description: File containing software version - pattern: "versions.yml" - - peak: - type: file - description: BED file containing annotated peaks - pattern: "*.gappedPeak,*.narrowPeak}" - - xls: - type: file - description: xls file containing annotated peaks - pattern: "*.xls" - - gapped: - type: file - description: Optional BED file containing gapped peak - pattern: "*.gappedPeak" - - bed: - type: file - description: Optional BED file containing peak summits locations for every peak - pattern: "*.bed" - - bdg: - type: file - description: Optional bedGraph files for input and treatment input samples - pattern: "*.bdg" - + peak: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - "*.{narrowPeak,broadPeak}": + type: file + description: BED file containing annotated peaks + pattern: "*.gappedPeak,*.narrowPeak}" + ontologies: [] + xls: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - "*.xls": + type: file + description: xls file containing annotated peaks + pattern: "*.xls" + ontologies: [] + gapped: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - "*.gappedPeak": + type: file + description: Optional BED file containing gapped peak + pattern: "*.gappedPeak" + ontologies: [] + bed: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - "*.bed": + type: file + description: Optional BED file containing peak summits locations for + every peak + pattern: "*.bed" + ontologies: [] + bdg: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - "*.bdg": + type: file + description: Optional bedGraph files for input and treatment input + samples + pattern: "*.bdg" + ontologies: [] + versions_macs3: + - - ${task.process}: + type: string + description: The name of the process + - macs3: + type: string + description: The name of the tool + - macs3 --version | sed -e 's/macs3 //': + type: eval + description: The expression to obtain the version of the tool +topics: + versions: + - - ${task.process}: + type: string + description: The name of the process + - macs3: + type: string + description: The name of the tool + - macs3 --version | sed -e 's/macs3 //': + type: eval + description: The expression to obtain the version of the tool authors: - "@JoseEspinosa" maintainers: - "@JoseEspinosa" + - "@Kevin-Brockers" diff --git a/modules/nf-core/macs3/callpeak/tests/bam.config b/modules/nf-core/macs3/callpeak/tests/bam.config index 217e3107a..4044f99dc 100644 --- a/modules/nf-core/macs3/callpeak/tests/bam.config +++ b/modules/nf-core/macs3/callpeak/tests/bam.config @@ -2,4 +2,4 @@ process { withName: 'MACS3_CALLPEAK' { ext.args = '--qval 0.1' } -} \ No newline at end of file +} diff --git a/modules/nf-core/macs3/callpeak/tests/bed.config b/modules/nf-core/macs3/callpeak/tests/bed.config index 194440068..fd37823a8 100644 --- a/modules/nf-core/macs3/callpeak/tests/bed.config +++ b/modules/nf-core/macs3/callpeak/tests/bed.config @@ -2,4 +2,4 @@ process { withName: 'MACS3_CALLPEAK' { ext.args = '--format BED --qval 10 --nomodel --extsize 200' } -} \ No newline at end of file +} diff --git a/modules/nf-core/macs3/callpeak/tests/main.nf.test.snap b/modules/nf-core/macs3/callpeak/tests/main.nf.test.snap index d6d982929..af74ebeb6 100644 --- a/modules/nf-core/macs3/callpeak/tests/main.nf.test.snap +++ b/modules/nf-core/macs3/callpeak/tests/main.nf.test.snap @@ -17,11 +17,15 @@ "id": "test", "single_end": false }, - "test_peaks.xls:md5,221852e4639574d2f53cf1917efa4922" + "test_peaks.xls:md5,7bb3dd1f0ba377fc81eabb7b01a45b14" ] ], "2": [ - "versions.yml:md5,cb33970f9aaa0730733abe2fd9cb2b74" + [ + "MACS3_CALLPEAK", + "macs3", + "3.0.4" + ] ], "3": [ @@ -62,8 +66,12 @@ "test_peaks.narrowPeak:md5,2e4da1c1704595e12aaf99cc715ad70c" ] ], - "versions": [ - "versions.yml:md5,cb33970f9aaa0730733abe2fd9cb2b74" + "versions_macs3": [ + [ + "MACS3_CALLPEAK", + "macs3", + "3.0.4" + ] ], "xls": [ [ @@ -71,16 +79,16 @@ "id": "test", "single_end": false }, - "test_peaks.xls:md5,221852e4639574d2f53cf1917efa4922" + "test_peaks.xls:md5,7bb3dd1f0ba377fc81eabb7b01a45b14" ] ] } ], + "timestamp": "2026-03-16T21:39:32.130928", "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-07-22T17:04:31.629715" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } }, "sarscov2 - bam - stub": { "content": [ @@ -104,7 +112,11 @@ ] ], "2": [ - "versions.yml:md5,cb33970f9aaa0730733abe2fd9cb2b74" + [ + "MACS3_CALLPEAK", + "macs3", + "3.0.4" + ] ], "3": [ [ @@ -169,8 +181,12 @@ "test.narrowPeak:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,cb33970f9aaa0730733abe2fd9cb2b74" + "versions_macs3": [ + [ + "MACS3_CALLPEAK", + "macs3", + "3.0.4" + ] ], "xls": [ [ @@ -183,11 +199,11 @@ ] } ], + "timestamp": "2026-03-16T21:39:43.27179", "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-07-22T17:04:58.589844" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } }, "homo_sapiens - callpeak - control - bam": { "content": [ @@ -207,11 +223,15 @@ "id": "test", "single_end": false }, - "test_peaks.xls:md5,9fce04613bdc9c8372a9f884aa0d5aa6" + "test_peaks.xls:md5,9e661b949cf7ddfedfcc6c9f0a84e14f" ] ], "2": [ - "versions.yml:md5,cb33970f9aaa0730733abe2fd9cb2b74" + [ + "MACS3_CALLPEAK", + "macs3", + "3.0.4" + ] ], "3": [ @@ -252,8 +272,12 @@ "test_peaks.narrowPeak:md5,653e1108cc57ca07d0f60fc0f4fb8ba3" ] ], - "versions": [ - "versions.yml:md5,cb33970f9aaa0730733abe2fd9cb2b74" + "versions_macs3": [ + [ + "MACS3_CALLPEAK", + "macs3", + "3.0.4" + ] ], "xls": [ [ @@ -261,16 +285,16 @@ "id": "test", "single_end": false }, - "test_peaks.xls:md5,9fce04613bdc9c8372a9f884aa0d5aa6" + "test_peaks.xls:md5,9e661b949cf7ddfedfcc6c9f0a84e14f" ] ] } ], + "timestamp": "2026-03-16T21:39:38.355442", "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-07-22T17:04:44.063426" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } }, "homo_sapiens - callpeak - bed": { "content": [ @@ -290,11 +314,15 @@ "id": "test", "single_end": false }, - "test_peaks.xls:md5,14efbf7137623df5aaf282b506ac9601" + "test_peaks.xls:md5,b5ea33e20a0e9b5f188eba614cd0d9a6" ] ], "2": [ - "versions.yml:md5,cb33970f9aaa0730733abe2fd9cb2b74" + [ + "MACS3_CALLPEAK", + "macs3", + "3.0.4" + ] ], "3": [ @@ -335,8 +363,12 @@ "test_peaks.narrowPeak:md5,10e7d4747f8a2513e5ebb04856a51673" ] ], - "versions": [ - "versions.yml:md5,cb33970f9aaa0730733abe2fd9cb2b74" + "versions_macs3": [ + [ + "MACS3_CALLPEAK", + "macs3", + "3.0.4" + ] ], "xls": [ [ @@ -344,15 +376,15 @@ "id": "test", "single_end": false }, - "test_peaks.xls:md5,14efbf7137623df5aaf282b506ac9601" + "test_peaks.xls:md5,b5ea33e20a0e9b5f188eba614cd0d9a6" ] ] } ], + "timestamp": "2026-03-16T21:39:26.580158", "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-07-22T17:04:16.697163" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } } } \ No newline at end of file diff --git a/modules/nf-core/multiqc/environment.yml b/modules/nf-core/multiqc/environment.yml index d02016a00..009874d4c 100644 --- a/modules/nf-core/multiqc/environment.yml +++ b/modules/nf-core/multiqc/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::multiqc=1.32 + - bioconda::multiqc=1.33 diff --git a/modules/nf-core/multiqc/main.nf b/modules/nf-core/multiqc/main.nf index c1158fb08..5376aea1e 100644 --- a/modules/nf-core/multiqc/main.nf +++ b/modules/nf-core/multiqc/main.nf @@ -1,24 +1,21 @@ process MULTIQC { + tag "${meta.id}" label 'process_single' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/8c/8c6c120d559d7ee04c7442b61ad7cf5a9e8970be5feefb37d68eeaa60c1034eb/data' : - 'community.wave.seqera.io/library/multiqc:1.32--d58f60e4deb769bf' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/34/34e733a9ae16a27e80fe00f863ea1479c96416017f24a907996126283e7ecd4d/data' + : 'community.wave.seqera.io/library/multiqc:1.33--ee7739d47738383b'}" input: - path multiqc_files, stageAs: "?/*" - path(multiqc_config) - path(extra_multiqc_config) - path(multiqc_logo) - path(replace_names) - path(sample_names) + tuple val(meta), path(multiqc_files, stageAs: "?/*"), path(multiqc_config, stageAs: "?/*"), path(multiqc_logo), path(replace_names), path(sample_names) output: - path "*multiqc_report.html", emit: report - path "*_data" , emit: data - path "*_plots" , optional:true, emit: plots - path "versions.yml" , emit: versions + tuple val(meta), path("*.html"), emit: report + tuple val(meta), path("*_data"), emit: data + tuple val(meta), path("*_plots"), emit: plots, optional: true + // MultiQC should not push its versions to the `versions` topic. Its input depends on the versions topic to be resolved thus outputting to the topic will let the pipeline hang forever + tuple val("${task.process}"), val('multiqc'), eval('multiqc --version | sed "s/.* //g"'), emit: versions when: task.ext.when == null || task.ext.when @@ -26,38 +23,28 @@ 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 config = multiqc_config ? multiqc_config instanceof List ? "--config ${multiqc_config.join(' --config ')}" : "--config ${multiqc_config}" : "" 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}" : '' """ multiqc \\ --force \\ - $args \\ - $config \\ - $prefix \\ - $extra_config \\ - $logo \\ - $replace \\ - $samples \\ + ${args} \\ + ${config} \\ + ${prefix} \\ + ${logo} \\ + ${replace} \\ + ${samples} \\ . - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - multiqc: \$( multiqc --version | sed -e "s/multiqc, version //g" ) - END_VERSIONS """ stub: """ mkdir multiqc_data + touch multiqc_data/.stub mkdir multiqc_plots + touch multiqc_plots/.stub touch multiqc_report.html - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - multiqc: \$( multiqc --version | sed -e "s/multiqc, version //g" ) - END_VERSIONS """ } diff --git a/modules/nf-core/multiqc/meta.yml b/modules/nf-core/multiqc/meta.yml index ce30eb732..ef434a9a2 100644 --- a/modules/nf-core/multiqc/meta.yml +++ b/modules/nf-core/multiqc/meta.yml @@ -1,6 +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,74 +12,91 @@ tools: It's a general use tool, perfect for summarising the output from numerous bioinformatics tools. homepage: https://multiqc.info/ documentation: https://multiqc.info/docs/ - licence: ["GPL-3.0-or-later"] + 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 - ontologies: [] - - multiqc_config: - type: file - description: Optional config yml for MultiQC - pattern: "*.{yml,yaml}" - ontologies: - - edam: http://edamontology.org/format_3750 # YAML - - extra_multiqc_config: - type: file - description: Second optional config yml for MultiQC. Will override common sections - in multiqc_config. - pattern: "*.{yml,yaml}" - ontologies: - - edam: http://edamontology.org/format_3750 # YAML - - multiqc_logo: - type: file - description: Optional logo file for MultiQC - pattern: "*.{png}" - ontologies: [] - - 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}" - ontologies: - - edam: http://edamontology.org/format_3475 # TSV - - sample_names: - type: file - description: | - Optional TSV file with headers, passed to the MultiQC --sample_names - argument. - pattern: "*.{tsv}" - ontologies: - - edam: http://edamontology.org/format_3475 # TSV -output: - report: - - "*multiqc_report.html": + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'sample1', single_end:false ] + - multiqc_files: type: file - description: MultiQC report file - pattern: "multiqc_report.html" + description: | + List of reports / files recognised by MultiQC, for example the html and zip output of FastQC ontologies: [] - data: - - "*_data": - type: directory - description: MultiQC data dir - pattern: "multiqc_data" - plots: - - "*_plots": + - multiqc_config: + type: file + description: Optional config yml for MultiQC + pattern: "*.{yml,yaml}" + ontologies: + - edam: http://edamontology.org/format_3750 + - multiqc_logo: type: file - description: Plots created by MultiQC - pattern: "*_data" + description: Optional logo file for MultiQC + pattern: "*.{png}" ontologies: [] - versions: - - versions.yml: + - 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}" + ontologies: + - edam: http://edamontology.org/format_3475 + - sample_names: type: file - description: File containing software versions - pattern: "versions.yml" + description: | + Optional TSV file with headers, passed to the MultiQC --sample_names + argument. + pattern: "*.{tsv}" ontologies: - - edam: http://edamontology.org/format_3750 # YAML + - edam: http://edamontology.org/format_3475 +output: + report: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'sample1', single_end:false ] + - "*.html": + type: file + description: MultiQC report file + pattern: ".html" + ontologies: [] + data: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'sample1', single_end:false ] + - "*_data": + type: directory + description: MultiQC data dir + pattern: "multiqc_data" + plots: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'sample1', single_end:false ] + - "*_plots": + type: file + description: Plots created by MultiQC + pattern: "*_plots" + ontologies: [] + versions: + - - ${task.process}: + type: string + description: The process the versions were collected from + - multiqc: + type: string + description: The tool name + - multiqc --version | sed "s/.* //g": + type: eval + description: The expression to obtain the version of the tool authors: - "@abhi18av" - "@bunop" @@ -90,3 +107,27 @@ maintainers: - "@bunop" - "@drpatelh" - "@jfy133" +containers: + conda: + linux/amd64: + lock_file: https://wave.seqera.io/v1alpha1/builds/bd-ee7739d47738383b_1/condalock + linux/arm64: + lock_file: https://wave.seqera.io/v1alpha1/builds/bd-58d7dee710ab3aa8_1/condalock + docker: + linux/amd64: + build_id: bd-ee7739d47738383b_1 + name: community.wave.seqera.io/library/multiqc:1.33--ee7739d47738383b + scanId: sc-6ddec592dcadd583_4 + linux/arm64: + build_id: bd-58d7dee710ab3aa8_1 + name: community.wave.seqera.io/library/multiqc:1.33--58d7dee710ab3aa8 + scanId: sc-a04c42273e34c55c_2 + singularity: + linux/amd64: + build_id: bd-e3576ddf588fa00d_1 + https: https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/34/34e733a9ae16a27e80fe00f863ea1479c96416017f24a907996126283e7ecd4d/data + name: oras://community.wave.seqera.io/library/multiqc:1.33--e3576ddf588fa00d + linux/arm64: + build_id: bd-2537ca5f8445e3c2_1 + https: https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/78/78b89e91d89e9cc99ad5ade5be311f347838cb2acbfb4f13bc343b170be09ce4/data + name: oras://community.wave.seqera.io/library/multiqc:1.33--2537ca5f8445e3c2 diff --git a/modules/nf-core/multiqc/tests/custom_prefix.config b/modules/nf-core/multiqc/tests/custom_prefix.config new file mode 100644 index 000000000..b30b1358b --- /dev/null +++ b/modules/nf-core/multiqc/tests/custom_prefix.config @@ -0,0 +1,5 @@ +process { + withName: 'MULTIQC' { + ext.prefix = "custom_prefix" + } +} diff --git a/modules/nf-core/multiqc/tests/main.nf.test b/modules/nf-core/multiqc/tests/main.nf.test index 33316a7dd..0e422eaa6 100644 --- a/modules/nf-core/multiqc/tests/main.nf.test +++ b/modules/nf-core/multiqc/tests/main.nf.test @@ -15,25 +15,58 @@ nextflow_process { when { process { """ - input[0] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastqc/test_fastqc.zip', checkIfExists: true)) - input[1] = [] - input[2] = [] - input[3] = [] - input[4] = [] - input[5] = [] + input[0] = channel.of([ + [ id: 'FASTQC' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastqc/test_fastqc.zip', checkIfExists: true), + [], + [], + [], + [] + ]) """ } } then { + assert process.success assertAll( - { assert process.success }, - { assert process.out.report[0] ==~ ".*/multiqc_report.html" }, - { assert process.out.data[0] ==~ ".*/multiqc_data" }, - { assert snapshot(process.out.versions).match("multiqc_versions_single") } + { assert snapshot( + file(process.out.report[0][1]).name, + file(process.out.data[0][1]).name, + process.out.findAll { key, val -> key.startsWith("versions") + }).match() } ) } + } + + test("sarscov2 single-end [fastqc] - custom prefix") { + config "./custom_prefix.config" + + when { + process { + """ + input[0] = channel.of([ + [ id: 'FASTQC' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastqc/test_fastqc.zip', checkIfExists: true), + [], + [], + [], + [] + ]) + """ + } + } + then { + assert process.success + assertAll( + { assert snapshot( + file(process.out.report[0][1]).name, + file(process.out.data[0][1]).name, + process.out.findAll { key, val -> key.startsWith("versions") + }).match() } + ) + } } test("sarscov2 single-end [fastqc] [config]") { @@ -41,22 +74,60 @@ nextflow_process { when { process { """ - input[0] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastqc/test_fastqc.zip', checkIfExists: true)) - input[1] = Channel.of(file("https://github.com/nf-core/tools/raw/dev/nf_core/pipeline-template/assets/multiqc_config.yml", checkIfExists: true)) - input[2] = [] - input[3] = [] - input[4] = [] - input[5] = [] + input[0] = channel.of([ + [ id: 'FASTQC' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastqc/test_fastqc.zip', checkIfExists: true), + file("https://github.com/nf-core/tools/raw/dev/nf_core/pipeline-template/assets/multiqc_config.yml", checkIfExists: true), + [], + [], + [] + ]) + """ + } + } + + then { + assert process.success + assertAll( + { assert snapshot( + file(process.out.report[0][1]).name, + file(process.out.data[0][1]).name, + file(process.out.plots[0][1]).name, + process.out.findAll { key, val -> key.startsWith("versions") + }).match() } + ) + } + } + + test("sarscov2 single-end [fastqc] [multiple configs]") { + + when { + process { + """ + input[0] = channel.of([ + [ id: 'FASTQC' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastqc/test_fastqc.zip', checkIfExists: true), + [ + file("https://github.com/nf-core/tools/raw/dev/nf_core/pipeline-template/assets/multiqc_config.yml", checkIfExists: true), + file("https://github.com/nf-core/tools/raw/dev/nf_core/pipeline-template/assets/multiqc_config.yml", checkIfExists: true) + ], + [], + [], + [] + ]) """ } } then { + assert process.success assertAll( - { assert process.success }, - { assert process.out.report[0] ==~ ".*/multiqc_report.html" }, - { assert process.out.data[0] ==~ ".*/multiqc_data" }, - { assert snapshot(process.out.versions).match("multiqc_versions_config") } + { assert snapshot( + file(process.out.report[0][1]).name, + file(process.out.data[0][1]).name, + file(process.out.plots[0][1]).name, + process.out.findAll { key, val -> key.startsWith("versions") + }).match() } ) } } @@ -68,25 +139,23 @@ nextflow_process { when { process { """ - input[0] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastqc/test_fastqc.zip', checkIfExists: true)) - input[1] = [] - input[2] = [] - input[3] = [] - input[4] = [] - input[5] = [] + input[0] = channel.of([ + [ id: 'FASTQC' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastqc/test_fastqc.zip', checkIfExists: true), + [], + [], + [], + [] + ]) """ } } then { + assert process.success assertAll( - { assert process.success }, - { assert snapshot(process.out.report.collect { file(it).getName() } + - process.out.data.collect { file(it).getName() } + - process.out.plots.collect { file(it).getName() } + - process.out.versions ).match("multiqc_stub") } + { assert snapshot(sanitizeOutput(process.out)).match() } ) } - } } diff --git a/modules/nf-core/multiqc/tests/main.nf.test.snap b/modules/nf-core/multiqc/tests/main.nf.test.snap index a88bafd67..c022701f7 100644 --- a/modules/nf-core/multiqc/tests/main.nf.test.snap +++ b/modules/nf-core/multiqc/tests/main.nf.test.snap @@ -1,41 +1,130 @@ { - "multiqc_versions_single": { + "sarscov2 single-end [fastqc] [multiple configs]": { "content": [ - [ - "versions.yml:md5,737bb2c7cad54ffc2ec020791dc48b8f" - ] + "multiqc_report.html", + "multiqc_data", + "multiqc_plots", + { + "versions": [ + [ + "MULTIQC", + "multiqc", + "1.33" + ] + ] + } ], "meta": { "nf-test": "0.9.3", - "nextflow": "24.10.4" + "nextflow": "25.10.4" }, - "timestamp": "2025-10-27T13:33:24.356715" + "timestamp": "2026-02-26T20:21:35.851707" }, - "multiqc_stub": { + "sarscov2 single-end [fastqc]": { "content": [ - [ - "multiqc_report.html", - "multiqc_data", - "multiqc_plots", - "versions.yml:md5,737bb2c7cad54ffc2ec020791dc48b8f" - ] + "multiqc_report.html", + "multiqc_data", + { + "versions": [ + [ + "MULTIQC", + "multiqc", + "1.33" + ] + ] + } ], "meta": { - "nf-test": "0.9.3", - "nextflow": "24.10.4" + "nf-test": "0.9.4", + "nextflow": "25.10.4" }, - "timestamp": "2025-10-27T13:34:11.103619" + "timestamp": "2026-02-26T15:10:36.019680076" }, - "multiqc_versions_config": { + "sarscov2 single-end [fastqc] - stub": { "content": [ - [ - "versions.yml:md5,737bb2c7cad54ffc2ec020791dc48b8f" - ] + { + "data": [ + [ + { + "id": "FASTQC" + }, + [ + ".stub:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "plots": [ + [ + { + "id": "FASTQC" + }, + [ + ".stub:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "report": [ + [ + { + "id": "FASTQC" + }, + "multiqc_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + [ + "MULTIQC", + "multiqc", + "1.33" + ] + ] + } ], "meta": { - "nf-test": "0.9.3", - "nextflow": "24.10.4" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + }, + "timestamp": "2026-02-26T15:14:39.789193051" + }, + "sarscov2 single-end [fastqc] [config]": { + "content": [ + "multiqc_report.html", + "multiqc_data", + "multiqc_plots", + { + "versions": [ + [ + "MULTIQC", + "multiqc", + "1.33" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.4", + "nextflow": "25.10.4" + }, + "timestamp": "2026-02-26T15:21:29.116129274" + }, + "sarscov2 single-end [fastqc] - custom prefix": { + "content": [ + "custom_prefix.html", + "custom_prefix_data", + { + "versions": [ + [ + "MULTIQC", + "multiqc", + "1.33" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.4", + "nextflow": "25.10.4" }, - "timestamp": "2025-10-27T13:34:04.615233" + "timestamp": "2026-02-26T15:10:43.419877592" } } \ No newline at end of file diff --git a/modules/nf-core/phantompeakqualtools/environment.yml b/modules/nf-core/phantompeakqualtools/environment.yml index 8967e158a..4eb7d8887 100644 --- a/modules/nf-core/phantompeakqualtools/environment.yml +++ b/modules/nf-core/phantompeakqualtools/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - "bioconda::phantompeakqualtools=1.2.2" + - bioconda::phantompeakqualtools=1.2.2 diff --git a/modules/nf-core/phantompeakqualtools/meta.yml b/modules/nf-core/phantompeakqualtools/meta.yml index d9c7cdac8..1d4eaba78 100644 --- a/modules/nf-core/phantompeakqualtools/meta.yml +++ b/modules/nf-core/phantompeakqualtools/meta.yml @@ -30,9 +30,10 @@ input: type: file description: BAM/CRAM/SAM file pattern: "*.{bam,cram,sam}" + ontologies: [] output: - - spp: - - meta: + spp: + - - meta: type: map description: | Groovy Map containing sample information @@ -43,8 +44,9 @@ output: A ChIP-Seq Processing Pipeline file containing peakshift/phantomPeak results pattern: "*.{out}" - - pdf: - - meta: + ontologies: [] + pdf: + - - meta: type: map description: | Groovy Map containing sample information @@ -53,8 +55,9 @@ output: type: file description: A pdf containing save cross-correlation plots pattern: "*.{pdf}" - - rdata: - - meta: + ontologies: [] + rdata: + - - meta: type: map description: | Groovy Map containing sample information @@ -63,11 +66,14 @@ output: type: file description: Rdata file containing the R session pattern: "*.{Rdata}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@drpatelh" - "@edmundmiller" diff --git a/modules/nf-core/phantompeakqualtools/tests/main.nf.test b/modules/nf-core/phantompeakqualtools/tests/main.nf.test index ea096bcfb..a2eac9d3e 100644 --- a/modules/nf-core/phantompeakqualtools/tests/main.nf.test +++ b/modules/nf-core/phantompeakqualtools/tests/main.nf.test @@ -87,4 +87,4 @@ nextflow_process { } -} \ No newline at end of file +} diff --git a/modules/nf-core/phantompeakqualtools/tests/tags.yml b/modules/nf-core/phantompeakqualtools/tests/tags.yml deleted file mode 100644 index 9031749e1..000000000 --- a/modules/nf-core/phantompeakqualtools/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -phantompeakqualtools: - - "modules/nf-core/phantompeakqualtools/**" diff --git a/modules/nf-core/picard/collectmultiplemetrics/environment.yml b/modules/nf-core/picard/collectmultiplemetrics/environment.yml index 6a16f00dc..b4ac4fe08 100644 --- a/modules/nf-core/picard/collectmultiplemetrics/environment.yml +++ b/modules/nf-core/picard/collectmultiplemetrics/environment.yml @@ -1,7 +1,8 @@ -name: picard_collectmultiplemetrics +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::picard=3.2.0 + # renovate: datasource=conda depName=bioconda/picard + - bioconda::picard=3.4.0 diff --git a/modules/nf-core/picard/collectmultiplemetrics/main.nf b/modules/nf-core/picard/collectmultiplemetrics/main.nf index c5555871d..9de927e69 100644 --- a/modules/nf-core/picard/collectmultiplemetrics/main.nf +++ b/modules/nf-core/picard/collectmultiplemetrics/main.nf @@ -1,21 +1,21 @@ process PICARD_COLLECTMULTIPLEMETRICS { - tag "$meta.id" + tag "${meta.id}" label 'process_single' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/picard:3.2.0--hdfd78af_0' : - 'biocontainers/picard:3.2.0--hdfd78af_0' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/08/0861295baa7c01fc593a9da94e82b44a729dcaf8da92be8e565da109aa549b25/data' + : 'community.wave.seqera.io/library/picard:3.4.0--e9963040df0a9bf6'}" input: - tuple val(meta) , path(bam), path(bai) + tuple val(meta), path(bam), path(bai) tuple val(meta2), path(fasta) tuple val(meta3), path(fai) output: tuple val(meta), path("*_metrics"), emit: metrics - tuple val(meta), path("*.pdf") , emit: pdf, optional: true - path "versions.yml" , emit: versions + tuple val(meta), path("*.pdf"), emit: pdf, optional: true + tuple val("${task.process}"), val('picard'), eval("picard CollectMultipleMetrics --version 2>&1 | sed -n 's/.*Version://p'"), topic: versions, emit: versions_picard when: task.ext.when == null || task.ext.when @@ -26,23 +26,19 @@ process PICARD_COLLECTMULTIPLEMETRICS { def reference = fasta ? "--REFERENCE_SEQUENCE ${fasta}" : "" def avail_mem = 3072 if (!task.memory) { - log.info '[Picard CollectMultipleMetrics] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.' - } else { - avail_mem = (task.memory.mega*0.8).intValue() + log.info('[Picard CollectMultipleMetrics] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.') + } + else { + avail_mem = (task.memory.mega * 0.8).intValue() } """ picard \\ -Xmx${avail_mem}M \\ CollectMultipleMetrics \\ - $args \\ - --INPUT $bam \\ + ${args} \\ + --INPUT ${bam} \\ --OUTPUT ${prefix}.CollectMultipleMetrics \\ - $reference - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - picard: \$(picard CollectMultipleMetrics --version 2>&1 | grep -o 'Version.*' | cut -f2- -d:) - END_VERSIONS + ${reference} """ stub: @@ -58,10 +54,5 @@ process PICARD_COLLECTMULTIPLEMETRICS { touch ${prefix}.CollectMultipleMetrics.quality_by_cycle.pdf touch ${prefix}.CollectMultipleMetrics.insert_size_histogram.pdf touch ${prefix}.CollectMultipleMetrics.quality_distribution_metrics - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - picard: \$(echo \$(picard CollectMultipleMetrics --version 2>&1) | grep -o 'Version:.*' | cut -f2- -d:) - END_VERSIONS """ } diff --git a/modules/nf-core/picard/collectmultiplemetrics/meta.yml b/modules/nf-core/picard/collectmultiplemetrics/meta.yml index 67bba57b2..213d600be 100644 --- a/modules/nf-core/picard/collectmultiplemetrics/meta.yml +++ b/modules/nf-core/picard/collectmultiplemetrics/meta.yml @@ -15,55 +15,88 @@ tools: homepage: https://broadinstitute.github.io/picard/ documentation: https://broadinstitute.github.io/picard/ licence: ["MIT"] + identifier: biotools:picard_tools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - bam: - type: file - description: SAM/BAM/CRAM file - pattern: "*.{sam,bam,cram}" - - bai: - type: file - description: Optional SAM/BAM/CRAM file index - pattern: "*.{sai,bai,crai}" - - meta2: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'genome'] - - fasta: - type: file - description: Genome fasta file - - meta3: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'genome'] - - fai: - type: file - description: Index of FASTA file. Only needed when fasta is supplied. - pattern: "*.fai" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bam: + type: file + description: SAM/BAM/CRAM file + pattern: "*.{sam,bam,cram}" + ontologies: [] + - bai: + type: file + description: Optional SAM/BAM/CRAM file index + pattern: "*.{sai,bai,crai}" + ontologies: [] + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome'] + - fasta: + type: file + description: Genome fasta file + ontologies: [] + - - meta3: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome'] + - fai: + type: file + description: Index of FASTA file. Only needed when fasta is supplied. + pattern: "*.fai" + ontologies: [] output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - metrics: - type: file - description: Alignment metrics files generated by picard - pattern: "*_{metrics}" - - pdf: - type: file - description: PDF plots of metrics - pattern: "*.{pdf}" - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + metrics: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*_metrics": + type: file + description: Alignment metrics files generated by picard + pattern: "*_{metrics}" + ontologies: [] + pdf: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.pdf": + type: file + description: PDF plots of metrics + pattern: "*.{pdf}" + ontologies: [] + versions_picard: + - - ${task.process}: + type: string + description: The process the versions were collected from + - picard: + type: string + description: The tool name + - "picard CollectMultipleMetrics --version 2>&1 | sed -n 's/.*Version://p'": + type: string + description: The command used to generate the version of the tool + +topics: + versions: + - - ${task.process}: + type: string + description: The process the versions were collected from + - picard: + type: string + description: The tool name + - "picard CollectMultipleMetrics --version 2>&1 | sed -n 's/.*Version://p'": + type: string + description: The command used to generate the version of the tool + authors: - "@drpatelh" maintainers: diff --git a/modules/nf-core/picard/collectmultiplemetrics/tests/main.nf.test b/modules/nf-core/picard/collectmultiplemetrics/tests/main.nf.test new file mode 100644 index 000000000..0037acab6 --- /dev/null +++ b/modules/nf-core/picard/collectmultiplemetrics/tests/main.nf.test @@ -0,0 +1,186 @@ + +nextflow_process { + + name "Test Process PICARD_COLLECTMULTIPLEMETRICS" + script "../main.nf" + process "PICARD_COLLECTMULTIPLEMETRICS" + + tag "modules" + tag "modules_nfcore" + tag "picard" + tag "picard/collectmultiplemetrics" + + test("test-picard-collectmultiplemetrics") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true) + ] + input[1] = [ + [id:'genome'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [[id:'genome'],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.metrics[0][1].collect { file(it).name }.toSorted(), + process.out.pdf[0][1].collect { file(it).name }.toSorted(), + process.out.findAll { key, val -> key.startsWith("versions") } + ).match()} + ) + } + } + + test("test-picard-collectmultiplemetrics-nofasta") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true) + ] + input[1] = [[id:'genome'],[]] + input[2] = [[id:'genome'],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.metrics[0][1].collect { file(it).name }.toSorted(), + process.out.pdf[0][1].collect { file(it).name }.toSorted(), + process.out.findAll { key, val -> key.startsWith("versions") } + ).match()} + ) + } + } + + test("test-picard-collectmultiplemetrics-cram") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true) + ] + input[1] = [ + [id:'genome'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [ + [id:'genome'], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.metrics[0][1].collect { file(it).name }.toSorted(), + process.out.pdf[0][1].collect { file(it).name }.toSorted(), + process.out.findAll { key, val -> key.startsWith("versions") } + ).match()} + ) + } + } + + test("test-picard-collectmultiplemetrics - stub") { + options "-stub" + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true) + ] + input[1] = [ + [id:'genome'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [[id:'genome'],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(sanitizeOutput(process.out)).match() } + ) + } + } + + test("test-picard-collectmultiplemetrics-nofasta - stub") { + options "-stub" + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true) + ] + input[1] = [[id:'genome'],[]] + input[2] = [[id:'genome'],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(sanitizeOutput(process.out)).match() } + ) + } + } + + test("test-picard-collectmultiplemetrics-cram - stub") { + options "-stub" + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true) + ] + input[1] = [ + [id:'genome'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [ + [id:'genome'], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(sanitizeOutput(process.out)).match() } + ) + } + } +} diff --git a/modules/nf-core/picard/collectmultiplemetrics/tests/main.nf.test.snap b/modules/nf-core/picard/collectmultiplemetrics/tests/main.nf.test.snap new file mode 100644 index 000000000..393ed1003 --- /dev/null +++ b/modules/nf-core/picard/collectmultiplemetrics/tests/main.nf.test.snap @@ -0,0 +1,242 @@ +{ + "test-picard-collectmultiplemetrics": { + "content": [ + [ + "test.CollectMultipleMetrics.alignment_summary_metrics", + "test.CollectMultipleMetrics.base_distribution_by_cycle_metrics", + "test.CollectMultipleMetrics.insert_size_metrics", + "test.CollectMultipleMetrics.quality_by_cycle_metrics", + "test.CollectMultipleMetrics.quality_distribution_metrics" + ], + [ + "test.CollectMultipleMetrics.base_distribution_by_cycle.pdf", + "test.CollectMultipleMetrics.insert_size_histogram.pdf", + "test.CollectMultipleMetrics.quality_by_cycle.pdf", + "test.CollectMultipleMetrics.quality_distribution.pdf", + "test.CollectMultipleMetrics.read_length_histogram.pdf" + ], + { + "versions_picard": [ + [ + "PICARD_COLLECTMULTIPLEMETRICS", + "picard", + "3.4.0" + ] + ] + } + ], + "timestamp": "2026-02-02T10:22:21.230301646", + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.2" + } + }, + "test-picard-collectmultiplemetrics - stub": { + "content": [ + { + "metrics": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.CollectMultipleMetrics.alignment_summary_metrics:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.CollectMultipleMetrics.base_distribution_by_cycle_metrics:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.CollectMultipleMetrics.insert_size_metrics:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.CollectMultipleMetrics.quality_by_cycle_metrics:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.CollectMultipleMetrics.quality_distribution_metrics:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "pdf": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.CollectMultipleMetrics.base_distribution_by_cycle.pdf:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.CollectMultipleMetrics.insert_size_histogram.pdf:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.CollectMultipleMetrics.quality_by_cycle.pdf:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.CollectMultipleMetrics.quality_distribution.pdf:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.CollectMultipleMetrics.read_length_histogram.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "versions_picard": [ + [ + "PICARD_COLLECTMULTIPLEMETRICS", + "picard", + "3.4.0" + ] + ] + } + ], + "timestamp": "2026-02-20T10:32:38.701455244", + "meta": { + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } + }, + "test-picard-collectmultiplemetrics-nofasta - stub": { + "content": [ + { + "metrics": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.CollectMultipleMetrics.alignment_summary_metrics:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.CollectMultipleMetrics.base_distribution_by_cycle_metrics:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.CollectMultipleMetrics.insert_size_metrics:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.CollectMultipleMetrics.quality_by_cycle_metrics:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.CollectMultipleMetrics.quality_distribution_metrics:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "pdf": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.CollectMultipleMetrics.base_distribution_by_cycle.pdf:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.CollectMultipleMetrics.insert_size_histogram.pdf:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.CollectMultipleMetrics.quality_by_cycle.pdf:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.CollectMultipleMetrics.quality_distribution.pdf:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.CollectMultipleMetrics.read_length_histogram.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "versions_picard": [ + [ + "PICARD_COLLECTMULTIPLEMETRICS", + "picard", + "3.4.0" + ] + ] + } + ], + "timestamp": "2026-02-20T10:32:48.923918624", + "meta": { + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } + }, + "test-picard-collectmultiplemetrics-cram": { + "content": [ + [ + "test.CollectMultipleMetrics.alignment_summary_metrics", + "test.CollectMultipleMetrics.base_distribution_by_cycle_metrics", + "test.CollectMultipleMetrics.insert_size_metrics", + "test.CollectMultipleMetrics.quality_by_cycle_metrics", + "test.CollectMultipleMetrics.quality_distribution_metrics" + ], + [ + "test.CollectMultipleMetrics.base_distribution_by_cycle.pdf", + "test.CollectMultipleMetrics.insert_size_histogram.pdf", + "test.CollectMultipleMetrics.quality_by_cycle.pdf", + "test.CollectMultipleMetrics.quality_distribution.pdf", + "test.CollectMultipleMetrics.read_length_histogram.pdf" + ], + { + "versions_picard": [ + [ + "PICARD_COLLECTMULTIPLEMETRICS", + "picard", + "3.4.0" + ] + ] + } + ], + "timestamp": "2026-02-02T10:23:52.23446844", + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.2" + } + }, + "test-picard-collectmultiplemetrics-nofasta": { + "content": [ + [ + "test.CollectMultipleMetrics.alignment_summary_metrics", + "test.CollectMultipleMetrics.base_distribution_by_cycle_metrics", + "test.CollectMultipleMetrics.insert_size_metrics", + "test.CollectMultipleMetrics.quality_by_cycle_metrics", + "test.CollectMultipleMetrics.quality_distribution_metrics" + ], + [ + "test.CollectMultipleMetrics.base_distribution_by_cycle.pdf", + "test.CollectMultipleMetrics.insert_size_histogram.pdf", + "test.CollectMultipleMetrics.quality_by_cycle.pdf", + "test.CollectMultipleMetrics.quality_distribution.pdf", + "test.CollectMultipleMetrics.read_length_histogram.pdf" + ], + { + "versions_picard": [ + [ + "PICARD_COLLECTMULTIPLEMETRICS", + "picard", + "3.4.0" + ] + ] + } + ], + "timestamp": "2026-02-02T10:23:27.387621193", + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.2" + } + }, + "test-picard-collectmultiplemetrics-cram - stub": { + "content": [ + { + "metrics": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.CollectMultipleMetrics.alignment_summary_metrics:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.CollectMultipleMetrics.base_distribution_by_cycle_metrics:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.CollectMultipleMetrics.insert_size_metrics:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.CollectMultipleMetrics.quality_by_cycle_metrics:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.CollectMultipleMetrics.quality_distribution_metrics:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "pdf": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.CollectMultipleMetrics.base_distribution_by_cycle.pdf:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.CollectMultipleMetrics.insert_size_histogram.pdf:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.CollectMultipleMetrics.quality_by_cycle.pdf:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.CollectMultipleMetrics.quality_distribution.pdf:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.CollectMultipleMetrics.read_length_histogram.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "versions_picard": [ + [ + "PICARD_COLLECTMULTIPLEMETRICS", + "picard", + "3.4.0" + ] + ] + } + ], + "timestamp": "2026-02-20T10:32:57.11686549", + "meta": { + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } + } +} \ No newline at end of file diff --git a/modules/nf-core/picard/markduplicates/environment.yml b/modules/nf-core/picard/markduplicates/environment.yml index a27db1186..b4ac4fe08 100644 --- a/modules/nf-core/picard/markduplicates/environment.yml +++ b/modules/nf-core/picard/markduplicates/environment.yml @@ -1,7 +1,8 @@ -name: picard_markduplicates +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::picard=3.2.0 + # renovate: datasource=conda depName=bioconda/picard + - bioconda::picard=3.4.0 diff --git a/modules/nf-core/picard/markduplicates/main.nf b/modules/nf-core/picard/markduplicates/main.nf index cf18ac35c..17bcf27ba 100644 --- a/modules/nf-core/picard/markduplicates/main.nf +++ b/modules/nf-core/picard/markduplicates/main.nf @@ -1,11 +1,11 @@ process PICARD_MARKDUPLICATES { - tag "$meta.id" + tag "${meta.id}" label 'process_medium' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/picard:3.2.0--hdfd78af_0' : - 'biocontainers/picard:3.2.0--hdfd78af_0' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/08/0861295baa7c01fc593a9da94e82b44a729dcaf8da92be8e565da109aa549b25/data' + : 'community.wave.seqera.io/library/picard:3.4.0--e9963040df0a9bf6'}" input: tuple val(meta), path(reads) @@ -13,11 +13,11 @@ process PICARD_MARKDUPLICATES { tuple val(meta3), path(fai) output: - tuple val(meta), path("*.bam") , emit: bam, optional: true - tuple val(meta), path("*.bai") , emit: bai, optional: true + tuple val(meta), path("*.bam"), emit: bam, optional: true + tuple val(meta), path("*.bai"), emit: bai, optional: true tuple val(meta), path("*.cram"), emit: cram, optional: true tuple val(meta), path("*.metrics.txt"), emit: metrics - path "versions.yml" , emit: versions + tuple val("${task.process}"), val('picard'), eval("picard MarkDuplicates --version 2>&1 | sed -n 's/.*Version://p'"), topic: versions, emit: versions_picard when: task.ext.when == null || task.ext.when @@ -25,44 +25,39 @@ process PICARD_MARKDUPLICATES { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def suffix = task.ext.suffix ?: "${reads.getExtension()}" + def suffix = task.ext.suffix ?: "${reads.getExtension()}" def reference = fasta ? "--REFERENCE_SEQUENCE ${fasta}" : "" def avail_mem = 3072 if (!task.memory) { - log.info '[Picard MarkDuplicates] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.' - } else { - avail_mem = (task.memory.mega*0.8).intValue() + log.info('[Picard MarkDuplicates] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.') + } + else { + avail_mem = (task.memory.mega * 0.8).intValue() } - if ("$reads" == "${prefix}.${suffix}") error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" - + if ("${reads}" == "${prefix}.${suffix}") { + error("Input and output names are the same, use \"task.ext.prefix\" to disambiguate!") + } """ picard \\ -Xmx${avail_mem}M \\ MarkDuplicates \\ - $args \\ - --INPUT $reads \\ + ${args} \\ + --INPUT ${reads} \\ --OUTPUT ${prefix}.${suffix} \\ - $reference \\ - --METRICS_FILE ${prefix}.MarkDuplicates.metrics.txt - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - picard: \$(echo \$(picard MarkDuplicates --version 2>&1) | grep -o 'Version:.*' | cut -f2- -d:) - END_VERSIONS + ${reference} \\ + --METRICS_FILE ${prefix}.metrics.txt """ stub: def prefix = task.ext.prefix ?: "${meta.id}" - def suffix = task.ext.suffix ?: "${reads.getExtension()}" - if ("$reads" == "${prefix}.${suffix}") error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" + def suffix = task.ext.suffix ?: "${reads.getExtension()}" + if ("${reads}" == "${prefix}.${suffix}") { + error("Input and output names are the same, use \"task.ext.prefix\" to disambiguate!") + } """ touch ${prefix}.${suffix} - touch ${prefix}.MarkDuplicates.metrics.txt - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - picard: \$(echo \$(picard MarkDuplicates --version 2>&1) | grep -o 'Version:.*' | cut -f2- -d:) - END_VERSIONS + touch ${prefix}.${suffix}.bai + touch ${prefix}.metrics.txt """ } diff --git a/modules/nf-core/picard/markduplicates/meta.yml b/modules/nf-core/picard/markduplicates/meta.yml index 1f0ffe16c..aa0ddbdba 100644 --- a/modules/nf-core/picard/markduplicates/meta.yml +++ b/modules/nf-core/picard/markduplicates/meta.yml @@ -15,60 +15,105 @@ tools: homepage: https://broadinstitute.github.io/picard/ documentation: https://broadinstitute.github.io/picard/ licence: ["MIT"] + identifier: biotools:picard_tools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - reads: - type: file - description: Sequence reads file, can be SAM/BAM/CRAM format - pattern: "*.{bam,cram,sam}" - - meta2: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'genome' ] - - fasta: - type: file - description: Reference genome fasta file, required for CRAM input - pattern: "*.{fasta,fa}" - - meta3: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'genome' ] - - fai: - type: file - description: Reference genome fasta index - pattern: "*.{fai}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - reads: + type: file + description: Sequence reads file, can be SAM/BAM/CRAM format + pattern: "*.{bam,cram,sam}" + ontologies: [] + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + - fasta: + type: file + description: Reference genome fasta file, required for CRAM input + pattern: "*.{fasta,fa}" + ontologies: [] + - - meta3: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + - fai: + type: file + description: Reference genome fasta index + pattern: "*.{fai}" + ontologies: [] output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - bam: - type: file - description: BAM file with duplicate reads marked/removed - pattern: "*.{bam}" - - bai: - type: file - description: An optional BAM index file. If desired, --CREATE_INDEX must be passed as a flag - pattern: "*.{bai}" - - cram: - type: file - description: Output CRAM file - pattern: "*.{cram}" - - metrics: - type: file - description: Duplicate metrics file generated by picard - pattern: "*.{metrics.txt}" - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + bam: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.bam": + type: file + description: BAM file with duplicate reads marked/removed + pattern: "*.{bam}" + ontologies: [] + bai: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.bai": + type: file + description: An optional BAM index file. If desired, --CREATE_INDEX must be + passed as a flag + pattern: "*.{bai}" + ontologies: [] + cram: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.cram": + type: file + description: Output CRAM file + pattern: "*.{cram}" + ontologies: [] + metrics: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.metrics.txt": + type: file + description: Duplicate metrics file generated by picard + pattern: "*.{metrics.txt}" + ontologies: [] + versions_picard: + - - ${task.process}: + type: string + description: The process the versions were collected from + - picard: + type: string + description: The tool name + - "picard MarkDuplicates --version 2>&1 | sed -n 's/.*Version://p'": + type: string + description: The command used to generate the version of the tool +topics: + versions: + - - ${task.process}: + type: string + description: The process the versions were collected from + - picard: + type: string + description: The tool name + - "picard MarkDuplicates --version 2>&1 | sed -n 's/.*Version://p'": + type: string + description: The command used to generate the version of the tool authors: - "@drpatelh" - "@projectoriented" diff --git a/modules/nf-core/picard/markduplicates/tests/main.nf.test b/modules/nf-core/picard/markduplicates/tests/main.nf.test index 9ed909659..4d0064531 100644 --- a/modules/nf-core/picard/markduplicates/tests/main.nf.test +++ b/modules/nf-core/picard/markduplicates/tests/main.nf.test @@ -30,7 +30,7 @@ nextflow_process { { assert snapshot( file(process.out.bam[0][1]).name, path(process.out.metrics.get(0).get(1)).readLines()[0..2], - process.out.versions) + process.out.findAll { key, val -> key.startsWith("versions") }) .match() } ) } @@ -57,7 +57,7 @@ nextflow_process { { assert snapshot( file(process.out.bam[0][1]).name, path(process.out.metrics.get(0).get(1)).readLines()[0..2], - process.out.versions) + process.out.findAll { key, val -> key.startsWith("versions") }) .match() } ) } @@ -90,7 +90,7 @@ nextflow_process { { assert snapshot( file(process.out.cram[0][1]).name, path(process.out.metrics.get(0).get(1)).readLines()[0..2], - process.out.versions) + process.out.findAll { key, val -> key.startsWith("versions") }) .match() } ) } @@ -114,7 +114,7 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot(sanitizeOutput(process.out)).match() } ) } } @@ -137,7 +137,7 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot(sanitizeOutput(process.out)).match() } ) } } @@ -166,7 +166,7 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot(sanitizeOutput(process.out)).match() } ) } } diff --git a/modules/nf-core/picard/markduplicates/tests/main.nf.test.snap b/modules/nf-core/picard/markduplicates/tests/main.nf.test.snap index 8b37e65b1..4ea479a32 100644 --- a/modules/nf-core/picard/markduplicates/tests/main.nf.test.snap +++ b/modules/nf-core/picard/markduplicates/tests/main.nf.test.snap @@ -2,35 +2,14 @@ "sarscov2 [sorted bam] - stub": { "content": [ { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - "test.marked.bam:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "1": [ - - ], - "2": [ - - ], - "3": [ + "bai": [ [ { "id": "test", "single_end": false }, - "test.marked.MarkDuplicates.metrics.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.md.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" ] - ], - "4": [ - "versions.yml:md5,33dd4b32140e801e0d2e50aeefd0788d" - ], - "bai": [ - ], "bam": [ [ @@ -38,7 +17,7 @@ "id": "test", "single_end": false }, - "test.marked.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.md.bam:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "cram": [ @@ -50,52 +29,35 @@ "id": "test", "single_end": false }, - "test.marked.MarkDuplicates.metrics.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.md.metrics.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,33dd4b32140e801e0d2e50aeefd0788d" + "versions_picard": [ + [ + "PICARD_MARKDUPLICATES", + "picard", + "3.4.0" + ] ] } ], + "timestamp": "2026-02-19T17:43:13.544887277", "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" - }, - "timestamp": "2024-07-22T11:56:32.025869" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } }, "sarscov2 [unsorted bam] - stub": { "content": [ { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - "test.marked.bam:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "1": [ - - ], - "2": [ - - ], - "3": [ + "bai": [ [ { "id": "test", "single_end": false }, - "test.marked.MarkDuplicates.metrics.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.md.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" ] - ], - "4": [ - "versions.yml:md5,33dd4b32140e801e0d2e50aeefd0788d" - ], - "bai": [ - ], "bam": [ [ @@ -103,7 +65,7 @@ "id": "test", "single_end": false }, - "test.marked.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.md.bam:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "cram": [ @@ -115,106 +77,107 @@ "id": "test", "single_end": false }, - "test.marked.MarkDuplicates.metrics.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.md.metrics.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,33dd4b32140e801e0d2e50aeefd0788d" + "versions_picard": [ + [ + "PICARD_MARKDUPLICATES", + "picard", + "3.4.0" + ] ] } ], + "timestamp": "2026-02-19T17:43:06.193033248", "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" - }, - "timestamp": "2024-07-22T11:56:20.497105" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } }, "sarscov2 [unsorted bam]": { "content": [ - "test.marked.bam", + "test.md.bam", [ "## htsjdk.samtools.metrics.StringHeader", - "# MarkDuplicates --INPUT test.paired_end.bam --OUTPUT test.marked.bam --METRICS_FILE test.marked.MarkDuplicates.metrics.txt --ASSUME_SORT_ORDER queryname --MAX_SEQUENCES_FOR_DISK_READ_ENDS_MAP 50000 --MAX_FILE_HANDLES_FOR_READ_ENDS_MAP 8000 --SORTING_COLLECTION_SIZE_RATIO 0.25 --TAG_DUPLICATE_SET_MEMBERS false --REMOVE_SEQUENCING_DUPLICATES false --TAGGING_POLICY DontTag --CLEAR_DT true --DUPLEX_UMI false --FLOW_MODE false --FLOW_DUP_STRATEGY FLOW_QUALITY_SUM_STRATEGY --USE_END_IN_UNPAIRED_READS false --USE_UNPAIRED_CLIPPED_END false --UNPAIRED_END_UNCERTAINTY 0 --UNPAIRED_START_UNCERTAINTY 0 --FLOW_SKIP_FIRST_N_FLOWS 0 --FLOW_Q_IS_KNOWN_END false --FLOW_EFFECTIVE_QUALITY_THRESHOLD 15 --ADD_PG_TAG_TO_READS true --REMOVE_DUPLICATES false --ASSUME_SORTED false --DUPLICATE_SCORING_STRATEGY SUM_OF_BASE_QUALITIES --PROGRAM_RECORD_ID MarkDuplicates --PROGRAM_GROUP_NAME MarkDuplicates --READ_NAME_REGEX --OPTICAL_DUPLICATE_PIXEL_DISTANCE 100 --MAX_OPTICAL_DUPLICATE_SET_SIZE 300000 --VERBOSITY INFO --QUIET false --VALIDATION_STRINGENCY STRICT --COMPRESSION_LEVEL 5 --MAX_RECORDS_IN_RAM 500000 --CREATE_INDEX false --CREATE_MD5_FILE false --help false --version false --showHidden false --USE_JDK_DEFLATER false --USE_JDK_INFLATER false", + "# MarkDuplicates --INPUT test.paired_end.bam --OUTPUT test.md.bam --METRICS_FILE test.md.metrics.txt --ASSUME_SORT_ORDER queryname --MAX_SEQUENCES_FOR_DISK_READ_ENDS_MAP 50000 --MAX_FILE_HANDLES_FOR_READ_ENDS_MAP 8000 --SORTING_COLLECTION_SIZE_RATIO 0.25 --TAG_DUPLICATE_SET_MEMBERS false --REMOVE_SEQUENCING_DUPLICATES false --TAGGING_POLICY DontTag --CLEAR_DT true --DUPLEX_UMI false --FLOW_MODE false --FLOW_DUP_STRATEGY FLOW_QUALITY_SUM_STRATEGY --FLOW_USE_END_IN_UNPAIRED_READS false --FLOW_USE_UNPAIRED_CLIPPED_END false --FLOW_UNPAIRED_END_UNCERTAINTY 0 --FLOW_UNPAIRED_START_UNCERTAINTY 0 --FLOW_SKIP_FIRST_N_FLOWS 0 --FLOW_Q_IS_KNOWN_END false --FLOW_EFFECTIVE_QUALITY_THRESHOLD 15 --ADD_PG_TAG_TO_READS true --REMOVE_DUPLICATES false --ASSUME_SORTED false --DUPLICATE_SCORING_STRATEGY SUM_OF_BASE_QUALITIES --PROGRAM_RECORD_ID MarkDuplicates --PROGRAM_GROUP_NAME MarkDuplicates --READ_NAME_REGEX --OPTICAL_DUPLICATE_PIXEL_DISTANCE 100 --MAX_OPTICAL_DUPLICATE_SET_SIZE 300000 --VERBOSITY INFO --QUIET false --VALIDATION_STRINGENCY STRICT --COMPRESSION_LEVEL 5 --MAX_RECORDS_IN_RAM 500000 --CREATE_INDEX false --CREATE_MD5_FILE false --help false --version false --showHidden false --USE_JDK_DEFLATER false --USE_JDK_INFLATER false", "## htsjdk.samtools.metrics.StringHeader" ], - [ - "versions.yml:md5,33dd4b32140e801e0d2e50aeefd0788d" - ] + { + "versions_picard": [ + [ + "PICARD_MARKDUPLICATES", + "picard", + "3.4.0" + ] + ] + } ], + "timestamp": "2026-02-19T17:42:40.574463587", "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" - }, - "timestamp": "2024-07-22T11:50:14.881666" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } }, "sarscov2 [sorted bam]": { "content": [ - "test.marked.bam", + "test.md.bam", [ "## htsjdk.samtools.metrics.StringHeader", - "# MarkDuplicates --INPUT test.paired_end.sorted.bam --OUTPUT test.marked.bam --METRICS_FILE test.marked.MarkDuplicates.metrics.txt --ASSUME_SORT_ORDER queryname --MAX_SEQUENCES_FOR_DISK_READ_ENDS_MAP 50000 --MAX_FILE_HANDLES_FOR_READ_ENDS_MAP 8000 --SORTING_COLLECTION_SIZE_RATIO 0.25 --TAG_DUPLICATE_SET_MEMBERS false --REMOVE_SEQUENCING_DUPLICATES false --TAGGING_POLICY DontTag --CLEAR_DT true --DUPLEX_UMI false --FLOW_MODE false --FLOW_DUP_STRATEGY FLOW_QUALITY_SUM_STRATEGY --USE_END_IN_UNPAIRED_READS false --USE_UNPAIRED_CLIPPED_END false --UNPAIRED_END_UNCERTAINTY 0 --UNPAIRED_START_UNCERTAINTY 0 --FLOW_SKIP_FIRST_N_FLOWS 0 --FLOW_Q_IS_KNOWN_END false --FLOW_EFFECTIVE_QUALITY_THRESHOLD 15 --ADD_PG_TAG_TO_READS true --REMOVE_DUPLICATES false --ASSUME_SORTED false --DUPLICATE_SCORING_STRATEGY SUM_OF_BASE_QUALITIES --PROGRAM_RECORD_ID MarkDuplicates --PROGRAM_GROUP_NAME MarkDuplicates --READ_NAME_REGEX --OPTICAL_DUPLICATE_PIXEL_DISTANCE 100 --MAX_OPTICAL_DUPLICATE_SET_SIZE 300000 --VERBOSITY INFO --QUIET false --VALIDATION_STRINGENCY STRICT --COMPRESSION_LEVEL 5 --MAX_RECORDS_IN_RAM 500000 --CREATE_INDEX false --CREATE_MD5_FILE false --help false --version false --showHidden false --USE_JDK_DEFLATER false --USE_JDK_INFLATER false", + "# MarkDuplicates --INPUT test.paired_end.sorted.bam --OUTPUT test.md.bam --METRICS_FILE test.md.metrics.txt --ASSUME_SORT_ORDER queryname --MAX_SEQUENCES_FOR_DISK_READ_ENDS_MAP 50000 --MAX_FILE_HANDLES_FOR_READ_ENDS_MAP 8000 --SORTING_COLLECTION_SIZE_RATIO 0.25 --TAG_DUPLICATE_SET_MEMBERS false --REMOVE_SEQUENCING_DUPLICATES false --TAGGING_POLICY DontTag --CLEAR_DT true --DUPLEX_UMI false --FLOW_MODE false --FLOW_DUP_STRATEGY FLOW_QUALITY_SUM_STRATEGY --FLOW_USE_END_IN_UNPAIRED_READS false --FLOW_USE_UNPAIRED_CLIPPED_END false --FLOW_UNPAIRED_END_UNCERTAINTY 0 --FLOW_UNPAIRED_START_UNCERTAINTY 0 --FLOW_SKIP_FIRST_N_FLOWS 0 --FLOW_Q_IS_KNOWN_END false --FLOW_EFFECTIVE_QUALITY_THRESHOLD 15 --ADD_PG_TAG_TO_READS true --REMOVE_DUPLICATES false --ASSUME_SORTED false --DUPLICATE_SCORING_STRATEGY SUM_OF_BASE_QUALITIES --PROGRAM_RECORD_ID MarkDuplicates --PROGRAM_GROUP_NAME MarkDuplicates --READ_NAME_REGEX --OPTICAL_DUPLICATE_PIXEL_DISTANCE 100 --MAX_OPTICAL_DUPLICATE_SET_SIZE 300000 --VERBOSITY INFO --QUIET false --VALIDATION_STRINGENCY STRICT --COMPRESSION_LEVEL 5 --MAX_RECORDS_IN_RAM 500000 --CREATE_INDEX false --CREATE_MD5_FILE false --help false --version false --showHidden false --USE_JDK_DEFLATER false --USE_JDK_INFLATER false", "## htsjdk.samtools.metrics.StringHeader" ], - [ - "versions.yml:md5,33dd4b32140e801e0d2e50aeefd0788d" - ] + { + "versions_picard": [ + [ + "PICARD_MARKDUPLICATES", + "picard", + "3.4.0" + ] + ] + } ], + "timestamp": "2026-02-19T17:42:49.374645492", "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" - }, - "timestamp": "2024-07-22T11:52:03.11428" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } }, "homo_sapiens [cram]": { "content": [ - "test.marked.cram", + "test.md.cram", [ "## htsjdk.samtools.metrics.StringHeader", - "# MarkDuplicates --INPUT test.paired_end.sorted.cram --OUTPUT test.marked.cram --METRICS_FILE test.marked.MarkDuplicates.metrics.txt --ASSUME_SORT_ORDER queryname --REFERENCE_SEQUENCE genome.fasta --MAX_SEQUENCES_FOR_DISK_READ_ENDS_MAP 50000 --MAX_FILE_HANDLES_FOR_READ_ENDS_MAP 8000 --SORTING_COLLECTION_SIZE_RATIO 0.25 --TAG_DUPLICATE_SET_MEMBERS false --REMOVE_SEQUENCING_DUPLICATES false --TAGGING_POLICY DontTag --CLEAR_DT true --DUPLEX_UMI false --FLOW_MODE false --FLOW_DUP_STRATEGY FLOW_QUALITY_SUM_STRATEGY --USE_END_IN_UNPAIRED_READS false --USE_UNPAIRED_CLIPPED_END false --UNPAIRED_END_UNCERTAINTY 0 --UNPAIRED_START_UNCERTAINTY 0 --FLOW_SKIP_FIRST_N_FLOWS 0 --FLOW_Q_IS_KNOWN_END false --FLOW_EFFECTIVE_QUALITY_THRESHOLD 15 --ADD_PG_TAG_TO_READS true --REMOVE_DUPLICATES false --ASSUME_SORTED false --DUPLICATE_SCORING_STRATEGY SUM_OF_BASE_QUALITIES --PROGRAM_RECORD_ID MarkDuplicates --PROGRAM_GROUP_NAME MarkDuplicates --READ_NAME_REGEX --OPTICAL_DUPLICATE_PIXEL_DISTANCE 100 --MAX_OPTICAL_DUPLICATE_SET_SIZE 300000 --VERBOSITY INFO --QUIET false --VALIDATION_STRINGENCY STRICT --COMPRESSION_LEVEL 5 --MAX_RECORDS_IN_RAM 500000 --CREATE_INDEX false --CREATE_MD5_FILE false --help false --version false --showHidden false --USE_JDK_DEFLATER false --USE_JDK_INFLATER false", + "# MarkDuplicates --INPUT test.paired_end.sorted.cram --OUTPUT test.md.cram --METRICS_FILE test.md.metrics.txt --ASSUME_SORT_ORDER queryname --REFERENCE_SEQUENCE genome.fasta --MAX_SEQUENCES_FOR_DISK_READ_ENDS_MAP 50000 --MAX_FILE_HANDLES_FOR_READ_ENDS_MAP 8000 --SORTING_COLLECTION_SIZE_RATIO 0.25 --TAG_DUPLICATE_SET_MEMBERS false --REMOVE_SEQUENCING_DUPLICATES false --TAGGING_POLICY DontTag --CLEAR_DT true --DUPLEX_UMI false --FLOW_MODE false --FLOW_DUP_STRATEGY FLOW_QUALITY_SUM_STRATEGY --FLOW_USE_END_IN_UNPAIRED_READS false --FLOW_USE_UNPAIRED_CLIPPED_END false --FLOW_UNPAIRED_END_UNCERTAINTY 0 --FLOW_UNPAIRED_START_UNCERTAINTY 0 --FLOW_SKIP_FIRST_N_FLOWS 0 --FLOW_Q_IS_KNOWN_END false --FLOW_EFFECTIVE_QUALITY_THRESHOLD 15 --ADD_PG_TAG_TO_READS true --REMOVE_DUPLICATES false --ASSUME_SORTED false --DUPLICATE_SCORING_STRATEGY SUM_OF_BASE_QUALITIES --PROGRAM_RECORD_ID MarkDuplicates --PROGRAM_GROUP_NAME MarkDuplicates --READ_NAME_REGEX --OPTICAL_DUPLICATE_PIXEL_DISTANCE 100 --MAX_OPTICAL_DUPLICATE_SET_SIZE 300000 --VERBOSITY INFO --QUIET false --VALIDATION_STRINGENCY STRICT --COMPRESSION_LEVEL 5 --MAX_RECORDS_IN_RAM 500000 --CREATE_INDEX false --CREATE_MD5_FILE false --help false --version false --showHidden false --USE_JDK_DEFLATER false --USE_JDK_INFLATER false", "## htsjdk.samtools.metrics.StringHeader" ], - [ - "versions.yml:md5,33dd4b32140e801e0d2e50aeefd0788d" - ] + { + "versions_picard": [ + [ + "PICARD_MARKDUPLICATES", + "picard", + "3.4.0" + ] + ] + } ], + "timestamp": "2026-02-19T17:42:59.07843756", "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" - }, - "timestamp": "2024-07-22T11:53:05.403139" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } }, "homo_sapiens [cram] - stub": { "content": [ { - "0": [ - - ], - "1": [ - - ], - "2": [ - [ - { - "id": "test", - "single_end": false - }, - "test.marked.cram:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "3": [ + "bai": [ [ { "id": "test", "single_end": false }, - "test.marked.MarkDuplicates.metrics.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.md.cram.bai:md5,d41d8cd98f00b204e9800998ecf8427e" ] - ], - "4": [ - "versions.yml:md5,33dd4b32140e801e0d2e50aeefd0788d" - ], - "bai": [ - ], "bam": [ @@ -225,7 +188,7 @@ "id": "test", "single_end": false }, - "test.marked.cram:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.md.cram:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "metrics": [ @@ -234,18 +197,22 @@ "id": "test", "single_end": false }, - "test.marked.MarkDuplicates.metrics.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.md.metrics.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,33dd4b32140e801e0d2e50aeefd0788d" + "versions_picard": [ + [ + "PICARD_MARKDUPLICATES", + "picard", + "3.4.0" + ] ] } ], + "timestamp": "2026-02-19T17:43:20.676018462", "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" - }, - "timestamp": "2024-07-22T11:56:43.438188" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } } } \ No newline at end of file diff --git a/modules/nf-core/picard/markduplicates/tests/nextflow.config b/modules/nf-core/picard/markduplicates/tests/nextflow.config index 02818dd6e..f8dd0f1ca 100644 --- a/modules/nf-core/picard/markduplicates/tests/nextflow.config +++ b/modules/nf-core/picard/markduplicates/tests/nextflow.config @@ -1,6 +1,6 @@ process { withName: PICARD_MARKDUPLICATES { - ext.prefix = { "${meta.id}.marked" } + ext.prefix = { "${meta.id}.md" } ext.args = '--ASSUME_SORT_ORDER queryname' } } diff --git a/modules/nf-core/picard/markduplicates/tests/tags.yml b/modules/nf-core/picard/markduplicates/tests/tags.yml deleted file mode 100644 index 4f213d620..000000000 --- a/modules/nf-core/picard/markduplicates/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -picard/markduplicates: - - modules/nf-core/picard/markduplicates/** diff --git a/modules/nf-core/picard/mergesamfiles/environment.yml b/modules/nf-core/picard/mergesamfiles/environment.yml index af6a04a16..b4ac4fe08 100644 --- a/modules/nf-core/picard/mergesamfiles/environment.yml +++ b/modules/nf-core/picard/mergesamfiles/environment.yml @@ -1,7 +1,8 @@ -name: picard_mergesamfiles +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::picard=3.2.0 + # renovate: datasource=conda depName=bioconda/picard + - bioconda::picard=3.4.0 diff --git a/modules/nf-core/picard/mergesamfiles/main.nf b/modules/nf-core/picard/mergesamfiles/main.nf index 1e6e2274b..37466770e 100644 --- a/modules/nf-core/picard/mergesamfiles/main.nf +++ b/modules/nf-core/picard/mergesamfiles/main.nf @@ -1,18 +1,18 @@ process PICARD_MERGESAMFILES { - tag "$meta.id" + tag "${meta.id}" label 'process_medium' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/picard:3.2.0--hdfd78af_0' : - 'biocontainers/picard:3.2.0--hdfd78af_0' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/08/0861295baa7c01fc593a9da94e82b44a729dcaf8da92be8e565da109aa549b25/data' + : 'community.wave.seqera.io/library/picard:3.4.0--e9963040df0a9bf6'}" input: tuple val(meta), path(bams) output: tuple val(meta), path("*.bam"), emit: bam - path "versions.yml" , emit: versions + tuple val("${task.process}"), val('picard'), eval("picard MergeSamFiles --version 2>&1 | sed -n 's/.*Version://p'"), topic: versions, emit: versions_picard when: task.ext.when == null || task.ext.when @@ -23,30 +23,30 @@ process PICARD_MERGESAMFILES { def bam_files = bams.sort() def avail_mem = 3072 if (!task.memory) { - log.info '[Picard MergeSamFiles] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.' - } else { - avail_mem = (task.memory.mega*0.8).intValue() + log.info('[Picard MergeSamFiles] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.') + } + else { + avail_mem = (task.memory.mega * 0.8).intValue() } if (bam_files.size() > 1) { """ picard \\ -Xmx${avail_mem}M \\ MergeSamFiles \\ - $args \\ - ${'--INPUT '+bam_files.join(' --INPUT ')} \\ + ${args} \\ + ${'--INPUT ' + bam_files.join(' --INPUT ')} \\ --OUTPUT ${prefix}.bam - cat <<-END_VERSIONS > versions.yml - "${task.process}": - picard: \$( echo \$(picard MergeSamFiles --version 2>&1) | grep -o 'Version:.*' | cut -f2- -d:) - END_VERSIONS """ - } else { + } + else { """ ln -s ${bam_files[0]} ${prefix}.bam - cat <<-END_VERSIONS > versions.yml - "${task.process}": - picard: \$( echo \$(picard MergeSamFiles --version 2>&1) | grep -o 'Version:.*' | cut -f2- -d:) - END_VERSIONS """ } + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.bam + """ } diff --git a/modules/nf-core/picard/mergesamfiles/meta.yml b/modules/nf-core/picard/mergesamfiles/meta.yml index c1ca98cf7..0ff19f335 100644 --- a/modules/nf-core/picard/mergesamfiles/meta.yml +++ b/modules/nf-core/picard/mergesamfiles/meta.yml @@ -13,30 +13,50 @@ tools: homepage: https://broadinstitute.github.io/picard/ documentation: https://broadinstitute.github.io/picard/ licence: ["MIT"] + identifier: biotools:picard_tools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - bam: - type: file - description: List of BAM files - pattern: "*.{bam}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bams: + type: list + description: List of input BAM files to be merged + pattern: "*.{bam}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - bam: - type: file - description: Merged BAM file - pattern: "*.{bam}" - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + bam: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.bam": + type: file + description: Merged BAM file + pattern: "*.{bam}" + ontologies: [] + versions_picard: + - - ${task.process}: + type: string + description: The process the versions were collected from + - picard: + type: string + description: The tool name + - "picard MergeSamFiles --version 2>&1 | sed -n 's/.*Version://p'": + type: string + description: The command used to generate the version of the tool +topics: + versions: + - - ${task.process}: + type: string + description: The process the versions were collected from + - picard: + type: string + description: The tool name + - "picard MergeSamFiles --version 2>&1 | sed -n 's/.*Version://p'": + type: string + description: The command used to generate the version of the tool authors: - "@drpatelh" maintainers: diff --git a/modules/nf-core/picard/mergesamfiles/tests/main.nf.test b/modules/nf-core/picard/mergesamfiles/tests/main.nf.test new file mode 100644 index 000000000..e18d882fa --- /dev/null +++ b/modules/nf-core/picard/mergesamfiles/tests/main.nf.test @@ -0,0 +1,57 @@ + +nextflow_process { + + name "Test Process PICARD_MERGESAMFILES" + script "../main.nf" + process "PICARD_MERGESAMFILES" + + tag "modules" + tag "modules_nfcore" + tag "picard" + tag "picard/mergesamfiles" + + test("test-picard-mergesamfiles") { + + when { + process { + """ + input[0] = [ [ id:'test', single_end:false ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.single_end.bam', checkIfExists: true), ] + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + bam(process.out.bam[0][1]).getReadsMD5(), + process.out.findAll { key, val -> key.startsWith("versions") } + ).match()} + ) + } + } + + test("test-picard-mergesamfiles - stub") { + options "-stub" + when { + process { + """ + input[0] = [ [ id:'test', single_end:false ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.single_end.bam', checkIfExists: true), ] + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(sanitizeOutput(process.out)).match() } + ) + } + } +} diff --git a/modules/nf-core/picard/mergesamfiles/tests/main.nf.test.snap b/modules/nf-core/picard/mergesamfiles/tests/main.nf.test.snap new file mode 100644 index 000000000..4fa2be193 --- /dev/null +++ b/modules/nf-core/picard/mergesamfiles/tests/main.nf.test.snap @@ -0,0 +1,48 @@ +{ + "test-picard-mergesamfiles - stub": { + "content": [ + { + "bam": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions_picard": [ + [ + "PICARD_MERGESAMFILES", + "picard", + "3.4.0" + ] + ] + } + ], + "timestamp": "2026-02-19T17:43:50.01825207", + "meta": { + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } + }, + "test-picard-mergesamfiles": { + "content": [ + "730da54c088350ff625d34b95e623dca", + { + "versions_picard": [ + [ + "PICARD_MERGESAMFILES", + "picard", + "3.4.0" + ] + ] + } + ], + "timestamp": "2026-02-19T17:43:43.104519248", + "meta": { + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } + } +} \ No newline at end of file diff --git a/modules/nf-core/preseq/lcextrap/environment.yml b/modules/nf-core/preseq/lcextrap/environment.yml index 57b8b9c67..a20885028 100644 --- a/modules/nf-core/preseq/lcextrap/environment.yml +++ b/modules/nf-core/preseq/lcextrap/environment.yml @@ -1,7 +1,7 @@ -name: preseq_lcextrap +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::preseq=3.1.2 + - bioconda::preseq=3.2.0 diff --git a/modules/nf-core/preseq/lcextrap/main.nf b/modules/nf-core/preseq/lcextrap/main.nf index 3fec468e9..7868884eb 100644 --- a/modules/nf-core/preseq/lcextrap/main.nf +++ b/modules/nf-core/preseq/lcextrap/main.nf @@ -5,8 +5,8 @@ process PRESEQ_LCEXTRAP { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/preseq:3.1.2--h445547b_2': - 'biocontainers/preseq:3.1.2--h445547b_2' }" + 'https://depot.galaxyproject.org/singularity/preseq:3.2.0--hdcf5f25_6': + 'biocontainers/preseq:3.2.0--hdcf5f25_6' }" input: tuple val(meta), path(bam) @@ -14,7 +14,7 @@ process PRESEQ_LCEXTRAP { output: tuple val(meta), path("*.lc_extrap.txt"), emit: lc_extrap tuple val(meta), path("*.log") , emit: log - path "versions.yml" , emit: versions + tuple val("${task.process}"), val('preseq'), eval("preseq 2>&1 | sed -n 's/.*Version: \\(.*\\)/\\1/p'"), emit: versions_preseq, topic: versions when: task.ext.when == null || task.ext.when @@ -32,11 +32,6 @@ process PRESEQ_LCEXTRAP { -output ${prefix}.lc_extrap.txt \\ $bam cp .command.err ${prefix}.command.log - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - preseq: \$(echo \$(preseq 2>&1) | sed 's/^.*Version: //; s/Usage:.*\$//') - END_VERSIONS """ stub: @@ -44,10 +39,5 @@ process PRESEQ_LCEXTRAP { """ touch ${prefix}.lc_extrap.txt touch ${prefix}.command.log - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - preseq: \$(echo \$(preseq 2>&1) | sed 's/^.*Version: //; s/Usage:.*\$//') - END_VERSIONS """ } diff --git a/modules/nf-core/preseq/lcextrap/meta.yml b/modules/nf-core/preseq/lcextrap/meta.yml index c00fa8eef..bb3099522 100644 --- a/modules/nf-core/preseq/lcextrap/meta.yml +++ b/modules/nf-core/preseq/lcextrap/meta.yml @@ -1,44 +1,76 @@ name: preseq_lcextrap -description: Software for predicting library complexity and genome coverage in high-throughput sequencing +description: Software for predicting library complexity and genome coverage in high-throughput + sequencing keywords: - preseq - library - complexity tools: - preseq: - description: Software for predicting library complexity and genome coverage in high-throughput sequencing + description: Software for predicting library complexity and genome coverage in + high-throughput sequencing homepage: http://smithlabresearch.org/software/preseq/ documentation: http://smithlabresearch.org/wp-content/uploads/manual.pdf tool_dev_url: https://github.com/smithlabcode/preseq licence: ["GPL"] + identifier: biotools:preseq input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - bam: - type: file - description: BAM/CRAM/SAM file - pattern: "*.{bam,cram,sam}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bam: + type: file + description: BAM/CRAM/SAM file + pattern: "*.{bam,cram,sam}" + ontologies: [] output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - - lc_extrap: - type: file - description: File containing output of Preseq lcextrap - pattern: "*.{lc_extrap.txt}" - - log: - type: file - description: Log file containing stderr produced by Preseq - pattern: "*.{log}" + lc_extrap: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.lc_extrap.txt": + type: file + description: File containing output of Preseq lcextrap + pattern: "*.{lc_extrap.txt}" + ontologies: [] + log: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.log": + type: file + description: Log file containing stderr produced by Preseq + pattern: "*.{log}" + ontologies: [] + versions_preseq: + - - ${task.process}: + type: string + description: The name of the process + - preseq: + type: string + description: The name of the tool + - "preseq 2>&1 | sed -n 's/.*Version: \\(.*\\)/\\1/p'": + type: eval + description: The expression to obtain the version of the tool + +topics: + versions: + - - ${task.process}: + type: string + description: The name of the process + - preseq: + type: string + description: The name of the tool + - "preseq 2>&1 | sed -n 's/.*Version: \\(.*\\)/\\1/p'": + type: eval + description: The expression to obtain the version of the tool + authors: - "@drpatelh" - "@edmundmiller" diff --git a/modules/nf-core/preseq/lcextrap/tests/main.nf.test b/modules/nf-core/preseq/lcextrap/tests/main.nf.test index d1af1f0ed..e3163ea07 100644 --- a/modules/nf-core/preseq/lcextrap/tests/main.nf.test +++ b/modules/nf-core/preseq/lcextrap/tests/main.nf.test @@ -23,9 +23,11 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(file(process.out.log[0][1]).name).match("single_end - log") }, - { assert snapshot(process.out.lc_extrap).match("single_end - lc_extrap") }, - { assert snapshot(process.out.versions).match("single_end - versions") } + { assert snapshot( + file(process.out.log[0][1]).name, + process.out.lc_extrap, + process.out.findAll { key, val -> key.startsWith('versions') } + ).match() } ) } } @@ -68,9 +70,11 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(file(process.out.log[0][1]).name).match("paired_end - log") }, - { assert snapshot(process.out.lc_extrap).match("paired_end - lc_extrap") }, - { assert snapshot(process.out.versions).match("paired_end - versions") } + { assert snapshot( + file(process.out.log[0][1]).name, + process.out.lc_extrap, + process.out.findAll { key, val -> key.startsWith('versions') } + ).match() } ) } } @@ -97,4 +101,4 @@ nextflow_process { ) } } -} \ No newline at end of file +} diff --git a/modules/nf-core/preseq/lcextrap/tests/main.nf.test.snap b/modules/nf-core/preseq/lcextrap/tests/main.nf.test.snap index 3f95cd498..ad073de60 100644 --- a/modules/nf-core/preseq/lcextrap/tests/main.nf.test.snap +++ b/modules/nf-core/preseq/lcextrap/tests/main.nf.test.snap @@ -1,6 +1,7 @@ { - "single_end - lc_extrap": { + "sarscov2 - single_end": { "content": [ + "test.command.log", [ [ { @@ -9,35 +10,22 @@ }, "test.lc_extrap.txt:md5,1fa5cdd601079329618f61660bee00de" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2023-11-23T17:20:40.735535" - }, - "paired_end - log": { - "content": [ - "test.command.log" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2023-11-23T17:20:51.981746" - }, - "single_end - versions": { - "content": [ - [ - "versions.yml:md5,9a62ff1c212c53573808ccd2137b8922" - ] + ], + { + "versions_preseq": [ + [ + "PRESEQ_LCEXTRAP", + "preseq", + "3.2.0" + ] + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2023-11-23T17:20:40.74601" + "timestamp": "2026-02-02T14:35:59.779654786" }, "sarscov2 - single_end - stub": { "content": [ @@ -61,7 +49,11 @@ ] ], "2": [ - "versions.yml:md5,9a62ff1c212c53573808ccd2137b8922" + [ + "PRESEQ_LCEXTRAP", + "preseq", + "3.2.0" + ] ], "lc_extrap": [ [ @@ -81,41 +73,24 @@ "test.command.log:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,9a62ff1c212c53573808ccd2137b8922" + "versions_preseq": [ + [ + "PRESEQ_LCEXTRAP", + "preseq", + "3.2.0" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-06-20T18:43:12.689062" + "timestamp": "2026-02-02T14:36:05.164534216" }, - "paired_end - versions": { - "content": [ - [ - "versions.yml:md5,9a62ff1c212c53573808ccd2137b8922" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2023-11-23T17:20:52.02843" - }, - "single_end - log": { - "content": [ - "test.command.log" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2023-11-23T17:20:40.72985" - }, - "paired_end - lc_extrap": { + "sarscov2 - paired_end": { "content": [ + "test.command.log", [ [ { @@ -124,13 +99,22 @@ }, "test.lc_extrap.txt:md5,10e5ea860e87fb6f5dc10f4f20c62040" ] - ] + ], + { + "versions_preseq": [ + [ + "PRESEQ_LCEXTRAP", + "preseq", + "3.2.0" + ] + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2023-11-23T17:20:51.998533" + "timestamp": "2026-02-02T14:36:10.713888585" }, "sarscov2 - paired_end - stub": { "content": [ @@ -154,7 +138,11 @@ ] ], "2": [ - "versions.yml:md5,9a62ff1c212c53573808ccd2137b8922" + [ + "PRESEQ_LCEXTRAP", + "preseq", + "3.2.0" + ] ], "lc_extrap": [ [ @@ -174,15 +162,19 @@ "test.command.log:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,9a62ff1c212c53573808ccd2137b8922" + "versions_preseq": [ + [ + "PRESEQ_LCEXTRAP", + "preseq", + "3.2.0" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-06-20T18:43:32.569811" + "timestamp": "2026-02-02T14:36:16.120076691" } } \ No newline at end of file diff --git a/modules/nf-core/preseq/lcextrap/tests/tags.yml b/modules/nf-core/preseq/lcextrap/tests/tags.yml deleted file mode 100644 index b9e25ea71..000000000 --- a/modules/nf-core/preseq/lcextrap/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -preseq/lcextrap: - - modules/nf-core/preseq/lcextrap/** diff --git a/modules/nf-core/samtools/faidx/environment.yml b/modules/nf-core/samtools/faidx/environment.yml new file mode 100644 index 000000000..89e12a645 --- /dev/null +++ b/modules/nf-core/samtools/faidx/environment.yml @@ -0,0 +1,10 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + # renovate: datasource=conda depName=bioconda/htslib + - bioconda::htslib=1.22.1 + # renovate: datasource=conda depName=bioconda/samtools + - bioconda::samtools=1.22.1 diff --git a/modules/nf-core/samtools/faidx/main.nf b/modules/nf-core/samtools/faidx/main.nf new file mode 100644 index 000000000..97bfb578f --- /dev/null +++ b/modules/nf-core/samtools/faidx/main.nf @@ -0,0 +1,49 @@ +process SAMTOOLS_FAIDX { + tag "$fasta" + label 'process_single' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/samtools:1.22.1--h96c455f_0' : + 'biocontainers/samtools:1.22.1--h96c455f_0' }" + + input: + tuple val(meta), path(fasta), path(fai) + val get_sizes + + output: + tuple val(meta), path ("*.{fa,fasta}") , emit: fa, optional: true + tuple val(meta), path ("*.sizes") , emit: sizes, optional: true + tuple val(meta), path ("*.fai") , emit: fai, optional: true + tuple val(meta), path ("*.gzi") , emit: gzi, optional: true + tuple val("${task.process}"), val('samtools'), eval("samtools version | sed '1!d;s/.* //'"), topic: versions, emit: versions_samtools + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def get_sizes_command = get_sizes ? "cut -f 1,2 ${fasta}.fai > ${fasta}.sizes" : '' + """ + samtools \\ + faidx \\ + $fasta \\ + $args + + ${get_sizes_command} + """ + + stub: + def match = (task.ext.args =~ /-o(?:utput)?\s(.*)\s?/).findAll() + def fastacmd = match[0] ? "touch ${match[0][1]}" : '' + def get_sizes_command = get_sizes ? "touch ${fasta}.sizes" : '' + """ + ${fastacmd} + touch ${fasta}.fai + if [[ "${fasta.extension}" == "gz" ]]; then + touch ${fasta}.gzi + fi + + ${get_sizes_command} + """ +} diff --git a/modules/nf-core/samtools/faidx/meta.yml b/modules/nf-core/samtools/faidx/meta.yml new file mode 100644 index 000000000..80aae1dae --- /dev/null +++ b/modules/nf-core/samtools/faidx/meta.yml @@ -0,0 +1,112 @@ +name: samtools_faidx +description: Index FASTA file, and optionally generate a file of chromosome + sizes +keywords: + - index + - fasta + - faidx + - chromosome +tools: + - samtools: + description: | + SAMtools is a set of utilities for interacting with and post-processing + short DNA sequence read alignments in the SAM, BAM and CRAM formats, written by Heng Li. + These files are generated as output by short read aligners like BWA. + homepage: http://www.htslib.org/ + documentation: http://www.htslib.org/doc/samtools.html + doi: 10.1093/bioinformatics/btp352 + licence: + - "MIT" + identifier: biotools:samtools +input: + - - meta: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'test' ] + - fasta: + type: file + description: FASTA file + pattern: "*.{fa,fasta}" + ontologies: [] + - fai: + type: file + description: FASTA index file + pattern: "*.{fai}" + ontologies: [] + - get_sizes: + type: boolean + description: use cut to get the sizes of the index (true) or not (false) +output: + fa: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.{fa,fasta}": + type: file + description: FASTA file + pattern: "*.{fa}" + ontologies: [] + sizes: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.sizes": + type: file + description: File containing chromosome lengths + pattern: "*.{sizes}" + ontologies: [] + fai: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.fai": + type: file + description: FASTA index file + pattern: "*.{fai}" + ontologies: [] + gzi: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.gzi": + type: file + description: Optional gzip index file for compressed inputs + pattern: "*.gzi" + ontologies: [] + versions_samtools: + - - ${task.process}: + type: string + description: The process the versions were collected from + - samtools: + type: string + description: The tool name + - "samtools version | sed '1!d;s/.* //'": + type: eval + description: The command used to generate the version of the tool +topics: + versions: + - - ${task.process}: + type: string + description: The process the versions were collected from + - samtools: + type: string + description: The tool name + - "samtools version | sed '1!d;s/.* //'": + type: eval + description: The command used to generate the version of the tool +authors: + - "@drpatelh" + - "@ewels" + - "@phue" +maintainers: + - "@maxulysse" + - "@phue" diff --git a/modules/nf-core/samtools/faidx/tests/main.nf.test b/modules/nf-core/samtools/faidx/tests/main.nf.test new file mode 100644 index 000000000..9a86db862 --- /dev/null +++ b/modules/nf-core/samtools/faidx/tests/main.nf.test @@ -0,0 +1,253 @@ +nextflow_process { + + name "Test Process SAMTOOLS_FAIDX" + script "../main.nf" + process "SAMTOOLS_FAIDX" + + tag "modules" + tag "modules_nfcore" + tag "samtools" + tag "samtools/faidx" + config "./nextflow.config" + + test("test_samtools_faidx") { + + when { + params { + module_args = '' + } + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true), + [] + ] + input[1] = false + """ + } + } + + then { + assert process.success + assertAll( + { assert snapshot(sanitizeOutput(process.out)).match()} + ) + } + } + + test("test_samtools_faidx_bgzip") { + + when { + params { + module_args = '' + } + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.gz', checkIfExists: true), + [] + ] + input[1] = false + """ + } + } + + then { + assert process.success + assertAll( + { assert snapshot(sanitizeOutput(process.out)).match()} + ) + } + } + + test("test_samtools_faidx_fasta") { + + when { + params { + module_args = 'MT192765.1 -o extract.fa' + } + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + ] + input[1] = false + """ + } + } + + then { + assert process.success + assertAll( + { assert snapshot(sanitizeOutput(process.out)).match()} + ) + } + } + + test("test_samtools_faidx_stub_fasta") { + + options "-stub" + when { + params { + module_args = '-o extract.fa' + } + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + ] + input[1] = false + """ + } + } + + then { + assert process.success + assertAll( + { assert snapshot(sanitizeOutput(process.out)).match()} + ) + } + } + + test("test_samtools_faidx_stub_fai") { + + options "-stub" + when { + params { + module_args = '' + } + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true), + [] + ] + input[1] = false + """ + } + } + + then { + assert process.success + assertAll( + { assert snapshot(sanitizeOutput(process.out)).match()} + ) + } + } + + test("test_samtools_faidx_get_sizes") { + + when { + params { + module_args = '' + } + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true), + [] + ] + input[1] = true + """ + } + } + + then { + assert process.success + assertAll( + { assert snapshot(sanitizeOutput(process.out)).match()} + ) + } + } + + test("test_samtools_faidx_get_sizes_bgzip") { + + when { + params { + module_args = '' + } + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.gz', checkIfExists: true), + [] + ] + input[1] = true + """ + } + } + + then { + assert process.success + assertAll( + { assert snapshot(sanitizeOutput(process.out)).match()} + ) + } + } + + test("test_samtools_faidx_get_sizes - stub") { + + options "-stub" + + when { + params { + module_args = '' + } + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true), + [] + ] + input[1] = true + """ + } + } + + then { + assert process.success + assertAll( + { assert snapshot(sanitizeOutput(process.out)).match()} + ) + } + } + + test("test_samtools_faidx_get_sizes_bgzip - stub") { + + options "-stub" + + when { + params { + module_args = '' + } + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.gz', checkIfExists: true), + [] + ] + input[1] = true + """ + } + } + + then { + assert process.success + assertAll( + { assert snapshot(sanitizeOutput(process.out)).match()} + ) + } + } + +} diff --git a/modules/nf-core/custom/getchromsizes/tests/main.nf.test.snap b/modules/nf-core/samtools/faidx/tests/main.nf.test.snap similarity index 50% rename from modules/nf-core/custom/getchromsizes/tests/main.nf.test.snap rename to modules/nf-core/samtools/faidx/tests/main.nf.test.snap index c37b284d7..416974442 100644 --- a/modules/nf-core/custom/getchromsizes/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/faidx/tests/main.nf.test.snap @@ -1,33 +1,44 @@ { - "test_custom_getchromsizes_bgzip - stub": { + "test_samtools_faidx": { "content": [ { - "0": [ - [ - { - "id": "test" - }, - "genome.fasta.gz.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + "fa": [ + ], - "1": [ + "fai": [ [ { "id": "test" }, - "genome.fasta.gz.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + "genome.fasta.fai:md5,9da2a56e2853dc8c0b86a9e7229c9fe5" ] ], - "2": [ + "gzi": [ + + ], + "sizes": [ + + ], + "versions_samtools": [ [ - { - "id": "test" - }, - "genome.fasta.gz.gzi:md5,d41d8cd98f00b204e9800998ecf8427e" + "SAMTOOLS_FAIDX", + "samtools", + "1.22.1" ] - ], - "3": [ - "versions.yml:md5,0d5a7c33bddcb1edad6bf0705b258e6f" + ] + } + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.3" + }, + "timestamp": "2026-02-10T15:39:12.541649151" + }, + "test_samtools_faidx_get_sizes_bgzip - stub": { + "content": [ + { + "fa": [ + ], "fai": [ [ @@ -53,41 +64,26 @@ "genome.fasta.gz.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,0d5a7c33bddcb1edad6bf0705b258e6f" + "versions_samtools": [ + [ + "SAMTOOLS_FAIDX", + "samtools", + "1.22.1" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-07-05T12:38:36.927106" + "timestamp": "2026-02-10T15:41:44.040426987" }, - "test_custom_getchromsizes": { + "test_samtools_faidx_get_sizes": { "content": [ { - "0": [ - [ - { - "id": "test" - }, - "genome.fasta.sizes:md5,a57c401f27ae5133823fb09fb21c8a3c" - ] - ], - "1": [ - [ - { - "id": "test" - }, - "genome.fasta.fai:md5,9da2a56e2853dc8c0b86a9e7229c9fe5" - ] - ], - "2": [ + "fa": [ - ], - "3": [ - "versions.yml:md5,0d5a7c33bddcb1edad6bf0705b258e6f" ], "fai": [ [ @@ -108,29 +104,28 @@ "genome.fasta.sizes:md5,a57c401f27ae5133823fb09fb21c8a3c" ] ], - "versions": [ - "versions.yml:md5,0d5a7c33bddcb1edad6bf0705b258e6f" + "versions_samtools": [ + [ + "SAMTOOLS_FAIDX", + "samtools", + "1.22.1" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-06-20T13:22:34.14237" + "timestamp": "2026-02-10T15:47:03.653912015" }, - "test_custom_getchromsizes_bgzip": { + "test_samtools_faidx_bgzip": { "content": [ { - "0": [ - [ - { - "id": "test" - }, - "genome.fasta.gz.sizes:md5,a57c401f27ae5133823fb09fb21c8a3c" - ] + "fa": [ + ], - "1": [ + "fai": [ [ { "id": "test" @@ -138,7 +133,7 @@ "genome.fasta.gz.fai:md5,9da2a56e2853dc8c0b86a9e7229c9fe5" ] ], - "2": [ + "gzi": [ [ { "id": "test" @@ -146,56 +141,141 @@ "genome.fasta.gz.gzi:md5,7dea362b3fac8e00956a4952a3d4f474" ] ], - "3": [ - "versions.yml:md5,0d5a7c33bddcb1edad6bf0705b258e6f" + "sizes": [ + ], - "fai": [ + "versions_samtools": [ + [ + "SAMTOOLS_FAIDX", + "samtools", + "1.22.1" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.3" + }, + "timestamp": "2026-02-10T15:50:04.023566795" + }, + "test_samtools_faidx_fasta": { + "content": [ + { + "fa": [ [ { "id": "test" }, - "genome.fasta.gz.fai:md5,9da2a56e2853dc8c0b86a9e7229c9fe5" + "extract.fa:md5,6a0774a0ad937ba0bfd2ac7457d90f36" ] + ], + "fai": [ + ], "gzi": [ + + ], + "sizes": [ + + ], + "versions_samtools": [ + [ + "SAMTOOLS_FAIDX", + "samtools", + "1.22.1" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.3" + }, + "timestamp": "2026-02-10T15:39:23.529404162" + }, + "test_samtools_faidx_get_sizes - stub": { + "content": [ + { + "fa": [ + + ], + "fai": [ [ { "id": "test" }, - "genome.fasta.gz.gzi:md5,7dea362b3fac8e00956a4952a3d4f474" + "genome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" ] + ], + "gzi": [ + ], "sizes": [ [ { "id": "test" }, - "genome.fasta.gz.sizes:md5,a57c401f27ae5133823fb09fb21c8a3c" + "genome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,0d5a7c33bddcb1edad6bf0705b258e6f" + "versions_samtools": [ + [ + "SAMTOOLS_FAIDX", + "samtools", + "1.22.1" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-06-20T13:23:06.241379" + "timestamp": "2026-02-10T15:41:39.039834304" }, - "test_custom_getchromsizes - stub": { + "test_samtools_faidx_stub_fasta": { "content": [ { - "0": [ + "fa": [ [ { "id": "test" }, - "genome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + "extract.fa:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fai": [ + + ], + "gzi": [ + + ], + "sizes": [ + + ], + "versions_samtools": [ + [ + "SAMTOOLS_FAIDX", + "samtools", + "1.22.1" ] + ] + } + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.3" + }, + "timestamp": "2026-02-10T15:39:28.961701609" + }, + "test_samtools_faidx_stub_fai": { + "content": [ + { + "fa": [ + ], - "1": [ + "fai": [ [ { "id": "test" @@ -203,40 +283,70 @@ "genome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "2": [ + "gzi": [ ], - "3": [ - "versions.yml:md5,0d5a7c33bddcb1edad6bf0705b258e6f" + "sizes": [ + + ], + "versions_samtools": [ + [ + "SAMTOOLS_FAIDX", + "samtools", + "1.22.1" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.3" + }, + "timestamp": "2026-02-10T15:39:34.471028474" + }, + "test_samtools_faidx_get_sizes_bgzip": { + "content": [ + { + "fa": [ + ], "fai": [ [ { "id": "test" }, - "genome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + "genome.fasta.gz.fai:md5,9da2a56e2853dc8c0b86a9e7229c9fe5" ] ], "gzi": [ - + [ + { + "id": "test" + }, + "genome.fasta.gz.gzi:md5,7dea362b3fac8e00956a4952a3d4f474" + ] ], "sizes": [ [ { "id": "test" }, - "genome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + "genome.fasta.gz.sizes:md5,a57c401f27ae5133823fb09fb21c8a3c" ] ], - "versions": [ - "versions.yml:md5,0d5a7c33bddcb1edad6bf0705b258e6f" + "versions_samtools": [ + [ + "SAMTOOLS_FAIDX", + "samtools", + "1.22.1" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-07-05T12:24:05.697845" + "timestamp": "2026-02-10T15:39:45.439016495" } } \ No newline at end of file diff --git a/modules/nf-core/samtools/faidx/tests/nextflow.config b/modules/nf-core/samtools/faidx/tests/nextflow.config new file mode 100644 index 000000000..202c036ed --- /dev/null +++ b/modules/nf-core/samtools/faidx/tests/nextflow.config @@ -0,0 +1,7 @@ +process { + + withName: SAMTOOLS_FAIDX { + ext.args = params.module_args + } + +} diff --git a/modules/nf-core/samtools/flagstat/main.nf b/modules/nf-core/samtools/flagstat/main.nf index f148f56bb..0cfb7e873 100644 --- a/modules/nf-core/samtools/flagstat/main.nf +++ b/modules/nf-core/samtools/flagstat/main.nf @@ -12,7 +12,7 @@ process SAMTOOLS_FLAGSTAT { output: tuple val(meta), path("*.flagstat"), emit: flagstat - path "versions.yml" , emit: versions + tuple val("${task.process}"), val('samtools'), eval("samtools version | sed '1!d;s/.* //'"), emit: versions_samtools, topic: versions when: task.ext.when == null || task.ext.when @@ -25,11 +25,6 @@ process SAMTOOLS_FLAGSTAT { --threads ${task.cpus} \\ $bam \\ > ${prefix}.flagstat - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - END_VERSIONS """ stub: @@ -48,10 +43,5 @@ process SAMTOOLS_FLAGSTAT { 850000 + 0 with mate mapped to a different chr 50000 + 0 with mate mapped to a different chr (mapQ>=5) END_FLAGSTAT - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - END_VERSIONS """ } diff --git a/modules/nf-core/samtools/flagstat/meta.yml b/modules/nf-core/samtools/flagstat/meta.yml index ebbc15f27..8caa1bcc5 100644 --- a/modules/nf-core/samtools/flagstat/meta.yml +++ b/modules/nf-core/samtools/flagstat/meta.yml @@ -1,6 +1,6 @@ name: samtools_flagstat -description: Counts the number of alignments in a BAM/CRAM/SAM file for each FLAG - type +description: Counts the number of alignments in a BAM/CRAM/SAM file for each + FLAG type keywords: - stats - mapping @@ -17,7 +17,8 @@ tools: homepage: http://www.htslib.org/ documentation: http://www.htslib.org/doc/samtools.html doi: 10.1093/bioinformatics/btp352 - licence: ["MIT"] + licence: + - "MIT" identifier: biotools:samtools input: - - meta: @@ -47,13 +48,27 @@ output: description: File containing samtools flagstat output pattern: "*.{flagstat}" ontologies: [] + versions_samtools: + - - ${task.process}: + type: string + description: The name of the process + - samtools: + type: string + description: The name of the tool + - samtools version | sed '1!d;s/.* //': + type: eval + description: The expression to obtain the version of the tool +topics: versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" - ontologies: - - edam: http://edamontology.org/format_3750 # YAML + - - ${task.process}: + type: string + description: The name of the process + - samtools: + type: string + description: The name of the tool + - samtools version | sed '1!d;s/.* //': + type: eval + description: The expression to obtain the version of the tool authors: - "@drpatelh" maintainers: diff --git a/modules/nf-core/samtools/flagstat/tests/main.nf.test.snap b/modules/nf-core/samtools/flagstat/tests/main.nf.test.snap index 0a0a9b15c..f5c882da2 100644 --- a/modules/nf-core/samtools/flagstat/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/flagstat/tests/main.nf.test.snap @@ -12,7 +12,11 @@ ] ], "1": [ - "versions.yml:md5,bdc0bfb2b0542580e7cd65e80d8570bc" + [ + "SAMTOOLS_FLAGSTAT", + "samtools", + "1.22.1" + ] ], "flagstat": [ [ @@ -23,16 +27,20 @@ "test.flagstat:md5,67394650dbae96d1a4fcc70484822159" ] ], - "versions": [ - "versions.yml:md5,bdc0bfb2b0542580e7cd65e80d8570bc" + "versions_samtools": [ + [ + "SAMTOOLS_FLAGSTAT", + "samtools", + "1.22.1" + ] ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.04.6" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2025-09-15T15:02:00.813612" + "timestamp": "2026-02-03T11:14:30.820969684" }, "BAM": { "content": [ @@ -47,7 +55,11 @@ ] ], "1": [ - "versions.yml:md5,bdc0bfb2b0542580e7cd65e80d8570bc" + [ + "SAMTOOLS_FLAGSTAT", + "samtools", + "1.22.1" + ] ], "flagstat": [ [ @@ -58,15 +70,19 @@ "test.flagstat:md5,4f7ffd1e6a5e85524d443209ac97d783" ] ], - "versions": [ - "versions.yml:md5,bdc0bfb2b0542580e7cd65e80d8570bc" + "versions_samtools": [ + [ + "SAMTOOLS_FLAGSTAT", + "samtools", + "1.22.1" + ] ] } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.04.6" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2025-09-15T15:01:55.232954" + "timestamp": "2026-02-03T11:14:25.581619424" } } \ No newline at end of file diff --git a/modules/nf-core/samtools/idxstats/environment.yml b/modules/nf-core/samtools/idxstats/environment.yml index eb6c88099..89e12a645 100644 --- a/modules/nf-core/samtools/idxstats/environment.yml +++ b/modules/nf-core/samtools/idxstats/environment.yml @@ -1,8 +1,10 @@ -name: samtools_idxstats +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::samtools=1.20 - - bioconda::htslib=1.20 + # renovate: datasource=conda depName=bioconda/htslib + - bioconda::htslib=1.22.1 + # renovate: datasource=conda depName=bioconda/samtools + - bioconda::samtools=1.22.1 diff --git a/modules/nf-core/samtools/idxstats/main.nf b/modules/nf-core/samtools/idxstats/main.nf index 2ea2a5ccd..d5b70a7fa 100644 --- a/modules/nf-core/samtools/idxstats/main.nf +++ b/modules/nf-core/samtools/idxstats/main.nf @@ -4,34 +4,29 @@ process SAMTOOLS_IDXSTATS { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.20--h50ea8bc_0' : - 'biocontainers/samtools:1.20--h50ea8bc_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.22.1--h96c455f_0' : + 'biocontainers/samtools:1.22.1--h96c455f_0' }" input: tuple val(meta), path(bam), path(bai) output: tuple val(meta), path("*.idxstats"), emit: idxstats - path "versions.yml" , emit: versions + tuple val("${task.process}"), val('samtools'), eval("samtools version | sed '1!d;s/.* //'"), emit: versions_samtools, topic: versions when: task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" """ + # Note: --threads value represents *additional* CPUs to allocate (total CPUs = 1 + --threads). samtools \\ idxstats \\ --threads ${task.cpus-1} \\ $bam \\ > ${prefix}.idxstats - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - END_VERSIONS """ stub: @@ -39,10 +34,5 @@ process SAMTOOLS_IDXSTATS { """ touch ${prefix}.idxstats - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - END_VERSIONS """ } diff --git a/modules/nf-core/samtools/idxstats/meta.yml b/modules/nf-core/samtools/idxstats/meta.yml index 344e92a3f..fd1538414 100644 --- a/modules/nf-core/samtools/idxstats/meta.yml +++ b/modules/nf-core/samtools/idxstats/meta.yml @@ -17,35 +17,58 @@ tools: homepage: http://www.htslib.org/ documentation: http://www.htslib.org/doc/samtools.html doi: 10.1093/bioinformatics/btp352 - licence: ["MIT"] + licence: + - "MIT" + identifier: biotools:samtools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - bam: - type: file - description: BAM/CRAM/SAM file - pattern: "*.{bam,cram,sam}" - - bai: - type: file - description: Index for BAM/CRAM/SAM file - pattern: "*.{bai,crai,sai}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bam: + type: file + description: BAM/CRAM/SAM file + pattern: "*.{bam,cram,sam}" + ontologies: [] + - bai: + type: file + description: Index for BAM/CRAM/SAM file + pattern: "*.{bai,crai,sai}" + ontologies: [] output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - idxstats: - type: file - description: File containing samtools idxstats output - pattern: "*.{idxstats}" - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + idxstats: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.idxstats": + type: file + description: File containing samtools idxstats output + pattern: "*.{idxstats}" + ontologies: [] + versions_samtools: + - - ${task.process}: + type: string + description: The name of the process + - samtools: + type: string + description: The name of the tool + - samtools version | sed '1!d;s/.* //': + type: eval + description: The expression to obtain the version of the tool +topics: + versions: + - - ${task.process}: + type: string + description: The name of the process + - samtools: + type: string + description: The name of the tool + - samtools version | sed '1!d;s/.* //': + type: eval + description: The expression to obtain the version of the tool authors: - "@drpatelh" maintainers: diff --git a/modules/nf-core/samtools/idxstats/tests/main.nf.test b/modules/nf-core/samtools/idxstats/tests/main.nf.test index 5fd1fc78e..c990cd551 100644 --- a/modules/nf-core/samtools/idxstats/tests/main.nf.test +++ b/modules/nf-core/samtools/idxstats/tests/main.nf.test @@ -25,7 +25,10 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot( + process.out.idxstats, + process.out.findAll { key, val -> key.startsWith('versions') } + ).match() } ) } } @@ -47,7 +50,10 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot( + process.out.idxstats, + process.out.findAll { key, val -> key.startsWith('versions') } + ).match() } ) } }} diff --git a/modules/nf-core/samtools/idxstats/tests/main.nf.test.snap b/modules/nf-core/samtools/idxstats/tests/main.nf.test.snap index a5ac8104e..19a54c7cb 100644 --- a/modules/nf-core/samtools/idxstats/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/idxstats/tests/main.nf.test.snap @@ -1,72 +1,56 @@ { "bam - stub": { "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "1": [ - "versions.yml:md5,7acbcb2a8ec6436ba7b2916d3ff13351" - ], - "idxstats": [ + "versions_samtools": [ [ - { - "id": "test", - "single_end": false - }, - "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" + "SAMTOOLS_IDXSTATS", + "samtools", + "1.22.1" ] - ], - "versions": [ - "versions.yml:md5,7acbcb2a8ec6436ba7b2916d3ff13351" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-07-22T14:17:56.180093" + "timestamp": "2026-02-02T16:21:46.333090477" }, "bam": { "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.idxstats:md5,df60a8c8d6621100d05178c93fb053a2" + ] + ], { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - "test.idxstats:md5,df60a8c8d6621100d05178c93fb053a2" - ] - ], - "1": [ - "versions.yml:md5,7acbcb2a8ec6436ba7b2916d3ff13351" - ], - "idxstats": [ + "versions_samtools": [ [ - { - "id": "test", - "single_end": false - }, - "test.idxstats:md5,df60a8c8d6621100d05178c93fb053a2" + "SAMTOOLS_IDXSTATS", + "samtools", + "1.22.1" ] - ], - "versions": [ - "versions.yml:md5,7acbcb2a8ec6436ba7b2916d3ff13351" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-07-22T14:17:41.408704" + "timestamp": "2026-02-02T16:21:41.063422521" } } \ No newline at end of file diff --git a/modules/nf-core/samtools/idxstats/tests/tags.yml b/modules/nf-core/samtools/idxstats/tests/tags.yml deleted file mode 100644 index d3057c61f..000000000 --- a/modules/nf-core/samtools/idxstats/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -samtools/idxstats: - - modules/nf-core/samtools/idxstats/** diff --git a/modules/nf-core/samtools/index/environment.yml b/modules/nf-core/samtools/index/environment.yml index 260d516be..89e12a645 100644 --- a/modules/nf-core/samtools/index/environment.yml +++ b/modules/nf-core/samtools/index/environment.yml @@ -1,8 +1,10 @@ -name: samtools_index +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::samtools=1.20 - - bioconda::htslib=1.20 + # renovate: datasource=conda depName=bioconda/htslib + - bioconda::htslib=1.22.1 + # renovate: datasource=conda depName=bioconda/samtools + - bioconda::samtools=1.22.1 diff --git a/modules/nf-core/samtools/index/main.nf b/modules/nf-core/samtools/index/main.nf index e002585b9..e2a0e56da 100644 --- a/modules/nf-core/samtools/index/main.nf +++ b/modules/nf-core/samtools/index/main.nf @@ -4,8 +4,8 @@ process SAMTOOLS_INDEX { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.20--h50ea8bc_0' : - 'biocontainers/samtools:1.20--h50ea8bc_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.22.1--h96c455f_0' : + 'biocontainers/samtools:1.22.1--h96c455f_0' }" input: tuple val(meta), path(input) @@ -14,7 +14,7 @@ process SAMTOOLS_INDEX { tuple val(meta), path("*.bai") , optional:true, emit: bai tuple val(meta), path("*.csi") , optional:true, emit: csi tuple val(meta), path("*.crai"), optional:true, emit: crai - path "versions.yml" , emit: versions + tuple val("${task.process}"), val('samtools'), eval("samtools version | sed '1!d;s/.* //'"), emit: versions_samtools, topic: versions when: task.ext.when == null || task.ext.when @@ -24,14 +24,9 @@ process SAMTOOLS_INDEX { """ samtools \\ index \\ - -@ ${task.cpus-1} \\ + -@ ${task.cpus} \\ $args \\ $input - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - END_VERSIONS """ stub: @@ -40,10 +35,5 @@ process SAMTOOLS_INDEX { "crai" : args.contains("-c") ? "csi" : "bai" """ touch ${input}.${extension} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - END_VERSIONS """ } diff --git a/modules/nf-core/samtools/index/meta.yml b/modules/nf-core/samtools/index/meta.yml index 01a4ee03e..c6d4ce259 100644 --- a/modules/nf-core/samtools/index/meta.yml +++ b/modules/nf-core/samtools/index/meta.yml @@ -14,39 +14,74 @@ tools: homepage: http://www.htslib.org/ documentation: http://www.htslib.org/doc/samtools.html doi: 10.1093/bioinformatics/btp352 - licence: ["MIT"] + licence: + - "MIT" + identifier: biotools:samtools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - bam: - type: file - description: BAM/CRAM/SAM file - pattern: "*.{bam,cram,sam}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input: + type: file + description: input file + ontologies: [] output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - bai: - type: file - description: BAM/CRAM/SAM index file - pattern: "*.{bai,crai,sai}" - - crai: - type: file - description: BAM/CRAM/SAM index file - pattern: "*.{bai,crai,sai}" - - csi: - type: file - description: CSI index file - pattern: "*.{csi}" - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + bai: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.bai": + type: file + description: BAM/CRAM/SAM index file + pattern: "*.{bai,crai,sai}" + ontologies: [] + csi: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.csi": + type: file + description: CSI index file + pattern: "*.{csi}" + ontologies: [] + crai: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.crai": + type: file + description: BAM/CRAM/SAM index file + pattern: "*.{bai,crai,sai}" + ontologies: [] + versions_samtools: + - - ${task.process}: + type: string + description: The name of the process + - samtools: + type: string + description: The name of the tool + - samtools version | sed '1!d;s/.* //': + type: eval + description: The expression to obtain the version of the tool +topics: + versions: + - - ${task.process}: + type: string + description: The name of the process + - samtools: + type: string + description: The name of the tool + - samtools version | sed '1!d;s/.* //': + type: eval + description: The expression to obtain the version of the tool authors: - "@drpatelh" - "@ewels" diff --git a/modules/nf-core/samtools/index/tests/main.nf.test b/modules/nf-core/samtools/index/tests/main.nf.test index ca34fb5cd..c96cec860 100644 --- a/modules/nf-core/samtools/index/tests/main.nf.test +++ b/modules/nf-core/samtools/index/tests/main.nf.test @@ -23,7 +23,10 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot( + process.out.bai, + process.out.findAll { key, val -> key.startsWith('versions') } + ).match() } ) } } @@ -43,7 +46,10 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot( + process.out.crai, + process.out.findAll { key, val -> key.startsWith('versions') } + ).match() } ) } } @@ -67,7 +73,7 @@ nextflow_process { { assert process.success }, { assert snapshot( file(process.out.csi[0][1]).name, - process.out.versions + process.out.findAll { key, val -> key.startsWith('versions') } ).match() } ) } @@ -89,7 +95,10 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot( + process.out.bai, + process.out.findAll { key, val -> key.startsWith('versions') } + ).match() } ) } } @@ -110,7 +119,10 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot( + process.out.crai, + process.out.findAll { key, val -> key.startsWith('versions') } + ).match() } ) } } @@ -133,7 +145,10 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot( + process.out.csi, + process.out.findAll { key, val -> key.startsWith('versions') } + ).match() } ) } } diff --git a/modules/nf-core/samtools/index/tests/main.nf.test.snap b/modules/nf-core/samtools/index/tests/main.nf.test.snap index 799d199ce..afc8a1ff6 100644 --- a/modules/nf-core/samtools/index/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/index/tests/main.nf.test.snap @@ -1,250 +1,156 @@ { "csi - stub": { "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.paired_end.sorted.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], { - "0": [ - - ], - "1": [ - [ - { - "id": "test", - "single_end": false - }, - "test.paired_end.sorted.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "2": [ - - ], - "3": [ - "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" - ], - "bai": [ - - ], - "crai": [ - - ], - "csi": [ + "versions_samtools": [ [ - { - "id": "test", - "single_end": false - }, - "test.paired_end.sorted.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + "SAMTOOLS_INDEX", + "samtools", + "1.22.1" ] - ], - "versions": [ - "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-07-22T16:51:53.9057" + "timestamp": "2026-01-28T17:52:10.030187" }, "crai - stub": { "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.paired_end.recalibrated.sorted.cram.crai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], { - "0": [ - - ], - "1": [ - - ], - "2": [ + "versions_samtools": [ [ - { - "id": "test", - "single_end": false - }, - "test.paired_end.recalibrated.sorted.cram.crai:md5,d41d8cd98f00b204e9800998ecf8427e" + "SAMTOOLS_INDEX", + "samtools", + "1.22.1" ] - ], - "3": [ - "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" - ], - "bai": [ - - ], - "crai": [ - [ - { - "id": "test", - "single_end": false - }, - "test.paired_end.recalibrated.sorted.cram.crai:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "csi": [ - - ], - "versions": [ - "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-07-22T16:51:45.931558" + "timestamp": "2026-01-28T17:51:59.125484" }, "bai - stub": { "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.paired_end.sorted.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], { - "0": [ + "versions_samtools": [ [ - { - "id": "test", - "single_end": false - }, - "test.paired_end.sorted.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" + "SAMTOOLS_INDEX", + "samtools", + "1.22.1" ] - ], - "1": [ - - ], - "2": [ - - ], - "3": [ - "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" - ], - "bai": [ - [ - { - "id": "test", - "single_end": false - }, - "test.paired_end.sorted.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "crai": [ - - ], - "csi": [ - - ], - "versions": [ - "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-07-22T16:51:34.807525" + "timestamp": "2026-01-28T17:51:47.277042" }, "csi": { "content": [ "test.paired_end.sorted.bam.csi", - [ - "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" - ] + { + "versions_samtools": [ + [ + "SAMTOOLS_INDEX", + "samtools", + "1.22.1" + ] + ] + } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-07-22T16:52:55.688799" + "timestamp": "2026-01-28T17:51:35.758735" }, "crai": { "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.paired_end.recalibrated.sorted.cram.crai:md5,14bc3bd5c89cacc8f4541f9062429029" + ] + ], { - "0": [ - - ], - "1": [ - - ], - "2": [ + "versions_samtools": [ [ - { - "id": "test", - "single_end": false - }, - "test.paired_end.recalibrated.sorted.cram.crai:md5,14bc3bd5c89cacc8f4541f9062429029" + "SAMTOOLS_INDEX", + "samtools", + "1.22.1" ] - ], - "3": [ - "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" - ], - "bai": [ - - ], - "crai": [ - [ - { - "id": "test", - "single_end": false - }, - "test.paired_end.recalibrated.sorted.cram.crai:md5,14bc3bd5c89cacc8f4541f9062429029" - ] - ], - "csi": [ - - ], - "versions": [ - "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-07-22T16:51:17.609533" + "timestamp": "2026-01-28T17:51:26.561965" }, "bai": { "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.paired_end.sorted.bam.bai:md5,704c10dd1326482448ca3073fdebc2f4" + ] + ], { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - "test.paired_end.sorted.bam.bai:md5,704c10dd1326482448ca3073fdebc2f4" - ] - ], - "1": [ - - ], - "2": [ - - ], - "3": [ - "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" - ], - "bai": [ + "versions_samtools": [ [ - { - "id": "test", - "single_end": false - }, - "test.paired_end.sorted.bam.bai:md5,704c10dd1326482448ca3073fdebc2f4" + "SAMTOOLS_INDEX", + "samtools", + "1.22.1" ] - ], - "crai": [ - - ], - "csi": [ - - ], - "versions": [ - "versions.yml:md5,802c9776d9c5e95314e888cf18e96d77" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-07-22T16:51:04.16585" + "timestamp": "2026-01-28T17:51:15.299035" } } \ No newline at end of file diff --git a/modules/nf-core/samtools/index/tests/tags.yml b/modules/nf-core/samtools/index/tests/tags.yml deleted file mode 100644 index e0f58a7a3..000000000 --- a/modules/nf-core/samtools/index/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -samtools/index: - - modules/nf-core/samtools/index/** diff --git a/modules/nf-core/samtools/sort/environment.yml b/modules/nf-core/samtools/sort/environment.yml index 36a12eab0..89e12a645 100644 --- a/modules/nf-core/samtools/sort/environment.yml +++ b/modules/nf-core/samtools/sort/environment.yml @@ -1,8 +1,10 @@ -name: samtools_sort +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::samtools=1.20 - - bioconda::htslib=1.20 + # renovate: datasource=conda depName=bioconda/htslib + - bioconda::htslib=1.22.1 + # renovate: datasource=conda depName=bioconda/samtools + - bioconda::samtools=1.22.1 diff --git a/modules/nf-core/samtools/sort/main.nf b/modules/nf-core/samtools/sort/main.nf index 8e019099c..6b5aa31dd 100644 --- a/modules/nf-core/samtools/sort/main.nf +++ b/modules/nf-core/samtools/sort/main.nf @@ -4,35 +4,45 @@ process SAMTOOLS_SORT { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.20--h50ea8bc_0' : - 'biocontainers/samtools:1.20--h50ea8bc_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.22.1--h96c455f_0' : + 'biocontainers/samtools:1.22.1--h96c455f_0' }" input: tuple val(meta) , path(bam) tuple val(meta2), path(fasta) + val index_format output: - tuple val(meta), path("*.bam"), emit: bam, optional: true - tuple val(meta), path("*.cram"), emit: cram, optional: true - tuple val(meta), path("*.crai"), emit: crai, optional: true - tuple val(meta), path("*.csi"), emit: csi, optional: true - path "versions.yml" , emit: versions + tuple val(meta), path("${prefix}.bam"), emit: bam, optional: true + tuple val(meta), path("${prefix}.cram"), emit: cram, optional: true + tuple val(meta), path("${prefix}.sam"), emit: sam, optional: true + tuple val(meta), path("${prefix}.${extension}.crai"), emit: crai, optional: true + tuple val(meta), path("${prefix}.${extension}.csi"), emit: csi, optional: true + tuple val(meta), path("${prefix}.${extension}.bai"), emit: bai, optional: true + tuple val("${task.process}"), val('samtools'), eval("samtools version | sed '1!d;s/.* //'"), topic: versions, emit: versions_samtools when: task.ext.when == null || task.ext.when script: def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" - def extension = args.contains("--output-fmt sam") ? "sam" : - args.contains("--output-fmt cram") ? "cram" : - "bam" + prefix = task.ext.prefix ?: "${meta.id}" + extension = args.contains("--output-fmt sam") ? "sam" : + args.contains("--output-fmt cram") ? "cram" : + "bam" def reference = fasta ? "--reference ${fasta}" : "" + output_file = index_format ? "${prefix}.${extension}##idx##${prefix}.${extension}.${index_format} --write-index" : "${prefix}.${extension}" + if (index_format) { + if (!index_format.matches('bai|csi|crai')) { + error "Index format not one of bai, csi, crai." + } else if (extension == "sam") { + error "Indexing not compatible with SAM output" + } + } if ("$bam" == "${prefix}.bam") error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" """ samtools cat \\ - --threads $task.cpus \\ ${bam} \\ | \\ samtools sort \\ @@ -40,34 +50,29 @@ process SAMTOOLS_SORT { -T ${prefix} \\ --threads $task.cpus \\ ${reference} \\ - -o ${prefix}.${extension} \\ + -o ${output_file} \\ - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - END_VERSIONS """ stub: def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" - def extension = args.contains("--output-fmt sam") ? "sam" : - args.contains("--output-fmt cram") ? "cram" : - "bam" + prefix = task.ext.prefix ?: "${meta.id}" + extension = args.contains("--output-fmt sam") ? "sam" : + args.contains("--output-fmt cram") ? "cram" : + "bam" + if (index_format) { + if (!index_format.matches('bai|csi|crai')) { + error "Index format not one of bai, csi, crai." + } else if (extension == "sam") { + error "Indexing not compatible with SAM output" + } + } + index = index_format ? "touch ${prefix}.${extension}.${index_format}" : "" + """ touch ${prefix}.${extension} - if [ "${extension}" == "bam" ]; - then - touch ${prefix}.${extension}.csi - elif [ "${extension}" == "cram" ]; - then - touch ${prefix}.${extension}.crai - fi + ${index} - cat <<-END_VERSIONS > versions.yml - "${task.process}": - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - END_VERSIONS """ } diff --git a/modules/nf-core/samtools/sort/meta.yml b/modules/nf-core/samtools/sort/meta.yml index 341a7d0eb..699683047 100644 --- a/modules/nf-core/samtools/sort/meta.yml +++ b/modules/nf-core/samtools/sort/meta.yml @@ -15,52 +15,123 @@ tools: documentation: http://www.htslib.org/doc/samtools.html doi: 10.1093/bioinformatics/btp352 licence: ["MIT"] + identifier: biotools:samtools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - bam: - type: file - description: BAM/CRAM/SAM file(s) - pattern: "*.{bam,cram,sam}" - - meta2: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'genome' ] - - fasta: - type: file - description: Reference genome FASTA file - pattern: "*.{fa,fasta,fna}" - optional: true + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bam: + type: file + description: BAM/CRAM/SAM file(s) + pattern: "*.{bam,cram,sam}" + ontologies: [] + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + - fasta: + type: file + description: Reference genome FASTA file + pattern: "*.{fa,fasta,fna}" + optional: true + ontologies: [] + - index_format: + type: string + description: Index format to use (optional) + pattern: "bai|csi|crai" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - bam: - type: file - description: Sorted BAM file - pattern: "*.{bam}" - - cram: - type: file - description: Sorted CRAM file - pattern: "*.{cram}" - - crai: - type: file - description: CRAM index file (optional) - pattern: "*.crai" - - csi: - type: file - description: BAM index file (optional) - pattern: "*.csi" - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + bam: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "${prefix}.bam": + type: file + description: Sorted BAM file + pattern: "*.{bam}" + ontologies: [] + cram: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "${prefix}.cram": + type: file + description: Sorted CRAM file + pattern: "*.{cram}" + ontologies: [] + sam: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "${prefix}.sam": + type: file + description: Sorted SAM file + pattern: "*.{sam}" + ontologies: [] + crai: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "${prefix}.${extension}.crai": + type: file + description: CRAM index file (optional) + pattern: "*.crai" + ontologies: [] + csi: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "${prefix}.${extension}.csi": + type: file + description: BAM index file (optional) + pattern: "*.csi" + ontologies: [] + bai: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "${prefix}.${extension}.bai": + type: file + description: BAM index file (optional) + pattern: "*.bai" + ontologies: [] + versions_samtools: + - - ${task.process}: + type: string + description: The process the versions were collected from + - samtools: + type: string + description: The tool name + - "samtools version | sed '1!d;s/.* //'": + type: string + description: The command used to generate the version of the tool + +topics: + versions: + - - ${task.process}: + type: string + description: The process the versions were collected from + - samtools: + type: string + description: The tool name + - "samtools version | sed '1!d;s/.* //'": + type: string + description: The command used to generate the version of the tool + authors: - "@drpatelh" - "@ewels" diff --git a/modules/nf-core/samtools/sort/tests/main.nf.test b/modules/nf-core/samtools/sort/tests/main.nf.test index c2ea9c72a..df47bb25c 100644 --- a/modules/nf-core/samtools/sort/tests/main.nf.test +++ b/modules/nf-core/samtools/sort/tests/main.nf.test @@ -8,7 +8,7 @@ nextflow_process { tag "samtools" tag "samtools/sort" - test("bam") { + test("bam_no_index") { config "./nextflow.config" @@ -23,6 +23,106 @@ nextflow_process { [ id:'fasta' ], // meta map file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ]) + input[2] = '' + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot( + process.out.bam, + process.out.bai, + process.out.findAll { key, val -> key.startsWith("versions") } + ).match()} + ) + } + } + + test("bam_bai_index") { + + config "./nextflow.config" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.bam', checkIfExists: true) + ]) + input[1] = Channel.of([ + [ id:'fasta' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ]) + input[2] = 'bai' + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot( + process.out.bam, + process.out.bai, + process.out.findAll { key, val -> key.startsWith("versions") } + ).match()} + ) + } + } + + test("bam_csi_index") { + + config "./nextflow.config" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.bam', checkIfExists: true) + ]) + input[1] = Channel.of([ + [ id:'fasta' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ]) + input[2] = 'csi' + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot( + process.out.bam, + process.out.csi, + process.out.findAll { key, val -> key.startsWith("versions") } + ).match()} + ) + } + } + + test("multiple bam") { + + config "./nextflow.config" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam', checkIfExists: true) + ] + ]) + input[1] = Channel.of([ + [ id:'fasta' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ]) + input[2] = '' """ } } @@ -33,7 +133,77 @@ nextflow_process { { assert snapshot( process.out.bam, process.out.csi.collect { it.collect { it instanceof Map ? it : file(it).name } }, - process.out.versions + process.out.findAll { key, val -> key.startsWith("versions") } + ).match()} + ) + } + } + + test("multiple bam bai index") { + + config "./nextflow.config" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam', checkIfExists: true) + ] + ]) + input[1] = Channel.of([ + [ id:'fasta' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ]) + input[2] = 'bai' + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot( + process.out.bam, + process.out.bai.collect { it.collect { it instanceof Map ? it : file(it).name } }, + process.out.findAll { key, val -> key.startsWith("versions") } + ).match()} + ) + } + } + + test("multiple bam csi index") { + + config "./nextflow.config" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam', checkIfExists: true) + ] + ]) + input[1] = Channel.of([ + [ id:'fasta' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ]) + input[2] = 'csi' + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot( + process.out.bam, + process.out.csi.collect { it.collect { it instanceof Map ? it : file(it).name } }, + process.out.findAll { key, val -> key.startsWith("versions") } ).match()} ) } @@ -54,6 +224,7 @@ nextflow_process { [ id:'fasta' ], // meta map file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ]) + input[2] = '' """ } } @@ -64,7 +235,7 @@ nextflow_process { { assert snapshot( process.out.cram.collect { it.collect { it instanceof Map ? it : file(it).name } }, process.out.crai.collect { it.collect { it instanceof Map ? it : file(it).name } }, - process.out.versions + process.out.findAll { key, val -> key.startsWith("versions") } ).match()} ) } @@ -86,6 +257,38 @@ nextflow_process { [ id:'fasta' ], // meta map file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ]) + input[2] = '' + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out.findAll { key, val -> key.startsWith("versions") }).match() } + ) + } + } + + test("multiple bam - stub") { + + config "./nextflow.config" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam', checkIfExists: true) + ] + ]) + input[1] = Channel.of([ + [ id:'fasta' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ]) + input[2] = '' """ } } @@ -93,7 +296,7 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot(process.out.findAll { key, val -> key.startsWith("versions") }).match() } ) } } @@ -114,6 +317,7 @@ nextflow_process { [ id:'fasta' ], // meta map file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ]) + input[2] = '' """ } } @@ -121,7 +325,7 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot(process.out.findAll { key, val -> key.startsWith("versions") }).match() } ) } } diff --git a/modules/nf-core/samtools/sort/tests/main.nf.test.snap b/modules/nf-core/samtools/sort/tests/main.nf.test.snap index da38d5d15..4e618fa3f 100644 --- a/modules/nf-core/samtools/sort/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/sort/tests/main.nf.test.snap @@ -19,147 +19,209 @@ "test.sorted.cram.crai" ] ], - [ - "versions.yml:md5,7a360de20e1d7a6f15a5e8fbe0a9c062" - ] + { + "versions_samtools": [ + [ + "SAMTOOLS_SORT", + "samtools", + "1.22.1" + ] + ] + } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.3", + "nextflow": "25.10.0" }, - "timestamp": "2024-07-22T17:19:37.196205" + "timestamp": "2025-10-29T12:47:01.171084" }, - "bam - stub": { + "bam_csi_index": { "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam:md5,72ca1dff5344a5e5e6b892fe5f6b134d" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam.csi:md5,01394e702c729cb478df914ffaf9f7f8" + ] + ], { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - "test.sorted.bam:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "1": [ - - ], - "2": [ - - ], - "3": [ + "versions_samtools": [ [ - { - "id": "test", - "single_end": false - }, - "test.sorted.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + "SAMTOOLS_SORT", + "samtools", + "1.22.1" ] - ], - "4": [ - "versions.yml:md5,7a360de20e1d7a6f15a5e8fbe0a9c062" - ], - "bam": [ + ] + } + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.0" + }, + "timestamp": "2025-10-29T12:46:00.961675" + }, + "bam - stub": { + "content": [ + { + "versions_samtools": [ [ - { - "id": "test", - "single_end": false - }, - "test.sorted.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + "SAMTOOLS_SORT", + "samtools", + "1.22.1" ] - ], - "crai": [ - - ], - "cram": [ - - ], - "csi": [ + ] + } + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.0" + }, + "timestamp": "2025-10-29T12:47:12.154354" + }, + "multiple bam bai index": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam:md5,3ffa2affc29f0aa6e7b36dded84625fe" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam.bai" + ] + ], + { + "versions_samtools": [ [ - { - "id": "test", - "single_end": false - }, - "test.sorted.bam.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + "SAMTOOLS_SORT", + "samtools", + "1.22.1" ] - ], - "versions": [ - "versions.yml:md5,7a360de20e1d7a6f15a5e8fbe0a9c062" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.3", + "nextflow": "25.10.0" }, - "timestamp": "2024-07-22T15:54:46.580756" + "timestamp": "2025-10-29T12:46:25.488622" }, "cram - stub": { "content": [ { - "0": [ - - ], - "1": [ + "versions_samtools": [ [ - { - "id": "test", - "single_end": false - }, - "test.sorted.cram:md5,d41d8cd98f00b204e9800998ecf8427e" + "SAMTOOLS_SORT", + "samtools", + "1.22.1" ] - ], - "2": [ + ] + } + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.0" + }, + "timestamp": "2025-10-29T12:47:28.485045" + }, + "multiple bam": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam:md5,cd4eb0077f25e9cff395366b8883dd1f" + ] + ], + [ + + ], + { + "versions_samtools": [ [ - { - "id": "test", - "single_end": false - }, - "test.sorted.cram.crai:md5,d41d8cd98f00b204e9800998ecf8427e" + "SAMTOOLS_SORT", + "samtools", + "1.22.1" ] - ], - "3": [ - - ], - "4": [ - "versions.yml:md5,7a360de20e1d7a6f15a5e8fbe0a9c062" - ], - "bam": [ - - ], - "crai": [ + ] + } + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.0" + }, + "timestamp": "2025-10-29T12:46:13.168476" + }, + "multiple bam - stub": { + "content": [ + { + "versions_samtools": [ [ - { - "id": "test", - "single_end": false - }, - "test.sorted.cram.crai:md5,d41d8cd98f00b204e9800998ecf8427e" + "SAMTOOLS_SORT", + "samtools", + "1.22.1" ] - ], - "cram": [ + ] + } + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.0" + }, + "timestamp": "2025-10-29T12:47:21.628088" + }, + "bam_no_index": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam:md5,26b27d1f9bcb61c25da21b562349784e" + ] + ], + [ + + ], + { + "versions_samtools": [ [ - { - "id": "test", - "single_end": false - }, - "test.sorted.cram:md5,d41d8cd98f00b204e9800998ecf8427e" + "SAMTOOLS_SORT", + "samtools", + "1.22.1" ] - ], - "csi": [ - - ], - "versions": [ - "versions.yml:md5,7a360de20e1d7a6f15a5e8fbe0a9c062" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.3", + "nextflow": "25.10.0" }, - "timestamp": "2024-07-22T15:57:30.505698" + "timestamp": "2025-10-29T12:45:47.139418" }, - "bam": { + "multiple bam csi index": { "content": [ [ [ @@ -167,7 +229,7 @@ "id": "test", "single_end": false }, - "test.sorted.bam:md5,21c992d59615936b99f2ad008aa54400" + "test.sorted.bam:md5,295503ba5342531a3310c33ad0efbc22" ] ], [ @@ -179,14 +241,56 @@ "test.sorted.bam.csi" ] ], + { + "versions_samtools": [ + [ + "SAMTOOLS_SORT", + "samtools", + "1.22.1" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.0" + }, + "timestamp": "2025-10-29T12:46:51.5531" + }, + "bam_bai_index": { + "content": [ [ - "versions.yml:md5,7a360de20e1d7a6f15a5e8fbe0a9c062" - ] + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam:md5,cae7564cb83bb4a5911205bf94124b54" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam.bai:md5,50dd467c169545a4d5d1f709f7e986e0" + ] + ], + { + "versions_samtools": [ + [ + "SAMTOOLS_SORT", + "samtools", + "1.22.1" + ] + ] + } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.3", + "nextflow": "25.10.0" }, - "timestamp": "2024-07-22T15:54:25.872954" + "timestamp": "2025-10-29T12:45:52.796936" } } \ No newline at end of file diff --git a/modules/nf-core/samtools/sort/tests/nextflow.config b/modules/nf-core/samtools/sort/tests/nextflow.config index f642771f5..723f62b21 100644 --- a/modules/nf-core/samtools/sort/tests/nextflow.config +++ b/modules/nf-core/samtools/sort/tests/nextflow.config @@ -2,7 +2,6 @@ process { withName: SAMTOOLS_SORT { ext.prefix = { "${meta.id}.sorted" } - ext.args = "--write-index" } } diff --git a/modules/nf-core/samtools/sort/tests/tags.yml b/modules/nf-core/samtools/sort/tests/tags.yml deleted file mode 100644 index cd63ea208..000000000 --- a/modules/nf-core/samtools/sort/tests/tags.yml +++ /dev/null @@ -1,3 +0,0 @@ -samtools/sort: - - modules/nf-core/samtools/sort/** - - tests/modules/nf-core/samtools/sort/** diff --git a/modules/nf-core/samtools/stats/environment.yml b/modules/nf-core/samtools/stats/environment.yml index 1cc83bd95..89e12a645 100644 --- a/modules/nf-core/samtools/stats/environment.yml +++ b/modules/nf-core/samtools/stats/environment.yml @@ -1,8 +1,10 @@ -name: samtools_stats +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::samtools=1.20 - - bioconda::htslib=1.20 + # renovate: datasource=conda depName=bioconda/htslib + - bioconda::htslib=1.22.1 + # renovate: datasource=conda depName=bioconda/samtools + - bioconda::samtools=1.22.1 diff --git a/modules/nf-core/samtools/stats/main.nf b/modules/nf-core/samtools/stats/main.nf index 982bc28e7..57d246806 100644 --- a/modules/nf-core/samtools/stats/main.nf +++ b/modules/nf-core/samtools/stats/main.nf @@ -4,8 +4,8 @@ process SAMTOOLS_STATS { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.20--h50ea8bc_0' : - 'biocontainers/samtools:1.20--h50ea8bc_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.22.1--h96c455f_0' : + 'biocontainers/samtools:1.22.1--h96c455f_0' }" input: tuple val(meta), path(input), path(input_index) @@ -13,37 +13,28 @@ process SAMTOOLS_STATS { output: tuple val(meta), path("*.stats"), emit: stats - path "versions.yml" , emit: versions + tuple val("${task.process}"), val('samtools'), eval('samtools version | sed "1!d;s/.* //"'), emit: versions_samtools, topic: versions when: task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" def reference = fasta ? "--reference ${fasta}" : "" """ samtools \\ stats \\ + ${args} \\ --threads ${task.cpus} \\ ${reference} \\ ${input} \\ > ${prefix}.stats - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - END_VERSIONS """ stub: def prefix = task.ext.prefix ?: "${meta.id}" """ touch ${prefix}.stats - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - END_VERSIONS """ } diff --git a/modules/nf-core/samtools/stats/meta.yml b/modules/nf-core/samtools/stats/meta.yml index 735ff8122..5c59cce43 100644 --- a/modules/nf-core/samtools/stats/meta.yml +++ b/modules/nf-core/samtools/stats/meta.yml @@ -16,43 +16,68 @@ tools: documentation: http://www.htslib.org/doc/samtools.html doi: 10.1093/bioinformatics/btp352 licence: ["MIT"] + identifier: biotools:samtools input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - input: - type: file - description: BAM/CRAM file from alignment - pattern: "*.{bam,cram}" - - input_index: - type: file - description: BAI/CRAI file from alignment - pattern: "*.{bai,crai}" - - meta2: - type: map - description: | - Groovy Map containing reference information - e.g. [ id:'genome' ] - - fasta: - type: file - description: Reference file the CRAM was created with (optional) - pattern: "*.{fasta,fa}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input: + type: file + description: BAM/CRAM file from alignment + pattern: "*.{bam,cram}" + ontologies: [] + - input_index: + type: file + description: BAI/CRAI file from alignment + pattern: "*.{bai,crai}" + ontologies: [] + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + - fasta: + type: file + description: Reference file the CRAM was created with (optional) + pattern: "*.{fasta,fa}" + ontologies: [] output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - stats: - type: file - description: File containing samtools stats output - pattern: "*.{stats}" - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + stats: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.stats": + type: file + description: File containing samtools stats output + pattern: "*.{stats}" + ontologies: [] + versions_samtools: + - - ${task.process}: + type: string + description: Name of the process + - samtools: + type: string + description: Name of the tool + - samtools version | sed "1!d;s/.* //": + type: eval + description: The expression to obtain the version of the tool + +topics: + versions: + - - ${task.process}: + type: string + description: Name of the process + - samtools: + type: string + description: Name of the tool + - samtools version | sed "1!d;s/.* //": + type: eval + description: The expression to obtain the version of the tool + authors: - "@drpatelh" - "@FriederikeHanssen" diff --git a/modules/nf-core/samtools/stats/tests/main.nf.test b/modules/nf-core/samtools/stats/tests/main.nf.test index 28a77db28..5bc893095 100644 --- a/modules/nf-core/samtools/stats/tests/main.nf.test +++ b/modules/nf-core/samtools/stats/tests/main.nf.test @@ -3,6 +3,7 @@ nextflow_process { name "Test Process SAMTOOLS_STATS" script "../main.nf" process "SAMTOOLS_STATS" + tag "modules" tag "modules_nfcore" tag "samtools" @@ -43,7 +44,7 @@ nextflow_process { ]) input[1] = Channel.of([ [ id:'genome' ], // meta map - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta', checkIfExists: true) ]) """ } @@ -96,7 +97,7 @@ nextflow_process { ]) input[1] = Channel.of([ [ id:'genome' ], // meta map - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta', checkIfExists: true) ]) """ } diff --git a/modules/nf-core/samtools/stats/tests/main.nf.test.snap b/modules/nf-core/samtools/stats/tests/main.nf.test.snap index 3828f3788..94d981b2a 100644 --- a/modules/nf-core/samtools/stats/tests/main.nf.test.snap +++ b/modules/nf-core/samtools/stats/tests/main.nf.test.snap @@ -8,11 +8,15 @@ "id": "test", "single_end": false }, - "test.stats:md5,c9d39b38c22de2057fc2f89949090975" + "test.stats:md5,f4aec6c41b73d34ac2fc6b3253aa39ba" ] ], "1": [ - "versions.yml:md5,b3b70b126f867fdbb7dcea5e36e49d4a" + [ + "SAMTOOLS_STATS", + "samtools", + "1.22.1" + ] ], "stats": [ [ @@ -20,19 +24,23 @@ "id": "test", "single_end": false }, - "test.stats:md5,c9d39b38c22de2057fc2f89949090975" + "test.stats:md5,f4aec6c41b73d34ac2fc6b3253aa39ba" ] ], - "versions": [ - "versions.yml:md5,b3b70b126f867fdbb7dcea5e36e49d4a" + "versions_samtools": [ + [ + "SAMTOOLS_STATS", + "samtools", + "1.22.1" + ] ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.3", + "nextflow": "25.10.0" }, - "timestamp": "2024-07-22T14:20:24.885816" + "timestamp": "2025-11-01T02:27:18.460724" }, "bam - stub": { "content": [ @@ -47,7 +55,11 @@ ] ], "1": [ - "versions.yml:md5,b3b70b126f867fdbb7dcea5e36e49d4a" + [ + "SAMTOOLS_STATS", + "samtools", + "1.22.1" + ] ], "stats": [ [ @@ -58,16 +70,20 @@ "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,b3b70b126f867fdbb7dcea5e36e49d4a" + "versions_samtools": [ + [ + "SAMTOOLS_STATS", + "samtools", + "1.22.1" + ] ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.3", + "nextflow": "25.10.0" }, - "timestamp": "2024-07-22T14:20:39.310713" + "timestamp": "2025-11-01T02:27:30.245839" }, "cram - stub": { "content": [ @@ -82,7 +98,11 @@ ] ], "1": [ - "versions.yml:md5,b3b70b126f867fdbb7dcea5e36e49d4a" + [ + "SAMTOOLS_STATS", + "samtools", + "1.22.1" + ] ], "stats": [ [ @@ -93,16 +113,20 @@ "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,b3b70b126f867fdbb7dcea5e36e49d4a" + "versions_samtools": [ + [ + "SAMTOOLS_STATS", + "samtools", + "1.22.1" + ] ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.3", + "nextflow": "25.10.0" }, - "timestamp": "2024-07-22T14:21:04.771199" + "timestamp": "2025-11-01T02:27:39.041649" }, "bam": { "content": [ @@ -113,11 +137,15 @@ "id": "test", "single_end": false }, - "test.stats:md5,d522a1fa016b259d6a55620ae53dcd63" + "test.stats:md5,41ba8ad30ddb598dadb177a54c222ab9" ] ], "1": [ - "versions.yml:md5,b3b70b126f867fdbb7dcea5e36e49d4a" + [ + "SAMTOOLS_STATS", + "samtools", + "1.22.1" + ] ], "stats": [ [ @@ -125,18 +153,22 @@ "id": "test", "single_end": false }, - "test.stats:md5,d522a1fa016b259d6a55620ae53dcd63" + "test.stats:md5,41ba8ad30ddb598dadb177a54c222ab9" ] ], - "versions": [ - "versions.yml:md5,b3b70b126f867fdbb7dcea5e36e49d4a" + "versions_samtools": [ + [ + "SAMTOOLS_STATS", + "samtools", + "1.22.1" + ] ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.3", + "nextflow": "25.10.0" }, - "timestamp": "2024-07-22T14:19:06.645466" + "timestamp": "2025-11-01T02:26:55.988241" } } \ No newline at end of file diff --git a/modules/nf-core/samtools/stats/tests/tags.yml b/modules/nf-core/samtools/stats/tests/tags.yml deleted file mode 100644 index 7c28e30f3..000000000 --- a/modules/nf-core/samtools/stats/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -samtools/stats: - - modules/nf-core/samtools/stats/** diff --git a/modules/nf-core/subread/featurecounts/environment.yml b/modules/nf-core/subread/featurecounts/environment.yml index ca19439d7..231335592 100644 --- a/modules/nf-core/subread/featurecounts/environment.yml +++ b/modules/nf-core/subread/featurecounts/environment.yml @@ -1,7 +1,7 @@ -name: subread_featurecounts +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::subread=2.0.1 + - bioconda::subread=2.1.1 diff --git a/modules/nf-core/subread/featurecounts/main.nf b/modules/nf-core/subread/featurecounts/main.nf index 471bd16fd..8067dba17 100644 --- a/modules/nf-core/subread/featurecounts/main.nf +++ b/modules/nf-core/subread/featurecounts/main.nf @@ -1,19 +1,19 @@ process SUBREAD_FEATURECOUNTS { - tag "$meta.id" + tag "${meta.id}" label 'process_medium' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/subread:2.0.1--hed695b0_0' : - 'biocontainers/subread:2.0.1--hed695b0_0' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://depot.galaxyproject.org/singularity/subread:2.1.1--h577a1d6_0' + : 'biocontainers/subread:2.1.1--h577a1d6_0'}" input: tuple val(meta), path(bams), path(annotation) output: - tuple val(meta), path("*featureCounts.txt") , emit: counts - tuple val(meta), path("*featureCounts.txt.summary"), emit: summary - path "versions.yml" , emit: versions + tuple val(meta), path("*featureCounts.tsv"), emit: counts + tuple val(meta), path("*featureCounts.tsv.summary"), emit: summary + tuple val("${task.process}"), val('subread'), eval("featureCounts -v 2>&1 | sed 's/featureCounts v//'"), emit: versions_subread, topic: versions when: task.ext.when == null || task.ext.when @@ -26,34 +26,25 @@ process SUBREAD_FEATURECOUNTS { def strandedness = 0 if (meta.strandedness == 'forward') { strandedness = 1 - } else if (meta.strandedness == 'reverse') { + } + else if (meta.strandedness == 'reverse') { strandedness = 2 } """ featureCounts \\ - $args \\ - $paired_end \\ - -T $task.cpus \\ - -a $annotation \\ - -s $strandedness \\ - -o ${prefix}.featureCounts.txt \\ + ${args} \\ + ${paired_end} \\ + -T ${task.cpus} \\ + -a ${annotation} \\ + -s ${strandedness} \\ + -o ${prefix}.featureCounts.tsv \\ ${bams.join(' ')} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - subread: \$( echo \$(featureCounts -v 2>&1) | sed -e "s/featureCounts v//g") - END_VERSIONS """ stub: def prefix = task.ext.prefix ?: "${meta.id}" """ - touch ${prefix}.featureCounts.txt - touch ${prefix}.featureCounts.txt.summary - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - subread: \$( echo \$(featureCounts -v 2>&1) | sed -e "s/featureCounts v//g") - END_VERSIONS + touch ${prefix}.featureCounts.tsv + touch ${prefix}.featureCounts.tsv.summary """ } diff --git a/modules/nf-core/subread/featurecounts/meta.yml b/modules/nf-core/subread/featurecounts/meta.yml index 38a379456..eafcd1f8f 100644 --- a/modules/nf-core/subread/featurecounts/meta.yml +++ b/modules/nf-core/subread/featurecounts/meta.yml @@ -7,43 +7,78 @@ keywords: - reference tools: - featurecounts: - description: featureCounts is a highly efficient general-purpose read summarization program that counts mapped reads for genomic features such as genes, exons, promoter, gene bodies, genomic bins and chromosomal locations. It can be used to count both RNA-seq and genomic DNA-seq reads. + description: featureCounts is a highly efficient general-purpose read summarization + program that counts mapped reads for genomic features such as genes, exons, + promoter, gene bodies, genomic bins and chromosomal locations. It can be used + to count both RNA-seq and genomic DNA-seq reads. homepage: http://bioinf.wehi.edu.au/featureCounts/ documentation: http://bioinf.wehi.edu.au/subread-package/SubreadUsersGuide.pdf doi: "10.1093/bioinformatics/btt656" licence: ["GPL v3"] + identifier: biotools:subread input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - bam: - type: file - description: BAM/SAM file containing read alignments - pattern: "*.{bam}" - - annotation: - type: file - description: Genomic features annotation in GTF or SAF - pattern: "*.{gtf,saf}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bams: + type: file + description: BAM files containing mapped reads + pattern: "*.bam" + ontologies: [] + - annotation: + type: file + description: Genomic features annotation in GTF or SAF + pattern: "*.{gtf,saf}" + ontologies: [] output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - counts: - type: file - description: Counts of reads mapping to features - pattern: "*featureCounts.txt" - - summary: - type: file - description: Summary log file - pattern: "*.featureCounts.txt.summary" - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + counts: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*featureCounts.tsv": + type: file + description: Counts of reads mapping to features + pattern: "*featureCounts.tsv" + ontologies: + - edam: http://edamontology.org/format_3475 # TSV + summary: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*featureCounts.tsv.summary": + type: file + description: Summary log file + pattern: "*.featureCounts.tsv.summary" + ontologies: [] + versions_subread: + - - ${task.process}: + type: string + description: The name of the process + - subread: + type: string + description: The name of the tool + - "featureCounts -v 2>&1 | sed 's/featureCounts v//'": + type: eval + description: The expression to obtain the version of the tool + +topics: + versions: + - - ${task.process}: + type: string + description: The name of the process + - subread: + type: string + description: The name of the tool + - "featureCounts -v 2>&1 | sed 's/featureCounts v//'": + type: eval + description: The expression to obtain the version of the tool + authors: - "@ntoda03" maintainers: diff --git a/modules/nf-core/subread/featurecounts/tests/main.nf.test b/modules/nf-core/subread/featurecounts/tests/main.nf.test index 3b95da33f..8ce452665 100644 --- a/modules/nf-core/subread/featurecounts/tests/main.nf.test +++ b/modules/nf-core/subread/featurecounts/tests/main.nf.test @@ -26,9 +26,11 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out.counts).match("forward_counts") }, - { assert snapshot(process.out.summary).match("forward_summary") }, - { assert snapshot(process.out.versions).match("forward_versions") } + { assert snapshot( + process.out.counts, + process.out.summary, + process.out.findAll { key, val -> key.startsWith('versions') } + ).match() } ) } } @@ -74,9 +76,11 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out.counts).match("reverse_counts") }, - { assert snapshot(process.out.summary).match("reverse_summary") }, - { assert snapshot(process.out.versions).match("reverse_versions") } + { assert snapshot( + process.out.counts, + process.out.summary, + process.out.findAll { key, val -> key.startsWith('versions') } + ).match() } ) } } @@ -122,9 +126,11 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out.counts).match("unstranded_counts") }, - { assert snapshot(process.out.summary).match("unstranded_summary") }, - { assert snapshot(process.out.versions).match("unstranded_versions") } + { assert snapshot( + process.out.counts, + process.out.summary, + process.out.findAll { key, val -> key.startsWith('versions') } + ).match() } ) } } diff --git a/modules/nf-core/subread/featurecounts/tests/main.nf.test.snap b/modules/nf-core/subread/featurecounts/tests/main.nf.test.snap index 72e8dcddf..fb98cfee9 100644 --- a/modules/nf-core/subread/featurecounts/tests/main.nf.test.snap +++ b/modules/nf-core/subread/featurecounts/tests/main.nf.test.snap @@ -1,5 +1,5 @@ { - "forward_counts": { + "sarscov2 [bam] - forward": { "content": [ [ [ @@ -8,53 +8,34 @@ "single_end": true, "strandedness": "forward" }, - "test.featureCounts.txt:md5,0012df4c0a0e47eec1440017ab34f75f" + "test.featureCounts.tsv:md5,af5abde30c52606302d64a3f960a262a" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2023-11-23T15:50:10.685863663" - }, - "unstranded_counts": { - "content": [ + ], [ [ { "id": "test", "single_end": true, - "strandedness": "unstranded" + "strandedness": "forward" }, - "test.featureCounts.txt:md5,3307d31b44a5d6bb3389786bb8f4e91f" + "test.featureCounts.tsv.summary:md5,8f602ff9a8ef467af43294e80b367cdf" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2023-11-23T15:50:38.67903701" - }, - "reverse_summary": { - "content": [ - [ - [ - { - "id": "test", - "single_end": true, - "strandedness": "reverse" - }, - "test.featureCounts.txt.summary:md5,7cfa30ad678b9bc1bc63afbb0281547b" + ], + { + "versions_subread": [ + [ + "SUBREAD_FEATURECOUNTS", + "subread", + "2.1.1" + ] ] - ] + } ], + "timestamp": "2026-02-26T03:28:13.8156532", "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2023-11-23T15:50:25.168206514" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } }, "sarscov2 [bam] - forward - stub": { "content": [ @@ -66,7 +47,7 @@ "single_end": true, "strandedness": "forward" }, - "test.featureCounts.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.featureCounts.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "1": [ @@ -76,11 +57,15 @@ "single_end": true, "strandedness": "forward" }, - "test.featureCounts.txt.summary:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.featureCounts.tsv.summary:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "2": [ - "versions.yml:md5,c2c0903b93c93d9afd2667052b9ee726" + [ + "SUBREAD_FEATURECOUNTS", + "subread", + "2.1.1" + ] ], "counts": [ [ @@ -89,7 +74,7 @@ "single_end": true, "strandedness": "forward" }, - "test.featureCounts.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.featureCounts.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "summary": [ @@ -99,19 +84,61 @@ "single_end": true, "strandedness": "forward" }, - "test.featureCounts.txt.summary:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.featureCounts.tsv.summary:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,c2c0903b93c93d9afd2667052b9ee726" + "versions_subread": [ + [ + "SUBREAD_FEATURECOUNTS", + "subread", + "2.1.1" + ] ] } ], + "timestamp": "2026-02-26T03:28:21.127211404", "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-06-21T10:04:22.628032" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } + }, + "sarscov2 [bam] - unstranded": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "unstranded" + }, + "test.featureCounts.tsv:md5,355c22823290c40ccadeee94a21eca8b" + ] + ], + [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "unstranded" + }, + "test.featureCounts.tsv.summary:md5,23164b79f9f23f11c82820db61a35560" + ] + ], + { + "versions_subread": [ + [ + "SUBREAD_FEATURECOUNTS", + "subread", + "2.1.1" + ] + ] + } + ], + "timestamp": "2026-02-26T03:28:43.068113331", + "meta": { + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } }, "sarscov2 [bam] - reverse - stub": { "content": [ @@ -123,7 +150,7 @@ "single_end": true, "strandedness": "reverse" }, - "test.featureCounts.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.featureCounts.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "1": [ @@ -133,11 +160,15 @@ "single_end": true, "strandedness": "reverse" }, - "test.featureCounts.txt.summary:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.featureCounts.tsv.summary:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "2": [ - "versions.yml:md5,c2c0903b93c93d9afd2667052b9ee726" + [ + "SUBREAD_FEATURECOUNTS", + "subread", + "2.1.1" + ] ], "counts": [ [ @@ -146,7 +177,7 @@ "single_end": true, "strandedness": "reverse" }, - "test.featureCounts.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.featureCounts.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "summary": [ @@ -156,21 +187,25 @@ "single_end": true, "strandedness": "reverse" }, - "test.featureCounts.txt.summary:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.featureCounts.tsv.summary:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,c2c0903b93c93d9afd2667052b9ee726" + "versions_subread": [ + [ + "SUBREAD_FEATURECOUNTS", + "subread", + "2.1.1" + ] ] } ], + "timestamp": "2026-02-26T03:28:35.854492757", "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-06-21T10:04:52.371212" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } }, - "reverse_counts": { + "sarscov2 [bam] - reverse": { "content": [ [ [ @@ -179,15 +214,34 @@ "single_end": true, "strandedness": "reverse" }, - "test.featureCounts.txt:md5,8175816b8260ed444d59232bd7e7120b" + "test.featureCounts.tsv:md5,e79027ec5752cfdd6e8d85bb6932294c" + ] + ], + [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "reverse" + }, + "test.featureCounts.tsv.summary:md5,7cfa30ad678b9bc1bc63afbb0281547b" ] - ] + ], + { + "versions_subread": [ + [ + "SUBREAD_FEATURECOUNTS", + "subread", + "2.1.1" + ] + ] + } ], + "timestamp": "2026-02-26T03:28:28.511647205", "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2023-11-23T15:50:25.160010804" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } }, "sarscov2 [bam] - unstranded - stub": { "content": [ @@ -199,7 +253,7 @@ "single_end": true, "strandedness": "unstranded" }, - "test.featureCounts.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.featureCounts.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "1": [ @@ -209,11 +263,15 @@ "single_end": true, "strandedness": "unstranded" }, - "test.featureCounts.txt.summary:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.featureCounts.tsv.summary:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "2": [ - "versions.yml:md5,c2c0903b93c93d9afd2667052b9ee726" + [ + "SUBREAD_FEATURECOUNTS", + "subread", + "2.1.1" + ] ], "counts": [ [ @@ -222,7 +280,7 @@ "single_end": true, "strandedness": "unstranded" }, - "test.featureCounts.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.featureCounts.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "summary": [ @@ -232,92 +290,22 @@ "single_end": true, "strandedness": "unstranded" }, - "test.featureCounts.txt.summary:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.featureCounts.tsv.summary:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,c2c0903b93c93d9afd2667052b9ee726" + "versions_subread": [ + [ + "SUBREAD_FEATURECOUNTS", + "subread", + "2.1.1" + ] ] } ], + "timestamp": "2026-02-26T03:28:50.377997465", "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-06-21T10:05:25.058902" - }, - "forward_summary": { - "content": [ - [ - [ - { - "id": "test", - "single_end": true, - "strandedness": "forward" - }, - "test.featureCounts.txt.summary:md5,8f602ff9a8ef467af43294e80b367cdf" - ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2023-11-23T15:50:10.699024934" - }, - "forward_versions": { - "content": [ - [ - "versions.yml:md5,c2c0903b93c93d9afd2667052b9ee726" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2023-11-23T15:50:10.704797013" - }, - "unstranded_summary": { - "content": [ - [ - [ - { - "id": "test", - "single_end": true, - "strandedness": "unstranded" - }, - "test.featureCounts.txt.summary:md5,23164b79f9f23f11c82820db61a35560" - ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2023-11-23T15:50:38.68776235" - }, - "reverse_versions": { - "content": [ - [ - "versions.yml:md5,c2c0903b93c93d9afd2667052b9ee726" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2023-11-23T15:50:25.175265594" - }, - "unstranded_versions": { - "content": [ - [ - "versions.yml:md5,c2c0903b93c93d9afd2667052b9ee726" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2023-11-23T15:50:38.69390501" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } } } \ No newline at end of file diff --git a/modules/nf-core/subread/featurecounts/tests/tags.yml b/modules/nf-core/subread/featurecounts/tests/tags.yml deleted file mode 100644 index 6d2534bf4..000000000 --- a/modules/nf-core/subread/featurecounts/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -subread/featurecounts: - - modules/nf-core/subread/featurecounts/** diff --git a/modules/nf-core/trimgalore/environment.yml b/modules/nf-core/trimgalore/environment.yml index 0981320c1..60b33ef21 100644 --- a/modules/nf-core/trimgalore/environment.yml +++ b/modules/nf-core/trimgalore/environment.yml @@ -1,10 +1,7 @@ -name: trimgalore - +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda - - defaults - dependencies: - - bioconda::cutadapt=3.4 - - bioconda::trim-galore=0.6.7 + - bioconda::trim-galore=0.6.10 diff --git a/modules/nf-core/trimgalore/main.nf b/modules/nf-core/trimgalore/main.nf index 0e2f32902..5790b5207 100644 --- a/modules/nf-core/trimgalore/main.nf +++ b/modules/nf-core/trimgalore/main.nf @@ -1,22 +1,22 @@ process TRIMGALORE { - tag "$meta.id" + tag "${meta.id}" label 'process_high' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/trim-galore:0.6.7--hdfd78af_0' : - 'biocontainers/trim-galore:0.6.7--hdfd78af_0' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/trim-galore:0.6.10--hdfd78af_2' : + 'biocontainers/trim-galore:0.6.10--hdfd78af_2'}" input: tuple val(meta), path(reads) output: - tuple val(meta), path("*{3prime,5prime,trimmed,val}*.fq.gz"), emit: reads - tuple val(meta), path("*report.txt") , emit: log , optional: true - tuple val(meta), path("*unpaired*.fq.gz") , emit: unpaired, optional: true - tuple val(meta), path("*.html") , emit: html , optional: true - tuple val(meta), path("*.zip") , emit: zip , optional: true - path "versions.yml" , emit: versions + tuple val(meta), path("*{3prime,5prime,trimmed,val}{,_1,_2}.fq.gz"), emit: reads + tuple val(meta), path("*report.txt") , emit: log , optional: true + tuple val(meta), path("*unpaired{,_1,_2}.fq.gz") , emit: unpaired, optional: true + tuple val(meta), path("*.html") , emit: html , optional: true + tuple val(meta), path("*.zip") , emit: zip , optional: true + tuple val("${task.process}"), val("trimgalore"), eval('trim_galore --version | grep -Eo "[0-9]+(\\.[0-9]+)+"'), topic: versions, emit: versions_trimgalore when: task.ext.when == null || task.ext.when @@ -24,52 +24,47 @@ process TRIMGALORE { script: def args = task.ext.args ?: '' // Calculate number of --cores for TrimGalore based on value of task.cpus - // See: https://github.com/FelixKrueger/TrimGalore/blob/master/Changelog.md#version-060-release-on-1-mar-2019 + // See: https://github.com/FelixKrueger/TrimGalore/blob/master/CHANGELOG.md#version-060-release-on-1-mar-2019 // See: https://github.com/nf-core/atacseq/pull/65 def cores = 1 if (task.cpus) { cores = (task.cpus as int) - 4 - if (meta.single_end) cores = (task.cpus as int) - 3 - if (cores < 1) cores = 1 - if (cores > 8) cores = 8 + if (meta.single_end) { + cores = (task.cpus as int) - 3 + } + if (cores < 1) { + cores = 1 + } + if (cores > 8) { + cores = 8 + } } // Added soft-links to original fastqs for consistent naming in MultiQC def prefix = task.ext.prefix ?: "${meta.id}" if (meta.single_end) { def args_list = args.split("\\s(?=--)").toList() - args_list.removeAll { it.toLowerCase().contains('_r2 ') } + args_list.removeAll { arg -> arg.toLowerCase().contains('_r2 ') } """ - [ ! -f ${prefix}.fastq.gz ] && ln -s $reads ${prefix}.fastq.gz + [ ! -f ${prefix}.fastq.gz ] && ln -s ${reads} ${prefix}.fastq.gz trim_galore \\ ${args_list.join(' ')} \\ - --cores $cores \\ + --cores ${cores} \\ --gzip \\ ${prefix}.fastq.gz - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - trimgalore: \$(echo \$(trim_galore --version 2>&1) | sed 's/^.*version //; s/Last.*\$//') - cutadapt: \$(cutadapt --version) - END_VERSIONS """ - } else { + } + else { """ [ ! -f ${prefix}_1.fastq.gz ] && ln -s ${reads[0]} ${prefix}_1.fastq.gz [ ! -f ${prefix}_2.fastq.gz ] && ln -s ${reads[1]} ${prefix}_2.fastq.gz trim_galore \\ - $args \\ - --cores $cores \\ + ${args} \\ + --cores ${cores} \\ --paired \\ --gzip \\ ${prefix}_1.fastq.gz \\ ${prefix}_2.fastq.gz - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - trimgalore: \$(echo \$(trim_galore --version 2>&1) | sed 's/^.*version //; s/Last.*\$//') - cutadapt: \$(cutadapt --version) - END_VERSIONS """ } @@ -78,7 +73,8 @@ process TRIMGALORE { if (meta.single_end) { output_command = "echo '' | gzip > ${prefix}_trimmed.fq.gz ;" output_command += "touch ${prefix}.fastq.gz_trimming_report.txt" - } else { + } + else { output_command = "echo '' | gzip > ${prefix}_1_trimmed.fq.gz ;" output_command += "touch ${prefix}_1.fastq.gz_trimming_report.txt ;" output_command += "echo '' | gzip > ${prefix}_2_trimmed.fq.gz ;" @@ -86,11 +82,5 @@ process TRIMGALORE { } """ ${output_command} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - trimgalore: \$(echo \$(trim_galore --version 2>&1) | sed 's/^.*version //; s/Last.*\$//') - cutadapt: \$(cutadapt --version) - END_VERSIONS """ } diff --git a/modules/nf-core/trimgalore/meta.yml b/modules/nf-core/trimgalore/meta.yml index e649088ce..dcd9b1703 100644 --- a/modules/nf-core/trimgalore/meta.yml +++ b/modules/nf-core/trimgalore/meta.yml @@ -1,9 +1,11 @@ name: trimgalore -description: Trim FastQ files using Trim Galore! +description: | + A wrapper around Cutadapt and FastQC to consistently apply adapter and quality trimming to FastQ files, + with extra functionality for RRBS data keywords: - trimming - adapters - - sequencing adapters + - sequencing - fastq tools: - trimgalore: @@ -14,50 +16,108 @@ tools: homepage: https://www.bioinformatics.babraham.ac.uk/projects/trim_galore/ documentation: https://github.com/FelixKrueger/TrimGalore/blob/master/Docs/Trim_Galore_User_Guide.md licence: ["GPL-3.0-or-later"] + identifier: biotools:trim_galore + input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - reads: - type: file - description: | - List of input FastQ files of size 1 and 2 for single-end and paired-end data, - respectively. + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - reads: + type: file + description: | + List of input FastQ files of size 1 and 2 for single-end and paired-end data, + respectively. + ontologies: + - edam: "http://edamontology.org/format_1930" # FASTQ output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - reads: - type: file - description: | - List of input adapter trimmed FastQ files of size 1 and 2 for - single-end and paired-end data, respectively. - pattern: "*{3prime,5prime,trimmed,val}*.fq.gz" - - unpaired: - type: file - description: | - FastQ files containing unpaired reads from read 1 or read 2 - pattern: "*unpaired*.fq.gz" - - html: - type: file - description: FastQC report (optional) - pattern: "*_{fastqc.html}" - - zip: - type: file - description: FastQC report archive (optional) - pattern: "*_{fastqc.zip}" - - log: - type: file - description: Trim Galore! trimming report - pattern: "*_{report.txt}" - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + reads: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*{3prime,5prime,trimmed,val}{,_1,_2}.fq.gz": + type: file + description: The trimmed/modified fastq reads + pattern: "*{3prime,5prime,trimmed,val}{,_1,_2}.fq.gz" + ontologies: + - edam: "http://edamontology.org/format_1930" # FASTQ + - edam: http://edamontology.org/format_3989 # GZIP format + log: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*report.txt": + type: file + description: trimgalore log file + pattern: "*report.txt" + ontologies: + - edam: "http://edamontology.org/format_2330" # Textual format + unpaired: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*unpaired{,_1,_2}.fq.gz": + type: file + description: unpaired reads when --retain_unpaired flag is used + pattern: "*unpaired*.fq.gz" + ontologies: + - edam: "http://edamontology.org/format_1930" # FASTQ + - edam: http://edamontology.org/format_3989 # GZIP format + html: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.html": + type: file + description: FastQC HTML report after trimming when the --fastqc flag is used + pattern: "*_fastqc.html" + ontologies: + - edam: "http://edamontology.org/format_2331" # HTML + zip: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.zip": + type: file + description: FastQC report output zip after trimming when the --fastqc flag + is used + pattern: "*_fastqc.zip" + ontologies: + - edam: http://edamontology.org/format_3987 # ZIP format + versions_trimgalore: + - - ${task.process}: + type: string + description: The name of the process + - trimgalore: + type: string + description: The name of the tool + - trim_galore --version | grep -Eo "[0-9]+(\.[0-9]+)+": + type: eval + description: The expression to obtain the version of the tool + +topics: + versions: + - - ${task.process}: + type: string + description: The name of the process + - trimgalore: + type: string + description: The name of the tool + - trim_galore --version | grep -Eo "[0-9]+(\.[0-9]+)+": + type: eval + description: The expression to obtain the version of the tool + authors: - "@drpatelh" - "@ewels" @@ -66,3 +126,4 @@ maintainers: - "@drpatelh" - "@ewels" - "@FelixKrueger" + - "@vagkaratzas" diff --git a/modules/nf-core/trimgalore/tests/main.nf.test b/modules/nf-core/trimgalore/tests/main.nf.test index 2a3dbbb03..ac97b0871 100644 --- a/modules/nf-core/trimgalore/tests/main.nf.test +++ b/modules/nf-core/trimgalore/tests/main.nf.test @@ -3,78 +3,83 @@ nextflow_process { name "Test Process TRIMGALORE" script "../main.nf" process "TRIMGALORE" + tag "modules" tag "modules_nfcore" tag "trimgalore" - test("test_trimgalore_single_end") { + test("sarscov2 - fastq - single-end") { when { process { """ - input[0] = [ [ id:'test', single_end:true ], // meta map - [ file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/fastq/test_1.fastq.gz", checkIfExists: true) ] + input[0] = [ + [ id:'test', single_end:true ], + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] ] """ } } then { - def read_lines = ["@ERR5069949.2151832 NS500628:121:HK3MMAFX2:2:21208:10793:15304/1", - "TCATAAACCAAAGCACTCACAGTGTCAACAATTTCAGCAGGACAACGCCGACAAGTTCCGAGGAACATGTCTGGACCTATAGTTTTCATAAGTCTACACACTGAATTGAAATATTCTGGTTCTAGTGTGCCCTTAGTTAGCAATGTGCGT", - "AAAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEE - { assert path(process.out.reads.get(0).get(1)).linesGzip.contains(read_line) } - } - }, - { report1_lines.each { report1_line -> - { assert path(process.out.log.get(0).get(1)).getText().contains(report1_line) } - } - }, - { assert snapshot(process.out.versions).match() } + { assert snapshot( + process.out.reads, + file(process.out.log[0][1]).readLines()[0..9], // line 11 changes + file(process.out.log[0][1]).readLines()[11..59], + process.out.findAll { key, val -> key.startsWith("versions")} + ).match() } ) } } - test("test_trimgalore_single_end - stub") { - - options "-stub" + test("sarscov2 - fastq - paired-end") { when { process { """ - input[0] = [ [ id:'test', single_end:true ], // meta map - [ file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/fastq/test_1.fastq.gz", checkIfExists: true) ] + input[0] = [ [ id:'test', single_end:false ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) + ] ] """ } } then { - assertAll( + assertAll ( { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot( + process.out.reads[0][1][0], + process.out.reads[0][1][1], + file(process.out.log[0][1][0]).readLines()[0..9], // line 11 changes + file(process.out.log[0][1][0]).readLines()[11..58], + file(process.out.log[0][1][1]).readLines()[0..9], // line 11 changes + file(process.out.log[0][1][1]).readLines()[11..60], + process.out.findAll { key, val -> key.startsWith("versions")} + ).match() } ) } } - test("test_trimgalore_paired_end") { + test("sarscov2 - fastq - paired-end - keep-unpaired") { + + config "./nextflow.config" when { + params { + module_args = '--retain_unpaired --length 150' + } + process { """ - input[0] = [ [ id:'test', single_end:false ], // meta map + input[0] = [ [ id:'test', single_end:false ], [ - file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/fastq/test_1.fastq.gz", checkIfExists: true), - file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/fastq/test_2.fastq.gz", checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ] """ @@ -82,58 +87,61 @@ nextflow_process { } then { - def read1_lines = ["@ERR5069949.2151832 NS500628:121:HK3MMAFX2:2:21208:10793:15304/1", - "TCATAAACCAAAGCACTCACAGTGTCAACAATTTCAGCAGGACAACGCCGACAAGTTCCGAGGAACATGTCTGGACCTATAGTTTTCATAAGTCTACACACTGAATTGAAATATTCTGGTTCTAGTGTGCCCTTAGTTAGCAATGTGCGT", - "AAAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEE key.startsWith("versions")} + ).match() } + ) + } + } + + test("sarscov2 - fastq - single-end - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:true ], + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] + ] + """ + } + } + + then { + assertAll ( { assert process.success }, - { read1_lines.each { read1_line -> - { assert path(process.out.reads.get(0).get(1).get(0)).linesGzip.contains(read1_line) } - } - }, - { read2_lines.each { read2_line -> - { assert path(process.out.reads.get(0).get(1).get(1)).linesGzip.contains(read2_line) } - } - }, - { report1_lines.each { report1_line -> - { assert path(process.out.log.get(0).get(1).get(0)).getText().contains(report1_line) } - } - }, - { report2_lines.each { report2_line -> - { assert path(process.out.log.get(0).get(1).get(1)).getText().contains(report2_line) } - } - }, - { assert snapshot(process.out.versions).match() } + { assert snapshot( + process.out.reads, + process.out.log, + process.out.findAll { key, val -> key.startsWith("versions")} + ).match() } ) } } - test("test_trimgalore_paired_end - stub") { + test("sarscov2 - fastq - paired-end - stub") { options "-stub" when { process { """ - input[0] = [ [ id:'test', single_end:false ], // meta map + input[0] = [ [ id:'test', single_end:false ], [ - file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/fastq/test_1.fastq.gz", checkIfExists: true), - file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/fastq/test_2.fastq.gz", checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ] """ @@ -141,9 +149,13 @@ nextflow_process { } then { - assertAll( + assertAll ( { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot( + process.out.reads, + process.out.log, + process.out.findAll { key, val -> key.startsWith("versions")} + ).match() } ) } } diff --git a/modules/nf-core/trimgalore/tests/main.nf.test.snap b/modules/nf-core/trimgalore/tests/main.nf.test.snap index 6cb31c9f9..2fb55f2d3 100644 --- a/modules/nf-core/trimgalore/tests/main.nf.test.snap +++ b/modules/nf-core/trimgalore/tests/main.nf.test.snap @@ -1,180 +1,468 @@ { - "test_trimgalore_single_end": { + "sarscov2 - fastq - paired-end - stub": { "content": [ [ - "versions.yml:md5,47d966cbb31c80eb8f7fe860d55659b7" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-02-29T16:33:20.401347" - }, - "test_trimgalore_single_end - stub": { - "content": [ - { - "0": [ + [ + { + "id": "test", + "single_end": false + }, [ - { - "id": "test", - "single_end": true - }, - "test_trimmed.fq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "test_1_trimmed.fq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2_trimmed.fq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] - ], - "1": [ - [ - { - "id": "test", - "single_end": true - }, - "test.fastq.gz_trimming_report.txt:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "2": [ - - ], - "3": [ - - ], - "4": [ - - ], - "5": [ - "versions.yml:md5,47d966cbb31c80eb8f7fe860d55659b7" - ], - "html": [ - - ], - "log": [ + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, [ - { - "id": "test", - "single_end": true - }, - "test.fastq.gz_trimming_report.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_1.fastq.gz_trimming_report.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_2.fastq.gz_trimming_report.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] - ], - "reads": [ + ] + ], + { + "versions_trimgalore": [ [ - { - "id": "test", - "single_end": true - }, - "test_trimmed.fq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "TRIMGALORE", + "trimgalore", + "0.6.10" ] - ], - "unpaired": [ - - ], - "versions": [ - "versions.yml:md5,47d966cbb31c80eb8f7fe860d55659b7" - ], - "zip": [ - ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-06-21T10:27:44.964166" + "timestamp": "2025-12-15T14:40:14.896140126" }, - "test_trimgalore_paired_end - stub": { + "sarscov2 - fastq - paired-end - keep-unpaired": { "content": [ + "test_1_val_1.fq.gz:md5,75413e85910bbc2e1556e12f6479f935", + "test_2_val_2.fq.gz:md5,d3c588c12646ebd36a0812fe02d0bda6", + "test_1_unpaired_1.fq.gz:md5,17e0e878f6d0e93b9008a05f128660b6", + "test_2_unpaired_2.fq.gz:md5,b09a064368a867e099e66df5ef69b044", + [ + "", + "SUMMARISING RUN PARAMETERS", + "==========================", + "Input filename: test_1.fastq.gz", + "Trimming mode: paired-end", + "Trim Galore version: 0.6.10", + "Cutadapt version: 5.2", + "Number of cores used for trimming: 1", + "Quality Phred score cutoff: 20", + "Quality encoding type selected: ASCII+33" + ], + [ + "Defaulting to Illumina universal adapter ( AGATCGGAAGAGC ). Specify -a SEQUENCE to avoid this behavior).", + "Adapter sequence: 'AGATCGGAAGAGC' (Illumina TruSeq, Sanger iPCR; default (inconclusive auto-detection))", + "Maximum trimming error rate: 0.1 (default)", + "Minimum required adapter overlap (stringency): 1 bp", + "Minimum required sequence length for both reads before a sequence pair gets removed: 150 bp", + "Length cut-off for read 1: 35 bp (default)", + "Length cut-off for read 2: 35 bp (default)", + "Output file will be GZIP compressed", + "", + "", + "This is cutadapt 5.2 with Python 3.12.12", + "Command line parameters: -j 1 -e 0.1 -q 20 -O 1 -a AGATCGGAAGAGC test_1.fastq.gz", + "Processing single-end reads on 1 core ...", + "", + "=== Summary ===", + "", + "Total reads processed: 100", + "Reads with adapters: 31 (31.0%)", + "Reads written (passing filters): 100 (100.0%)", + "", + "Total basepairs processed: 13,897 bp", + "Quality-trimmed: 0 bp (0.0%)", + "Total written (filtered): 13,851 bp (99.7%)", + "", + "=== Adapter 1 ===", + "", + "Sequence: AGATCGGAAGAGC; Type: regular 3'; Length: 13; Trimmed: 31 times", + "", + "Minimum overlap: 1", + "No. of allowed errors:", + "1-9 bp: 0; 10-13 bp: 1", + "", + "Bases preceding removed adapters:", + " A: 35.5%", + " C: 25.8%", + " G: 9.7%", + " T: 29.0%", + " none/other: 0.0%", + "", + "Overview of removed sequences", + "length\tcount\texpect\tmax.err\terror counts", + "1\t19\t25.0\t0\t19", + "2\t10\t6.2\t0\t10", + "3\t1\t1.6\t0\t1", + "4\t1\t0.4\t0\t1", + "", + "RUN STATISTICS FOR INPUT FILE: test_1.fastq.gz", + "=============================================", + "100 sequences processed in total" + ], + [ + "", + "SUMMARISING RUN PARAMETERS", + "==========================", + "Input filename: test_2.fastq.gz", + "Trimming mode: paired-end", + "Trim Galore version: 0.6.10", + "Cutadapt version: 5.2", + "Number of cores used for trimming: 1", + "Quality Phred score cutoff: 20", + "Quality encoding type selected: ASCII+33" + ], + [ + "Defaulting to Illumina universal adapter ( AGATCGGAAGAGC ). Specify -a SEQUENCE to avoid this behavior).", + "Adapter sequence: 'AGATCGGAAGAGC' (Illumina TruSeq, Sanger iPCR; default (inconclusive auto-detection))", + "Maximum trimming error rate: 0.1 (default)", + "Minimum required adapter overlap (stringency): 1 bp", + "Minimum required sequence length for both reads before a sequence pair gets removed: 150 bp", + "Length cut-off for read 1: 35 bp (default)", + "Length cut-off for read 2: 35 bp (default)", + "Output file will be GZIP compressed", + "", + "", + "This is cutadapt 5.2 with Python 3.12.12", + "Command line parameters: -j 1 -e 0.1 -q 20 -O 1 -a AGATCGGAAGAGC test_2.fastq.gz", + "Processing single-end reads on 1 core ...", + "", + "=== Summary ===", + "", + "Total reads processed: 100", + "Reads with adapters: 40 (40.0%)", + "Reads written (passing filters): 100 (100.0%)", + "", + "Total basepairs processed: 13,748 bp", + "Quality-trimmed: 0 bp (0.0%)", + "Total written (filtered): 13,693 bp (99.6%)", + "", + "=== Adapter 1 ===", + "", + "Sequence: AGATCGGAAGAGC; Type: regular 3'; Length: 13; Trimmed: 40 times", + "", + "Minimum overlap: 1", + "No. of allowed errors:", + "1-9 bp: 0; 10-13 bp: 1", + "", + "Bases preceding removed adapters:", + " A: 35.0%", + " C: 25.0%", + " G: 5.0%", + " T: 35.0%", + " none/other: 0.0%", + "", + "Overview of removed sequences", + "length\tcount\texpect\tmax.err\terror counts", + "1\t28\t25.0\t0\t28", + "2\t10\t6.2\t0\t10", + "3\t1\t1.6\t0\t1", + "4\t1\t0.4\t0\t1", + "", + "RUN STATISTICS FOR INPUT FILE: test_2.fastq.gz", + "=============================================", + "100 sequences processed in total", + "", + "Total number of sequences analysed for the sequence pair length validation: 100", + "", + "Number of sequence pairs removed because at least one read was shorter than the length cutoff (150 bp): 81 (81.00%)" + ], { - "0": [ + "versions_trimgalore": [ [ - { - "id": "test", - "single_end": false - }, - [ - "test_1_trimmed.fq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", - "test_2_trimmed.fq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] + "TRIMGALORE", + "trimgalore", + "0.6.10" ] - ], - "1": [ - [ - { - "id": "test", - "single_end": false - }, - [ - "test_1.fastq.gz_trimming_report.txt:md5,d41d8cd98f00b204e9800998ecf8427e", - "test_2.fastq.gz_trimming_report.txt:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ] - ], - "2": [ - - ], - "3": [ - - ], - "4": [ - - ], - "5": [ - "versions.yml:md5,47d966cbb31c80eb8f7fe860d55659b7" - ], - "html": [ - - ], - "log": [ + ] + } + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.2" + }, + "timestamp": "2025-12-15T14:39:53.811844594" + }, + "sarscov2 - fastq - single-end - stub": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test_trimmed.fq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastq.gz_trimming_report.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + { + "versions_trimgalore": [ [ - { - "id": "test", - "single_end": false - }, - [ - "test_1.fastq.gz_trimming_report.txt:md5,d41d8cd98f00b204e9800998ecf8427e", - "test_2.fastq.gz_trimming_report.txt:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + "TRIMGALORE", + "trimgalore", + "0.6.10" ] - ], - "reads": [ + ] + } + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.2" + }, + "timestamp": "2025-12-15T14:40:03.991561892" + }, + "sarscov2 - fastq - paired-end": { + "content": [ + "test_1_val_1.fq.gz:md5,566d44cca0d22c522d6cf0e50c7165dc", + "test_2_val_2.fq.gz:md5,3c023e8e890b897821df3dc98f48c2b3", + [ + "", + "SUMMARISING RUN PARAMETERS", + "==========================", + "Input filename: test_1.fastq.gz", + "Trimming mode: paired-end", + "Trim Galore version: 0.6.10", + "Cutadapt version: 5.2", + "Number of cores used for trimming: 1", + "Quality Phred score cutoff: 20", + "Quality encoding type selected: ASCII+33" + ], + [ + "Defaulting to Illumina universal adapter ( AGATCGGAAGAGC ). Specify -a SEQUENCE to avoid this behavior).", + "Adapter sequence: 'AGATCGGAAGAGC' (Illumina TruSeq, Sanger iPCR; default (inconclusive auto-detection))", + "Maximum trimming error rate: 0.1 (default)", + "Minimum required adapter overlap (stringency): 1 bp", + "Minimum required sequence length for both reads before a sequence pair gets removed: 20 bp", + "Output file will be GZIP compressed", + "", + "", + "This is cutadapt 5.2 with Python 3.12.12", + "Command line parameters: -j 1 -e 0.1 -q 20 -O 1 -a AGATCGGAAGAGC test_1.fastq.gz", + "Processing single-end reads on 1 core ...", + "", + "=== Summary ===", + "", + "Total reads processed: 100", + "Reads with adapters: 31 (31.0%)", + "Reads written (passing filters): 100 (100.0%)", + "", + "Total basepairs processed: 13,897 bp", + "Quality-trimmed: 0 bp (0.0%)", + "Total written (filtered): 13,851 bp (99.7%)", + "", + "=== Adapter 1 ===", + "", + "Sequence: AGATCGGAAGAGC; Type: regular 3'; Length: 13; Trimmed: 31 times", + "", + "Minimum overlap: 1", + "No. of allowed errors:", + "1-9 bp: 0; 10-13 bp: 1", + "", + "Bases preceding removed adapters:", + " A: 35.5%", + " C: 25.8%", + " G: 9.7%", + " T: 29.0%", + " none/other: 0.0%", + "", + "Overview of removed sequences", + "length\tcount\texpect\tmax.err\terror counts", + "1\t19\t25.0\t0\t19", + "2\t10\t6.2\t0\t10", + "3\t1\t1.6\t0\t1", + "4\t1\t0.4\t0\t1", + "", + "RUN STATISTICS FOR INPUT FILE: test_1.fastq.gz", + "=============================================", + "100 sequences processed in total", + "" + ], + [ + "", + "SUMMARISING RUN PARAMETERS", + "==========================", + "Input filename: test_2.fastq.gz", + "Trimming mode: paired-end", + "Trim Galore version: 0.6.10", + "Cutadapt version: 5.2", + "Number of cores used for trimming: 1", + "Quality Phred score cutoff: 20", + "Quality encoding type selected: ASCII+33" + ], + [ + "Defaulting to Illumina universal adapter ( AGATCGGAAGAGC ). Specify -a SEQUENCE to avoid this behavior).", + "Adapter sequence: 'AGATCGGAAGAGC' (Illumina TruSeq, Sanger iPCR; default (inconclusive auto-detection))", + "Maximum trimming error rate: 0.1 (default)", + "Minimum required adapter overlap (stringency): 1 bp", + "Minimum required sequence length for both reads before a sequence pair gets removed: 20 bp", + "Output file will be GZIP compressed", + "", + "", + "This is cutadapt 5.2 with Python 3.12.12", + "Command line parameters: -j 1 -e 0.1 -q 20 -O 1 -a AGATCGGAAGAGC test_2.fastq.gz", + "Processing single-end reads on 1 core ...", + "", + "=== Summary ===", + "", + "Total reads processed: 100", + "Reads with adapters: 40 (40.0%)", + "Reads written (passing filters): 100 (100.0%)", + "", + "Total basepairs processed: 13,748 bp", + "Quality-trimmed: 0 bp (0.0%)", + "Total written (filtered): 13,693 bp (99.6%)", + "", + "=== Adapter 1 ===", + "", + "Sequence: AGATCGGAAGAGC; Type: regular 3'; Length: 13; Trimmed: 40 times", + "", + "Minimum overlap: 1", + "No. of allowed errors:", + "1-9 bp: 0; 10-13 bp: 1", + "", + "Bases preceding removed adapters:", + " A: 35.0%", + " C: 25.0%", + " G: 5.0%", + " T: 35.0%", + " none/other: 0.0%", + "", + "Overview of removed sequences", + "length\tcount\texpect\tmax.err\terror counts", + "1\t28\t25.0\t0\t28", + "2\t10\t6.2\t0\t10", + "3\t1\t1.6\t0\t1", + "4\t1\t0.4\t0\t1", + "", + "RUN STATISTICS FOR INPUT FILE: test_2.fastq.gz", + "=============================================", + "100 sequences processed in total", + "", + "Total number of sequences analysed for the sequence pair length validation: 100", + "" + ], + { + "versions_trimgalore": [ [ - { - "id": "test", - "single_end": false - }, - [ - "test_1_trimmed.fq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", - "test_2_trimmed.fq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] + "TRIMGALORE", + "trimgalore", + "0.6.10" ] - ], - "unpaired": [ - - ], - "versions": [ - "versions.yml:md5,47d966cbb31c80eb8f7fe860d55659b7" - ], - "zip": [ - ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-06-21T10:28:07.611496" + "timestamp": "2025-12-15T14:39:43.937555685" }, - "test_trimgalore_paired_end": { + "sarscov2 - fastq - single-end": { "content": [ [ - "versions.yml:md5,47d966cbb31c80eb8f7fe860d55659b7" - ] + [ + { + "id": "test", + "single_end": true + }, + "test_trimmed.fq.gz:md5,566d44cca0d22c522d6cf0e50c7165dc" + ] + ], + [ + "", + "SUMMARISING RUN PARAMETERS", + "==========================", + "Input filename: test.fastq.gz", + "Trimming mode: single-end", + "Trim Galore version: 0.6.10", + "Cutadapt version: 5.2", + "Number of cores used for trimming: 1", + "Quality Phred score cutoff: 20", + "Quality encoding type selected: ASCII+33" + ], + [ + "Defaulting to Illumina universal adapter ( AGATCGGAAGAGC ). Specify -a SEQUENCE to avoid this behavior).", + "Adapter sequence: 'AGATCGGAAGAGC' (Illumina TruSeq, Sanger iPCR; default (inconclusive auto-detection))", + "Maximum trimming error rate: 0.1 (default)", + "Minimum required adapter overlap (stringency): 1 bp", + "Minimum required sequence length before a sequence gets removed: 20 bp", + "Output file will be GZIP compressed", + "", + "", + "This is cutadapt 5.2 with Python 3.12.12", + "Command line parameters: -j 1 -e 0.1 -q 20 -O 1 -a AGATCGGAAGAGC test.fastq.gz", + "Processing single-end reads on 1 core ...", + "", + "=== Summary ===", + "", + "Total reads processed: 100", + "Reads with adapters: 31 (31.0%)", + "Reads written (passing filters): 100 (100.0%)", + "", + "Total basepairs processed: 13,897 bp", + "Quality-trimmed: 0 bp (0.0%)", + "Total written (filtered): 13,851 bp (99.7%)", + "", + "=== Adapter 1 ===", + "", + "Sequence: AGATCGGAAGAGC; Type: regular 3'; Length: 13; Trimmed: 31 times", + "", + "Minimum overlap: 1", + "No. of allowed errors:", + "1-9 bp: 0; 10-13 bp: 1", + "", + "Bases preceding removed adapters:", + " A: 35.5%", + " C: 25.8%", + " G: 9.7%", + " T: 29.0%", + " none/other: 0.0%", + "", + "Overview of removed sequences", + "length\tcount\texpect\tmax.err\terror counts", + "1\t19\t25.0\t0\t19", + "2\t10\t6.2\t0\t10", + "3\t1\t1.6\t0\t1", + "4\t1\t0.4\t0\t1", + "", + "RUN STATISTICS FOR INPUT FILE: test.fastq.gz", + "=============================================", + "100 sequences processed in total", + "Sequences removed because they became shorter than the length cutoff of 20 bp:\t0 (0.0%)", + "" + ], + { + "versions_trimgalore": [ + [ + "TRIMGALORE", + "trimgalore", + "0.6.10" + ] + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-02-29T16:33:28.960497" + "timestamp": "2025-12-15T14:39:33.985021562" } } \ No newline at end of file diff --git a/modules/nf-core/trimgalore/tests/nextflow.config b/modules/nf-core/trimgalore/tests/nextflow.config new file mode 100644 index 000000000..d8e3ac137 --- /dev/null +++ b/modules/nf-core/trimgalore/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: TRIMGALORE { + ext.args = params.module_args + } +} diff --git a/modules/nf-core/trimgalore/tests/tags.yml b/modules/nf-core/trimgalore/tests/tags.yml deleted file mode 100644 index e9937691a..000000000 --- a/modules/nf-core/trimgalore/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -trimgalore: - - modules/nf-core/trimgalore/** diff --git a/modules/nf-core/ucsc/bedgraphtobigwig/environment.yml b/modules/nf-core/ucsc/bedgraphtobigwig/environment.yml index f91e216f5..1211bc406 100644 --- a/modules/nf-core/ucsc/bedgraphtobigwig/environment.yml +++ b/modules/nf-core/ucsc/bedgraphtobigwig/environment.yml @@ -1,7 +1,7 @@ -name: ucsc_bedgraphtobigwig +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::ucsc-bedgraphtobigwig=445 + - bioconda::ucsc-bedgraphtobigwig=482 diff --git a/modules/nf-core/ucsc/bedgraphtobigwig/main.nf b/modules/nf-core/ucsc/bedgraphtobigwig/main.nf index bff0b00a9..eafac8b83 100644 --- a/modules/nf-core/ucsc/bedgraphtobigwig/main.nf +++ b/modules/nf-core/ucsc/bedgraphtobigwig/main.nf @@ -2,11 +2,10 @@ process UCSC_BEDGRAPHTOBIGWIG { tag "$meta.id" label 'process_single' - // WARN: Version information not provided by tool on CLI. Please update version string below when bumping container versions. conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/ucsc-bedgraphtobigwig:445--h954228d_0' : - 'biocontainers/ucsc-bedgraphtobigwig:445--h954228d_0' }" + 'https://depot.galaxyproject.org/singularity/ucsc-bedgraphtobigwig:482--hdc0a859_0' : + 'biocontainers/ucsc-bedgraphtobigwig:482--hdc0a859_0' }" input: tuple val(meta), path(bedgraph) @@ -14,36 +13,25 @@ process UCSC_BEDGRAPHTOBIGWIG { output: tuple val(meta), path("*.bigWig"), emit: bigwig - path "versions.yml" , emit: versions - + tuple val("${task.process}"), val('ucsc'), val('482'), topic: versions, emit: versions_ucsc + // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. when: task.ext.when == null || task.ext.when script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def VERSION = '445' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. """ bedGraphToBigWig \\ + $args \\ $bedgraph \\ $sizes \\ ${prefix}.bigWig - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - ucsc: $VERSION - END_VERSIONS """ stub: def prefix = task.ext.prefix ?: "${meta.id}" - def VERSION = '445' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. """ touch ${prefix}.bigWig - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - ucsc: $VERSION - END_VERSIONS """ } diff --git a/modules/nf-core/ucsc/bedgraphtobigwig/meta.yml b/modules/nf-core/ucsc/bedgraphtobigwig/meta.yml index a60118abe..7d0cf57f0 100755 --- a/modules/nf-core/ucsc/bedgraphtobigwig/meta.yml +++ b/modules/nf-core/ucsc/bedgraphtobigwig/meta.yml @@ -12,34 +12,58 @@ tools: homepage: http://hgdownload.cse.ucsc.edu/admin/exe/ documentation: https://genome.ucsc.edu/goldenPath/help/bigWig.html licence: ["varies; see http://genome.ucsc.edu/license"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - bedgraph: - type: file - description: bedGraph file - pattern: "*.{bedGraph}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bedgraph: + type: file + description: bedGraph file + pattern: "*.{bedGraph}" + ontologies: [] - sizes: type: file description: chromosome sizes file pattern: "*.{sizes}" + ontologies: [] output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - - bigwig: - type: file - description: bigWig file - pattern: "*.{bigWig}" + bigwig: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.bigWig": + type: file + description: bigWig file + pattern: "*.{bigWig}" + ontologies: [] + versions_ucsc: + - - ${task.process}: + type: string + description: The process the versions were collected from + - ucsc: + type: string + description: The tool name + - "482": + type: eval + description: The expression to obtain the version of the tool + +topics: + versions: + - - ${task.process}: + type: string + description: The process the versions were collected from + - ucsc: + type: string + description: The tool name + - "482": + type: eval + description: The expression to obtain the version of the tool + authors: - "@drpatelh" maintainers: diff --git a/modules/nf-core/ucsc/bedgraphtobigwig/tests/main.nf.test.snap b/modules/nf-core/ucsc/bedgraphtobigwig/tests/main.nf.test.snap index 7b0181583..7c51213f6 100644 --- a/modules/nf-core/ucsc/bedgraphtobigwig/tests/main.nf.test.snap +++ b/modules/nf-core/ucsc/bedgraphtobigwig/tests/main.nf.test.snap @@ -11,7 +11,11 @@ ] ], "1": [ - "versions.yml:md5,93b027527145a243903a3c687c3453b8" + [ + "UCSC_BEDGRAPHTOBIGWIG", + "ucsc", + "482" + ] ], "bigwig": [ [ @@ -21,16 +25,20 @@ "test.bigWig:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,93b027527145a243903a3c687c3453b8" + "versions_ucsc": [ + [ + "UCSC_BEDGRAPHTOBIGWIG", + "ucsc", + "482" + ] ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.3", + "nextflow": "25.04.3" }, - "timestamp": "2024-07-22T12:06:05.176746" + "timestamp": "2026-02-25T14:56:47.843203613" }, "Should run without failures": { "content": [ @@ -44,7 +52,11 @@ ] ], "1": [ - "versions.yml:md5,93b027527145a243903a3c687c3453b8" + [ + "UCSC_BEDGRAPHTOBIGWIG", + "ucsc", + "482" + ] ], "bigwig": [ [ @@ -54,15 +66,19 @@ "test.bigWig:md5,910ecc7f57e3bbd5fac5a8edba4f615d" ] ], - "versions": [ - "versions.yml:md5,93b027527145a243903a3c687c3453b8" + "versions_ucsc": [ + [ + "UCSC_BEDGRAPHTOBIGWIG", + "ucsc", + "482" + ] ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.3", + "nextflow": "25.04.3" }, - "timestamp": "2024-07-22T12:05:56.658148" + "timestamp": "2026-02-25T14:56:35.886146907" } } \ No newline at end of file diff --git a/modules/nf-core/ucsc/bedgraphtobigwig/tests/tags.yml b/modules/nf-core/ucsc/bedgraphtobigwig/tests/tags.yml deleted file mode 100644 index 481e8b8bf..000000000 --- a/modules/nf-core/ucsc/bedgraphtobigwig/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -ucsc/bedgraphtobigwig: - - modules/nf-core/ucsc/bedgraphtobigwig/** diff --git a/modules/nf-core/umitools/extract/environment.yml b/modules/nf-core/umitools/extract/environment.yml index aab452d1e..4d05188be 100644 --- a/modules/nf-core/umitools/extract/environment.yml +++ b/modules/nf-core/umitools/extract/environment.yml @@ -1,7 +1,17 @@ -name: umitools_extract +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::umi_tools=1.1.5 + # renovate: datasource=conda depName=bioconda/umi_tools + - bioconda::umi_tools=1.1.6 + - conda-forge::future=0.18.3 + - conda-forge::matplotlib=3.8.2 + - conda-forge::numpy=1.26.4 + - conda-forge::pandas=2.2.0 + - conda-forge::python=3.9.18 + - conda-forge::regex=2023.12.25 + - conda-forge::scipy=1.12.0 + - conda-forge::pybktree=1.1 + - bioconda::pysam=0.22.0 diff --git a/modules/nf-core/umitools/extract/main.nf b/modules/nf-core/umitools/extract/main.nf index b97900e09..82d18cd59 100644 --- a/modules/nf-core/umitools/extract/main.nf +++ b/modules/nf-core/umitools/extract/main.nf @@ -5,8 +5,8 @@ process UMITOOLS_EXTRACT { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/umi_tools:1.1.5--py39hf95cd2a_0' : - 'biocontainers/umi_tools:1.1.5--py39hf95cd2a_0' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/32/32476f0107d72dbd2210a4e56b2873abde07300025cc11052680475509d2db81/data' : + 'community.wave.seqera.io/library/umi_tools_future_matplotlib_numpy_pruned:1ee668bafc8c9f81' }" input: tuple val(meta), path(reads) @@ -14,7 +14,7 @@ process UMITOOLS_EXTRACT { output: tuple val(meta), path("*.fastq.gz"), emit: reads tuple val(meta), path("*.log") , emit: log - path "versions.yml" , emit: versions + tuple val("${task.process}"), val('umitools'), eval("umi_tools --version | sed -n '/version:/s/.*: //p'"), emit: versions_umitools, topic: versions when: task.ext.when == null || task.ext.when @@ -30,11 +30,6 @@ process UMITOOLS_EXTRACT { -S ${prefix}.umi_extract.fastq.gz \\ $args \\ > ${prefix}.umi_extract.log - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - umitools: \$( umi_tools --version | sed '/version:/!d; s/.*: //' ) - END_VERSIONS """ } else { """ @@ -46,11 +41,6 @@ process UMITOOLS_EXTRACT { --read2-out=${prefix}.umi_extract_2.fastq.gz \\ $args \\ > ${prefix}.umi_extract.log - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - umitools: \$( umi_tools --version | sed '/version:/!d; s/.*: //' ) - END_VERSIONS """ } @@ -65,10 +55,5 @@ process UMITOOLS_EXTRACT { """ touch ${prefix}.umi_extract.log ${output_command} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - umitools: \$( umi_tools --version | sed '/version:/!d; s/.*: //' ) - END_VERSIONS """ } diff --git a/modules/nf-core/umitools/extract/meta.yml b/modules/nf-core/umitools/extract/meta.yml index 7695b2717..0bec392a5 100644 --- a/modules/nf-core/umitools/extract/meta.yml +++ b/modules/nf-core/umitools/extract/meta.yml @@ -1,5 +1,6 @@ name: umitools_extract -description: Extracts UMI barcode from a read and add it to the read name, leaving any sample barcode in place +description: Extracts UMI barcode from a read and add it to the read name, leaving + any sample barcode in place keywords: - UMI - barcode @@ -8,38 +9,69 @@ keywords: tools: - umi_tools: description: > - UMI-tools contains tools for dealing with Unique Molecular Identifiers (UMIs)/Random Molecular Tags (RMTs) and single cell RNA-Seq cell barcodes + UMI-tools contains tools for dealing with Unique Molecular Identifiers (UMIs)/Random + Molecular Tags (RMTs) and single cell RNA-Seq cell barcodes documentation: https://umi-tools.readthedocs.io/en/latest/ license: "MIT" + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - reads: - type: list - description: | - List of input FASTQ files whose UMIs will be extracted. + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - reads: + type: list + description: | + List of input FASTQ files whose UMIs will be extracted. output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - reads: - type: file - description: > - Extracted FASTQ files. | For single-end reads, pattern is \${prefix}.umi_extract.fastq.gz. | For paired-end reads, pattern is \${prefix}.umi_extract_{1,2}.fastq.gz. - pattern: "*.{fastq.gz}" - - log: - type: file - description: Logfile for umi_tools - pattern: "*.{log}" - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + reads: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.fastq.gz": + type: file + description: > + Extracted FASTQ files. | For single-end reads, pattern is \${prefix}.umi_extract.fastq.gz. + | For paired-end reads, pattern is \${prefix}.umi_extract_{1,2}.fastq.gz. + pattern: "*.{fastq.gz}" + ontologies: [] + log: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.log": + type: file + description: Logfile for umi_tools + pattern: "*.{log}" + ontologies: [] + versions_umitools: + - - ${task.process}: + type: string + description: The name of the process + - umitools: + type: string + description: The name of the tool + - "umi_tools --version | sed -n '/version:/s/.*: //p'": + type: eval + description: The expression to obtain the version of umitools + +topics: + versions: + - - ${task.process}: + type: string + description: The name of the process + - umitools: + type: string + description: The name of the tool + - "umi_tools --version | sed -n '/version:/s/.*: //p'": + type: eval + description: The expression to obtain the version of umitools + authors: - "@drpatelh" - "@grst" diff --git a/modules/nf-core/umitools/extract/tests/main.nf.test b/modules/nf-core/umitools/extract/tests/main.nf.test index bb8a06582..b6fa0482f 100644 --- a/modules/nf-core/umitools/extract/tests/main.nf.test +++ b/modules/nf-core/umitools/extract/tests/main.nf.test @@ -25,9 +25,9 @@ nextflow_process { assertAll ( { assert process.success }, { assert snapshot( - process.out.reads.collect { it.collect { it instanceof Map ? it : file(it).name }}, - process.out.log.collect { it.collect { it instanceof Map ? it : file(it).name }}, - process.out.versions + process.out.reads.collect { item -> item.collect { element -> element instanceof Map ? element : file(element).name }}, + process.out.log.collect { item -> item.collect { element -> element instanceof Map ? element : file(element).name }}, + process.out.findAll { key, val -> key.startsWith('versions') } ).match() } ) } @@ -74,8 +74,8 @@ nextflow_process { { assert snapshot( file(process.out.reads[0][1][0]).name, file(process.out.reads[0][1][1]).name, - process.out.log.collect { it.collect { it instanceof Map ? it : file(it).name }}, - process.out.versions + process.out.log.collect { item -> item.collect { element -> element instanceof Map ? element : file(element).name }}, + process.out.findAll { key, val -> key.startsWith('versions') } ).match() } ) } @@ -103,4 +103,4 @@ nextflow_process { ) } } -} \ No newline at end of file +} diff --git a/modules/nf-core/umitools/extract/tests/main.nf.test.snap b/modules/nf-core/umitools/extract/tests/main.nf.test.snap index b1159054b..916234283 100644 --- a/modules/nf-core/umitools/extract/tests/main.nf.test.snap +++ b/modules/nf-core/umitools/extract/tests/main.nf.test.snap @@ -24,7 +24,11 @@ ] ], "2": [ - "versions.yml:md5,568d243174c081a0301e74ed42e59b48" + [ + "UMITOOLS_EXTRACT", + "umitools", + "1.1.6" + ] ], "log": [ [ @@ -47,16 +51,20 @@ ] ] ], - "versions": [ - "versions.yml:md5,568d243174c081a0301e74ed42e59b48" + "versions_umitools": [ + [ + "UMITOOLS_EXTRACT", + "umitools", + "1.1.6" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-07-02T15:05:20.008312" + "timestamp": "2026-02-03T13:17:55.612739621" }, "single end - stub": { "content": [ @@ -80,7 +88,11 @@ ] ], "2": [ - "versions.yml:md5,568d243174c081a0301e74ed42e59b48" + [ + "UMITOOLS_EXTRACT", + "umitools", + "1.1.6" + ] ], "log": [ [ @@ -100,16 +112,20 @@ "test.umi_extract.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], - "versions": [ - "versions.yml:md5,568d243174c081a0301e74ed42e59b48" + "versions_umitools": [ + [ + "UMITOOLS_EXTRACT", + "umitools", + "1.1.6" + ] ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-07-02T15:04:12.145999" + "timestamp": "2026-02-03T13:17:37.310716092" }, "pair end": { "content": [ @@ -124,15 +140,21 @@ "test.umi_extract.log" ] ], - [ - "versions.yml:md5,568d243174c081a0301e74ed42e59b48" - ] + { + "versions_umitools": [ + [ + "UMITOOLS_EXTRACT", + "umitools", + "1.1.6" + ] + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-07-02T15:21:09.578031" + "timestamp": "2026-02-03T13:17:47.683802227" }, "single end": { "content": [ @@ -154,14 +176,20 @@ "test.umi_extract.log" ] ], - [ - "versions.yml:md5,568d243174c081a0301e74ed42e59b48" - ] + { + "versions_umitools": [ + [ + "UMITOOLS_EXTRACT", + "umitools", + "1.1.6" + ] + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-07-02T15:03:52.464606" + "timestamp": "2026-02-03T13:17:29.607052009" } } \ No newline at end of file diff --git a/modules/nf-core/umitools/extract/tests/nextflow.config b/modules/nf-core/umitools/extract/tests/nextflow.config index c866f5a00..628f5fcd7 100644 --- a/modules/nf-core/umitools/extract/tests/nextflow.config +++ b/modules/nf-core/umitools/extract/tests/nextflow.config @@ -1,7 +1,7 @@ process { publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } - + withName: UMITOOLS_EXTRACT { ext.args = '--bc-pattern="NNNN"' } diff --git a/modules/nf-core/umitools/extract/tests/tags.yml b/modules/nf-core/umitools/extract/tests/tags.yml deleted file mode 100644 index c3fb23de4..000000000 --- a/modules/nf-core/umitools/extract/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -umitools/extract: - - modules/nf-core/umitools/extract/** diff --git a/modules/nf-core/untar/environment.yml b/modules/nf-core/untar/environment.yml index 4f498244a..9b926b1ff 100644 --- a/modules/nf-core/untar/environment.yml +++ b/modules/nf-core/untar/environment.yml @@ -1,9 +1,12 @@ -name: untar +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda - - defaults dependencies: + - conda-forge::coreutils=9.5 - conda-forge::grep=3.11 + - conda-forge::gzip=1.13 + - conda-forge::lbzip2=2.5 - conda-forge::sed=4.8 - conda-forge::tar=1.34 diff --git a/modules/nf-core/untar/main.nf b/modules/nf-core/untar/main.nf index 9bd8f5546..b9c324dac 100644 --- a/modules/nf-core/untar/main.nf +++ b/modules/nf-core/untar/main.nf @@ -1,56 +1,52 @@ process UNTAR { - tag "$archive" + tag "${archive}" label 'process_single' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/ubuntu:22.04' : - 'nf-core/ubuntu:22.04' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/52/52ccce28d2ab928ab862e25aae26314d69c8e38bd41ca9431c67ef05221348aa/data' + : 'community.wave.seqera.io/library/coreutils_grep_gzip_lbzip2_pruned:838ba80435a629f8'}" input: tuple val(meta), path(archive) output: - tuple val(meta), path("$prefix"), emit: untar - path "versions.yml" , emit: versions + tuple val(meta), path("${prefix}"), emit: untar + tuple val("${task.process}"), val('untar'), eval('tar --version 2>&1 | head -1 | sed "s/tar (GNU tar) //; s/ Copyright.*//"'), emit: versions_untar, topic: versions when: task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' + def args = task.ext.args ?: '' def args2 = task.ext.args2 ?: '' - prefix = task.ext.prefix ?: ( meta.id ? "${meta.id}" : archive.baseName.toString().replaceFirst(/\.tar$/, "")) + prefix = task.ext.prefix ?: (meta.id ? "${meta.id}" : archive.baseName.toString().replaceFirst(/\.tar$/, "")) """ - mkdir $prefix + mkdir ${prefix} ## Ensures --strip-components only applied when top level of tar contents is a directory ## If just files or multiple directories, place all in prefix if [[ \$(tar -taf ${archive} | grep -o -P "^.*?\\/" | uniq | wc -l) -eq 1 ]]; then tar \\ - -C $prefix --strip-components 1 \\ + -C ${prefix} --strip-components 1 \\ -xavf \\ - $args \\ - $archive \\ - $args2 + ${args} \\ + ${archive} \\ + ${args2} else tar \\ - -C $prefix \\ + -C ${prefix} \\ -xavf \\ - $args \\ - $archive \\ - $args2 + ${args} \\ + ${archive} \\ + ${args2} fi - cat <<-END_VERSIONS > versions.yml - "${task.process}": - untar: \$(echo \$(tar --version 2>&1) | sed 's/^.*(GNU tar) //; s/ Copyright.*\$//') - END_VERSIONS """ stub: - prefix = task.ext.prefix ?: ( meta.id ? "${meta.id}" : archive.toString().replaceFirst(/\.[^\.]+(.gz)?$/, "")) + prefix = task.ext.prefix ?: (meta.id ? "${meta.id}" : archive.toString().replaceFirst(/\.[^\.]+(.gz)?$/, "")) """ mkdir ${prefix} ## Dry-run untaring the archive to get the files and place all in prefix @@ -75,10 +71,5 @@ process UNTAR { fi done fi - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - untar: \$(echo \$(tar --version 2>&1) | sed 's/^.*(GNU tar) //; s/ Copyright.*\$//') - END_VERSIONS """ } diff --git a/modules/nf-core/untar/meta.yml b/modules/nf-core/untar/meta.yml index a9a2110f5..571d8078a 100644 --- a/modules/nf-core/untar/meta.yml +++ b/modules/nf-core/untar/meta.yml @@ -1,5 +1,5 @@ name: untar -description: Extract files. +description: Extract files from tar, tar.gz, tar.bz2, tar.xz archives keywords: - untar - uncompress @@ -7,33 +7,60 @@ keywords: tools: - untar: description: | - Extract tar.gz files. + Extract tar, tar.gz, tar.bz2, tar.xz files. documentation: https://www.gnu.org/software/tar/manual/ licence: ["GPL-3.0-or-later"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - archive: - type: file - description: File to be untar - pattern: "*.{tar}.{gz}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - archive: + type: file + description: File to be untarred + pattern: "*.{tar,tar.gz,tar.bz2,tar.xz}" + ontologies: + - edam: http://edamontology.org/format_3981 # TAR format + - edam: http://edamontology.org/format_3989 # GZIP format output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - untar: - type: directory - description: Directory containing contents of archive - pattern: "*/" - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + untar: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + pattern: "*/" + - ${prefix}: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + pattern: "*/" + versions_untar: + - - ${task.process}: + type: string + description: The name of the process + - untar: + type: string + description: The name of the tool + - tar --version 2>&1 | head -1 | sed "s/tar (GNU tar) //; s/ Copyright.*//": + type: eval + description: The expression to obtain the version of the tool + +topics: + versions: + - - ${task.process}: + type: string + description: The name of the process + - untar: + type: string + description: The name of the tool + - tar --version 2>&1 | head -1 | sed "s/tar (GNU tar) //; s/ Copyright.*//": + type: eval + description: The expression to obtain the version of the tool + authors: - "@joseespinosa" - "@drpatelh" diff --git a/modules/nf-core/untar/tests/main.nf.test b/modules/nf-core/untar/tests/main.nf.test index c957517aa..fde8db16a 100644 --- a/modules/nf-core/untar/tests/main.nf.test +++ b/modules/nf-core/untar/tests/main.nf.test @@ -20,7 +20,10 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert snapshot(process.out).match() }, + { assert snapshot( + process.out.untar, + process.out.findAll { key, val -> key.startsWith('versions') } + ).match() }, ) } } @@ -38,7 +41,10 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert snapshot(process.out).match() }, + { assert snapshot( + process.out.untar, + process.out.findAll { key, val -> key.startsWith('versions') } + ).match() }, ) } } @@ -58,7 +64,10 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert snapshot(process.out).match() }, + { assert snapshot( + process.out.untar, + process.out.findAll { key, val -> key.startsWith('versions') } + ).match() }, ) } } @@ -78,7 +87,10 @@ nextflow_process { then { assertAll ( { assert process.success }, - { assert snapshot(process.out).match() }, + { assert snapshot( + process.out.untar, + process.out.findAll { key, val -> key.startsWith('versions') } + ).match() }, ) } } diff --git a/modules/nf-core/untar/tests/main.nf.test.snap b/modules/nf-core/untar/tests/main.nf.test.snap index ceb91b792..51a414dd4 100644 --- a/modules/nf-core/untar/tests/main.nf.test.snap +++ b/modules/nf-core/untar/tests/main.nf.test.snap @@ -1,158 +1,118 @@ { "test_untar_onlyfiles": { "content": [ - { - "0": [ + [ + [ + [ + + ], [ - [ - - ], - [ - "hello.txt:md5,e59ff97941044f85df5297e1c302d260" - ] + "hello.txt:md5,e59ff97941044f85df5297e1c302d260" ] - ], - "1": [ - "versions.yml:md5,6063247258c56fd271d076bb04dd7536" - ], - "untar": [ + ] + ], + { + "versions_untar": [ [ - [ - - ], - [ - "hello.txt:md5,e59ff97941044f85df5297e1c302d260" - ] + "UNTAR", + "untar", + "1.34" ] - ], - "versions": [ - "versions.yml:md5,6063247258c56fd271d076bb04dd7536" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-07-10T12:04:28.231047" + "timestamp": "2026-01-28T17:49:32.000491" }, "test_untar_onlyfiles - stub": { "content": [ - { - "0": [ + [ + [ + [ + + ], [ - [ - - ], - [ - "hello.txt:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + "hello.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] - ], - "1": [ - "versions.yml:md5,6063247258c56fd271d076bb04dd7536" - ], - "untar": [ + ] + ], + { + "versions_untar": [ [ - [ - - ], - [ - "hello.txt:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + "UNTAR", + "untar", + "1.34" ] - ], - "versions": [ - "versions.yml:md5,6063247258c56fd271d076bb04dd7536" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-07-10T12:04:45.773103" + "timestamp": "2026-01-28T17:49:58.812479" }, "test_untar - stub": { "content": [ - { - "0": [ + [ + [ + [ + + ], [ - [ - - ], - [ - "hash.k2d:md5,d41d8cd98f00b204e9800998ecf8427e", - "opts.k2d:md5,d41d8cd98f00b204e9800998ecf8427e", - "taxo.k2d:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + "hash.k2d:md5,d41d8cd98f00b204e9800998ecf8427e", + "opts.k2d:md5,d41d8cd98f00b204e9800998ecf8427e", + "taxo.k2d:md5,d41d8cd98f00b204e9800998ecf8427e" ] - ], - "1": [ - "versions.yml:md5,6063247258c56fd271d076bb04dd7536" - ], - "untar": [ + ] + ], + { + "versions_untar": [ [ - [ - - ], - [ - "hash.k2d:md5,d41d8cd98f00b204e9800998ecf8427e", - "opts.k2d:md5,d41d8cd98f00b204e9800998ecf8427e", - "taxo.k2d:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + "UNTAR", + "untar", + "1.34" ] - ], - "versions": [ - "versions.yml:md5,6063247258c56fd271d076bb04dd7536" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-07-10T12:04:36.777441" + "timestamp": "2026-01-28T17:49:48.119456" }, "test_untar": { "content": [ - { - "0": [ + [ + [ + [ + + ], [ - [ - - ], - [ - "hash.k2d:md5,8b8598468f54a7087c203ad0190555d9", - "opts.k2d:md5,a033d00cf6759407010b21700938f543", - "taxo.k2d:md5,094d5891cdccf2f1468088855c214b2c" - ] + "hash.k2d:md5,8b8598468f54a7087c203ad0190555d9", + "opts.k2d:md5,a033d00cf6759407010b21700938f543", + "taxo.k2d:md5,094d5891cdccf2f1468088855c214b2c" ] - ], - "1": [ - "versions.yml:md5,6063247258c56fd271d076bb04dd7536" - ], - "untar": [ + ] + ], + { + "versions_untar": [ [ - [ - - ], - [ - "hash.k2d:md5,8b8598468f54a7087c203ad0190555d9", - "opts.k2d:md5,a033d00cf6759407010b21700938f543", - "taxo.k2d:md5,094d5891cdccf2f1468088855c214b2c" - ] + "UNTAR", + "untar", + "1.34" ] - ], - "versions": [ - "versions.yml:md5,6063247258c56fd271d076bb04dd7536" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.3", + "nextflow": "25.10.2" }, - "timestamp": "2024-07-10T12:04:19.377674" + "timestamp": "2026-01-28T17:49:17.252494" } } \ No newline at end of file diff --git a/modules/nf-core/untar/tests/tags.yml b/modules/nf-core/untar/tests/tags.yml deleted file mode 100644 index feb6f15c0..000000000 --- a/modules/nf-core/untar/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -untar: - - modules/nf-core/untar/** diff --git a/modules/nf-core/untarfiles/environment.yml b/modules/nf-core/untarfiles/environment.yml index e479f80d5..cdd3d4625 100644 --- a/modules/nf-core/untarfiles/environment.yml +++ b/modules/nf-core/untarfiles/environment.yml @@ -1,9 +1,10 @@ -name: untarfiles +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda - - defaults + dependencies: - - conda-forge::sed=4.7 - bioconda::grep=3.4 + - conda-forge::sed=4.8 - conda-forge::tar=1.34 diff --git a/modules/nf-core/untarfiles/main.nf b/modules/nf-core/untarfiles/main.nf index de27e67cd..8abf88250 100644 --- a/modules/nf-core/untarfiles/main.nf +++ b/modules/nf-core/untarfiles/main.nf @@ -4,8 +4,8 @@ process UNTARFILES { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/ubuntu:20.04' : - 'nf-core/ubuntu:20.04' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/88/88e03525287eaeb8bb74114aaee2c67118c1cdcfb99ee52e3ddc71a1acce35d4/data' : + 'community.wave.seqera.io/library/grep_sed_tar:db2951cd23a1ffde' }" input: tuple val(meta), path(archive) @@ -18,6 +18,13 @@ process UNTARFILES { task.ext.when == null || task.ext.when script: + def deprecation_message = """ +WARNING: This module has been deprecated. + +Reason: +This module is no longer recommended for use. It is recommended to use nf-core/modules/untar +""" + assert false: deprecation_message def args = task.ext.args ?: '' def args2 = task.ext.args2 ?: '' prefix = task.ext.prefix ?: ( meta.id ? "${meta.id}" : archive.baseName.toString().replaceFirst(/\.tar$/, "")) @@ -39,6 +46,13 @@ process UNTARFILES { """ stub: + def deprecation_message = """ +WARNING: This module has been deprecated. + +Reason: +This module is no longer recommended for use. It is recommended to use nf-core/modules/untar +""" + assert false: deprecation_message prefix = task.ext.prefix ?: "${meta.id}" """ mkdir $prefix diff --git a/modules/nf-core/untarfiles/meta.yml b/modules/nf-core/untarfiles/meta.yml index 381088264..fadf67446 100644 --- a/modules/nf-core/untarfiles/meta.yml +++ b/modules/nf-core/untarfiles/meta.yml @@ -10,30 +10,38 @@ tools: Extract tar.gz files. documentation: https://www.gnu.org/software/tar/manual/ licence: ["GPL-3.0-or-later"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - archive: - type: file - description: File to be untar - pattern: "*.{tar}.{gz}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - archive: + type: file + description: File to be untar + pattern: "*.{tar}.{gz}" + ontologies: + - edam: http://edamontology.org/format_3981 # TAR format + - edam: http://edamontology.org/format_3989 # GZIP format output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - files: - type: string - description: A list containing references to individual archive files - pattern: "*/**" - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" + files: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${prefix}/**: + type: string + description: A list containing references to individual archive files + pattern: "*/**" + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@joseespinosa" - "@drpatelh" diff --git a/modules/nf-core/untarfiles/tests/main.nf.test b/modules/nf-core/untarfiles/tests/main.nf.test new file mode 100644 index 000000000..52a92a823 --- /dev/null +++ b/modules/nf-core/untarfiles/tests/main.nf.test @@ -0,0 +1,96 @@ + +nextflow_process { + + name "Test Process UNTARFILES" + script "../main.nf" + process "UNTARFILES" + + tag "modules" + tag "modules_nfcore" + tag "untarfiles" + + test("test-untarfiles") { + + when { + process { + """ + input[0] = [ + [id: 'test'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/db/kraken2.tar.gz', checkIfExists: true) + ] + + """ + } + } + + then { + assertAll( + { assert process.failed } + ) + } + } + + test("test-untarfiles-subdirectories") { + + when { + process { + """ + input[0] = [ + [id: 'test'], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bcl/flowcell.tar.gz', checkIfExists: true) + ] + + """ + } + } + + then { + assertAll( + { assert process.failed } + ) + } + } + + test("test-untarfiles-onlyfiles") { + + when { + process { + """ + input[0] = [ + [id: 'test'], + file(params.modules_testdata_base_path + 'generic/tar/hello.tar.gz', checkIfExists: true) + ] + + """ + } + } + + then { + assertAll( + { assert process.failed } + ) + } + } + + test("test-untarfiles-onlyfiles-stub") { + options '-stub' + when { + process { + """ + input[0] = [ + [id: 'test'], + file(params.modules_testdata_base_path + 'generic/tar/hello.tar.gz', checkIfExists: true) + ] + + """ + } + } + + then { + assertAll( + { assert process.failed } + ) + } + } + +} diff --git a/modules/nf-core/untarfiles/tests/main.nf.test.snap b/modules/nf-core/untarfiles/tests/main.nf.test.snap new file mode 100644 index 000000000..33452a082 --- /dev/null +++ b/modules/nf-core/untarfiles/tests/main.nf.test.snap @@ -0,0 +1,356 @@ +{ + "test-untarfiles-onlyfiles-stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "file.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,4414b00143ed6076881ba7c68ed8b6cf" + ], + "files": [ + [ + { + "id": "test" + }, + "file.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,4414b00143ed6076881ba7c68ed8b6cf" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-29T12:22:11.239416" + }, + "test-untarfiles-subdirectories": { + "content": [ + [ + "ControlMetricsOut.bin", + "CorrectedIntMetricsOut.bin", + "ErrorMetricsOut.bin", + "ExtractionMetricsOut.bin", + "IndexMetricsOut.bin", + "QMetricsOut.bin", + "RTAConfiguration.xml", + "RunInfo.xml", + "TileMetricsOut.bin", + "config.xml", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.bcl", + "s_1_1101.control", + "s_1_1101.filter", + "s_1_1101.locs", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats", + "s_1_1101.stats" + ], + [ + "versions.yml:md5,4414b00143ed6076881ba7c68ed8b6cf" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-05T15:40:04.563426" + }, + "test-untarfiles": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + [ + "hash.k2d:md5,8b8598468f54a7087c203ad0190555d9", + "opts.k2d:md5,a033d00cf6759407010b21700938f543", + "taxo.k2d:md5,094d5891cdccf2f1468088855c214b2c" + ] + ] + ], + "1": [ + "versions.yml:md5,4414b00143ed6076881ba7c68ed8b6cf" + ], + "files": [ + [ + { + "id": "test" + }, + [ + "hash.k2d:md5,8b8598468f54a7087c203ad0190555d9", + "opts.k2d:md5,a033d00cf6759407010b21700938f543", + "taxo.k2d:md5,094d5891cdccf2f1468088855c214b2c" + ] + ] + ], + "versions": [ + "versions.yml:md5,4414b00143ed6076881ba7c68ed8b6cf" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-29T12:21:44.153411" + }, + "test-untarfiles-onlyfiles": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "hello.txt:md5,e59ff97941044f85df5297e1c302d260" + ] + ], + "1": [ + "versions.yml:md5,4414b00143ed6076881ba7c68ed8b6cf" + ], + "files": [ + [ + { + "id": "test" + }, + "hello.txt:md5,e59ff97941044f85df5297e1c302d260" + ] + ], + "versions": [ + "versions.yml:md5,4414b00143ed6076881ba7c68ed8b6cf" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-29T12:22:06.329486" + } +} diff --git a/ro-crate-metadata.json b/ro-crate-metadata.json index 4f1ca4989..ddd644e70 100644 --- a/ro-crate-metadata.json +++ b/ro-crate-metadata.json @@ -23,7 +23,7 @@ "@type": "Dataset", "creativeWorkStatus": "InProgress", "datePublished": "2025-11-20T09:32:09+00:00", - "description": "

\n \n \n \"nf-core/chipseq\"\n \n

\n\n[![Open in GitHub Codespaces](https://img.shields.io/badge/Open_In_GitHub_Codespaces-black?labelColor=grey&logo=github)](https://github.com/codespaces/new/nf-core/chipseq)\n[![GitHub Actions CI Status](https://github.com/nf-core/chipseq/actions/workflows/nf-test.yml/badge.svg)](https://github.com/nf-core/chipseq/actions/workflows/nf-test.yml)\n[![GitHub Actions Linting Status](https://github.com/nf-core/chipseq/actions/workflows/linting.yml/badge.svg)](https://github.com/nf-core/chipseq/actions/workflows/linting.yml)[![AWS CI](https://img.shields.io/badge/CI%20tests-full%20size-FF9900?labelColor=000000&logo=Amazon%20AWS)](https://nf-co.re/chipseq/results)[![Cite with Zenodo](http://img.shields.io/badge/DOI-10.5281/zenodo.XXXXXXX-1073c8?labelColor=000000)](https://doi.org/10.5281/zenodo.XXXXXXX)\n[![nf-test](https://img.shields.io/badge/unit_tests-nf--test-337ab7.svg)](https://www.nf-test.com)\n\n[![Nextflow](https://img.shields.io/badge/version-%E2%89%A525.04.0-green?style=flat&logo=nextflow&logoColor=white&color=%230DC09D&link=https%3A%2F%2Fnextflow.io)](https://www.nextflow.io/)\n[![nf-core template version](https://img.shields.io/badge/nf--core_template-3.5.1-green?style=flat&logo=nfcore&logoColor=white&color=%2324B064&link=https%3A%2F%2Fnf-co.re)](https://github.com/nf-core/tools/releases/tag/3.5.1)\n[![run with conda](http://img.shields.io/badge/run%20with-conda-3EB049?labelColor=000000&logo=anaconda)](https://docs.conda.io/en/latest/)\n[![run with docker](https://img.shields.io/badge/run%20with-docker-0db7ed?labelColor=000000&logo=docker)](https://www.docker.com/)\n[![run with singularity](https://img.shields.io/badge/run%20with-singularity-1d355c.svg?labelColor=000000)](https://sylabs.io/docs/)\n[![Launch on Seqera Platform](https://img.shields.io/badge/Launch%20%F0%9F%9A%80-Seqera%20Platform-%234256e7)](https://cloud.seqera.io/launch?pipeline=https://github.com/nf-core/chipseq)\n\n[![Get help on Slack](http://img.shields.io/badge/slack-nf--core%20%23chipseq-4A154B?labelColor=000000&logo=slack)](https://nfcore.slack.com/channels/chipseq)[![Follow on Bluesky](https://img.shields.io/badge/bluesky-%40nf__core-1185fe?labelColor=000000&logo=bluesky)](https://bsky.app/profile/nf-co.re)[![Follow on Mastodon](https://img.shields.io/badge/mastodon-nf__core-6364ff?labelColor=FFFFFF&logo=mastodon)](https://mstdn.science/@nf_core)[![Watch on YouTube](http://img.shields.io/badge/youtube-nf--core-FF0000?labelColor=000000&logo=youtube)](https://www.youtube.com/c/nf-core)\n\n## Introduction\n\n**nf-core/chipseq** is a bioinformatics pipeline that ...\n\n\n\n\n1. Read QC ([`FastQC`](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/))2. Present QC for raw reads ([`MultiQC`](http://multiqc.info/))\n\n## Usage\n\n> [!NOTE]\n> If you are new to Nextflow and nf-core, please refer to [this page](https://nf-co.re/docs/usage/installation) on how to set-up Nextflow. Make sure to [test your setup](https://nf-co.re/docs/usage/introduction#how-to-run-a-pipeline) with `-profile test` before running the workflow on actual data.\n\n\n\nNow, you can run the pipeline using:\n\n\n\n```bash\nnextflow run nf-core/chipseq \\\n -profile \\\n --input samplesheet.csv \\\n --outdir \n```\n\n> [!WARNING]\n> Please provide pipeline parameters via the CLI or Nextflow `-params-file` option. Custom config files including those provided by the `-c` Nextflow option can be used to provide any configuration _**except for parameters**_; see [docs](https://nf-co.re/docs/usage/getting_started/configuration#custom-configuration-files).\n\nFor more details and further functionality, please refer to the [usage documentation](https://nf-co.re/chipseq/usage) and the [parameter documentation](https://nf-co.re/chipseq/parameters).\n\n## Pipeline output\n\nTo see the results of an example test run with a full size dataset refer to the [results](https://nf-co.re/chipseq/results) tab on the nf-core website pipeline page.\nFor more details about the output files and reports, please refer to the\n[output documentation](https://nf-co.re/chipseq/output).\n\n## Credits\n\nnf-core/chipseq was originally written by Espinosa-Carrasco J, Patel H, Wang C, Ewels P.\n\nWe thank the following people for their extensive assistance in the development of this pipeline:\n\n\n\n## Contributions and Support\n\nIf you would like to contribute to this pipeline, please see the [contributing guidelines](.github/CONTRIBUTING.md).\n\nFor further information or help, don't hesitate to get in touch on the [Slack `#chipseq` channel](https://nfcore.slack.com/channels/chipseq) (you can join with [this invite](https://nf-co.re/join/slack)).\n\n## Citations\n\n\n\n\n\n\nAn extensive list of references for the tools used by the pipeline can be found in the [`CITATIONS.md`](CITATIONS.md) file.\n\nYou can cite the `nf-core` publication as follows:\n\n> **The nf-core framework for community-curated bioinformatics pipelines.**\n>\n> Philip Ewels, Alexander Peltzer, Sven Fillinger, Harshil Patel, Johannes Alneberg, Andreas Wilm, Maxime Ulysse Garcia, Paolo Di Tommaso & Sven Nahnsen.\n>\n> _Nat Biotechnol._ 2020 Feb 13. doi: [10.1038/s41587-020-0439-x](https://dx.doi.org/10.1038/s41587-020-0439-x).\n", + "description": "

\n \n \n \"nf-core/chipseq\"\n \n

\n\n[![Open in GitHub Codespaces](https://img.shields.io/badge/Open_In_GitHub_Codespaces-black?labelColor=grey&logo=github)](https://github.com/codespaces/new/nf-core/chipseq)\n[![GitHub Actions CI Status](https://github.com/nf-core/chipseq/actions/workflows/nf-test.yml/badge.svg)](https://github.com/nf-core/chipseq/actions/workflows/nf-test.yml)\n[![GitHub Actions Linting Status](https://github.com/nf-core/chipseq/actions/workflows/linting.yml/badge.svg)](https://github.com/nf-core/chipseq/actions/workflows/linting.yml)[![AWS CI](https://img.shields.io/badge/CI%20tests-full%20size-FF9900?labelColor=000000&logo=Amazon%20AWS)](https://nf-co.re/chipseq/results)[![Cite with Zenodo](http://img.shields.io/badge/DOI-10.5281/zenodo.3240506-1073c8?labelColor=000000)](https://doi.org/10.5281/zenodo.3240506)\n[![nf-test](https://img.shields.io/badge/unit_tests-nf--test-337ab7.svg)](https://www.nf-test.com)\n\n[![Nextflow](https://img.shields.io/badge/version-%E2%89%A525.04.0-green?style=flat&logo=nextflow&logoColor=white&color=%230DC09D&link=https%3A%2F%2Fnextflow.io)](https://www.nextflow.io/)\n[![nf-core template version](https://img.shields.io/badge/nf--core_template-3.5.1-green?style=flat&logo=nfcore&logoColor=white&color=%2324B064&link=https%3A%2F%2Fnf-co.re)](https://github.com/nf-core/tools/releases/tag/3.5.1)\n[![run with conda](http://img.shields.io/badge/run%20with-conda-3EB049?labelColor=000000&logo=anaconda)](https://docs.conda.io/en/latest/)\n[![run with docker](https://img.shields.io/badge/run%20with-docker-0db7ed?labelColor=000000&logo=docker)](https://www.docker.com/)\n[![run with singularity](https://img.shields.io/badge/run%20with-singularity-1d355c.svg?labelColor=000000)](https://sylabs.io/docs/)\n[![Launch on Seqera Platform](https://img.shields.io/badge/Launch%20%F0%9F%9A%80-Seqera%20Platform-%234256e7)](https://cloud.seqera.io/launch?pipeline=https://github.com/nf-core/chipseq)\n\n[![Get help on Slack](http://img.shields.io/badge/slack-nf--core%20%23chipseq-4A154B?labelColor=000000&logo=slack)](https://nfcore.slack.com/channels/chipseq)[![Follow on Bluesky](https://img.shields.io/badge/bluesky-%40nf__core-1185fe?labelColor=000000&logo=bluesky)](https://bsky.app/profile/nf-co.re)[![Follow on Mastodon](https://img.shields.io/badge/mastodon-nf__core-6364ff?labelColor=FFFFFF&logo=mastodon)](https://mstdn.science/@nf_core)[![Watch on YouTube](http://img.shields.io/badge/youtube-nf--core-FF0000?labelColor=000000&logo=youtube)](https://www.youtube.com/c/nf-core)\n\n## Introduction\n\n**nfcore/chipseq** is a bioinformatics analysis pipeline used for Chromatin ImmunoPrecipitation sequencing (ChIP-seq) data.\n\nOn release, automated continuous integration tests run the pipeline on a [full-sized dataset](https://github.com/nf-core/test-datasets/tree/chipseq#full-test-dataset-origin) on the AWS cloud infrastructure. The dataset consists of FoxA1 (transcription factor) and EZH2 (histone,mark) IP experiments from _Franco et al. 2015_ ([GEO: GSE59530](https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE59530), [PMID: 25752574](https://pubmed.ncbi.nlm.nih.gov/25752574/)) and _Popovic et al. 2014_ ([GEO: GSE57632](https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE57632), [PMID: 25188243](https://pubmed.ncbi.nlm.nih.gov/25188243/)), respectively. This ensures that the pipeline runs on AWS, has sensible resource allocation defaults set to run on real-world datasets, and permits the persistent storage of results to benchmark between pipeline releases and other analysis sources. The results obtained from running the full-sized tests can be viewed on the [nf-core website](https://nf-co.re/chipseq/results).\n\nThe pipeline is built using [Nextflow](https://www.nextflow.io), a workflow tool to run tasks across multiple compute infrastructures in a very portable manner. It uses Docker/Singularity containers making installation trivial and results highly reproducible. The [Nextflow DSL2](https://www.nextflow.io/docs/latest/dsl2.html) implementation of this pipeline uses one container per process which makes it much easier to maintain and update software dependencies. Where possible, these processes have been submitted to and installed from [nf-core/modules](https://github.com/nf-core/modules) in order to make them available to all nf-core pipelines, and to everyone within the Nextflow community!\n\n## Online videos\n\nA short talk about the history, current status and functionality on offer in this pipeline was given by Jose Espinosa-Carrasco ([@joseespinosa](https://github.com/joseespinosa)) on [26th July 2022](https://nf-co.re/events/2022/bytesize-chipseq) as part of the nf-core/bytesize series.\n\nYou can find numerous talks on the [nf-core events page](https://nf-co.re/events) from various topics including writing pipelines/modules in Nextflow DSL2, using nf-core tooling, running nf-core pipelines as well as more generic content like contributing to Github. Please check them out!\n\n## Pipeline summary\n\n![nf-core/chipseq metro map](docs/images/nf-core-chipseq_metro_map_grey.png)\n\n1. Raw read QC ([`FastQC`](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/))\n2. Adapter trimming ([`Trim Galore!`](https://www.bioinformatics.babraham.ac.uk/projects/trim_galore/))\n3. Choice of multiple aligners\n 1.([`BWA`](https://sourceforge.net/projects/bio-bwa/files/))\n 2.([`Chromap`](https://github.com/haowenz/chromap))\n 3.([`Bowtie2`](http://bowtie-bio.sourceforge.net/bowtie2/index.shtml))\n 4.([`STAR`](https://github.com/alexdobin/STAR))\n4. Mark duplicates ([`picard`](https://broadinstitute.github.io/picard/))\n5. Merge alignments from multiple libraries of the same sample ([`picard`](https://broadinstitute.github.io/picard/))\n 1. Re-mark duplicates ([`picard`](https://broadinstitute.github.io/picard/))\n 2. Filtering to remove:\n - reads mapping to blacklisted regions ([`SAMtools`](https://sourceforge.net/projects/samtools/files/samtools/), [`BEDTools`](https://github.com/arq5x/bedtools2/))\n - reads that are marked as duplicates ([`SAMtools`](https://sourceforge.net/projects/samtools/files/samtools/))\n - reads that are not marked as primary alignments ([`SAMtools`](https://sourceforge.net/projects/samtools/files/samtools/))\n - reads that are unmapped ([`SAMtools`](https://sourceforge.net/projects/samtools/files/samtools/))\n - reads that map to multiple locations ([`SAMtools`](https://sourceforge.net/projects/samtools/files/samtools/))\n - reads containing > 4 mismatches ([`BAMTools`](https://github.com/pezmaster31/bamtools))\n - reads that have an insert size > 2kb ([`BAMTools`](https://github.com/pezmaster31/bamtools); _paired-end only_)\n - reads that map to different chromosomes ([`Pysam`](http://pysam.readthedocs.io/en/latest/installation.html); _paired-end only_)\n - reads that arent in FR orientation ([`Pysam`](http://pysam.readthedocs.io/en/latest/installation.html); _paired-end only_)\n - reads where only one read of the pair fails the above criteria ([`Pysam`](http://pysam.readthedocs.io/en/latest/installation.html); _paired-end only_)\n 3. Alignment-level QC and estimation of library complexity ([`picard`](https://broadinstitute.github.io/picard/), [`Preseq`](http://smithlabresearch.org/software/preseq/))\n 4. Create normalised bigWig files scaled to 1 million mapped reads ([`BEDTools`](https://github.com/arq5x/bedtools2/), [`bedGraphToBigWig`](http://hgdownload.soe.ucsc.edu/admin/exe/))\n 5. Generate gene-body meta-profile from bigWig files ([`deepTools`](https://deeptools.readthedocs.io/en/develop/content/tools/plotProfile.html))\n 6. Calculate genome-wide IP enrichment relative to control ([`deepTools`](https://deeptools.readthedocs.io/en/develop/content/tools/plotFingerprint.html))\n 7. Calculate strand cross-correlation peak and ChIP-seq quality measures including NSC and RSC ([`phantompeakqualtools`](https://github.com/kundajelab/phantompeakqualtools))\n 8. Call broad/narrow peaks ([`MACS3`](https://github.com/macs3-project/MACS))\n 9. Annotate peaks relative to gene features ([`HOMER`](http://homer.ucsd.edu/homer/download.html))\n 10. Create consensus peakset across all samples and create tabular file to aid in the filtering of the data ([`BEDTools`](https://github.com/arq5x/bedtools2/))\n 11. Count reads in consensus peaks ([`featureCounts`](http://bioinf.wehi.edu.au/featureCounts/))\n 12. PCA and clustering ([`R`](https://www.r-project.org/), [`DESeq2`](https://bioconductor.org/packages/release/bioc/html/DESeq2.html))\n6. Create IGV session file containing bigWig tracks, peaks and differential sites for data visualisation ([`IGV`](https://software.broadinstitute.org/software/igv/)).\n7. Present QC for raw read, alignment, peak-calling and differential binding results ([`MultiQC`](http://multiqc.info/), [`R`](https://www.r-project.org/))\n\n## Usage\n\n> [!NOTE]\n> If you are new to Nextflow and nf-core, please refer to [this page](https://nf-co.re/docs/usage/installation) on how to set-up Nextflow. Make sure to [test your setup](https://nf-co.re/docs/usage/introduction#how-to-run-a-pipeline) with `-profile test` before running the workflow on actual data.\n\nTo run on your data, prepare a tab-separated samplesheet with your input data. Please follow the [documentation on samplesheets](https://nf-co.re/chipseq/usage#samplesheet-input) for more details. An example samplesheet for running the pipeline looks as follows:\n\n```csv title=\"samplesheet.csv\"\nsample,fastq_1,fastq_2,replicate,antibody,control,control_replicate\nWT_BCATENIN_IP,BLA203A1_S27_L006_R1_001.fastq.gz,,1,BCATENIN,WT_INPUT,1\nWT_BCATENIN_IP,BLA203A25_S16_L001_R1_001.fastq.gz,,2,BCATENIN,WT_INPUT,2\nWT_BCATENIN_IP,BLA203A25_S16_L002_R1_001.fastq.gz,,2,BCATENIN,WT_INPUT,2\nWT_BCATENIN_IP,BLA203A25_S16_L003_R1_001.fastq.gz,,2,BCATENIN,WT_INPUT,2\nWT_BCATENIN_IP,BLA203A49_S40_L001_R1_001.fastq.gz,,3,BCATENIN,WT_INPUT,3\nWT_INPUT,BLA203A6_S32_L006_R1_001.fastq.gz,,1,,,\nWT_INPUT,BLA203A30_S21_L001_R1_001.fastq.gz,,2,,,\nWT_INPUT,BLA203A30_S21_L002_R1_001.fastq.gz,,2,,,\nWT_INPUT,BLA203A31_S21_L003_R1_001.fastq.gz,,3,,,\n```\n\nNow, you can run the pipeline using:\n\n```bash\nnextflow run nf-core/chipseq --input samplesheet.csv --outdir --genome GRCh37 -profile \n```\n\nSee [usage docs](https://nf-co.re/chipseq/usage) for all of the available options when running the pipeline.\n\n> [!WARNING]\n> Please provide pipeline parameters via the CLI or Nextflow `-params-file` option. Custom config files including those provided by the `-c` Nextflow option can be used to provide any configuration _**except for parameters**_; see [docs](https://nf-co.re/docs/usage/getting_started/configuration#custom-configuration-files).\n\nFor more details and further functionality, please refer to the [usage documentation](https://nf-co.re/chipseq/usage) and the [parameter documentation](https://nf-co.re/chipseq/parameters).\n\n## Pipeline output\n\nTo see the results of an example test run with a full size dataset refer to the [results](https://nf-co.re/chipseq/results) tab on the nf-core website pipeline page.\nFor more details about the output files and reports, please refer to the\n[output documentation](https://nf-co.re/chipseq/output).\n\n## Credits\n\nThese scripts were originally written by Chuan Wang ([@chuan-wang](https://github.com/chuan-wang)) and Phil Ewels ([@ewels](https://github.com/ewels)) for use at the [National Genomics Infrastructure](https://portal.scilifelab.se/genomics/) at [SciLifeLab](http://www.scilifelab.se/) in Stockholm, Sweden. The pipeline was re-implemented by Harshil Patel ([@drpatelh](https://github.com/drpatelh)) from [Seqera Labs, Spain](https://seqera.io/) and converted to Nextflow DSL2 by Jose Espinosa-Carrasco ([@JoseEspinosa](https://github.com/JoseEspinosa)) from [The Comparative Bioinformatics Group](https://www.crg.eu/en/cedric_notredame) at [The Centre for Genomic Regulation, Spain](https://www.crg.eu/).\n\nThe pipeline workflow diagram was designed by Sarah Guinchard ([@G-Sarah](https://github.com/G-Sarah)).\n\nMany thanks to others who have helped out and contributed along the way too, including (but not limited to): [@apeltzer](https://github.com/apeltzer), [@bc2zb](https://github.com/bc2zb), [@bjlang](https://github.com/bjlang), [@crickbabs](https://github.com/crickbabs), [@drejom](https://github.com/drejom), [@houghtos](https://github.com/houghtos), [@KevinMenden](https://github.com/KevinMenden), [@mashehu](https://github.com/mashehu), [@pditommaso](https://github.com/pditommaso), [@Rotholandus](https://github.com/Rotholandus), [@sofiahaglund](https://github.com/sofiahaglund), [@tiagochst](https://github.com/tiagochst) and [@winni2k](https://github.com/winni2k).\n\n## Contributions and Support\n\nIf you would like to contribute to this pipeline, please see the [contributing guidelines](.github/CONTRIBUTING.md).\n\nFor further information or help, don't hesitate to get in touch on the [Slack `#chipseq` channel](https://nfcore.slack.com/channels/chipseq) (you can join with [this invite](https://nf-co.re/join/slack)).\n\n## Citations\n\nIf you use nf-core/chipseq for your analysis, please cite it using the following doi: [10.5281/zenodo.3240506](https://doi.org/10.5281/zenodo.3240506)\n\nAn extensive list of references for the tools used by the pipeline can be found in the [`CITATIONS.md`](CITATIONS.md) file.\n\nYou can cite the `nf-core` publication as follows:\n\n> **The nf-core framework for community-curated bioinformatics pipelines.**\n>\n> Philip Ewels, Alexander Peltzer, Sven Fillinger, Harshil Patel, Johannes Alneberg, Andreas Wilm, Maxime Ulysse Garcia, Paolo Di Tommaso & Sven Nahnsen.\n>\n> _Nat Biotechnol._ 2020 Feb 13. doi: [10.1038/s41587-020-0439-x](https://dx.doi.org/10.1038/s41587-020-0439-x).\n", "hasPart": [ { "@id": "main.nf" diff --git a/subworkflows/local/align_star.nf b/subworkflows/local/align_star/main.nf similarity index 81% rename from subworkflows/local/align_star.nf rename to subworkflows/local/align_star/main.nf index 843f303ef..3c7ec7233 100644 --- a/subworkflows/local/align_star.nf +++ b/subworkflows/local/align_star/main.nf @@ -2,8 +2,8 @@ * Map reads, sort, index BAM file and run samtools stats, flagstat and idxstats */ -include { STAR_ALIGN } from '../../modules/local/star_align' -include { BAM_SORT_STATS_SAMTOOLS } from '../nf-core/bam_sort_stats_samtools/main' +include { STAR_ALIGN } from '../../../modules/local/star_align/main' +include { BAM_SORT_STATS_SAMTOOLS } from '../../nf-core/bam_sort_stats_samtools/main' workflow ALIGN_STAR { take: @@ -14,19 +14,16 @@ workflow ALIGN_STAR { main: - ch_versions = Channel.empty() // // Map reads with STAR // STAR_ALIGN ( ch_reads, ch_index, seq_center ) - ch_versions = ch_versions.mix(STAR_ALIGN.out.versions.first()) // // Sort, index BAM file and run samtools stats, flagstat and idxstats // BAM_SORT_STATS_SAMTOOLS ( STAR_ALIGN.out.bam, ch_fasta ) - ch_versions = ch_versions.mix(BAM_SORT_STATS_SAMTOOLS.out.versions) emit: orig_bam = STAR_ALIGN.out.bam // channel: [ val(meta), bam ] @@ -43,6 +40,4 @@ workflow ALIGN_STAR { stats = BAM_SORT_STATS_SAMTOOLS.out.stats // channel: [ val(meta), [ stats ] ] flagstat = BAM_SORT_STATS_SAMTOOLS.out.flagstat // channel: [ val(meta), [ flagstat ] ] idxstats = BAM_SORT_STATS_SAMTOOLS.out.idxstats // channel: [ val(meta), [ idxstats ] ] - - versions = ch_versions // channel: [ versions.yml ] } diff --git a/subworkflows/local/bam_bedgraph_bigwig_bedtools_ucsc.nf b/subworkflows/local/bam_bedgraph_bigwig_bedtools_ucsc/main.nf similarity index 81% rename from subworkflows/local/bam_bedgraph_bigwig_bedtools_ucsc.nf rename to subworkflows/local/bam_bedgraph_bigwig_bedtools_ucsc/main.nf index 1c5df00d3..17b22d3f5 100644 --- a/subworkflows/local/bam_bedgraph_bigwig_bedtools_ucsc.nf +++ b/subworkflows/local/bam_bedgraph_bigwig_bedtools_ucsc/main.nf @@ -2,8 +2,8 @@ // Convert BAM to normalised bigWig via bedGraph using BEDTools and UCSC // -include { BEDTOOLS_GENOMECOV } from '../../modules/nf-core/bedtools/genomecov/main' -include { UCSC_BEDGRAPHTOBIGWIG } from '../../modules/nf-core/ucsc/bedgraphtobigwig/main' +include { BEDTOOLS_GENOMECOV } from '../../../modules/nf-core/bedtools/genomecov/main' +include { UCSC_BEDGRAPHTOBIGWIG } from '../../../modules/nf-core/ucsc/bedgraphtobigwig/main' workflow BAM_BEDGRAPH_BIGWIG_BEDTOOLS_UCSC { take: @@ -12,7 +12,6 @@ workflow BAM_BEDGRAPH_BIGWIG_BEDTOOLS_UCSC { main: - ch_versions = Channel.empty() // // Extract scale factor from flagstat and prepare input for bedtools genomecov @@ -49,7 +48,6 @@ workflow BAM_BEDGRAPH_BIGWIG_BEDTOOLS_UCSC { 'bedGraph', true ) - ch_versions = ch_versions.mix(BEDTOOLS_GENOMECOV.out.versions.first()) // // Create bigWig coverage tracks @@ -58,11 +56,9 @@ workflow BAM_BEDGRAPH_BIGWIG_BEDTOOLS_UCSC { BEDTOOLS_GENOMECOV.out.genomecov, ch_chrom_sizes ) - ch_versions = ch_versions.mix(UCSC_BEDGRAPHTOBIGWIG.out.versions.first()) emit: bedgraph = BEDTOOLS_GENOMECOV.out.genomecov // channel: [ val(meta), [ bedgraph ] ] bigwig = UCSC_BEDGRAPHTOBIGWIG.out.bigwig // channel: [ val(meta), [ bigwig ] ] - versions = ch_versions // channel: [ versions.yml ] } diff --git a/subworkflows/local/bam_filter_bamtools.nf b/subworkflows/local/bam_filter_bamtools/main.nf similarity index 67% rename from subworkflows/local/bam_filter_bamtools.nf rename to subworkflows/local/bam_filter_bamtools/main.nf index 954d0dac0..12ca38310 100644 --- a/subworkflows/local/bam_filter_bamtools.nf +++ b/subworkflows/local/bam_filter_bamtools/main.nf @@ -1,10 +1,10 @@ -include { SAMTOOLS_SORT } from '../../modules/nf-core/samtools/sort/main' -include { SAMTOOLS_INDEX } from '../../modules/nf-core/samtools/index/main' -include { BAM_SORT_STATS_SAMTOOLS } from '../nf-core/bam_sort_stats_samtools/main' -include { BAM_STATS_SAMTOOLS } from '../nf-core/bam_stats_samtools/main' +include { SAMTOOLS_SORT } from '../../../modules/nf-core/samtools/sort/main' +include { SAMTOOLS_INDEX } from '../../../modules/nf-core/samtools/index/main' +include { BAM_SORT_STATS_SAMTOOLS } from '../../nf-core/bam_sort_stats_samtools/main' +include { BAM_STATS_SAMTOOLS } from '../../nf-core/bam_stats_samtools/main' -include { BAMTOOLS_FILTER } from '../../modules/local/bamtools_filter' -include { BAM_REMOVE_ORPHANS } from '../../modules/local/bam_remove_orphans' +include { BAMTOOLS_FILTER } from '../../../modules/local/bamtools_filter/main' +include { BAM_REMOVE_ORPHANS } from '../../../modules/local/bam_remove_orphans/main' workflow BAM_FILTER_BAMTOOLS { take: @@ -16,7 +16,6 @@ workflow BAM_FILTER_BAMTOOLS { main: - ch_versions = Channel.empty() // // Filter BAM file with BAMTools @@ -27,7 +26,6 @@ workflow BAM_FILTER_BAMTOOLS { ch_bamtools_filter_se_config, ch_bamtools_filter_pe_config ) - ch_versions = ch_versions.mix(BAMTOOLS_FILTER.out.versions.first()) BAMTOOLS_FILTER .out @@ -47,7 +45,6 @@ workflow BAM_FILTER_BAMTOOLS { SAMTOOLS_INDEX { ch_bam.single_end } - ch_versions = ch_versions.mix(SAMTOOLS_INDEX.out.versions.first()) // // Run samtools stats, flagstat and idxstats on SE BAM @@ -56,16 +53,15 @@ workflow BAM_FILTER_BAMTOOLS { ch_bam.single_end.join(SAMTOOLS_INDEX.out.bai), ch_fasta ) - ch_versions = ch_versions.mix(BAM_STATS_SAMTOOLS.out.versions.first()) // // Name sort PE BAM before filtering with pysam // SAMTOOLS_SORT ( ch_bam.paired_end, - ch_fasta + ch_fasta, + '' ) - ch_versions = ch_versions.mix(SAMTOOLS_SORT.out.versions.first()) // // Remove orphan reads from PE BAM file @@ -73,7 +69,6 @@ workflow BAM_FILTER_BAMTOOLS { BAM_REMOVE_ORPHANS ( SAMTOOLS_SORT.out.bam ) - ch_versions = ch_versions.mix(BAM_REMOVE_ORPHANS.out.versions.first()) // // Sort, index PE BAM file and run samtools stats, flagstat and idxstats @@ -82,7 +77,6 @@ workflow BAM_FILTER_BAMTOOLS { BAM_REMOVE_ORPHANS.out.bam, ch_fasta ) - ch_versions = ch_versions.mix(BAM_SORT_STATS_SAMTOOLS.out.versions.first()) emit: name_bam = SAMTOOLS_SORT.out.bam // channel: [ val(meta), [ bam ] ] @@ -91,5 +85,4 @@ workflow BAM_FILTER_BAMTOOLS { stats = BAM_SORT_STATS_SAMTOOLS.out.stats.mix(BAM_STATS_SAMTOOLS.out.stats) // channel: [ val(meta), [ stats ] ] flagstat = BAM_SORT_STATS_SAMTOOLS.out.flagstat.mix(BAM_STATS_SAMTOOLS.out.flagstat) // channel: [ val(meta), [ flagstat ] ] idxstats = BAM_SORT_STATS_SAMTOOLS.out.idxstats.mix(BAM_STATS_SAMTOOLS.out.idxstats) // channel: [ val(meta), [ idxstats ] ] - versions = ch_versions // channel: [ versions.yml ] } diff --git a/subworkflows/local/bam_peaks_call_qc_annotate_macs3_homer.nf b/subworkflows/local/bam_peaks_call_qc_annotate_macs3_homer/main.nf similarity index 81% rename from subworkflows/local/bam_peaks_call_qc_annotate_macs3_homer.nf rename to subworkflows/local/bam_peaks_call_qc_annotate_macs3_homer/main.nf index 69ecb99fe..eecde7bbb 100644 --- a/subworkflows/local/bam_peaks_call_qc_annotate_macs3_homer.nf +++ b/subworkflows/local/bam_peaks_call_qc_annotate_macs3_homer/main.nf @@ -2,13 +2,13 @@ // Call peaks with MACS3, annotate with HOMER and perform downstream QC // -include { MACS3_CALLPEAK } from '../../modules/nf-core/macs3/callpeak/main' -include { HOMER_ANNOTATEPEAKS } from '../../modules/nf-core/homer/annotatepeaks/main' +include { MACS3_CALLPEAK } from '../../../modules/nf-core/macs3/callpeak/main' +include { HOMER_ANNOTATEPEAKS } from '../../../modules/nf-core/homer/annotatepeaks/main' -include { FRIP_SCORE } from '../../modules/local/frip_score' -include { MULTIQC_CUSTOM_PEAKS } from '../../modules/local/multiqc_custom_peaks' -include { PLOT_MACS3_QC } from '../../modules/local/plot_macs3_qc' -include { PLOT_HOMER_ANNOTATEPEAKS } from '../../modules/local/plot_homer_annotatepeaks' +include { FRIP_SCORE } from '../../../modules/local/frip_score/main' +include { MULTIQC_CUSTOM_PEAKS } from '../../../modules/local/multiqc_custom_peaks/main' +include { PLOT_MACS3_QC } from '../../../modules/local/plot_macs3_qc/main' +include { PLOT_HOMER_ANNOTATEPEAKS } from '../../../modules/local/plot_homer_annotatepeaks/main' workflow BAM_PEAKS_CALL_QC_ANNOTATE_MACS3_HOMER { take: @@ -26,8 +26,6 @@ workflow BAM_PEAKS_CALL_QC_ANNOTATE_MACS3_HOMER { main: - ch_versions = Channel.empty() - // // Call peaks with MACS3 // @@ -35,7 +33,6 @@ workflow BAM_PEAKS_CALL_QC_ANNOTATE_MACS3_HOMER { ch_bam, macs_gsize ) - ch_versions = ch_versions.mix(MACS3_CALLPEAK.out.versions.first()) // // Filter out samples with 0 MACS3 peaks called @@ -64,7 +61,6 @@ workflow BAM_PEAKS_CALL_QC_ANNOTATE_MACS3_HOMER { FRIP_SCORE ( ch_bam_peaks ) - ch_versions = ch_versions.mix(FRIP_SCORE.out.versions.first()) // Create channels: [ meta, peaks, frip ] ch_bam_peaks @@ -83,7 +79,6 @@ workflow BAM_PEAKS_CALL_QC_ANNOTATE_MACS3_HOMER { ch_peak_count_header_multiqc, ch_frip_score_multiqc ) - ch_versions = ch_versions.mix(MULTIQC_CUSTOM_PEAKS.out.versions.first()) ch_homer_annotatepeaks = Channel.empty() ch_plot_macs3_qc_txt = Channel.empty() @@ -101,7 +96,6 @@ workflow BAM_PEAKS_CALL_QC_ANNOTATE_MACS3_HOMER { ch_gtf ) ch_homer_annotatepeaks = HOMER_ANNOTATEPEAKS.out.txt - ch_versions = ch_versions.mix(HOMER_ANNOTATEPEAKS.out.versions.first()) if (!skip_peak_qc) { // @@ -113,7 +107,6 @@ workflow BAM_PEAKS_CALL_QC_ANNOTATE_MACS3_HOMER { ) ch_plot_macs3_qc_txt = PLOT_MACS3_QC.out.txt ch_plot_macs3_qc_pdf = PLOT_MACS3_QC.out.pdf - ch_versions = ch_versions.mix(PLOT_MACS3_QC.out.versions) // // Peak annotation QC plots with R @@ -126,7 +119,6 @@ workflow BAM_PEAKS_CALL_QC_ANNOTATE_MACS3_HOMER { ch_plot_homer_annotatepeaks_txt = PLOT_HOMER_ANNOTATEPEAKS.out.txt ch_plot_homer_annotatepeaks_pdf = PLOT_HOMER_ANNOTATEPEAKS.out.pdf ch_plot_homer_annotatepeaks_tsv = PLOT_HOMER_ANNOTATEPEAKS.out.tsv - ch_versions = ch_versions.mix(PLOT_HOMER_ANNOTATEPEAKS.out.versions) } } @@ -150,6 +142,4 @@ workflow BAM_PEAKS_CALL_QC_ANNOTATE_MACS3_HOMER { plot_homer_annotatepeaks_txt = ch_plot_homer_annotatepeaks_txt // channel: [ txt ] plot_homer_annotatepeaks_pdf = ch_plot_homer_annotatepeaks_pdf // channel: [ pdf ] plot_homer_annotatepeaks_tsv = ch_plot_homer_annotatepeaks_tsv // channel: [ tsv ] - - versions = ch_versions // channel: [ versions.yml ] } diff --git a/subworkflows/local/bed_consensus_quantify_qc_bedtools_featurecounts_deseq2.nf b/subworkflows/local/bed_consensus_quantify_qc_bedtools_featurecounts_deseq2/main.nf similarity index 86% rename from subworkflows/local/bed_consensus_quantify_qc_bedtools_featurecounts_deseq2.nf rename to subworkflows/local/bed_consensus_quantify_qc_bedtools_featurecounts_deseq2/main.nf index 5ef89a61b..3b922166f 100644 --- a/subworkflows/local/bed_consensus_quantify_qc_bedtools_featurecounts_deseq2.nf +++ b/subworkflows/local/bed_consensus_quantify_qc_bedtools_featurecounts_deseq2/main.nf @@ -2,12 +2,12 @@ // Call consensus peaks with BEDTools and custom scripts, annotate with HOMER, quantify with featureCounts and QC with DESeq2 // -include { HOMER_ANNOTATEPEAKS } from '../../modules/nf-core/homer/annotatepeaks/main' -include { SUBREAD_FEATURECOUNTS } from '../../modules/nf-core/subread/featurecounts/main' +include { HOMER_ANNOTATEPEAKS } from '../../../modules/nf-core/homer/annotatepeaks/main' +include { SUBREAD_FEATURECOUNTS } from '../../../modules/nf-core/subread/featurecounts/main' -include { MACS3_CONSENSUS } from '../../modules/local/macs3_consensus' -include { ANNOTATE_BOOLEAN_PEAKS } from '../../modules/local/annotate_boolean_peaks' -include { DESEQ2_QC } from '../../modules/local/deseq2_qc' +include { MACS3_CONSENSUS } from '../../../modules/local/macs3_consensus/main' +include { ANNOTATE_BOOLEAN_PEAKS } from '../../../modules/local/annotate_boolean_peaks/main' +include { DESEQ2_QC } from '../../../modules/local/deseq2_qc/main' workflow BED_CONSENSUS_QUANTIFY_QC_BEDTOOLS_FEATURECOUNTS_DESEQ2 { take: @@ -23,7 +23,6 @@ workflow BED_CONSENSUS_QUANTIFY_QC_BEDTOOLS_FEATURECOUNTS_DESEQ2 { main: - ch_versions = Channel.empty() // Create channels: [ meta , [ peaks ] ] // Where meta = [ id:antibody, multiple_groups:true/false, replicates_exist:true/false ] @@ -58,7 +57,6 @@ workflow BED_CONSENSUS_QUANTIFY_QC_BEDTOOLS_FEATURECOUNTS_DESEQ2 { ch_antibody_peaks, is_narrow_peak ) - ch_versions = ch_versions.mix(MACS3_CONSENSUS.out.versions) // // Annotate consensus peaks @@ -69,7 +67,6 @@ workflow BED_CONSENSUS_QUANTIFY_QC_BEDTOOLS_FEATURECOUNTS_DESEQ2 { ch_fasta, ch_gtf ) - ch_versions = ch_versions.mix(HOMER_ANNOTATEPEAKS.out.versions) // // MODULE: Add boolean fields to annotated consensus peaks to aid filtering @@ -77,7 +74,6 @@ workflow BED_CONSENSUS_QUANTIFY_QC_BEDTOOLS_FEATURECOUNTS_DESEQ2 { ANNOTATE_BOOLEAN_PEAKS ( MACS3_CONSENSUS.out.boolean_txt.join(HOMER_ANNOTATEPEAKS.out.txt, by: [0]), ) - ch_versions = ch_versions.mix(ANNOTATE_BOOLEAN_PEAKS.out.versions) } // Create channels: [ meta, [ ip_bams ], saf ] @@ -101,7 +97,6 @@ workflow BED_CONSENSUS_QUANTIFY_QC_BEDTOOLS_FEATURECOUNTS_DESEQ2 { SUBREAD_FEATURECOUNTS ( ch_bam_saf ) - ch_versions = ch_versions.mix(SUBREAD_FEATURECOUNTS.out.versions) // // Generate QC plots with DESeq2 @@ -130,7 +125,6 @@ workflow BED_CONSENSUS_QUANTIFY_QC_BEDTOOLS_FEATURECOUNTS_DESEQ2 { ch_deseq2_qc_dists_multiqc = DESEQ2_QC.out.dists_multiqc ch_deseq2_qc_log = DESEQ2_QC.out.log ch_deseq2_qc_size_factors = DESEQ2_QC.out.size_factors - ch_versions = ch_versions.mix(DESEQ2_QC.out.versions) } emit: @@ -153,6 +147,4 @@ workflow BED_CONSENSUS_QUANTIFY_QC_BEDTOOLS_FEATURECOUNTS_DESEQ2 { deseq2_qc_dists_multiqc = ch_deseq2_qc_dists_multiqc // channel: [ txt ] deseq2_qc_log = ch_deseq2_qc_log // channel: [ txt ] deseq2_qc_size_factors = ch_deseq2_qc_size_factors // channel: [ txt ] - - versions = ch_versions // channel: [ versions.yml ] } diff --git a/subworkflows/local/input_check.nf b/subworkflows/local/input_check/main.nf similarity index 95% rename from subworkflows/local/input_check.nf rename to subworkflows/local/input_check/main.nf index 40e20bd1e..6315dea14 100644 --- a/subworkflows/local/input_check.nf +++ b/subworkflows/local/input_check/main.nf @@ -2,7 +2,7 @@ // Check input samplesheet and get read channels // -include { SAMPLESHEET_CHECK } from '../../modules/local/samplesheet_check' +include { SAMPLESHEET_CHECK } from '../../../modules/local/samplesheet_check/main' workflow INPUT_CHECK { take: diff --git a/subworkflows/local/prepare_genome.nf b/subworkflows/local/prepare_genome/main.nf similarity index 71% rename from subworkflows/local/prepare_genome.nf rename to subworkflows/local/prepare_genome/main.nf index 0e3144778..7de16a584 100644 --- a/subworkflows/local/prepare_genome.nf +++ b/subworkflows/local/prepare_genome/main.nf @@ -8,24 +8,24 @@ include { GUNZIP as GUNZIP_GFF ; GUNZIP as GUNZIP_GENE_BED ; GUNZIP as GUNZIP_BLACKLIST -} from '../../modules/nf-core/gunzip/main' +} from '../../../modules/nf-core/gunzip/main' include { UNTAR as UNTAR_BWA_INDEX ; UNTAR as UNTAR_BOWTIE2_INDEX ; UNTAR as UNTAR_STAR_INDEX -} from '../../modules/nf-core/untar/main' +} from '../../../modules/nf-core/untar/main' -include { UNTARFILES } from '../../modules/nf-core/untarfiles/main' -include { GFFREAD } from '../../modules/nf-core/gffread/main' -include { CUSTOM_GETCHROMSIZES } from '../../modules/nf-core/custom/getchromsizes/main' -include { BWA_INDEX } from '../../modules/nf-core/bwa/index/main' -include { BOWTIE2_BUILD } from '../../modules/nf-core/bowtie2/build/main' -include { CHROMAP_INDEX } from '../../modules/nf-core/chromap/index/main' +include { UNTARFILES } from '../../../modules/nf-core/untarfiles/main' +include { GFFREAD } from '../../../modules/nf-core/gffread/main' +include { SAMTOOLS_FAIDX } from '../../../modules/nf-core/samtools/faidx/main' +include { BWA_INDEX } from '../../../modules/nf-core/bwa/index/main' +include { BOWTIE2_BUILD } from '../../../modules/nf-core/bowtie2/build/main' +include { CHROMAP_INDEX } from '../../../modules/nf-core/chromap/index/main' -include { GTF2BED } from '../../modules/local/gtf2bed' -include { GENOME_BLACKLIST_REGIONS } from '../../modules/local/genome_blacklist_regions' -include { STAR_GENOMEGENERATE } from '../../modules/local/star_genomegenerate' +include { GTF2BED } from '../../../modules/local/gtf2bed/main' +include { GENOME_BLACKLIST_REGIONS } from '../../../modules/local/genome_blacklist_regions/main' +include { STAR_GENOMEGENERATE } from '../../../modules/local/star_genomegenerate/main' workflow PREPARE_GENOME { take: @@ -44,15 +44,12 @@ workflow PREPARE_GENOME { main: - ch_versions = Channel.empty() - // // Uncompress genome fasta file if required // ch_fasta = Channel.empty() if (fasta.endsWith('.gz')) { ch_fasta = GUNZIP_FASTA([[:], fasta]).gunzip.map { it[1] } - ch_versions = ch_versions.mix(GUNZIP_FASTA.out.versions) } else { ch_fasta = Channel.value(file(fasta, checkIfExists: true)) @@ -64,20 +61,17 @@ workflow PREPARE_GENOME { if (gtf) { if (gtf.endsWith('.gz')) { ch_gtf = GUNZIP_GTF([[:], gtf]).gunzip.map { it[1] } - ch_versions = ch_versions.mix(GUNZIP_GTF.out.versions) } else { ch_gtf = Channel.value(file(gtf, checkIfExists: true)) } } else if (gff) { if (gff.endsWith('.gz')) { ch_gff = GUNZIP_GFF([[:], file(gff, checkIfExists: true)]).gunzip.map { it[1] } - ch_versions = ch_versions.mix(GUNZIP_GFF.out.versions) } else { ch_gff = Channel.value(file(gff, checkIfExists: true)).map { [ [:], it ] } } ch_gtf = GFFREAD(ch_gff, []).gtf.map { it[1] } - ch_versions = ch_versions.mix(GFFREAD.out.versions) } // @@ -87,7 +81,6 @@ workflow PREPARE_GENOME { if (blacklist) { if (blacklist.endsWith('.gz')) { ch_blacklist = GUNZIP_BLACKLIST([[:], blacklist]).gunzip.map { it[1] } - ch_versions = ch_versions.mix(GUNZIP_BLACKLIST.out.versions) } else { ch_blacklist = Channel.value(file(blacklist)) } @@ -110,11 +103,9 @@ workflow PREPARE_GENOME { if (make_bed) { ch_gene_bed = GTF2BED(ch_gtf).bed - ch_versions = ch_versions.mix(GTF2BED.out.versions) } else { if (gene_bed.endsWith('.gz')) { ch_gene_bed = GUNZIP_GENE_BED([[:], gene_bed]).gunzip.map { it[1] } - ch_versions = ch_versions.mix(GUNZIP_GENE_BED.out.versions) } else { ch_gene_bed = Channel.value(file(gene_bed)) } @@ -123,10 +114,12 @@ workflow PREPARE_GENOME { // // Create chromosome sizes file // - CUSTOM_GETCHROMSIZES(ch_fasta.map { [[:], it] }) - ch_chrom_sizes = CUSTOM_GETCHROMSIZES.out.sizes.map { it[1] } - ch_fai = CUSTOM_GETCHROMSIZES.out.fai.map { it[1] } - ch_versions = ch_versions.mix(CUSTOM_GETCHROMSIZES.out.versions) + ch_chrom_sizes = channel.empty() + ch_fai = channel.empty() + + SAMTOOLS_FAIDX(ch_fasta.map { item -> [ [:], item, [] ] }, true) + ch_chrom_sizes = SAMTOOLS_FAIDX.out.sizes.map { tuple -> tuple[1] } + ch_fai = SAMTOOLS_FAIDX.out.fai.map { tuple -> tuple[1] } // // Prepare genome intervals for filtering by removing regions in blacklist file @@ -138,7 +131,6 @@ workflow PREPARE_GENOME { ch_blacklist.ifEmpty([]) ) ch_genome_filtered_bed = GENOME_BLACKLIST_REGIONS.out.bed - ch_versions = ch_versions.mix(GENOME_BLACKLIST_REGIONS.out.versions) // // Uncompress BWA index or generate from scratch if required @@ -148,13 +140,11 @@ workflow PREPARE_GENOME { if (bwa_index) { if (bwa_index.endsWith('.tar.gz')) { ch_bwa_index = UNTAR_BWA_INDEX([[:], bwa_index]).untar - ch_versions = ch_versions.mix(UNTAR_BWA_INDEX.out.versions) } else { ch_bwa_index = [[:], file(bwa_index)] } } else { ch_bwa_index = BWA_INDEX(ch_fasta.map { [[:], it] }).index - ch_versions = ch_versions.mix(BWA_INDEX.out.versions) } } @@ -166,13 +156,11 @@ workflow PREPARE_GENOME { if (bowtie2_index) { if (bowtie2_index.endsWith('.tar.gz')) { ch_bowtie2_index = UNTAR_BOWTIE2_INDEX([[:], bowtie2_index]).untar - ch_versions = ch_versions.mix(UNTAR_BOWTIE2_INDEX.out.versions) } else { ch_bowtie2_index = [[:], file(bowtie2_index)] } } else { ch_bowtie2_index = BOWTIE2_BUILD(ch_fasta.map { [[:], it] }).index - ch_versions = ch_versions.mix(BOWTIE2_BUILD.out.versions) } } @@ -184,13 +172,11 @@ workflow PREPARE_GENOME { if (chromap_index) { if (chromap_index.endsWith('.tar.gz')) { ch_chromap_index = UNTARFILES([[:], chromap_index]).files - ch_versions = ch_versions.mix(UNTARFILES.out.versions) } else { ch_chromap_index = [[:], file(chromap_index)] } } else { ch_chromap_index = CHROMAP_INDEX(ch_fasta.map { [[:], it] }).index - ch_versions = ch_versions.mix(CHROMAP_INDEX.out.versions) } } @@ -202,13 +188,11 @@ workflow PREPARE_GENOME { if (star_index) { if (star_index.endsWith('.tar.gz')) { ch_star_index = UNTAR_STAR_INDEX([[:], star_index]).untar.map { it[1] } - ch_versions = ch_versions.mix(UNTAR_STAR_INDEX.out.versions) } else { ch_star_index = Channel.value(file(star_index)) } } else { ch_star_index = STAR_GENOMEGENERATE(ch_fasta, ch_gtf).index - ch_versions = ch_versions.mix(STAR_GENOMEGENERATE.out.versions) } } @@ -223,5 +207,4 @@ workflow PREPARE_GENOME { bowtie2_index = ch_bowtie2_index // path: bowtie2/index/ chromap_index = ch_chromap_index // path: genome.index star_index = ch_star_index // path: star/index/ - versions = ch_versions.ifEmpty(null) // channel: [ versions.yml ] } diff --git a/subworkflows/local/utils_nfcore_chipseq_pipeline/main.nf b/subworkflows/local/utils_nfcore_chipseq_pipeline/main.nf index d108a9846..c34aac348 100644 --- a/subworkflows/local/utils_nfcore_chipseq_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_chipseq_pipeline/main.nf @@ -14,7 +14,6 @@ include { samplesheetToList } from 'plugin/nf-schema' include { paramsHelp } from 'plugin/nf-schema' include { completionEmail } from '../../nf-core/utils_nfcore_pipeline' include { completionSummary } from '../../nf-core/utils_nfcore_pipeline' -include { imNotification } from '../../nf-core/utils_nfcore_pipeline' include { UTILS_NFCORE_PIPELINE } from '../../nf-core/utils_nfcore_pipeline' include { UTILS_NEXTFLOW_PIPELINE } from '../../nf-core/utils_nextflow_pipeline' @@ -39,7 +38,6 @@ workflow PIPELINE_INITIALISATION { main: - ch_versions = channel.empty() // // Print version and exit if required and dump pipeline parameters to JSON file @@ -105,7 +103,6 @@ workflow PIPELINE_INITIALISATION { emit: samplesheet = ch_samplesheet - versions = ch_versions } /* @@ -146,9 +143,7 @@ workflow PIPELINE_COMPLETION { } completionSummary(monochrome_logs) - if (hook_url) { - imNotification(summary_params, hook_url) - } + } workflow.onError { diff --git a/subworkflows/nf-core/bam_markduplicates_picard/main.nf b/subworkflows/nf-core/bam_markduplicates_picard/main.nf index 2de059b84..c33064eb8 100644 --- a/subworkflows/nf-core/bam_markduplicates_picard/main.nf +++ b/subworkflows/nf-core/bam_markduplicates_picard/main.nf @@ -10,20 +10,15 @@ workflow BAM_MARKDUPLICATES_PICARD { take: ch_reads // channel: [ val(meta), path(reads) ] - ch_fasta // channel: [ path(fasta) ] - ch_fai // channel: [ path(fai) ] + ch_fasta // channel: [ val(meta), path(fasta) ] + ch_fai // channel: [ val(meta), path(fai) ] main: - - ch_versions = Channel.empty() - PICARD_MARKDUPLICATES ( ch_reads, ch_fasta, ch_fai ) - ch_versions = ch_versions.mix(PICARD_MARKDUPLICATES.out.versions.first()) ch_markdup = PICARD_MARKDUPLICATES.out.bam.mix(PICARD_MARKDUPLICATES.out.cram) SAMTOOLS_INDEX ( ch_markdup ) - ch_versions = ch_versions.mix(SAMTOOLS_INDEX.out.versions.first()) ch_reads_index = ch_markdup .join(SAMTOOLS_INDEX.out.bai, by: [0], remainder: true) @@ -36,7 +31,6 @@ workflow BAM_MARKDUPLICATES_PICARD { } BAM_STATS_SAMTOOLS ( ch_reads_index, ch_fasta ) - ch_versions = ch_versions.mix(BAM_STATS_SAMTOOLS.out.versions) emit: bam = PICARD_MARKDUPLICATES.out.bam // channel: [ val(meta), path(bam) ] @@ -49,6 +43,4 @@ workflow BAM_MARKDUPLICATES_PICARD { stats = BAM_STATS_SAMTOOLS.out.stats // channel: [ val(meta), path(stats) ] flagstat = BAM_STATS_SAMTOOLS.out.flagstat // channel: [ val(meta), path(flagstat) ] idxstats = BAM_STATS_SAMTOOLS.out.idxstats // channel: [ val(meta), path(idxstats) ] - - versions = ch_versions // channel: [ versions.yml ] } diff --git a/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test b/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test index 420cc702a..816ff3efa 100644 --- a/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test +++ b/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test @@ -3,6 +3,7 @@ nextflow_workflow { name "Test Workflow BAM_MARKDUPLICATES_PICARD" script "../main.nf" workflow "BAM_MARKDUPLICATES_PICARD" + config "./nextflow.config" tag "picard" tag "picard/markduplicates" @@ -48,8 +49,7 @@ nextflow_workflow { path(workflow.out.bai[0][1]), path(workflow.out.flagstat[0][1]), path(workflow.out.idxstats[0][1]), - path(workflow.out.stats[0][1]), - workflow.out.versions + path(workflow.out.stats[0][1]) ).match() } ) } @@ -85,8 +85,7 @@ nextflow_workflow { path(workflow.out.crai[0][1]), path(workflow.out.flagstat[0][1]), path(workflow.out.idxstats[0][1]), - path(workflow.out.stats[0][1]), - workflow.out.versions + path(workflow.out.stats[0][1]) ).match() } ) } diff --git a/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test.snap b/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test.snap index aecaef935..bfa595e9c 100644 --- a/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test.snap +++ b/subworkflows/nf-core/bam_markduplicates_picard/tests/main.nf.test.snap @@ -1,24 +1,17 @@ { "homo_sapiens - cram": { "content": [ - "test.cram", - "test.cram.crai:md5,cb5268070f99cdd0d86f43613e5fc7db", + "test.md.cram", + "test.md.cram.crai:md5,b641c19be42d4841ec7155c686b70f39", "test.flagstat:md5,93b0ef463df947ede1f42ff60396c34d", "test.idxstats:md5,e179601fa7b8ebce81ac3765206f6c15", - "test.stats:md5,372a7d9d9081aa009b21343a913beb14", - [ - "versions.yml:md5,0d170c963555870ac9a0d438bf6c2f93", - "versions.yml:md5,3729819c49e6d8eed9ada247e5d77de1", - "versions.yml:md5,a62ca6eb27e59dd6f03a93fa8656e656", - "versions.yml:md5,adb00ecc904d3a27f552c360ac35a8a9", - "versions.yml:md5,fcf804c605f455127f2449403d70390c" - ] + "test.stats:md5,8ec963e4ee888c8cc9d41348cedd5106" ], + "timestamp": "2026-02-19T19:00:47.4418381", "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-07-10T09:50:25.483402093" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } }, "sarscov2 - bam - stub": { "content": [ @@ -29,7 +22,7 @@ "id": "test", "single_end": false }, - "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.md.bam:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "1": [ @@ -41,7 +34,7 @@ "id": "test", "single_end": false }, - "test.MarkDuplicates.metrics.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.md.metrics.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "3": [ @@ -50,7 +43,7 @@ "id": "test", "single_end": false }, - "test.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.md.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "4": [ @@ -74,7 +67,7 @@ "id": "test", "single_end": false }, - "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.flagstat:md5,67394650dbae96d1a4fcc70484822159" ] ], "8": [ @@ -86,20 +79,13 @@ "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "9": [ - "versions.yml:md5,0d170c963555870ac9a0d438bf6c2f93", - "versions.yml:md5,3729819c49e6d8eed9ada247e5d77de1", - "versions.yml:md5,a62ca6eb27e59dd6f03a93fa8656e656", - "versions.yml:md5,adb00ecc904d3a27f552c360ac35a8a9", - "versions.yml:md5,fcf804c605f455127f2449403d70390c" - ], "bai": [ [ { "id": "test", "single_end": false }, - "test.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.md.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "bam": [ @@ -108,7 +94,7 @@ "id": "test", "single_end": false }, - "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.md.bam:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "crai": [ @@ -126,7 +112,7 @@ "id": "test", "single_end": false }, - "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.flagstat:md5,67394650dbae96d1a4fcc70484822159" ] ], "idxstats": [ @@ -144,7 +130,7 @@ "id": "test", "single_end": false }, - "test.MarkDuplicates.metrics.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.md.metrics.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "stats": [ @@ -155,21 +141,14 @@ }, "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" ] - ], - "versions": [ - "versions.yml:md5,0d170c963555870ac9a0d438bf6c2f93", - "versions.yml:md5,3729819c49e6d8eed9ada247e5d77de1", - "versions.yml:md5,a62ca6eb27e59dd6f03a93fa8656e656", - "versions.yml:md5,adb00ecc904d3a27f552c360ac35a8a9", - "versions.yml:md5,fcf804c605f455127f2449403d70390c" ] } ], + "timestamp": "2026-02-19T19:00:56.802484512", "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" - }, - "timestamp": "2024-07-22T17:40:02.492073" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } }, "homo_sapiens - cram - stub": { "content": [ @@ -182,7 +161,7 @@ { "id": "test" }, - "test.cram:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.md.cram:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "2": [ @@ -190,7 +169,7 @@ { "id": "test" }, - "test.MarkDuplicates.metrics.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.md.metrics.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "3": [ @@ -201,7 +180,7 @@ { "id": "test" }, - "test.cram.crai:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.md.cram.crai:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "5": [ @@ -220,7 +199,7 @@ { "id": "test" }, - "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.flagstat:md5,67394650dbae96d1a4fcc70484822159" ] ], "8": [ @@ -231,13 +210,6 @@ "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "9": [ - "versions.yml:md5,0d170c963555870ac9a0d438bf6c2f93", - "versions.yml:md5,3729819c49e6d8eed9ada247e5d77de1", - "versions.yml:md5,a62ca6eb27e59dd6f03a93fa8656e656", - "versions.yml:md5,adb00ecc904d3a27f552c360ac35a8a9", - "versions.yml:md5,fcf804c605f455127f2449403d70390c" - ], "bai": [ ], @@ -249,7 +221,7 @@ { "id": "test" }, - "test.cram.crai:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.md.cram.crai:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "cram": [ @@ -257,7 +229,7 @@ { "id": "test" }, - "test.cram:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.md.cram:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "csi": [ @@ -268,7 +240,7 @@ { "id": "test" }, - "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.flagstat:md5,67394650dbae96d1a4fcc70484822159" ] ], "idxstats": [ @@ -284,7 +256,7 @@ { "id": "test" }, - "test.MarkDuplicates.metrics.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.md.metrics.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "stats": [ @@ -294,41 +266,27 @@ }, "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" ] - ], - "versions": [ - "versions.yml:md5,0d170c963555870ac9a0d438bf6c2f93", - "versions.yml:md5,3729819c49e6d8eed9ada247e5d77de1", - "versions.yml:md5,a62ca6eb27e59dd6f03a93fa8656e656", - "versions.yml:md5,adb00ecc904d3a27f552c360ac35a8a9", - "versions.yml:md5,fcf804c605f455127f2449403d70390c" ] } ], + "timestamp": "2026-02-19T19:01:05.884074864", "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" - }, - "timestamp": "2024-07-22T17:40:24.423583" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } }, "sarscov2 - bam": { "content": [ - "test.bam:md5,d1a53820e4a6e42ca8aceab51d74cf57", - "test.bam.bai:md5,be9485a644813773fb893a0a6b9b977c", + "test.md.bam:md5,8aa8fc57298588fed0b03aacddd7ea77", + "test.md.bam.bai:md5,8973dd987f3ac6c352716ef89139c567", "test.flagstat:md5,4f7ffd1e6a5e85524d443209ac97d783", "test.idxstats:md5,df60a8c8d6621100d05178c93fb053a2", - "test.stats:md5,cca83e4fc9406fc3875b5e60055d6574", - [ - "versions.yml:md5,0d170c963555870ac9a0d438bf6c2f93", - "versions.yml:md5,3729819c49e6d8eed9ada247e5d77de1", - "versions.yml:md5,a62ca6eb27e59dd6f03a93fa8656e656", - "versions.yml:md5,adb00ecc904d3a27f552c360ac35a8a9", - "versions.yml:md5,fcf804c605f455127f2449403d70390c" - ] + "test.stats:md5,950c07a54b20e443105a5391400a4c92" ], + "timestamp": "2026-02-19T19:00:36.539092187", "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-07-10T09:50:01.597322113" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } } } \ No newline at end of file diff --git a/subworkflows/nf-core/bam_markduplicates_picard/tests/nextflow.config b/subworkflows/nf-core/bam_markduplicates_picard/tests/nextflow.config new file mode 100644 index 000000000..2427cc4a7 --- /dev/null +++ b/subworkflows/nf-core/bam_markduplicates_picard/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: 'PICARD_MARKDUPLICATES' { + ext.prefix = { "${meta.id}.md" } + } +} diff --git a/subworkflows/nf-core/bam_markduplicates_picard/tests/tags.yml b/subworkflows/nf-core/bam_markduplicates_picard/tests/tags.yml deleted file mode 100644 index 10b852706..000000000 --- a/subworkflows/nf-core/bam_markduplicates_picard/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -subworkflows/bam_markduplicates_picard: - - subworkflows/nf-core/bam_markduplicates_picard/** diff --git a/subworkflows/nf-core/bam_sort_stats_samtools/main.nf b/subworkflows/nf-core/bam_sort_stats_samtools/main.nf index b716375b0..312c2d244 100644 --- a/subworkflows/nf-core/bam_sort_stats_samtools/main.nf +++ b/subworkflows/nf-core/bam_sort_stats_samtools/main.nf @@ -12,14 +12,9 @@ workflow BAM_SORT_STATS_SAMTOOLS { ch_fasta // channel: [ val(meta), path(fasta) ] main: - - ch_versions = Channel.empty() - - SAMTOOLS_SORT ( ch_bam, ch_fasta ) - ch_versions = ch_versions.mix(SAMTOOLS_SORT.out.versions.first()) + SAMTOOLS_SORT ( ch_bam, ch_fasta, '' ) SAMTOOLS_INDEX ( SAMTOOLS_SORT.out.bam ) - ch_versions = ch_versions.mix(SAMTOOLS_INDEX.out.versions.first()) SAMTOOLS_SORT.out.bam .join(SAMTOOLS_INDEX.out.bai, by: [0], remainder: true) @@ -35,7 +30,6 @@ workflow BAM_SORT_STATS_SAMTOOLS { .set { ch_bam_bai } BAM_STATS_SAMTOOLS ( ch_bam_bai, ch_fasta ) - ch_versions = ch_versions.mix(BAM_STATS_SAMTOOLS.out.versions) emit: bam = SAMTOOLS_SORT.out.bam // channel: [ val(meta), [ bam ] ] @@ -45,6 +39,4 @@ workflow BAM_SORT_STATS_SAMTOOLS { stats = BAM_STATS_SAMTOOLS.out.stats // channel: [ val(meta), [ stats ] ] flagstat = BAM_STATS_SAMTOOLS.out.flagstat // channel: [ val(meta), [ flagstat ] ] idxstats = BAM_STATS_SAMTOOLS.out.idxstats // channel: [ val(meta), [ idxstats ] ] - - versions = ch_versions // channel: [ versions.yml ] } diff --git a/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test b/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test index 821a3cf50..c58412894 100644 --- a/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test +++ b/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test @@ -41,8 +41,7 @@ nextflow_workflow { { assert snapshot( workflow.out.flagstat, workflow.out.idxstats, - workflow.out.stats, - workflow.out.versions).match() } + workflow.out.stats).match() } ) } } @@ -72,8 +71,7 @@ nextflow_workflow { { assert snapshot( workflow.out.flagstat, workflow.out.idxstats, - workflow.out.stats, - workflow.out.versions).match() } + workflow.out.stats).match() } ) } } diff --git a/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test.snap b/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test.snap index b7f4da177..f62d68c93 100644 --- a/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test.snap +++ b/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test.snap @@ -25,22 +25,15 @@ "id": "test", "single_end": false }, - "test.stats:md5,d32de3b3716a11039cef2367c3c1a56e" + "test.stats:md5,1101fe711c4a389fdb5c4a1532107d1f" ] - ], - [ - "versions.yml:md5,494b5530a1aa29fd5867cf655bebbfe1", - "versions.yml:md5,9fcb0cd845bfb1f89d83201bb20649b4", - "versions.yml:md5,bacc323ec4055d6f69f07a09089772d1", - "versions.yml:md5,ce946e97097c6a9ccf834a3f91f6da30", - "versions.yml:md5,d6c8dae685f1b7d050165fc15c7a20b5" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-07-22T17:02:44.34964" + "timestamp": "2026-02-03T11:33:01.647190952" }, "test_bam_sort_stats_samtools_paired_end": { "content": [ @@ -68,22 +61,15 @@ "id": "test", "single_end": false }, - "test.stats:md5,cca83e4fc9406fc3875b5e60055d6574" + "test.stats:md5,f26c554c244ee86c89d62ebed509fd95" ] - ], - [ - "versions.yml:md5,494b5530a1aa29fd5867cf655bebbfe1", - "versions.yml:md5,9fcb0cd845bfb1f89d83201bb20649b4", - "versions.yml:md5,bacc323ec4055d6f69f07a09089772d1", - "versions.yml:md5,ce946e97097c6a9ccf834a3f91f6da30", - "versions.yml:md5,d6c8dae685f1b7d050165fc15c7a20b5" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-07-22T17:03:02.583095" + "timestamp": "2026-02-03T11:33:08.706742267" }, "test_bam_sort_stats_samtools_single_end - stub": { "content": [ @@ -124,7 +110,7 @@ "id": "test", "single_end": false }, - "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.flagstat:md5,67394650dbae96d1a4fcc70484822159" ] ], "5": [ @@ -136,13 +122,6 @@ "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "6": [ - "versions.yml:md5,494b5530a1aa29fd5867cf655bebbfe1", - "versions.yml:md5,9fcb0cd845bfb1f89d83201bb20649b4", - "versions.yml:md5,bacc323ec4055d6f69f07a09089772d1", - "versions.yml:md5,ce946e97097c6a9ccf834a3f91f6da30", - "versions.yml:md5,d6c8dae685f1b7d050165fc15c7a20b5" - ], "bai": [ [ { @@ -170,7 +149,7 @@ "id": "test", "single_end": false }, - "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.flagstat:md5,67394650dbae96d1a4fcc70484822159" ] ], "idxstats": [ @@ -190,21 +169,14 @@ }, "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" ] - ], - "versions": [ - "versions.yml:md5,494b5530a1aa29fd5867cf655bebbfe1", - "versions.yml:md5,9fcb0cd845bfb1f89d83201bb20649b4", - "versions.yml:md5,bacc323ec4055d6f69f07a09089772d1", - "versions.yml:md5,ce946e97097c6a9ccf834a3f91f6da30", - "versions.yml:md5,d6c8dae685f1b7d050165fc15c7a20b5" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-07-22T17:03:22.328703" + "timestamp": "2026-02-03T11:11:02.1412136" }, "test_bam_sort_stats_samtools_paired_end - stub": { "content": [ @@ -245,7 +217,7 @@ "id": "test", "single_end": false }, - "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.flagstat:md5,67394650dbae96d1a4fcc70484822159" ] ], "5": [ @@ -257,13 +229,6 @@ "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "6": [ - "versions.yml:md5,494b5530a1aa29fd5867cf655bebbfe1", - "versions.yml:md5,9fcb0cd845bfb1f89d83201bb20649b4", - "versions.yml:md5,bacc323ec4055d6f69f07a09089772d1", - "versions.yml:md5,ce946e97097c6a9ccf834a3f91f6da30", - "versions.yml:md5,d6c8dae685f1b7d050165fc15c7a20b5" - ], "bai": [ [ { @@ -291,7 +256,7 @@ "id": "test", "single_end": false }, - "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.flagstat:md5,67394650dbae96d1a4fcc70484822159" ] ], "idxstats": [ @@ -311,20 +276,13 @@ }, "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" ] - ], - "versions": [ - "versions.yml:md5,494b5530a1aa29fd5867cf655bebbfe1", - "versions.yml:md5,9fcb0cd845bfb1f89d83201bb20649b4", - "versions.yml:md5,bacc323ec4055d6f69f07a09089772d1", - "versions.yml:md5,ce946e97097c6a9ccf834a3f91f6da30", - "versions.yml:md5,d6c8dae685f1b7d050165fc15c7a20b5" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-07-22T17:03:38.833662" + "timestamp": "2026-02-03T11:11:09.165267895" } } \ No newline at end of file diff --git a/subworkflows/nf-core/bam_sort_stats_samtools/tests/tags.yml b/subworkflows/nf-core/bam_sort_stats_samtools/tests/tags.yml deleted file mode 100644 index 30b69d6a4..000000000 --- a/subworkflows/nf-core/bam_sort_stats_samtools/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -subworkflows/bam_sort_stats_samtools: - - subworkflows/nf-core/bam_sort_stats_samtools/** diff --git a/subworkflows/nf-core/bam_stats_samtools/main.nf b/subworkflows/nf-core/bam_stats_samtools/main.nf index 44d4c010a..34e8fe104 100644 --- a/subworkflows/nf-core/bam_stats_samtools/main.nf +++ b/subworkflows/nf-core/bam_stats_samtools/main.nf @@ -12,21 +12,14 @@ workflow BAM_STATS_SAMTOOLS { ch_fasta // channel: [ val(meta), path(fasta) ] main: - ch_versions = Channel.empty() - SAMTOOLS_STATS ( ch_bam_bai, ch_fasta ) - ch_versions = ch_versions.mix(SAMTOOLS_STATS.out.versions) SAMTOOLS_FLAGSTAT ( ch_bam_bai ) - ch_versions = ch_versions.mix(SAMTOOLS_FLAGSTAT.out.versions) SAMTOOLS_IDXSTATS ( ch_bam_bai ) - ch_versions = ch_versions.mix(SAMTOOLS_IDXSTATS.out.versions) emit: stats = SAMTOOLS_STATS.out.stats // channel: [ val(meta), path(stats) ] flagstat = SAMTOOLS_FLAGSTAT.out.flagstat // channel: [ val(meta), path(flagstat) ] idxstats = SAMTOOLS_IDXSTATS.out.idxstats // channel: [ val(meta), path(idxstats) ] - - versions = ch_versions // channel: [ path(versions.yml) ] } diff --git a/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test b/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test index 76e7a40a0..2f329695b 100644 --- a/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test +++ b/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test @@ -36,8 +36,7 @@ nextflow_workflow { { assert snapshot( workflow.out.flagstat, workflow.out.idxstats, - workflow.out.stats, - workflow.out.versions).match() } + workflow.out.stats).match() } ) } } @@ -66,8 +65,7 @@ nextflow_workflow { { assert snapshot( workflow.out.flagstat, workflow.out.idxstats, - workflow.out.stats, - workflow.out.versions).match() } + workflow.out.stats).match() } ) } } @@ -96,8 +94,7 @@ nextflow_workflow { { assert snapshot( workflow.out.flagstat, workflow.out.idxstats, - workflow.out.stats, - workflow.out.versions).match() } + workflow.out.stats).match() } ) } } diff --git a/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test.snap b/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test.snap index a3ddcc5ce..9c8ff1b51 100644 --- a/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test.snap +++ b/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test.snap @@ -17,7 +17,7 @@ "id": "test", "single_end": true }, - "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.flagstat:md5,67394650dbae96d1a4fcc70484822159" ] ], "2": [ @@ -29,18 +29,13 @@ "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "3": [ - "versions.yml:md5,3c485730f712b115bcdc235e7294133b", - "versions.yml:md5,90f593a26a2d53e0f0345df7888f448e", - "versions.yml:md5,9ae003814e63a0907d52eec64d5d3ca3" - ], "flagstat": [ [ { "id": "test", "single_end": true }, - "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.flagstat:md5,67394650dbae96d1a4fcc70484822159" ] ], "idxstats": [ @@ -60,19 +55,14 @@ }, "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" ] - ], - "versions": [ - "versions.yml:md5,3c485730f712b115bcdc235e7294133b", - "versions.yml:md5,90f593a26a2d53e0f0345df7888f448e", - "versions.yml:md5,9ae003814e63a0907d52eec64d5d3ca3" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-07-03T12:20:06.699297" + "timestamp": "2026-02-03T11:10:30.076183827" }, "test_bam_stats_samtools_single_end - stub": { "content": [ @@ -92,7 +82,7 @@ "id": "test", "single_end": true }, - "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.flagstat:md5,67394650dbae96d1a4fcc70484822159" ] ], "2": [ @@ -104,18 +94,13 @@ "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "3": [ - "versions.yml:md5,3c485730f712b115bcdc235e7294133b", - "versions.yml:md5,90f593a26a2d53e0f0345df7888f448e", - "versions.yml:md5,9ae003814e63a0907d52eec64d5d3ca3" - ], "flagstat": [ [ { "id": "test", "single_end": true }, - "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.flagstat:md5,67394650dbae96d1a4fcc70484822159" ] ], "idxstats": [ @@ -135,19 +120,14 @@ }, "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" ] - ], - "versions": [ - "versions.yml:md5,3c485730f712b115bcdc235e7294133b", - "versions.yml:md5,90f593a26a2d53e0f0345df7888f448e", - "versions.yml:md5,9ae003814e63a0907d52eec64d5d3ca3" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-07-03T12:19:57.708621" + "timestamp": "2026-02-03T11:10:24.379362883" }, "test_bam_stats_samtools_paired_end_cram - stub": { "content": [ @@ -167,7 +147,7 @@ "id": "test", "single_end": false }, - "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.flagstat:md5,67394650dbae96d1a4fcc70484822159" ] ], "2": [ @@ -179,18 +159,13 @@ "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "3": [ - "versions.yml:md5,3c485730f712b115bcdc235e7294133b", - "versions.yml:md5,90f593a26a2d53e0f0345df7888f448e", - "versions.yml:md5,9ae003814e63a0907d52eec64d5d3ca3" - ], "flagstat": [ [ { "id": "test", "single_end": false }, - "test.flagstat:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.flagstat:md5,67394650dbae96d1a4fcc70484822159" ] ], "idxstats": [ @@ -210,19 +185,14 @@ }, "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" ] - ], - "versions": [ - "versions.yml:md5,3c485730f712b115bcdc235e7294133b", - "versions.yml:md5,90f593a26a2d53e0f0345df7888f448e", - "versions.yml:md5,9ae003814e63a0907d52eec64d5d3ca3" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-07-03T12:20:17.051493" + "timestamp": "2026-02-03T11:10:35.91658956" }, "test_bam_stats_samtools_single_end": { "content": [ @@ -250,20 +220,15 @@ "id": "test", "single_end": true }, - "test.stats:md5,4a0c429c661d6aa0b60acb9309da642d" + "test.stats:md5,7a05a22bdb17e8df6e8c2d100ff09a31" ] - ], - [ - "versions.yml:md5,3c485730f712b115bcdc235e7294133b", - "versions.yml:md5,90f593a26a2d53e0f0345df7888f448e", - "versions.yml:md5,9ae003814e63a0907d52eec64d5d3ca3" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-07-03T12:19:25.801394" + "timestamp": "2026-02-03T11:32:20.243663217" }, "test_bam_stats_samtools_paired_end": { "content": [ @@ -291,20 +256,15 @@ "id": "test", "single_end": true }, - "test.stats:md5,7afd486ad6abb9a2a3dac90c99e1d87b" + "test.stats:md5,a391612b5ef5b181e854ccaad8c8a068" ] - ], - [ - "versions.yml:md5,3c485730f712b115bcdc235e7294133b", - "versions.yml:md5,90f593a26a2d53e0f0345df7888f448e", - "versions.yml:md5,9ae003814e63a0907d52eec64d5d3ca3" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-07-03T12:19:36.158768" + "timestamp": "2026-02-03T11:32:26.434187887" }, "test_bam_stats_samtools_paired_end_cram": { "content": [ @@ -332,19 +292,14 @@ "id": "test", "single_end": false }, - "test.stats:md5,16b59a1f2c99d9fe30f711adc3ebe32d" + "test.stats:md5,2b0e31ab01b867a6ff312023ae03838d" ] - ], - [ - "versions.yml:md5,3c485730f712b115bcdc235e7294133b", - "versions.yml:md5,90f593a26a2d53e0f0345df7888f448e", - "versions.yml:md5,9ae003814e63a0907d52eec64d5d3ca3" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-07-03T12:19:46.625907" + "timestamp": "2026-02-03T11:32:32.441454186" } } \ No newline at end of file diff --git a/subworkflows/nf-core/bam_stats_samtools/tests/tags.yml b/subworkflows/nf-core/bam_stats_samtools/tests/tags.yml deleted file mode 100644 index ec2f2d68f..000000000 --- a/subworkflows/nf-core/bam_stats_samtools/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -subworkflows/bam_stats_samtools: - - subworkflows/nf-core/bam_stats_samtools/** diff --git a/subworkflows/nf-core/fastq_align_bowtie2/main.nf b/subworkflows/nf-core/fastq_align_bowtie2/main.nf index cafaa9bf9..8cbc51418 100644 --- a/subworkflows/nf-core/fastq_align_bowtie2/main.nf +++ b/subworkflows/nf-core/fastq_align_bowtie2/main.nf @@ -15,19 +15,17 @@ workflow FASTQ_ALIGN_BOWTIE2 { main: - ch_versions = Channel.empty() + ch_versions = channel.empty() // // Map reads with Bowtie2 // BOWTIE2_ALIGN ( ch_reads, ch_index, ch_fasta, save_unaligned, sort_bam ) - ch_versions = ch_versions.mix(BOWTIE2_ALIGN.out.versions) // // Sort, index BAM file and run samtools stats, flagstat and idxstats // BAM_SORT_STATS_SAMTOOLS ( BOWTIE2_ALIGN.out.bam, ch_fasta ) - ch_versions = ch_versions.mix(BAM_SORT_STATS_SAMTOOLS.out.versions) emit: bam_orig = BOWTIE2_ALIGN.out.bam // channel: [ val(meta), aligned ] diff --git a/subworkflows/nf-core/fastq_align_bowtie2/tests/main.nf.test b/subworkflows/nf-core/fastq_align_bowtie2/tests/main.nf.test index 2fabb42e0..6eca398de 100644 --- a/subworkflows/nf-core/fastq_align_bowtie2/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_align_bowtie2/tests/main.nf.test @@ -19,7 +19,7 @@ nextflow_workflow { script "../../../../modules/nf-core/bowtie2/build/main.nf" process { """ - input[0] = Channel.value([ [ id:'genome' ],file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true)]) + input[0] = Channel.value([ [ id:'genome' ],file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)]) """ } } @@ -27,11 +27,11 @@ nextflow_workflow { when { workflow { """ - input[0] = Channel.of([[ id:'test', single_end:true ], [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) ]]) + input[0] = Channel.of([[ id:'test', single_end:true ], [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ]]) input[1] = BOWTIE2_BUILD.out.index input[2] = false input[3] = false - input[4] = Channel.value([ [ id:'genome' ],file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true)]) + input[4] = Channel.value([ [ id:'genome' ],file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)]) """ } } @@ -61,7 +61,7 @@ nextflow_workflow { script "../../../../modules/nf-core/bowtie2/build/main.nf" process { """ - input[0] = Channel.value([ [ id:'genome' ],file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true)]) + input[0] = Channel.value([ [ id:'genome' ],file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)]) """ } } @@ -69,11 +69,11 @@ nextflow_workflow { when { workflow { """ - input[0] = Channel.of([[ id:'test', single_end:false ], [file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true)]]) + input[0] = Channel.of([[ id:'test', single_end:false ], [file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true)]]) input[1] = BOWTIE2_BUILD.out.index input[2] = false input[3] = false - input[4] = Channel.value([ [ id:'genome' ],file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true)]) + input[4] = Channel.value([ [ id:'genome' ],file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)]) """ } } @@ -106,7 +106,7 @@ nextflow_workflow { script "../../../../modules/nf-core/bowtie2/build/main.nf" process { """ - input[0] = Channel.value([ [ id:'genome' ],file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true)]) + input[0] = Channel.value([ [ id:'genome' ],file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)]) """ } } @@ -114,11 +114,11 @@ nextflow_workflow { when { workflow { """ - input[0] = Channel.of([[ id:'test', single_end:true ], [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) ]]) + input[0] = Channel.of([[ id:'test', single_end:true ], [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ]]) input[1] = BOWTIE2_BUILD.out.index input[2] = false input[3] = false - input[4] = Channel.value([ [ id:'genome' ],file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true)]) + input[4] = Channel.value([ [ id:'genome' ],file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)]) """ } } @@ -151,7 +151,7 @@ nextflow_workflow { script "../../../../modules/nf-core/bowtie2/build/main.nf" process { """ - input[0] = Channel.value([ [ id:'genome' ],file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true)]) + input[0] = Channel.value([ [ id:'genome' ],file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)]) """ } } @@ -159,11 +159,11 @@ nextflow_workflow { when { workflow { """ - input[0] = Channel.of([[ id:'test', single_end:false ], [file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true)]]) + input[0] = Channel.of([[ id:'test', single_end:false ], [file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true)]]) input[1] = BOWTIE2_BUILD.out.index input[2] = false input[3] = false - input[4] = Channel.value([ [ id:'genome' ],file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true)]) + input[4] = Channel.value([ [ id:'genome' ],file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)]) """ } } diff --git a/subworkflows/nf-core/fastq_align_bowtie2/tests/main.nf.test.snap b/subworkflows/nf-core/fastq_align_bowtie2/tests/main.nf.test.snap index c8490961b..2dc8896be 100644 --- a/subworkflows/nf-core/fastq_align_bowtie2/tests/main.nf.test.snap +++ b/subworkflows/nf-core/fastq_align_bowtie2/tests/main.nf.test.snap @@ -1,4 +1,61 @@ { + "test_align_bowtie2_single_end - stub": { + "content": [ + "test.bam", + [ + + ], + [ + [ + { + "id": "test", + "single_end": true + }, + "test.bowtie2.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "test.sorted.bam", + "test.sorted.bam.bai", + [ + + ], + [ + [ + { + "id": "test", + "single_end": true + }, + "test.sorted.stats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + [ + { + "id": "test", + "single_end": true + }, + "test.sorted.flagstat:md5,67394650dbae96d1a4fcc70484822159" + ] + ], + [ + [ + { + "id": "test", + "single_end": true + }, + "test.sorted.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + + ] + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.3" + }, + "timestamp": "2026-02-03T15:14:25.504699933" + }, "test_align_bowtie2_single_end": { "content": [ "test.bam", @@ -25,7 +82,7 @@ "id": "test", "single_end": true }, - "test.sorted.bam.stats:md5,d499a70739ffa0a96880eaad229dcf7c" + "test.sorted.stats:md5,48b911852e91d77db59154f7355ede4f" ] ], [ @@ -34,7 +91,7 @@ "id": "test", "single_end": true }, - "test.sorted.bam.flagstat:md5,e9ce9093133116bc54fd335cfe698372" + "test.sorted.flagstat:md5,e9ce9093133116bc54fd335cfe698372" ] ], [ @@ -43,23 +100,18 @@ "id": "test", "single_end": true }, - "test.sorted.bam.idxstats:md5,e16eb632f7f462514b0873c7ac8ac905" + "test.sorted.idxstats:md5,e16eb632f7f462514b0873c7ac8ac905" ] ], [ - "versions.yml:md5,0b1901279f738fa8e22cabea6e2a48bd", - "versions.yml:md5,60be918ac1032f74137ad27024c002ef", - "versions.yml:md5,8644be336f2fd05a04b95050a4de9094", - "versions.yml:md5,aab337e63eac9055aadb9a35cec16053", - "versions.yml:md5,dd60999d74ea42ae4f5483c9d94507f3", - "versions.yml:md5,ddb252583f75777033ee6467e4b6d545" + ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-07-03T13:07:32.050239" + "timestamp": "2026-02-03T15:14:08.108143527" }, "test_align_bowtie2_paired_end": { "content": [ @@ -87,7 +139,7 @@ "id": "test", "single_end": false }, - "test.sorted.bam.stats:md5,c02dbd116c1f49339dda208cb950261d" + "test.sorted.stats:md5,cb422b3fcd4327488cb6bc5ac15a48ff" ] ], [ @@ -96,7 +148,7 @@ "id": "test", "single_end": false }, - "test.sorted.bam.flagstat:md5,49f3d51a8804ce58fe9cecd2549d279b" + "test.sorted.flagstat:md5,49f3d51a8804ce58fe9cecd2549d279b" ] ], [ @@ -105,22 +157,74 @@ "id": "test", "single_end": false }, - "test.sorted.bam.idxstats:md5,29ff2fa56d35b2a47625b8f517f1a947" + "test.sorted.idxstats:md5,29ff2fa56d35b2a47625b8f517f1a947" ] ], [ - "versions.yml:md5,0b1901279f738fa8e22cabea6e2a48bd", - "versions.yml:md5,60be918ac1032f74137ad27024c002ef", - "versions.yml:md5,8644be336f2fd05a04b95050a4de9094", - "versions.yml:md5,aab337e63eac9055aadb9a35cec16053", - "versions.yml:md5,dd60999d74ea42ae4f5483c9d94507f3", - "versions.yml:md5,ddb252583f75777033ee6467e4b6d545" + + ] + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.3" + }, + "timestamp": "2026-02-03T15:14:17.07821488" + }, + "test_align_bowtie2_paired_end - stub": { + "content": [ + "test.bam", + [ + + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.bowtie2.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "test.sorted.bam", + "test.sorted.bam.bai", + [ + + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.stats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.flagstat:md5,67394650dbae96d1a4fcc70484822159" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-07-03T13:07:48.653475" + "timestamp": "2026-02-03T15:14:34.088967148" } } \ No newline at end of file diff --git a/subworkflows/nf-core/fastq_align_bowtie2/tests/nextflow.config b/subworkflows/nf-core/fastq_align_bowtie2/tests/nextflow.config index 2f85e8075..9086ebfad 100644 --- a/subworkflows/nf-core/fastq_align_bowtie2/tests/nextflow.config +++ b/subworkflows/nf-core/fastq_align_bowtie2/tests/nextflow.config @@ -3,6 +3,6 @@ process { ext.prefix = { "${meta.id}.sorted" } } withName: '.*:BAM_SORT_STATS_SAMTOOLS:BAM_STATS_SAMTOOLS:.*' { - ext.prefix = { "${meta.id}.sorted.bam" } + ext.prefix = { "${meta.id}.sorted" } } } diff --git a/subworkflows/nf-core/fastq_align_bowtie2/tests/tags.yml b/subworkflows/nf-core/fastq_align_bowtie2/tests/tags.yml deleted file mode 100644 index 267bcc772..000000000 --- a/subworkflows/nf-core/fastq_align_bowtie2/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -subworkflows/fastq_align_bowtie2: - - subworkflows/nf-core/fastq_align_bowtie2/** diff --git a/subworkflows/nf-core/fastq_align_bwa/main.nf b/subworkflows/nf-core/fastq_align_bwa/main.nf index c7408d085..e06a5fab4 100644 --- a/subworkflows/nf-core/fastq_align_bwa/main.nf +++ b/subworkflows/nf-core/fastq_align_bwa/main.nf @@ -13,21 +13,19 @@ workflow FASTQ_ALIGN_BWA { ch_fasta // channel (optional) : [ val(meta3), path(fasta) ] main: - ch_versions = Channel.empty() + ch_versions = channel.empty() // // Map reads with BWA // BWA_MEM ( ch_reads, ch_index, ch_fasta, val_sort_bam ) - ch_versions = ch_versions.mix(BWA_MEM.out.versions.first()) // // Sort, index BAM file and run samtools stats, flagstat and idxstats // BAM_SORT_STATS_SAMTOOLS ( BWA_MEM.out.bam, ch_fasta ) - ch_versions = ch_versions.mix(BAM_SORT_STATS_SAMTOOLS.out.versions) emit: bam_orig = BWA_MEM.out.bam // channel: [ val(meta), path(bam) ] diff --git a/subworkflows/nf-core/fastq_align_bwa/tests/main.nf.test b/subworkflows/nf-core/fastq_align_bwa/tests/main.nf.test index 93c3aac3f..7262325a1 100644 --- a/subworkflows/nf-core/fastq_align_bwa/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_align_bwa/tests/main.nf.test @@ -20,7 +20,7 @@ nextflow_workflow { script "../../../../modules/nf-core/bwa/index/main.nf" process { """ - input[0] = Channel.value([ [ id:'genome' ],file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true)]) + input[0] = Channel.value([ [ id:'genome' ],file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)]) """ } } @@ -28,10 +28,10 @@ nextflow_workflow { when { workflow { """ - input[0] = Channel.of([[ id:'test', single_end:true ],[ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) ]]) + input[0] = Channel.of([[ id:'test', single_end:true ],[ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ]]) input[1] = BWA_INDEX.out.index input[2] = false - input[3] = Channel.value([[id: 'genome'], file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true)]) + input[3] = Channel.value([[id: 'genome'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)]) """ } } @@ -50,7 +50,7 @@ nextflow_workflow { script "../../../../modules/nf-core/bwa/index/main.nf" process { """ - input[0] = Channel.value([ [ id:'genome' ],file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true)]) + input[0] = Channel.value([ [ id:'genome' ],file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)]) """ } } @@ -58,11 +58,11 @@ nextflow_workflow { when { workflow { """ - input[0] = Channel.of([[ id:'test', single_end:false ], [file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true)] + input[0] = Channel.of([[ id:'test', single_end:false ], [file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true)] ] ) input[1] = BWA_INDEX.out.index input[2] = false - input[3] = Channel.value([[id: 'genome'], file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true)]) + input[3] = Channel.value([[id: 'genome'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)]) """ } } diff --git a/subworkflows/nf-core/fastq_align_bwa/tests/main.nf.test.snap b/subworkflows/nf-core/fastq_align_bwa/tests/main.nf.test.snap index afd97b70c..9a16da29c 100644 --- a/subworkflows/nf-core/fastq_align_bwa/tests/main.nf.test.snap +++ b/subworkflows/nf-core/fastq_align_bwa/tests/main.nf.test.snap @@ -8,7 +8,7 @@ "id": "test", "single_end": false }, - "test.bam:md5,0bac6813d36636e735eae75887e70cd5" + "test.bam:md5,5dbdcfdba65fac634dcbb6984cffe2c4" ] ], "1": [ @@ -17,7 +17,7 @@ "id": "test", "single_end": false }, - "test.sorted.bam:md5,bfea46d006b5884fcca0653cc5b886e1" + "test.sorted.bam:md5,ba4b90f87517a16a6ae6142f37a75d79" ] ], "2": [ @@ -26,7 +26,7 @@ "id": "test", "single_end": false }, - "test.sorted.bam.bai:md5,140d22f4f374b485ac49e8b8c56a59b6" + "test.sorted.bam.bai:md5,4c5e6fa0e71327b79034eebd652f2121" ] ], "3": [ @@ -38,7 +38,7 @@ "id": "test", "single_end": false }, - "test.sorted.bam.stats:md5,42029d1e18c289f441232c0e6851fe5a" + "test.sorted.bam.stats:md5,75934f2a51780a80d2ab4674301a018d" ] ], "5": [ @@ -60,12 +60,7 @@ ] ], "7": [ - "versions.yml:md5,1a2ad0aad8b5a39089079d531734bdfe", - "versions.yml:md5,4905894958d972728ef3fb67d420971d", - "versions.yml:md5,54b76f87f10cc17e260aefd4e61b73ba", - "versions.yml:md5,616f164b996173af56b58861be3e6130", - "versions.yml:md5,7d1cd2920757b85fbae766a6b28b8e27", - "versions.yml:md5,ee109695a3b368e657b190ccf0f21ab5" + ], "bai": [ [ @@ -73,7 +68,7 @@ "id": "test", "single_end": false }, - "test.sorted.bam.bai:md5,140d22f4f374b485ac49e8b8c56a59b6" + "test.sorted.bam.bai:md5,4c5e6fa0e71327b79034eebd652f2121" ] ], "bam": [ @@ -82,7 +77,7 @@ "id": "test", "single_end": false }, - "test.sorted.bam:md5,bfea46d006b5884fcca0653cc5b886e1" + "test.sorted.bam:md5,ba4b90f87517a16a6ae6142f37a75d79" ] ], "bam_orig": [ @@ -91,7 +86,7 @@ "id": "test", "single_end": false }, - "test.bam:md5,0bac6813d36636e735eae75887e70cd5" + "test.bam:md5,5dbdcfdba65fac634dcbb6984cffe2c4" ] ], "csi": [ @@ -121,24 +116,19 @@ "id": "test", "single_end": false }, - "test.sorted.bam.stats:md5,42029d1e18c289f441232c0e6851fe5a" + "test.sorted.bam.stats:md5,75934f2a51780a80d2ab4674301a018d" ] ], "versions": [ - "versions.yml:md5,1a2ad0aad8b5a39089079d531734bdfe", - "versions.yml:md5,4905894958d972728ef3fb67d420971d", - "versions.yml:md5,54b76f87f10cc17e260aefd4e61b73ba", - "versions.yml:md5,616f164b996173af56b58861be3e6130", - "versions.yml:md5,7d1cd2920757b85fbae766a6b28b8e27", - "versions.yml:md5,ee109695a3b368e657b190ccf0f21ab5" + ] } ], + "timestamp": "2026-02-18T12:47:43.306112", "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-06-03T12:27:40.432319749" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } }, "fastq_align_bwa_single_end": { "content": [ @@ -149,7 +139,7 @@ "id": "test", "single_end": true }, - "test.bam:md5,dc633d557de438092c4d72d04195c5a8" + "test.bam:md5,f7af092ddd5203f647ba96b926392c3e" ] ], "1": [ @@ -158,7 +148,7 @@ "id": "test", "single_end": true }, - "test.sorted.bam:md5,c5820f18aeaab8715195824f1f693f9f" + "test.sorted.bam:md5,c406a43adde2d9673e71d8a8c7db7cfd" ] ], "2": [ @@ -167,7 +157,7 @@ "id": "test", "single_end": true }, - "test.sorted.bam.bai:md5,13ba4b9f3445fa6de43cea9b28342783" + "test.sorted.bam.bai:md5,f79a40341ecfaae11d8621b138d4c2ea" ] ], "3": [ @@ -179,7 +169,7 @@ "id": "test", "single_end": true }, - "test.sorted.bam.stats:md5,71846e184d196d1b6664028aeb318bac" + "test.sorted.bam.stats:md5,0883b19c92a783883b3e11d5bfcc5d6a" ] ], "5": [ @@ -201,12 +191,7 @@ ] ], "7": [ - "versions.yml:md5,1a2ad0aad8b5a39089079d531734bdfe", - "versions.yml:md5,4905894958d972728ef3fb67d420971d", - "versions.yml:md5,54b76f87f10cc17e260aefd4e61b73ba", - "versions.yml:md5,616f164b996173af56b58861be3e6130", - "versions.yml:md5,7d1cd2920757b85fbae766a6b28b8e27", - "versions.yml:md5,ee109695a3b368e657b190ccf0f21ab5" + ], "bai": [ [ @@ -214,7 +199,7 @@ "id": "test", "single_end": true }, - "test.sorted.bam.bai:md5,13ba4b9f3445fa6de43cea9b28342783" + "test.sorted.bam.bai:md5,f79a40341ecfaae11d8621b138d4c2ea" ] ], "bam": [ @@ -223,7 +208,7 @@ "id": "test", "single_end": true }, - "test.sorted.bam:md5,c5820f18aeaab8715195824f1f693f9f" + "test.sorted.bam:md5,c406a43adde2d9673e71d8a8c7db7cfd" ] ], "bam_orig": [ @@ -232,7 +217,7 @@ "id": "test", "single_end": true }, - "test.bam:md5,dc633d557de438092c4d72d04195c5a8" + "test.bam:md5,f7af092ddd5203f647ba96b926392c3e" ] ], "csi": [ @@ -262,23 +247,18 @@ "id": "test", "single_end": true }, - "test.sorted.bam.stats:md5,71846e184d196d1b6664028aeb318bac" + "test.sorted.bam.stats:md5,0883b19c92a783883b3e11d5bfcc5d6a" ] ], "versions": [ - "versions.yml:md5,1a2ad0aad8b5a39089079d531734bdfe", - "versions.yml:md5,4905894958d972728ef3fb67d420971d", - "versions.yml:md5,54b76f87f10cc17e260aefd4e61b73ba", - "versions.yml:md5,616f164b996173af56b58861be3e6130", - "versions.yml:md5,7d1cd2920757b85fbae766a6b28b8e27", - "versions.yml:md5,ee109695a3b368e657b190ccf0f21ab5" + ] } ], + "timestamp": "2026-02-18T12:47:30.203617", "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-06-03T12:27:19.693756639" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } } } \ No newline at end of file diff --git a/subworkflows/nf-core/fastq_align_bwa/tests/tags.yml b/subworkflows/nf-core/fastq_align_bwa/tests/tags.yml deleted file mode 100644 index bfe89ccfa..000000000 --- a/subworkflows/nf-core/fastq_align_bwa/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -subworkflows/fastq_align_bwa: - - subworkflows/nf-core/fastq_align_bwa/** diff --git a/subworkflows/nf-core/fastq_align_chromap/main.nf b/subworkflows/nf-core/fastq_align_chromap/main.nf index 26b6a4be6..549579fab 100644 --- a/subworkflows/nf-core/fastq_align_chromap/main.nf +++ b/subworkflows/nf-core/fastq_align_chromap/main.nf @@ -16,7 +16,7 @@ workflow FASTQ_ALIGN_CHROMAP { ch_pairs_chr_order // channel (optional): [ pairs_chr_order ] main: - ch_versions = Channel.empty() + ch_versions = channel.empty() // // Map reads with CHROMAP @@ -28,7 +28,6 @@ workflow FASTQ_ALIGN_CHROMAP { // Sort, index BAM file and run samtools stats, flagstat and idxstats // BAM_SORT_STATS_SAMTOOLS(CHROMAP_CHROMAP.out.bam, ch_fasta) - ch_versions = ch_versions.mix(BAM_SORT_STATS_SAMTOOLS.out.versions) emit: bam = BAM_SORT_STATS_SAMTOOLS.out.bam // channel: [ val(meta), [ bam ] ] diff --git a/subworkflows/nf-core/fastq_align_chromap/tests/main.nf.test b/subworkflows/nf-core/fastq_align_chromap/tests/main.nf.test new file mode 100644 index 000000000..25001bcf2 --- /dev/null +++ b/subworkflows/nf-core/fastq_align_chromap/tests/main.nf.test @@ -0,0 +1,123 @@ +nextflow_workflow { + + name "Test Workflow FASTQ_ALIGN_CHROMAP" + config "./nextflow.config" + script "../main.nf" + workflow "FASTQ_ALIGN_CHROMAP" + + tag "subworkflows" + tag "subworkflows_nfcore" + tag "chromap" + tag "chromap/chromap" + tag "chromap/index" + tag "fastq_align_chromap" + tag "subworkflows/fastq_align_chromap" + tag "subworkflows/bam_sort_stats_samtools" + + setup { + run("CHROMAP_INDEX") { + script "../../../../modules/nf-core/chromap/index/main.nf" + process { + """ + input[0] = Channel.of([ + [id:'test'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists:true) + ]) + """ + } + } + } + + test("test_fastq_align_chromap_single_end") { + when { + workflow { + """ + input[0] = [ + [id:'test', single_end:true], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists:true) + ] + input[1] = CHROMAP_INDEX.out.index + input[2] = Channel.of([ + [id:'test'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists:true) + ]) + input[3] = [] + input[4] = [] + input[5] = [] + input[6] = [] + """ + } + } + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + } + test("test_fastq_align_chromap_paired_end") { + when { + workflow { + """ + input[0] = [ + [id:'test', single_end:false], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists:true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists:true) + ] + ] + input[1] = CHROMAP_INDEX.out.index + input[2] = Channel.of([ + [id:'test'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists:true) + ]) + input[3] = [] + input[4] = [] + input[5] = [] + input[6] = [] + """ + } + } + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + } + + test("test_fastq_align_chromap_paired_end -- stub") { + options "-stub" + when { + workflow { + """ + input[0] = [ + [id:'test', single_end:false], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists:true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists:true) + ] + ] + input[1] = CHROMAP_INDEX.out.index + input[2] = Channel.of([ + [id:'test'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists:true) + ]) + input[3] = [] + input[4] = [] + input[5] = [] + input[6] = [] + """ + } + } + then { + assertAll( + { assert workflow.success }, + { assert snapshot( + workflow.out, + workflow.out.versions.collect{ path(it).yaml } + ).match() } + ) + } + } +} diff --git a/subworkflows/nf-core/fastq_align_chromap/tests/main.nf.test.snap b/subworkflows/nf-core/fastq_align_chromap/tests/main.nf.test.snap new file mode 100644 index 000000000..eb2475989 --- /dev/null +++ b/subworkflows/nf-core/fastq_align_chromap/tests/main.nf.test.snap @@ -0,0 +1,331 @@ +{ + "test_fastq_align_chromap_single_end": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + "test.sorted.bam:md5,74b5083e3c8ac8f918986fe0b36a9317" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": true + }, + "test.sorted.bam.bai:md5,9fcb4c0bf711694916e282e163fba868" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": true + }, + "test.stats:md5,de59e4f73eee31c4fbe8ec3859c5e0e8" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": true + }, + "test.flagstat:md5,99698bba57b57c7ab68b32bc368a0cc5" + ] + ], + "4": [ + [ + { + "id": "test", + "single_end": true + }, + "test.idxstats:md5,0ca8c5edb633a2f4c72fb3160cc25abf" + ] + ], + "5": [ + "versions.yml:md5,510f8807b7572d3ba4db55439fc53106" + ], + "bai": [ + [ + { + "id": "test", + "single_end": true + }, + "test.sorted.bam.bai:md5,9fcb4c0bf711694916e282e163fba868" + ] + ], + "bam": [ + [ + { + "id": "test", + "single_end": true + }, + "test.sorted.bam:md5,74b5083e3c8ac8f918986fe0b36a9317" + ] + ], + "flagstat": [ + [ + { + "id": "test", + "single_end": true + }, + "test.flagstat:md5,99698bba57b57c7ab68b32bc368a0cc5" + ] + ], + "idxstats": [ + [ + { + "id": "test", + "single_end": true + }, + "test.idxstats:md5,0ca8c5edb633a2f4c72fb3160cc25abf" + ] + ], + "stats": [ + [ + { + "id": "test", + "single_end": true + }, + "test.stats:md5,de59e4f73eee31c4fbe8ec3859c5e0e8" + ] + ], + "versions": [ + "versions.yml:md5,510f8807b7572d3ba4db55439fc53106" + ] + } + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.3" + }, + "timestamp": "2026-02-03T11:20:25.710632877" + }, + "test_fastq_align_chromap_paired_end": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam:md5,bd04f77fe97bc452dffaef24bf255829" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam.bai:md5,8084ffd06103a6d2cd66c4749d301b5c" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.stats:md5,0900a093aaa649986631997b2b4e919d" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": false + }, + "test.flagstat:md5,2fa0d90162a1b655863796c2a6bd8f45" + ] + ], + "4": [ + [ + { + "id": "test", + "single_end": false + }, + "test.idxstats:md5,1adb27b52d4d64b826f48b59d61dcd4d" + ] + ], + "5": [ + "versions.yml:md5,510f8807b7572d3ba4db55439fc53106" + ], + "bai": [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam.bai:md5,8084ffd06103a6d2cd66c4749d301b5c" + ] + ], + "bam": [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam:md5,bd04f77fe97bc452dffaef24bf255829" + ] + ], + "flagstat": [ + [ + { + "id": "test", + "single_end": false + }, + "test.flagstat:md5,2fa0d90162a1b655863796c2a6bd8f45" + ] + ], + "idxstats": [ + [ + { + "id": "test", + "single_end": false + }, + "test.idxstats:md5,1adb27b52d4d64b826f48b59d61dcd4d" + ] + ], + "stats": [ + [ + { + "id": "test", + "single_end": false + }, + "test.stats:md5,0900a093aaa649986631997b2b4e919d" + ] + ], + "versions": [ + "versions.yml:md5,510f8807b7572d3ba4db55439fc53106" + ] + } + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.3" + }, + "timestamp": "2026-02-03T11:20:34.996827974" + }, + "test_fastq_align_chromap_paired_end -- stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": false + }, + "test.flagstat:md5,67394650dbae96d1a4fcc70484822159" + ] + ], + "4": [ + [ + { + "id": "test", + "single_end": false + }, + "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + "versions.yml:md5,510f8807b7572d3ba4db55439fc53106" + ], + "bai": [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "bam": [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "flagstat": [ + [ + { + "id": "test", + "single_end": false + }, + "test.flagstat:md5,67394650dbae96d1a4fcc70484822159" + ] + ], + "idxstats": [ + [ + { + "id": "test", + "single_end": false + }, + "test.idxstats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "stats": [ + [ + { + "id": "test", + "single_end": false + }, + "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,510f8807b7572d3ba4db55439fc53106" + ] + }, + [ + { + "FASTQ_ALIGN_CHROMAP:CHROMAP_CHROMAP": { + "chromap": "0.2.6-r490", + "samtools": 1.2 + } + } + ] + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.3" + }, + "timestamp": "2026-02-03T11:20:43.673771098" + } +} \ No newline at end of file diff --git a/subworkflows/nf-core/fastq_align_chromap/tests/nextflow.config b/subworkflows/nf-core/fastq_align_chromap/tests/nextflow.config new file mode 100644 index 000000000..2031964dd --- /dev/null +++ b/subworkflows/nf-core/fastq_align_chromap/tests/nextflow.config @@ -0,0 +1,13 @@ +process { + withName: "CHROMAP_CHROMAP" { + ext.args = "--SAM" + } + + withName: "FASTQ_ALIGN_CHROMAP:BAM_SORT_STATS_SAMTOOLS:SAMTOOLS_.*" { + ext.prefix = { "${meta.id}.sorted" } + } + + withName: "FASTQ_ALIGN_CHROMAP:BAM_SORT_STATS_SAMTOOLS:BAM_STATS_SAMTOOLS:.*'" { + ext.prefix = { "${meta.id}.sorted.bam" } + } +} diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/main.nf b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/main.nf index db2e5b329..262cbf530 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/main.nf +++ b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/main.nf @@ -14,9 +14,13 @@ def getTrimGaloreReadsAfterFiltering(log_file) { def filtered_reads = 0 log_file.eachLine { line -> def total_reads_matcher = line =~ /([\d\.]+)\ssequences processed in total/ - def filtered_reads_matcher = line =~ /shorter than the length cutoff[^:]+:\s([\d\.]+)/ - if (total_reads_matcher) total_reads = total_reads_matcher[0][1].toFloat() - if (filtered_reads_matcher) filtered_reads = filtered_reads_matcher[0][1].toFloat() + def filtered_reads_matcher = line =~ /shorter than the length cutoff[^:]+:\s*([\d\.]+)/ + if (total_reads_matcher) { + total_reads = total_reads_matcher[0][1].toFloat() + } + if (filtered_reads_matcher) { + filtered_reads = filtered_reads_matcher[0][1].toFloat() + } } return total_reads - filtered_reads } @@ -32,92 +36,81 @@ workflow FASTQ_FASTQC_UMITOOLS_TRIMGALORE { min_trimmed_reads // integer: > 0 main: - ch_versions = Channel.empty() - fastqc_html = Channel.empty() - fastqc_zip = Channel.empty() + fastqc_html = channel.empty() + fastqc_zip = channel.empty() if (!skip_fastqc) { - FASTQC (reads) + FASTQC(reads) fastqc_html = FASTQC.out.html - fastqc_zip = FASTQC.out.zip - ch_versions = ch_versions.mix(FASTQC.out.versions.first()) + fastqc_zip = FASTQC.out.zip } - umi_reads = reads - umi_log = Channel.empty() + trimmer_reads = reads + umi_log = channel.empty() + umi_reads = channel.empty() if (with_umi && !skip_umi_extract) { - UMITOOLS_EXTRACT (reads) - umi_reads = UMITOOLS_EXTRACT.out.reads - umi_log = UMITOOLS_EXTRACT.out.log - ch_versions = ch_versions.mix(UMITOOLS_EXTRACT.out.versions.first()) + UMITOOLS_EXTRACT(reads) + trimmer_reads = UMITOOLS_EXTRACT.out.reads + umi_reads = UMITOOLS_EXTRACT.out.reads + umi_log = UMITOOLS_EXTRACT.out.log - // Discard R1 / R2 if required - if (umi_discard_read in [1,2]) { - UMITOOLS_EXTRACT - .out - .reads - .map { - meta, reads -> - meta.single_end ? [ meta, reads ] : [ meta + ['single_end': true], reads[umi_discard_read % 2] ] - } - .set { umi_reads } - } + // Discard R1 / R2 if required + if (umi_discard_read in [1, 2]) { + UMITOOLS_EXTRACT.out.reads + .map { meta, reads_ -> + meta.single_end ? [meta, reads_] : [meta + ['single_end': true], reads_[umi_discard_read % 2]] + } + .set { trimmer_reads } + } } - trim_reads = umi_reads - trim_unpaired = Channel.empty() - trim_html = Channel.empty() - trim_zip = Channel.empty() - trim_log = Channel.empty() - trim_read_count = Channel.empty() + trim_reads = trimmer_reads + trim_unpaired = channel.empty() + trim_html = channel.empty() + trim_zip = channel.empty() + trim_log = channel.empty() + trim_read_count = channel.empty() if (!skip_trimming) { - TRIMGALORE (umi_reads) + TRIMGALORE(trimmer_reads) trim_unpaired = TRIMGALORE.out.unpaired - trim_html = TRIMGALORE.out.html - trim_zip = TRIMGALORE.out.zip - trim_log = TRIMGALORE.out.log - ch_versions = ch_versions.mix(TRIMGALORE.out.versions.first()) + trim_html = TRIMGALORE.out.html + trim_zip = TRIMGALORE.out.zip + trim_log = TRIMGALORE.out.log // // Filter FastQ files based on minimum trimmed read count after adapter trimming // - TRIMGALORE - .out - .reads + TRIMGALORE.out.reads .join(trim_log, remainder: true) - .map { - meta, reads, trim_log -> - if (trim_log) { - num_reads = getTrimGaloreReadsAfterFiltering(meta.single_end ? trim_log : trim_log[-1]) - [ meta, reads, num_reads ] - } else { - [ meta, reads, min_trimmed_reads.toFloat() + 1 ] - } + .map { meta, reads_, trim_log_ -> + if (trim_log) { + def num_reads = getTrimGaloreReadsAfterFiltering(meta.single_end ? trim_log_ : trim_log_[-1]) + [meta, reads_, num_reads] + } + else { + [meta, reads, min_trimmed_reads.toFloat() + 1] + } } .set { ch_num_trimmed_reads } ch_num_trimmed_reads - .filter { meta, reads, num_reads -> num_reads >= min_trimmed_reads.toFloat() } - .map { meta, reads, num_reads -> [ meta, reads ] } + .filter { _meta, _reads, num_reads -> num_reads >= min_trimmed_reads.toFloat() } + .map { meta, reads_, _num_reads -> [meta, reads_] } .set { trim_reads } ch_num_trimmed_reads - .map { meta, reads, num_reads -> [ meta, num_reads ] } + .map { meta, _reads, num_reads -> [meta, num_reads] } .set { trim_read_count } } emit: - reads = trim_reads // channel: [ val(meta), [ reads ] ] - - fastqc_html // channel: [ val(meta), [ html ] ] - fastqc_zip // channel: [ val(meta), [ zip ] ] - - umi_log // channel: [ val(meta), [ log ] ] - - trim_unpaired // channel: [ val(meta), [ reads ] ] - trim_html // channel: [ val(meta), [ html ] ] - trim_zip // channel: [ val(meta), [ zip ] ] - trim_log // channel: [ val(meta), [ txt ] ] - trim_read_count // channel: [ val(meta), val(count) ] - - versions = ch_versions.ifEmpty(null) // channel: [ versions.yml ] + reads = trim_reads // channel: [ val(meta), [ reads ] ] + fastqc_html // channel: [ val(meta), [ html ] ] + fastqc_zip // channel: [ val(meta), [ zip ] ] + umi_log // channel: [ val(meta), [ log ] ] + umi_reads // channel: [ val(meta), [ reads ] ] + trim_unpaired // channel: [ val(meta), [ reads ] ] + trim_html // channel: [ val(meta), [ html ] ] + trim_zip // channel: [ val(meta), [ zip ] ] + trim_log // channel: [ val(meta), [ txt ] ] + trim_read_count // channel: [ val(meta), val(count) ] } diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test index 96e05765b..1c66c0687 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test @@ -43,7 +43,7 @@ nextflow_workflow { workflow.out.reads, workflow.out.trim_read_count, workflow.out.trim_unpaired, - workflow.out.versions).match() } +).match() } ) } } @@ -77,7 +77,7 @@ nextflow_workflow { workflow.out.reads, workflow.out.trim_read_count, workflow.out.trim_unpaired, - workflow.out.versions).match() } +).match() } ) } } @@ -110,7 +110,7 @@ nextflow_workflow { workflow.out.reads, workflow.out.trim_read_count, workflow.out.trim_unpaired, - workflow.out.versions).match() } +).match() } ) } } @@ -143,7 +143,7 @@ nextflow_workflow { { assert snapshot( workflow.out.trim_read_count, workflow.out.trim_unpaired, - workflow.out.versions).match() } +).match() } ) } } diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test.snap b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test.snap index 034591495..a22db98bc 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test.snap +++ b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test.snap @@ -33,7 +33,16 @@ ] ], "4": [ - + [ + { + "id": "test", + "single_end": false + }, + [ + "test.umi_extract_1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test.umi_extract_2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] ], "5": [ @@ -42,6 +51,9 @@ ], "7": [ + + ], + "8": [ [ { "id": "test", @@ -50,7 +62,7 @@ "test.fastq.gz_trimming_report.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "8": [ + "9": [ [ { "id": "test", @@ -59,11 +71,6 @@ 0 ] ], - "9": [ - "versions.yml:md5,0a5b8fa83ba29cf645bf9e9471cca150", - "versions.yml:md5,3e4b7f058c0aa96ba41c3e4d6df6e839", - "versions.yml:md5,7e740129a23c5ac21c27476e30f8a6d2" - ], "fastqc_html": [ [ { @@ -121,18 +128,25 @@ "test.umi_extract.log:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,0a5b8fa83ba29cf645bf9e9471cca150", - "versions.yml:md5,3e4b7f058c0aa96ba41c3e4d6df6e839", - "versions.yml:md5,7e740129a23c5ac21c27476e30f8a6d2" + "umi_reads": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.umi_extract_1.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test.umi_extract_2.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-07-22T17:06:34.919444" + "timestamp": "2026-02-03T13:21:45.022632239" }, "test paired end read without UMI - stub": { "content": [ @@ -171,6 +185,9 @@ ], "7": [ + + ], + "8": [ [ { "id": "test", @@ -182,7 +199,7 @@ ] ] ], - "8": [ + "9": [ [ { "id": "test", @@ -191,10 +208,6 @@ 0 ] ], - "9": [ - "versions.yml:md5,0a5b8fa83ba29cf645bf9e9471cca150", - "versions.yml:md5,7e740129a23c5ac21c27476e30f8a6d2" - ], "fastqc_html": [ [ { @@ -249,17 +262,16 @@ "umi_log": [ ], - "versions": [ - "versions.yml:md5,0a5b8fa83ba29cf645bf9e9471cca150", - "versions.yml:md5,7e740129a23c5ac21c27476e30f8a6d2" + "umi_reads": [ + ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-07-22T17:06:51.765414" + "timestamp": "2026-02-03T13:21:51.075428076" }, "test paired end read without UMI": { "content": [ @@ -286,17 +298,13 @@ ], [ - ], - [ - "versions.yml:md5,0a5b8fa83ba29cf645bf9e9471cca150", - "versions.yml:md5,7e740129a23c5ac21c27476e30f8a6d2" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-07-22T17:05:37.366404" + "timestamp": "2026-02-03T13:21:22.252381045" }, "test single end read with UMI": { "content": [ @@ -320,18 +328,13 @@ ], [ - ], - [ - "versions.yml:md5,0a5b8fa83ba29cf645bf9e9471cca150", - "versions.yml:md5,3e4b7f058c0aa96ba41c3e4d6df6e839", - "versions.yml:md5,7e740129a23c5ac21c27476e30f8a6d2" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-07-22T17:04:53.072227" + "timestamp": "2026-02-03T13:21:01.887880112" }, "test paired end read with UMI": { "content": [ @@ -355,18 +358,13 @@ ], [ - ], - [ - "versions.yml:md5,0a5b8fa83ba29cf645bf9e9471cca150", - "versions.yml:md5,3e4b7f058c0aa96ba41c3e4d6df6e839", - "versions.yml:md5,7e740129a23c5ac21c27476e30f8a6d2" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-07-22T17:05:16.709704" + "timestamp": "2026-02-03T13:21:13.989761245" }, "test skip all steps": { "content": [ @@ -375,16 +373,13 @@ ], [ - ], - [ - ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-07-22T17:05:49.455992" + "timestamp": "2026-02-03T13:21:27.191712947" }, "test single end read with UMI - stub": { "content": [ @@ -420,7 +415,13 @@ ] ], "4": [ - + [ + { + "id": "test", + "single_end": true + }, + "test.umi_extract.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] ], "5": [ @@ -429,6 +430,9 @@ ], "7": [ + + ], + "8": [ [ { "id": "test", @@ -437,7 +441,7 @@ "test.fastq.gz_trimming_report.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "8": [ + "9": [ [ { "id": "test", @@ -446,11 +450,6 @@ 0 ] ], - "9": [ - "versions.yml:md5,0a5b8fa83ba29cf645bf9e9471cca150", - "versions.yml:md5,3e4b7f058c0aa96ba41c3e4d6df6e839", - "versions.yml:md5,7e740129a23c5ac21c27476e30f8a6d2" - ], "fastqc_html": [ [ { @@ -508,17 +507,21 @@ "test.umi_extract.log:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,0a5b8fa83ba29cf645bf9e9471cca150", - "versions.yml:md5,3e4b7f058c0aa96ba41c3e4d6df6e839", - "versions.yml:md5,7e740129a23c5ac21c27476e30f8a6d2" + "umi_reads": [ + [ + { + "id": "test", + "single_end": true + }, + "test.umi_extract.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.3", + "nextflow": "25.10.3" }, - "timestamp": "2024-07-22T17:06:09.844235" + "timestamp": "2026-02-03T13:21:36.092099503" } -} +} \ No newline at end of file diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/tags.yml b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/tags.yml deleted file mode 100644 index 5bf59db41..000000000 --- a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -subworkflows/fastq_fastqc_umitools_trimgalore: - - subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/** diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/main.nf b/subworkflows/nf-core/utils_nfcore_pipeline/main.nf index 2f30e9a46..bf568a08b 100644 --- a/subworkflows/nf-core/utils_nfcore_pipeline/main.nf +++ b/subworkflows/nf-core/utils_nfcore_pipeline/main.nf @@ -353,67 +353,3 @@ def completionSummary(monochrome_logs=true) { log.info("-${colors.purple}[${workflow.manifest.name}]${colors.red} Pipeline completed with errors${colors.reset}-") } } - -// -// Construct and send a notification to a web server as JSON e.g. Microsoft Teams and Slack -// -def imNotification(summary_params, hook_url) { - def summary = [:] - summary_params - .keySet() - .sort() - .each { group -> - summary << summary_params[group] - } - - def misc_fields = [:] - misc_fields['start'] = workflow.start - misc_fields['complete'] = workflow.complete - misc_fields['scriptfile'] = workflow.scriptFile - misc_fields['scriptid'] = workflow.scriptId - if (workflow.repository) { - misc_fields['repository'] = workflow.repository - } - if (workflow.commitId) { - misc_fields['commitid'] = workflow.commitId - } - if (workflow.revision) { - misc_fields['revision'] = workflow.revision - } - misc_fields['nxf_version'] = workflow.nextflow.version - misc_fields['nxf_build'] = workflow.nextflow.build - misc_fields['nxf_timestamp'] = workflow.nextflow.timestamp - - def msg_fields = [:] - msg_fields['version'] = getWorkflowVersion() - msg_fields['runName'] = workflow.runName - msg_fields['success'] = workflow.success - msg_fields['dateComplete'] = workflow.complete - msg_fields['duration'] = workflow.duration - msg_fields['exitStatus'] = workflow.exitStatus - msg_fields['errorMessage'] = (workflow.errorMessage ?: 'None') - msg_fields['errorReport'] = (workflow.errorReport ?: 'None') - msg_fields['commandLine'] = workflow.commandLine.replaceFirst(/ +--hook_url +[^ ]+/, "") - msg_fields['projectDir'] = workflow.projectDir - msg_fields['summary'] = summary << misc_fields - - // Render the JSON template - def engine = new groovy.text.GStringTemplateEngine() - // Different JSON depending on the service provider - // Defaults to "Adaptive Cards" (https://adaptivecards.io), except Slack which has its own format - def json_path = hook_url.contains("hooks.slack.com") ? "slackreport.json" : "adaptivecard.json" - def hf = new File("${workflow.projectDir}/assets/${json_path}") - def json_template = engine.createTemplate(hf).make(msg_fields) - def json_message = json_template.toString() - - // POST - def post = new URL(hook_url).openConnection() - post.setRequestMethod("POST") - post.setDoOutput(true) - post.setRequestProperty("Content-Type", "application/json") - post.getOutputStream().write(json_message.getBytes("UTF-8")) - def postRC = post.getResponseCode() - if (!postRC.equals(200)) { - log.warn(post.getErrorStream().getText()) - } -} diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.nf.test similarity index 100% rename from subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test rename to subworkflows/nf-core/utils_nfcore_pipeline/tests/main.nf.test diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test.snap b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.nf.test.snap similarity index 100% rename from subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test.snap rename to subworkflows/nf-core/utils_nfcore_pipeline/tests/main.nf.test.snap diff --git a/subworkflows/nf-core/utils_nfschema_plugin/main.nf b/subworkflows/nf-core/utils_nfschema_plugin/main.nf index ee4738c8d..1df8b76fb 100644 --- a/subworkflows/nf-core/utils_nfschema_plugin/main.nf +++ b/subworkflows/nf-core/utils_nfschema_plugin/main.nf @@ -38,7 +38,7 @@ workflow UTILS_NFSCHEMA_PLUGIN { } log.info paramsHelp( help_options, - params.help instanceof String ? params.help : "", + (params.help instanceof String && params.help != "true") ? params.help : "", ) exit 0 } @@ -71,4 +71,3 @@ workflow UTILS_NFSCHEMA_PLUGIN { emit: dummy_emit = true } - diff --git a/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow.config b/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow.config index 8d8c73718..f6537cc33 100644 --- a/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow.config +++ b/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow.config @@ -1,5 +1,5 @@ plugins { - id "nf-schema@2.5.1" + id "nf-schema@2.6.1" } validation { diff --git a/tests/.nftignore b/tests/.nftignore index 67a3a41d1..35e0cf606 100644 --- a/tests/.nftignore +++ b/tests/.nftignore @@ -32,7 +32,10 @@ fastqc/*_fastqc.{html,zip} **/*.insert_size_metrics **/*.alignment_summary_metrics **/*.base_distribution_by_cycle_metrics -**/*.MarkDuplicates.metrics.txt +**/*.metrics.txt + +# Samtools +**/*.bam.stats # Trimming reports **/*_trimming_report.txt @@ -57,8 +60,8 @@ fastqc/*_fastqc.{html,zip} **/macs3_annotatePeaks.summary_mqc.tsv # Feature counting -**/*.featureCounts.txt -**/*.featureCounts.txt.summary +**/*.featureCounts.tsv +**/*.featureCounts.tsv.summary # Statistical analysis **/*.pca.vals.txt @@ -68,9 +71,11 @@ fastqc/*_fastqc.{html,zip} # === YAML CONFIGURATION FILES === **/deeptools_plot_profile_mlib_deeptools.yaml +**/multiqc_strand_shift_correlation.yaml **/multiqc_deseq2_clustering_1.yaml **/multiqc_deseq2_pca_1.yaml **/multiqc_sources.yaml +**/multiqc_cutadapt.yaml **/read_distribution_profile.yaml **/deeptools_fingerprint_plot.yaml **/deeptools_plot_fingerprint_counts_mlib_deeptools.yaml diff --git a/tests/bowtie2.nf.test.snap b/tests/bowtie2.nf.test.snap index 42a9e46f5..7986274c1 100644 --- a/tests/bowtie2.nf.test.snap +++ b/tests/bowtie2.nf.test.snap @@ -3,120 +3,94 @@ "content": [ 215, { - "ANNOTATE_BOOLEAN_PEAKS": { - "sed": 4.7 - }, "BAMTOOLS_FILTER": { - "bamtools": "2.5.2", - "samtools": "1.15.1" + "bamtools": "2.5.3", + "samtools": 1.23 }, "BAM_REMOVE_ORPHANS": { - "samtools": "1.15.1" + "samtools": 1.23 }, "BEDTOOLS_GENOMECOV": { "bedtools": "2.31.1" }, "BOWTIE2_ALIGN": { - "bowtie2": "2.5.2", - "pigz": 2.6, - "samtools": 1.18 + "bowtie2": "2.5.4", + "pigz": 2.8, + "samtools": 1.21 }, "BOWTIE2_BUILD": { - "bowtie2": "2.5.2" - }, - "CUSTOM_GETCHROMSIZES": { - "getchromsizes": 1.2 + "bowtie2": "2.5.4" }, "DEEPTOOLS_COMPUTEMATRIX": { - "deeptools": "3.5.5" + "deeptools": "3.5.6" }, "DEEPTOOLS_PLOTFINGERPRINT": { - "deeptools": "3.5.5" + "deeptools": "3.5.6" }, "DEEPTOOLS_PLOTHEATMAP": { - "deeptools": "3.5.5" + "deeptools": "3.5.6" }, "DEEPTOOLS_PLOTPROFILE": { - "deeptools": "3.5.5" - }, - "DESEQ2_QC": { - "bioconductor-deseq2": "1.28.0", - "r-base": "4.0.3" + "deeptools": "3.5.6" }, "FASTQC": { "fastqc": "0.12.1" }, "FRIP_SCORE": { - "bedtools": "2.30.0", - "samtools": "1.15.1" + "bedtools": "2.31.1", + "samtools": 1.23 }, "GENOME_BLACKLIST_REGIONS": { - "bedtools": "2.30.0" - }, - "GTF2BED": { - "perl": "5.26.2" - }, - "HOMER_ANNOTATEPEAKS": { - "homer": 4.11 - }, - "IGV": { - "python": "3.8.3" + "bedtools": "2.31.1" }, "MACS3_CALLPEAK": { - "macs3": "3.0.1" + "macs3": "3.0.4" }, "MACS3_CONSENSUS": { - "python": "3.10.0", - "r-base": "4.1.1" - }, - "MULTIQC_CUSTOM_PEAKS": { - "sed": 4.7 - }, - "PHANTOMPEAKQUALTOOLS": { - "phantompeakqualtools": "1.2.2" + "R": "4.1.3", + "python": "3.14.0" }, "PICARD_COLLECTMULTIPLEMETRICS": { - "picard": "3.2.0-1-g3948afb6b" + "picard": "3.4.0" }, "PICARD_MARKDUPLICATES": { - "picard": "3.2.0-1-g3948afb6b" + "picard": "3.4.0" }, "PICARD_MERGESAMFILES": { - "picard": "3.2.0-1-g3948afb6b" + "picard": "3.4.0" }, "PLOT_HOMER_ANNOTATEPEAKS": { - "r-base": "4.0.3" + "R": "4.5.3" }, "PLOT_MACS3_QC": { - "r-base": "4.0.3" + "R": "4.5.3" }, - "SAMPLESHEET_CHECK": { - "python": "3.8.3" + "SAMTOOLS_FAIDX": { + "samtools": "1.22.1" }, "SAMTOOLS_FLAGSTAT": { "samtools": "1.22.1" }, "SAMTOOLS_IDXSTATS": { - "samtools": 1.2 + "samtools": "1.22.1" }, "SAMTOOLS_INDEX": { - "samtools": 1.2 + "samtools": "1.22.1" }, "SAMTOOLS_SORT": { - "samtools": 1.2 + "samtools": "1.22.1" }, "SAMTOOLS_STATS": { - "samtools": 1.2 + "samtools": "1.22.1" }, "SUBREAD_FEATURECOUNTS": { - "subread": "2.0.1" + "subread": "2.1.1" }, "TRIMGALORE": { - "cutadapt": 3.4, - "trimgalore": "0.6.7" + "trimgalore": "0.6.10" }, "UCSC_BEDGRAPHTOBIGWIG": { - "ucsc": 445 + "ucsc": 482 }, "Workflow": { "nf-core/chipseq": "v2.2.0dev" @@ -228,8 +202,8 @@ "bowtie2/merged_library/macs3/broad_peak/consensus/SPT5/SPT5.consensus_peaks.boolean.intersect.plot.pdf", "bowtie2/merged_library/macs3/broad_peak/consensus/SPT5/SPT5.consensus_peaks.boolean.intersect.txt", "bowtie2/merged_library/macs3/broad_peak/consensus/SPT5/SPT5.consensus_peaks.boolean.txt", - "bowtie2/merged_library/macs3/broad_peak/consensus/SPT5/SPT5.consensus_peaks.featureCounts.txt", - "bowtie2/merged_library/macs3/broad_peak/consensus/SPT5/SPT5.consensus_peaks.featureCounts.txt.summary", + "bowtie2/merged_library/macs3/broad_peak/consensus/SPT5/SPT5.consensus_peaks.featureCounts.tsv", + "bowtie2/merged_library/macs3/broad_peak/consensus/SPT5/SPT5.consensus_peaks.featureCounts.tsv.summary", "bowtie2/merged_library/macs3/broad_peak/consensus/SPT5/SPT5.consensus_peaks.saf", "bowtie2/merged_library/macs3/broad_peak/consensus/SPT5/deseq2", "bowtie2/merged_library/macs3/broad_peak/consensus/SPT5/deseq2/R_sessionInfo.log", @@ -297,37 +271,37 @@ "bowtie2/merged_library/picard_metrics/SPT5_INPUT_REP1.mLb.clN.sorted.CollectMultipleMetrics.insert_size_metrics", "bowtie2/merged_library/picard_metrics/SPT5_INPUT_REP1.mLb.clN.sorted.CollectMultipleMetrics.quality_by_cycle_metrics", "bowtie2/merged_library/picard_metrics/SPT5_INPUT_REP1.mLb.clN.sorted.CollectMultipleMetrics.quality_distribution_metrics", - "bowtie2/merged_library/picard_metrics/SPT5_INPUT_REP1.mLb.mkD.sorted.MarkDuplicates.metrics.txt", + "bowtie2/merged_library/picard_metrics/SPT5_INPUT_REP1.mLb.mkD.sorted.metrics.txt", "bowtie2/merged_library/picard_metrics/SPT5_INPUT_REP2.mLb.clN.sorted.CollectMultipleMetrics.alignment_summary_metrics", "bowtie2/merged_library/picard_metrics/SPT5_INPUT_REP2.mLb.clN.sorted.CollectMultipleMetrics.base_distribution_by_cycle_metrics", "bowtie2/merged_library/picard_metrics/SPT5_INPUT_REP2.mLb.clN.sorted.CollectMultipleMetrics.insert_size_metrics", "bowtie2/merged_library/picard_metrics/SPT5_INPUT_REP2.mLb.clN.sorted.CollectMultipleMetrics.quality_by_cycle_metrics", "bowtie2/merged_library/picard_metrics/SPT5_INPUT_REP2.mLb.clN.sorted.CollectMultipleMetrics.quality_distribution_metrics", - "bowtie2/merged_library/picard_metrics/SPT5_INPUT_REP2.mLb.mkD.sorted.MarkDuplicates.metrics.txt", + "bowtie2/merged_library/picard_metrics/SPT5_INPUT_REP2.mLb.mkD.sorted.metrics.txt", "bowtie2/merged_library/picard_metrics/SPT5_T0_REP1.mLb.clN.sorted.CollectMultipleMetrics.alignment_summary_metrics", "bowtie2/merged_library/picard_metrics/SPT5_T0_REP1.mLb.clN.sorted.CollectMultipleMetrics.base_distribution_by_cycle_metrics", "bowtie2/merged_library/picard_metrics/SPT5_T0_REP1.mLb.clN.sorted.CollectMultipleMetrics.insert_size_metrics", "bowtie2/merged_library/picard_metrics/SPT5_T0_REP1.mLb.clN.sorted.CollectMultipleMetrics.quality_by_cycle_metrics", "bowtie2/merged_library/picard_metrics/SPT5_T0_REP1.mLb.clN.sorted.CollectMultipleMetrics.quality_distribution_metrics", - "bowtie2/merged_library/picard_metrics/SPT5_T0_REP1.mLb.mkD.sorted.MarkDuplicates.metrics.txt", + "bowtie2/merged_library/picard_metrics/SPT5_T0_REP1.mLb.mkD.sorted.metrics.txt", "bowtie2/merged_library/picard_metrics/SPT5_T0_REP2.mLb.clN.sorted.CollectMultipleMetrics.alignment_summary_metrics", "bowtie2/merged_library/picard_metrics/SPT5_T0_REP2.mLb.clN.sorted.CollectMultipleMetrics.base_distribution_by_cycle_metrics", "bowtie2/merged_library/picard_metrics/SPT5_T0_REP2.mLb.clN.sorted.CollectMultipleMetrics.insert_size_metrics", "bowtie2/merged_library/picard_metrics/SPT5_T0_REP2.mLb.clN.sorted.CollectMultipleMetrics.quality_by_cycle_metrics", "bowtie2/merged_library/picard_metrics/SPT5_T0_REP2.mLb.clN.sorted.CollectMultipleMetrics.quality_distribution_metrics", - "bowtie2/merged_library/picard_metrics/SPT5_T0_REP2.mLb.mkD.sorted.MarkDuplicates.metrics.txt", + "bowtie2/merged_library/picard_metrics/SPT5_T0_REP2.mLb.mkD.sorted.metrics.txt", "bowtie2/merged_library/picard_metrics/SPT5_T15_REP1.mLb.clN.sorted.CollectMultipleMetrics.alignment_summary_metrics", "bowtie2/merged_library/picard_metrics/SPT5_T15_REP1.mLb.clN.sorted.CollectMultipleMetrics.base_distribution_by_cycle_metrics", "bowtie2/merged_library/picard_metrics/SPT5_T15_REP1.mLb.clN.sorted.CollectMultipleMetrics.insert_size_metrics", "bowtie2/merged_library/picard_metrics/SPT5_T15_REP1.mLb.clN.sorted.CollectMultipleMetrics.quality_by_cycle_metrics", "bowtie2/merged_library/picard_metrics/SPT5_T15_REP1.mLb.clN.sorted.CollectMultipleMetrics.quality_distribution_metrics", - "bowtie2/merged_library/picard_metrics/SPT5_T15_REP1.mLb.mkD.sorted.MarkDuplicates.metrics.txt", + "bowtie2/merged_library/picard_metrics/SPT5_T15_REP1.mLb.mkD.sorted.metrics.txt", "bowtie2/merged_library/picard_metrics/SPT5_T15_REP2.mLb.clN.sorted.CollectMultipleMetrics.alignment_summary_metrics", "bowtie2/merged_library/picard_metrics/SPT5_T15_REP2.mLb.clN.sorted.CollectMultipleMetrics.base_distribution_by_cycle_metrics", "bowtie2/merged_library/picard_metrics/SPT5_T15_REP2.mLb.clN.sorted.CollectMultipleMetrics.insert_size_metrics", "bowtie2/merged_library/picard_metrics/SPT5_T15_REP2.mLb.clN.sorted.CollectMultipleMetrics.quality_by_cycle_metrics", "bowtie2/merged_library/picard_metrics/SPT5_T15_REP2.mLb.clN.sorted.CollectMultipleMetrics.quality_distribution_metrics", - "bowtie2/merged_library/picard_metrics/SPT5_T15_REP2.mLb.mkD.sorted.MarkDuplicates.metrics.txt", + "bowtie2/merged_library/picard_metrics/SPT5_T15_REP2.mLb.mkD.sorted.metrics.txt", "bowtie2/merged_library/picard_metrics/pdf", "bowtie2/merged_library/picard_metrics/pdf/SPT5_INPUT_REP1.mLb.clN.sorted.CollectMultipleMetrics.base_distribution_by_cycle.pdf", "bowtie2/merged_library/picard_metrics/pdf/SPT5_INPUT_REP1.mLb.clN.sorted.CollectMultipleMetrics.insert_size_histogram.pdf", @@ -406,8 +380,6 @@ "fastqc/zips/SPT5_T15_REP2_T1_2_fastqc.zip", "genome", "genome/genome.fa", - "genome/genome.fa.fai", - "genome/genome.fa.sizes", "igv", "igv/broad_peak", "igv/broad_peak/igv_files.txt", @@ -422,6 +394,7 @@ "multiqc/broad_peak/multiqc_data/deeptools_plot_fingerprint_counts_mlib_deeptools.yaml", "multiqc/broad_peak/multiqc_data/deeptools_plot_profile_mlib_deeptools.yaml", "multiqc/broad_peak/multiqc_data/fastqc-1-status-check-heatmap.yaml", + "multiqc/broad_peak/multiqc_data/fastqc-1_adapter_content_plot.yaml", "multiqc/broad_peak/multiqc_data/fastqc-1_per_base_n_content_plot.yaml", "multiqc/broad_peak/multiqc_data/fastqc-1_per_base_sequence_quality_plot.yaml", "multiqc/broad_peak/multiqc_data/fastqc-1_per_sequence_gc_content_plot_Counts.yaml", @@ -522,6 +495,7 @@ "multiqc/broad_peak/multiqc_plots/pdf/deseq2_clustering_1.pdf", "multiqc/broad_peak/multiqc_plots/pdf/deseq2_pca_1.pdf", "multiqc/broad_peak/multiqc_plots/pdf/fastqc-1-status-check-heatmap.pdf", + "multiqc/broad_peak/multiqc_plots/pdf/fastqc-1_adapter_content_plot.pdf", "multiqc/broad_peak/multiqc_plots/pdf/fastqc-1_per_base_n_content_plot.pdf", "multiqc/broad_peak/multiqc_plots/pdf/fastqc-1_per_base_sequence_quality_plot.pdf", "multiqc/broad_peak/multiqc_plots/pdf/fastqc-1_per_sequence_gc_content_plot_Counts.pdf", @@ -609,6 +583,7 @@ "multiqc/broad_peak/multiqc_plots/png/deseq2_clustering_1.png", "multiqc/broad_peak/multiqc_plots/png/deseq2_pca_1.png", "multiqc/broad_peak/multiqc_plots/png/fastqc-1-status-check-heatmap.png", + "multiqc/broad_peak/multiqc_plots/png/fastqc-1_adapter_content_plot.png", "multiqc/broad_peak/multiqc_plots/png/fastqc-1_per_base_n_content_plot.png", "multiqc/broad_peak/multiqc_plots/png/fastqc-1_per_base_sequence_quality_plot.png", "multiqc/broad_peak/multiqc_plots/png/fastqc-1_per_sequence_gc_content_plot_Counts.png", @@ -696,6 +671,7 @@ "multiqc/broad_peak/multiqc_plots/svg/deseq2_clustering_1.svg", "multiqc/broad_peak/multiqc_plots/svg/deseq2_pca_1.svg", "multiqc/broad_peak/multiqc_plots/svg/fastqc-1-status-check-heatmap.svg", + "multiqc/broad_peak/multiqc_plots/svg/fastqc-1_adapter_content_plot.svg", "multiqc/broad_peak/multiqc_plots/svg/fastqc-1_per_base_n_content_plot.svg", "multiqc/broad_peak/multiqc_plots/svg/fastqc-1_per_base_sequence_quality_plot.svg", "multiqc/broad_peak/multiqc_plots/svg/fastqc-1_per_sequence_gc_content_plot_Counts.svg", @@ -778,6 +754,9 @@ "pipeline_info", "pipeline_info/nf_core_chipseq_software_mqc_versions.yml", "pipeline_info/samplesheet.valid.csv", + "samtools", + "samtools/genome.fa.fai", + "samtools/genome.fa.sizes", "trimgalore", "trimgalore/fastqc", "trimgalore/fastqc/SPT5_INPUT_REP1_T1_1_val_1_fastqc.html", @@ -822,73 +801,66 @@ [ "SPT5_INPUT_REP1.mLB.clN.bedGraph:md5,3185527dd339a8dbcca453f97ecc0860", "SPT5_INPUT_REP2.mLB.clN.bedGraph:md5,bdc6ce913840caa034fe12f11dc3f821", - "SPT5_T0_REP1.mLB.clN.bedGraph:md5,d50a212ac1477362e6266ebb3aa6c857", + "SPT5_T0_REP1.mLB.clN.bedGraph:md5,a1c995094ac610f67f74037882713be1", "SPT5_T0_REP2.mLB.clN.bedGraph:md5,ac8049a66f664f4f52e55738bb1b8482", - "SPT5_T15_REP1.mLB.clN.bedGraph:md5,4dd8e393d018debbb6da34bf8a9b9c65", - "SPT5_T15_REP2.mLB.clN.bedGraph:md5,2b646aa9a12ee41987726118058a7e21", - "SPT5_T0_REP1_peaks.broadPeak:md5,2cb428b8040f21be839fd18a9a500c4f", - "SPT5_T0_REP1_peaks.gappedPeak:md5,4f54b0be097b5c164d401a5a8b7224cc", - "SPT5_T0_REP1_peaks.xls:md5,2ae150a4de266fbf8d5c6b678ec2cb0d", + "SPT5_T15_REP1.mLB.clN.bedGraph:md5,6594e02d144dcf85f39b5c7339e11db6", + "SPT5_T15_REP2.mLB.clN.bedGraph:md5,3afb695bb7014e0d8df83cda30d4731d", + "SPT5_T0_REP1_peaks.broadPeak:md5,27d134afd2953dafa22e35dcf8ec2bcc", + "SPT5_T0_REP1_peaks.gappedPeak:md5,f221f53d1a6486714ad50664ef440ca7", + "SPT5_T0_REP1_peaks.xls:md5,5cd75fde29ae6f23e7eeebd9da4bcfd9", "SPT5_T0_REP2_peaks.broadPeak:md5,116c4501dd8355e4ef100144bb63da02", - "SPT5_T0_REP2_peaks.gappedPeak:md5,b44f846ec9fa520fef7bc4de93e910cb", - "SPT5_T0_REP2_peaks.xls:md5,5e8f7c09e1c1bde38123290abebe70af", - "SPT5_T15_REP1_peaks.broadPeak:md5,e96cc2988724e64bf6036098c0f217de", - "SPT5_T15_REP1_peaks.gappedPeak:md5,3bddeef3cf35c03d0809121f16b2f944", - "SPT5_T15_REP1_peaks.xls:md5,5d790730a7419c249333c5f0476d74a9", - "SPT5_T15_REP2_peaks.broadPeak:md5,58bf163518655488cdaf46062a4c0819", - "SPT5_T15_REP2_peaks.gappedPeak:md5,32f9f94a9f491acc67b4c766d2434714", - "SPT5_T15_REP2_peaks.xls:md5,2fe138f54ebbeb9954ab3fc89c537ec2", + "SPT5_T0_REP2_peaks.gappedPeak:md5,a8a6e65432ec329f677983ff3f122185", + "SPT5_T0_REP2_peaks.xls:md5,44283c207158e98a1c148abfa33cf7ae", + "SPT5_T15_REP1_peaks.broadPeak:md5,498e8a0ecc08048ef1b65e4a08a994da", + "SPT5_T15_REP1_peaks.gappedPeak:md5,6f9e402eecc34aa451505cffd85f2d0e", + "SPT5_T15_REP1_peaks.xls:md5,dff9d45804738d950915e187287d699c", + "SPT5_T15_REP2_peaks.broadPeak:md5,d2076fea44e872c40f8b85d8997d43d6", + "SPT5_T15_REP2_peaks.gappedPeak:md5,649be1ea0320201a2ce396cc133321eb", + "SPT5_T15_REP2_peaks.xls:md5,62ea3288e18d3a744dd25711eaa19f23", "SPT5.consensus_peaks.antibody.txt:md5,8d7549b0cb2e42ffd5c23879e7f54ce9", "SPT5.consensus_peaks.bed:md5,71f9487dbe77c3ed1422f5a0e5fc5c07", "SPT5.consensus_peaks.boolean.intersect.txt:md5,2cd941a25076b0089df06c37717d1733", - "SPT5.consensus_peaks.boolean.txt:md5,d71949f505331ad2e07456d49ecf3efb", + "SPT5.consensus_peaks.boolean.txt:md5,f001e5dbca28caf0324109b6e5d369ed", "SPT5.consensus_peaks.saf:md5,b79bdb601486014e09bfaabf987c09a1", "R_sessionInfo.log:md5,fb0da0d7ad6994ed66a8e68348b19676", - "SPT5_T0_REP1.txt:md5,1c69f7c10bcb6456f7d71b7c773f052c", - "SPT5_T0_REP2.txt:md5,96432673bcb533bc2be2051973f01854", - "SPT5_T15_REP1.txt:md5,1c2d99b55f1e3b26822103a63212dc6f", - "SPT5_T15_REP2.txt:md5,cdabc6875c11c7a5a47aa6745852ca3e", - "SPT5_T0_REP1.FRiP_mqc.tsv:md5,8b39335b0db4c56fbbf54ae741636e1f", + "SPT5_T0_REP1.txt:md5,a457c22be619786abc2b425fd466af8b", + "SPT5_T0_REP2.txt:md5,888f787325d68de344f5b99ec8ebd49e", + "SPT5_T15_REP1.txt:md5,de476d906e71b366b6c70d8952d66514", + "SPT5_T15_REP2.txt:md5,24634a0f77cee0c1ece230a8954df34e", + "SPT5_T0_REP1.FRiP_mqc.tsv:md5,ab50368d5176e667065713c5fbb3a480", "SPT5_T0_REP1.peak_count_mqc.tsv:md5,bbf1465097ab6c54cedd55e986f16fb0", "SPT5_T0_REP2.FRiP_mqc.tsv:md5,eae3c0c3b130e40c8947c370a435dffd", "SPT5_T0_REP2.peak_count_mqc.tsv:md5,f2f33edc9cdbe6b635328f85a266e4c7", "SPT5_T15_REP1.FRiP_mqc.tsv:md5,1f275bf96e7808fdbf7ebc81ec4ca776", "SPT5_T15_REP1.peak_count_mqc.tsv:md5,b26d81220921415cae94ee5e1be459e5", - "SPT5_T15_REP2.FRiP_mqc.tsv:md5,9cb9888d7ff1513fe2fefc6c986c5d48", + "SPT5_T15_REP2.FRiP_mqc.tsv:md5,4fcabfd43666aff985a4abe4257d2cf4", "SPT5_T15_REP2.peak_count_mqc.tsv:md5,c344e0089dc0455c282bb20647c65ab1", "SPT5_INPUT_REP1.mLb.clN.sorted.bam.flagstat:md5,5789960a9102d6f53433dcdbb9b63940", "SPT5_INPUT_REP1.mLb.clN.sorted.bam.idxstats:md5,20a4ac025979cc12c3e0e6cb0bd9c839", - "SPT5_INPUT_REP1.mLb.clN.sorted.bam.stats:md5,c409aed714f13ee1d3dc56682a101849", "SPT5_INPUT_REP2.mLb.clN.sorted.bam.flagstat:md5,56fe278c68a4f836efbe239f66b3635e", "SPT5_INPUT_REP2.mLb.clN.sorted.bam.idxstats:md5,f887cfebeaf5ed7d6ce9e140ef25d14d", - "SPT5_INPUT_REP2.mLb.clN.sorted.bam.stats:md5,c98cc1ba99767d303e8412707e6af769", - "SPT5_T0_REP1.mLb.clN.sorted.bam.flagstat:md5,e48ad478b51b1eb0958c6888335a5b3b", - "SPT5_T0_REP1.mLb.clN.sorted.bam.idxstats:md5,2db8beecdf01eea6bceec07f280b7591", - "SPT5_T0_REP1.mLb.clN.sorted.bam.stats:md5,1a4faa180f9ee98c301296607f93b489", + "SPT5_T0_REP1.mLb.clN.sorted.bam.flagstat:md5,64b435a3d915a1b678e5fbec6eb68d7d", + "SPT5_T0_REP1.mLb.clN.sorted.bam.idxstats:md5,5fbb7b046fbd41c35209fa5f43cfc047", "SPT5_T0_REP2.mLb.clN.sorted.bam.flagstat:md5,ee0ff6d897ed617d54ef35bc499baebb", "SPT5_T0_REP2.mLb.clN.sorted.bam.idxstats:md5,71093ea767abc746e484b6f68948406d", - "SPT5_T0_REP2.mLb.clN.sorted.bam.stats:md5,1ccc96b78ed1c35e458d641a00c42ea5", - "SPT5_T15_REP1.mLb.clN.sorted.bam.flagstat:md5,748ae9991a2ea3164782bc1fd9ec0383", - "SPT5_T15_REP1.mLb.clN.sorted.bam.idxstats:md5,62d3d5ba9a5e43a60cbf5848ee983a1a", - "SPT5_T15_REP1.mLb.clN.sorted.bam.stats:md5,b20d14e1e146d7c0ae3a99c631632e4b", - "SPT5_T15_REP2.mLb.clN.sorted.bam.flagstat:md5,3b2bc62b2b78909b246e93c82087e917", - "SPT5_T15_REP2.mLb.clN.sorted.bam.idxstats:md5,b0817cf18f52ab9a0fca71b5bd57ced6", - "SPT5_T15_REP2.mLb.clN.sorted.bam.stats:md5,6452ee46c39573dc597b22a627c7b091", + "SPT5_T15_REP1.mLb.clN.sorted.bam.flagstat:md5,5ceea86d4a1758c59f360c984192801a", + "SPT5_T15_REP1.mLb.clN.sorted.bam.idxstats:md5,2917cc064403c8e81656fe5e025bb044", + "SPT5_T15_REP2.mLb.clN.sorted.bam.flagstat:md5,f583616ced3accf4c5bb4c144c211104", + "SPT5_T15_REP2.mLb.clN.sorted.bam.idxstats:md5,27f0b7c40dd733b5a9046878a485eb46", "genome.fa:md5,4bad9f4b18056156a81f7f952abbe125", - "genome.fa.fai:md5,6f4c0ce5258e6948135ad006e1f9ee1b", - "genome.fa.sizes:md5,e122f8021a5ef14104c32785cb9b7adc", "cutadapt_filtered_reads_plot.yaml:md5,976fdb8049d847c977195863418e3655", - "cutadapt_trimmed_sequences_plot_3_Counts.yaml:md5,14b35027cce2eba80181265e04f6f489", - "cutadapt_trimmed_sequences_plot_3_Obs_Exp.yaml:md5,98410382bb4083d3215a24f0f27b21dd", - "fastqc-1-status-check-heatmap.yaml:md5,8876a09ccb279f76e1b516506cc19157", - "fastqc-1_per_base_n_content_plot.yaml:md5,d6764dbc1915525bc18c74a27d1fa194", - "fastqc-1_per_base_sequence_quality_plot.yaml:md5,0dd7d8a364d42063440dc847e23eeda9", - "fastqc-1_per_sequence_gc_content_plot_Counts.yaml:md5,2cb304ef2551b4ce47126228769a152b", - "fastqc-1_per_sequence_gc_content_plot_Percentages.yaml:md5,9f835a07bebf743957983ed013a7eb3c", - "fastqc-1_per_sequence_quality_scores_plot.yaml:md5,e7e1e6edaae3140586aecc3b77c6e533", - "fastqc-1_sequence_counts_plot.yaml:md5,2b43b4cbebb560f669e317c6b8e946ae", - "fastqc-1_sequence_duplication_levels_plot.yaml:md5,02ef5110211a2848b6619e1adb4573ce", - "fastqc-1_top_overrepresented_sequences_table.yaml:md5,8a80554c91d9fca8acb82f023de02f11", + "cutadapt_trimmed_sequences_plot_3_Counts.yaml:md5,e6733f4ff773a27d0ab81564913b4b54", + "cutadapt_trimmed_sequences_plot_3_Obs_Exp.yaml:md5,9ffcfe37c02af14b8eddd4746066e56a", + "fastqc-1-status-check-heatmap.yaml:md5,6c6e1591b5ff248c85446f9728a3dad4", + "fastqc-1_adapter_content_plot.yaml:md5,d78273a7e4ff36434bb91246fef01523", + "fastqc-1_per_base_n_content_plot.yaml:md5,3625446964b669ccff279aba54510462", + "fastqc-1_per_base_sequence_quality_plot.yaml:md5,1fb4d35d6b94fc4f41d5be1304844b95", + "fastqc-1_per_sequence_gc_content_plot_Counts.yaml:md5,101f11f9cebcc626755f32322b27ebd3", + "fastqc-1_per_sequence_gc_content_plot_Percentages.yaml:md5,0055f4bbded45434618259f47fe5fe85", + "fastqc-1_per_sequence_quality_scores_plot.yaml:md5,eed2628303916e49143ccf37300fb5de", + "fastqc-1_sequence_counts_plot.yaml:md5,6ca3a8cf8d258777e29b8e8731157d90", + "fastqc-1_sequence_duplication_levels_plot.yaml:md5,3e3622b7dd80be1db92ac06df8e3d056", + "fastqc-1_top_overrepresented_sequences_table.yaml:md5,a333a02f5313876cf1713d7b0168d5f3", "fastqc-status-check-heatmap.yaml:md5,1e473e0f9140b718607d8c72cf3c0b45", "fastqc_adapter_content_plot.yaml:md5,591991daf3e3c49873f4a51a3710b072", "fastqc_per_base_n_content_plot.yaml:md5,c16a4af177b9ad9694a9535023906927", @@ -898,89 +870,89 @@ "fastqc_per_sequence_quality_scores_plot.yaml:md5,351b55974af5ee21294ebf5deb850d7c", "fastqc_sequence_counts_plot.yaml:md5,5522b2b42f0b3753dd359aad1565d7c2", "fastqc_sequence_duplication_levels_plot.yaml:md5,e883323380f2880c81ea36dc91ad8678", - "fastqc_sequence_length_distribution_plot.yaml:md5,f1d36d9bed4b85e0ae349b514ab788fc", + "fastqc_sequence_length_distribution_plot.yaml:md5,d57678f16381986766d56b631c838106", "fastqc_top_overrepresented_sequences_table.yaml:md5,443e161371f73cebf63c14f7a9f3580d", - "featureCounts_assignment_plot.yaml:md5,83f65e024cdcf840199ff56dfdbbc0fc", + "featureCounts_assignment_plot.yaml:md5,4da17bf822e2c2645d81610248f44db3", "multiqc_citations.yaml:md5,fca5dc7cb20162434c714d26b11161f3", - "multiqc_cutadapt.yaml:md5,25f32008ccf0041ac74bb82d744d6eda", "multiqc_fastqc.yaml:md5,30fe6d1a5e5c04695dda81294b828ec9", - "multiqc_fastqc_1.yaml:md5,dd7981fa28827b895ef844011053eeff", - "multiqc_featurecounts.yaml:md5,b04c61a636508a406a40d532c3841474", - "multiqc_frip_score.yaml:md5,ac21032eb4978f8bc2ef2d03dfc7c04c", - "multiqc_nsc_coefficient.yaml:md5,63db816351d46b1420aa35dca04a4a3f", + "multiqc_fastqc_1.yaml:md5,cd4a85c27c3cf85f1d0612afce793186", + "multiqc_featurecounts.yaml:md5,344706a7a1f373f2710ef124f59284e5", + "multiqc_frip_score.yaml:md5,5ba89c150b7a147baa0ab0dcfce1f05d", + "multiqc_nsc_coefficient.yaml:md5,67e001b4585b8a393d0249b2e3afb4ae", "multiqc_peak_annotation.yaml:md5,eed4fb1ce72c9dfcf28b33143a5f63c5", "multiqc_peak_count.yaml:md5,b595892dcd65c4f233597c17b0d982f1", - "multiqc_phantompeakqualtools.yaml:md5,ddadca49d172a77ea491675930155413", - "multiqc_picard-1_AlignmentSummaryMetrics.yaml:md5,86347cb87e66b56dfa591568ebfd4c24", - "multiqc_picard-1_insertSize.yaml:md5,e0fb94ddfce5be120711660801850972", - "multiqc_picard-1_quality_by_cycle.yaml:md5,2478f6aac43166b2c6b3cc653288579e", - "multiqc_picard-1_quality_score_distribution.yaml:md5,63f6a752be596fb6ad1a8b1c8bbdf17a", - "multiqc_picard_baseContent.yaml:md5,8fe24fbc195b032c064f9267349a8826", - "multiqc_picard_dups.yaml:md5,daf7f91937e15046c525c6032813bc75", - "multiqc_rsc_coefficient.yaml:md5,70d442b344556b9fd6ab591d38423004", - "multiqc_samtools_flagstat.yaml:md5,7f49f4aeeaa0b33a6a56403ef4e511ba", - "multiqc_samtools_flagstat_1.yaml:md5,e7826d97bcb600953a58814996f864e6", - "multiqc_samtools_flagstat_2.yaml:md5,42a4d5406638556c65e9060f9497b960", - "multiqc_samtools_idxstats.yaml:md5,0d1f6bbff844c69680de2e3a0b744b8e", - "multiqc_samtools_idxstats_1.yaml:md5,41b238a7390ff63af594d4301f734900", - "multiqc_samtools_idxstats_2.yaml:md5,9aa46ef39c0d1c9a59ad186f3939955f", - "multiqc_samtools_stats.yaml:md5,c1f753728b7d0d969f1de706989508ea", - "multiqc_samtools_stats_1.yaml:md5,ac39dbae7578b4fc13bf2753d9f2d2eb", - "multiqc_samtools_stats_2.yaml:md5,1bb38f88e3cf993ffd1c1eca67965f48", - "multiqc_strand_shift_correlation.yaml:md5,87ce7906a3297afe5f5d73fe6e6d86ca", - "picard-1_alignment_readlength_plot.yaml:md5,ef8322029669a340b33c3efe78c5df94", - "picard-1_alignment_summary_Aligned_Bases.yaml:md5,0f3082cdd9d84f49658e02ab83ecd123", - "picard-1_alignment_summary_Aligned_Reads.yaml:md5,12710ac1215929e04b124952d9ce9ac3", + "multiqc_phantompeakqualtools.yaml:md5,077cc1853cfcefb23550b48a9df5e986", + "multiqc_picard-1_AlignmentSummaryMetrics.yaml:md5,910c34a3121a7d4487bcf3cb55207384", + "multiqc_picard-1_insertSize.yaml:md5,16201c88fece186148c98254636fa9e6", + "multiqc_picard-1_quality_by_cycle.yaml:md5,526872757159b0bd6af9a5039177797a", + "multiqc_picard-1_quality_score_distribution.yaml:md5,79c9e54f68b9416e3126b06c1d105566", + "multiqc_picard_baseContent.yaml:md5,a0c1880f0f3c0e63e85787d76b74a429", + "multiqc_picard_dups.yaml:md5,721d70bf8b989783143645ccb8d08455", + "multiqc_rsc_coefficient.yaml:md5,e8970cea6ccc4d0af17b5db285263280", + "multiqc_samtools_flagstat.yaml:md5,601b23aea7001ea7f5e0be6b6365e772", + "multiqc_samtools_flagstat_1.yaml:md5,15b7e81b7518c1864a6c505ccb32f2df", + "multiqc_samtools_flagstat_2.yaml:md5,e4304235970c0dfe9aeb2941a8a342ce", + "multiqc_samtools_idxstats.yaml:md5,9e6ecc522c159c111d41aabb9c798d0f", + "multiqc_samtools_idxstats_1.yaml:md5,2ff19f2ed79bae9facb5710773080004", + "multiqc_samtools_idxstats_2.yaml:md5,99aa2c5e1db7c750377f4495fa81f693", + "multiqc_samtools_stats.yaml:md5,fc38617b8f0b70f57bbc591fd77ee77c", + "multiqc_samtools_stats_1.yaml:md5,3f040ce9f37db47eb2e7193d52b05182", + "multiqc_samtools_stats_2.yaml:md5,15b13d9b289a574d79f79c24e4372721", + "picard-1_alignment_readlength_plot.yaml:md5,c99d90a720884dfa66f477f7a13e681f", + "picard-1_alignment_summary_Aligned_Bases.yaml:md5,b14ee00e59f209cad52b1a07685c38d2", + "picard-1_alignment_summary_Aligned_Reads.yaml:md5,7d6c5677c692de58a6491c01367762be", "picard-1_histogram.yaml:md5,8a80554c91d9fca8acb82f023de02f11", - "picard-1_histogram_1.yaml:md5,2478f6aac43166b2c6b3cc653288579e", - "picard-1_histogram_2.yaml:md5,63f6a752be596fb6ad1a8b1c8bbdf17a", - "picard-1_insert_size_Counts.yaml:md5,8fcef0700ff63df7dbb2a0594f3294a9", - "picard-1_insert_size_Percentages.yaml:md5,ba621b3cb07eb930b769e24461a62482", - "picard-1_quality_by_cycle.yaml:md5,0432b05602d754b5f03b34c15058ed6f", - "picard-1_quality_score_distribution.yaml:md5,426e031acc10eeb8b7977401ed731dfa", - "picard_base_distribution_by_cycle__Adenine.yaml:md5,0ad2885a20e408e41c3515afecdd6ea9", - "picard_base_distribution_by_cycle__Cytosine.yaml:md5,3e6dbfb300937eabb098c65071597abd", - "picard_base_distribution_by_cycle__Guanine.yaml:md5,71b8c3f5ced0393f3b4a2dac8ee53402", - "picard_base_distribution_by_cycle__Thymine.yaml:md5,05ba2b40801888464d8e17e349387d4f", - "picard_base_distribution_by_cycle__Undetermined.yaml:md5,ecd12bd2e8698c090f06e6c6bcf37188", - "picard_deduplication.yaml:md5,f0123e6449274c09a0158657b549d861", + "picard-1_histogram_1.yaml:md5,526872757159b0bd6af9a5039177797a", + "picard-1_histogram_2.yaml:md5,79c9e54f68b9416e3126b06c1d105566", + "picard-1_insert_size_Counts.yaml:md5,f614c442b35ff8c27db4a1e6d0ab03ce", + "picard-1_insert_size_Percentages.yaml:md5,7db9e226a7a209c028565b264860fa0f", + "picard-1_quality_by_cycle.yaml:md5,cedb46311f7cc819c462a64b91e167f3", + "picard-1_quality_score_distribution.yaml:md5,4bf77c1d1b3e285c7890944354e9bcbd", + "picard_base_distribution_by_cycle__Adenine.yaml:md5,da07ea85f68ef4d99772b3e7216ec242", + "picard_base_distribution_by_cycle__Cytosine.yaml:md5,e2623d2c67a0f8abcc68f4b530031fc4", + "picard_base_distribution_by_cycle__Guanine.yaml:md5,a4629a62eba1d79deaf064195c5e5320", + "picard_base_distribution_by_cycle__Thymine.yaml:md5,1b58b1984ee58765915647627c3bfef2", + "picard_base_distribution_by_cycle__Undetermined.yaml:md5,01c9667b3d66ee80de71daf62b9c4a07", + "picard_deduplication.yaml:md5,e02f8703f07c37f064568607d6321d24", "picard_histogram.yaml:md5,8a80554c91d9fca8acb82f023de02f11", "picard_histogram_1.yaml:md5,8a80554c91d9fca8acb82f023de02f11", "picard_histogram_2.yaml:md5,8a80554c91d9fca8acb82f023de02f11", - "samtools-flagstat-dp_Percentage_of_total-1.yaml:md5,caebb683ef834e2dbfaf09a4e6751c69", - "samtools-flagstat-dp_Percentage_of_total-2.yaml:md5,92202e45b98fe15ee8966f7e85af1eb6", - "samtools-flagstat-dp_Percentage_of_total.yaml:md5,f0e636f2e22d6b7b7df0e3e22eb99e0c", - "samtools-flagstat-dp_Read_counts-1.yaml:md5,3cf4c572a179d508f53c4838f8e89de7", - "samtools-flagstat-dp_Read_counts-2.yaml:md5,d52e3e0c02a392cc4939c78dd5cb286b", - "samtools-flagstat-dp_Read_counts.yaml:md5,f278c8953daf3de4c73515f56da4d880", - "samtools-idxstats-mapped-reads-plot_Normalised_Counts-1.yaml:md5,234a3bf875eb9fd93b3d43b11edc9e59", - "samtools-idxstats-mapped-reads-plot_Normalised_Counts-2.yaml:md5,d1777af033fa122b9ffd86e2d165e299", - "samtools-idxstats-mapped-reads-plot_Normalised_Counts.yaml:md5,7dbbc39984c5dc6421e68711d9f0732c", - "samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts-1.yaml:md5,b7266c4e8bc759932521d0abeefccf8f", - "samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts-2.yaml:md5,9e69299aa94e930736eb6d58a99e32ab", - "samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts.yaml:md5,5823a0a1231681d8887007bd2659ee8e", - "samtools-idxstats-mapped-reads-plot_Raw_Counts-1.yaml:md5,df06db1e3a0e492bdbcef799730c2cd9", - "samtools-idxstats-mapped-reads-plot_Raw_Counts-2.yaml:md5,b210ce5a055931fd94328750454df24d", - "samtools-idxstats-mapped-reads-plot_Raw_Counts.yaml:md5,f594898789d8f354ce7720e5cbdcb1d3", - "samtools-stats-dp.yaml:md5,a17797e8a52aff0c17051735099629fe", - "samtools_alignment_plot.yaml:md5,21e19a3581f28089acffd00121442ffc", - "samplesheet.valid.csv:md5,276425084544b3baf533e2f17207a384" + "samtools-flagstat-dp_Percentage_of_total-1.yaml:md5,7342b056780ccdac6db6df3a51f841aa", + "samtools-flagstat-dp_Percentage_of_total-2.yaml:md5,23d1562aa31479dd63736d6d4a46a4e6", + "samtools-flagstat-dp_Percentage_of_total.yaml:md5,d3cbbb549ccb8fb6038e872503396201", + "samtools-flagstat-dp_Read_counts-1.yaml:md5,7342afa5e7fee42d744baddfb29e9567", + "samtools-flagstat-dp_Read_counts-2.yaml:md5,024332a773c5f7ff529924014506e6a3", + "samtools-flagstat-dp_Read_counts.yaml:md5,e6b08e90403de66c56cfbafa2c4b778b", + "samtools-idxstats-mapped-reads-plot_Normalised_Counts-1.yaml:md5,5297ed41b97a41f257408f5229c7de63", + "samtools-idxstats-mapped-reads-plot_Normalised_Counts-2.yaml:md5,49a782c2b00fe0f09123614f99a9318d", + "samtools-idxstats-mapped-reads-plot_Normalised_Counts.yaml:md5,1b262636bad8ed71e4ad1723e7f62867", + "samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts-1.yaml:md5,f7a719fcf29a52132bfa1a0559fbd712", + "samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts-2.yaml:md5,bf95aa0b14e75e843939cb10bfb5ebf7", + "samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts.yaml:md5,abc8f48da8bb3ed6ebd335f81bc52c4c", + "samtools-idxstats-mapped-reads-plot_Raw_Counts-1.yaml:md5,42353887cd98928c9a63099039260ab4", + "samtools-idxstats-mapped-reads-plot_Raw_Counts-2.yaml:md5,bc7e8f4b1f7cf4049e017ead3b36c6b8", + "samtools-idxstats-mapped-reads-plot_Raw_Counts.yaml:md5,c813c38035d8ecf0d15240893b7010f2", + "samtools-stats-dp.yaml:md5,37d2f4096a9e99c8680aa09dd2ec8f10", + "samtools_alignment_plot.yaml:md5,8f259411704feadcfda2158cebd64830", + "samplesheet.valid.csv:md5,276425084544b3baf533e2f17207a384", + "genome.fa.fai:md5,6f4c0ce5258e6948135ad006e1f9ee1b", + "genome.fa.sizes:md5,e122f8021a5ef14104c32785cb9b7adc" ] ], + "timestamp": "2026-03-18T20:10:23.275642", "meta": { - "nf-test": "0.9.2", - "nextflow": "25.04.3" - }, - "timestamp": "2025-09-17T13:11:14.489285555" + "nf-test": "0.9.4", + "nextflow": "25.04.0" + } }, "bowtie2 with stub": { "content": [ 20 ], + "timestamp": "2026-03-14T15:14:30.739354966", "meta": { - "nf-test": "0.9.2", - "nextflow": "25.04.6" - }, - "timestamp": "2025-09-04T20:19:29.013062" + "nf-test": "0.9.3", + "nextflow": "25.10.4" + } } -} +} \ No newline at end of file diff --git a/tests/chromap.nf.test.snap b/tests/chromap.nf.test.snap index 2fd20e1c5..c965013aa 100644 --- a/tests/chromap.nf.test.snap +++ b/tests/chromap.nf.test.snap @@ -3,119 +3,86 @@ "content": [ 215, { - "ANNOTATE_BOOLEAN_PEAKS": { - "sed": 4.7 - }, "BAMTOOLS_FILTER": { - "bamtools": "2.5.2", - "samtools": "1.15.1" + "bamtools": "2.5.3", + "samtools": 1.23 }, "BAM_REMOVE_ORPHANS": { - "samtools": "1.15.1" + "samtools": 1.23 }, "BEDTOOLS_GENOMECOV": { "bedtools": "2.31.1" }, - "CHROMAP_CHROMAP": { - "chromap": "0.2.6-r490", - "samtools": 1.2 - }, - "CHROMAP_INDEX": { - "chromap": "0.2.6-r490" - }, - "CUSTOM_GETCHROMSIZES": { - "getchromsizes": 1.2 - }, "DEEPTOOLS_COMPUTEMATRIX": { - "deeptools": "3.5.5" + "deeptools": "3.5.6" }, "DEEPTOOLS_PLOTFINGERPRINT": { - "deeptools": "3.5.5" + "deeptools": "3.5.6" }, "DEEPTOOLS_PLOTHEATMAP": { - "deeptools": "3.5.5" + "deeptools": "3.5.6" }, "DEEPTOOLS_PLOTPROFILE": { - "deeptools": "3.5.5" - }, - "DESEQ2_QC": { - "bioconductor-deseq2": "1.28.0", - "r-base": "4.0.3" + "deeptools": "3.5.6" }, "FASTQC": { "fastqc": "0.12.1" }, "FRIP_SCORE": { - "bedtools": "2.30.0", - "samtools": "1.15.1" + "bedtools": "2.31.1", + "samtools": 1.23 }, "GENOME_BLACKLIST_REGIONS": { - "bedtools": "2.30.0" - }, - "GTF2BED": { - "perl": "5.26.2" - }, - "HOMER_ANNOTATEPEAKS": { - "homer": 4.11 - }, - "IGV": { - "python": "3.8.3" + "bedtools": "2.31.1" }, "MACS3_CALLPEAK": { - "macs3": "3.0.1" + "macs3": "3.0.4" }, "MACS3_CONSENSUS": { - "python": "3.10.0", - "r-base": "4.1.1" - }, - "MULTIQC_CUSTOM_PEAKS": { - "sed": 4.7 - }, - "PHANTOMPEAKQUALTOOLS": { - "phantompeakqualtools": "1.2.2" + "R": "4.1.3", + "python": "3.14.0" }, "PICARD_COLLECTMULTIPLEMETRICS": { - "picard": "3.2.0-1-g3948afb6b" + "picard": "3.4.0" }, "PICARD_MARKDUPLICATES": { - "picard": "3.2.0-1-g3948afb6b" + "picard": "3.4.0" }, "PICARD_MERGESAMFILES": { - "picard": "3.2.0-1-g3948afb6b" + "picard": "3.4.0" }, "PLOT_HOMER_ANNOTATEPEAKS": { - "r-base": "4.0.3" + "R": "4.5.3" }, "PLOT_MACS3_QC": { - "r-base": "4.0.3" + "R": "4.5.3" }, - "SAMPLESHEET_CHECK": { - "python": "3.8.3" + "SAMTOOLS_FAIDX": { + "samtools": "1.22.1" }, "SAMTOOLS_FLAGSTAT": { "samtools": "1.22.1" }, "SAMTOOLS_IDXSTATS": { - "samtools": 1.2 + "samtools": "1.22.1" }, "SAMTOOLS_INDEX": { - "samtools": 1.2 + "samtools": "1.22.1" }, "SAMTOOLS_SORT": { - "samtools": 1.2 + "samtools": "1.22.1" }, "SAMTOOLS_STATS": { - "samtools": 1.2 + "samtools": "1.22.1" }, "SUBREAD_FEATURECOUNTS": { - "subread": "2.0.1" + "subread": "2.1.1" }, "TRIMGALORE": { - "cutadapt": 3.4, - "trimgalore": "0.6.7" + "trimgalore": "0.6.10" }, "UCSC_BEDGRAPHTOBIGWIG": { - "ucsc": 445 + "ucsc": 482 }, "Workflow": { "nf-core/chipseq": "v2.2.0dev" @@ -227,8 +194,8 @@ "chromap/merged_library/macs3/broad_peak/consensus/SPT5/SPT5.consensus_peaks.boolean.intersect.plot.pdf", "chromap/merged_library/macs3/broad_peak/consensus/SPT5/SPT5.consensus_peaks.boolean.intersect.txt", "chromap/merged_library/macs3/broad_peak/consensus/SPT5/SPT5.consensus_peaks.boolean.txt", - "chromap/merged_library/macs3/broad_peak/consensus/SPT5/SPT5.consensus_peaks.featureCounts.txt", - "chromap/merged_library/macs3/broad_peak/consensus/SPT5/SPT5.consensus_peaks.featureCounts.txt.summary", + "chromap/merged_library/macs3/broad_peak/consensus/SPT5/SPT5.consensus_peaks.featureCounts.tsv", + "chromap/merged_library/macs3/broad_peak/consensus/SPT5/SPT5.consensus_peaks.featureCounts.tsv.summary", "chromap/merged_library/macs3/broad_peak/consensus/SPT5/SPT5.consensus_peaks.saf", "chromap/merged_library/macs3/broad_peak/consensus/SPT5/deseq2", "chromap/merged_library/macs3/broad_peak/consensus/SPT5/deseq2/R_sessionInfo.log", @@ -296,37 +263,37 @@ "chromap/merged_library/picard_metrics/SPT5_INPUT_REP1.mLb.clN.sorted.CollectMultipleMetrics.insert_size_metrics", "chromap/merged_library/picard_metrics/SPT5_INPUT_REP1.mLb.clN.sorted.CollectMultipleMetrics.quality_by_cycle_metrics", "chromap/merged_library/picard_metrics/SPT5_INPUT_REP1.mLb.clN.sorted.CollectMultipleMetrics.quality_distribution_metrics", - "chromap/merged_library/picard_metrics/SPT5_INPUT_REP1.mLb.mkD.sorted.MarkDuplicates.metrics.txt", + "chromap/merged_library/picard_metrics/SPT5_INPUT_REP1.mLb.mkD.sorted.metrics.txt", "chromap/merged_library/picard_metrics/SPT5_INPUT_REP2.mLb.clN.sorted.CollectMultipleMetrics.alignment_summary_metrics", "chromap/merged_library/picard_metrics/SPT5_INPUT_REP2.mLb.clN.sorted.CollectMultipleMetrics.base_distribution_by_cycle_metrics", "chromap/merged_library/picard_metrics/SPT5_INPUT_REP2.mLb.clN.sorted.CollectMultipleMetrics.insert_size_metrics", "chromap/merged_library/picard_metrics/SPT5_INPUT_REP2.mLb.clN.sorted.CollectMultipleMetrics.quality_by_cycle_metrics", "chromap/merged_library/picard_metrics/SPT5_INPUT_REP2.mLb.clN.sorted.CollectMultipleMetrics.quality_distribution_metrics", - "chromap/merged_library/picard_metrics/SPT5_INPUT_REP2.mLb.mkD.sorted.MarkDuplicates.metrics.txt", + "chromap/merged_library/picard_metrics/SPT5_INPUT_REP2.mLb.mkD.sorted.metrics.txt", "chromap/merged_library/picard_metrics/SPT5_T0_REP1.mLb.clN.sorted.CollectMultipleMetrics.alignment_summary_metrics", "chromap/merged_library/picard_metrics/SPT5_T0_REP1.mLb.clN.sorted.CollectMultipleMetrics.base_distribution_by_cycle_metrics", "chromap/merged_library/picard_metrics/SPT5_T0_REP1.mLb.clN.sorted.CollectMultipleMetrics.insert_size_metrics", "chromap/merged_library/picard_metrics/SPT5_T0_REP1.mLb.clN.sorted.CollectMultipleMetrics.quality_by_cycle_metrics", "chromap/merged_library/picard_metrics/SPT5_T0_REP1.mLb.clN.sorted.CollectMultipleMetrics.quality_distribution_metrics", - "chromap/merged_library/picard_metrics/SPT5_T0_REP1.mLb.mkD.sorted.MarkDuplicates.metrics.txt", + "chromap/merged_library/picard_metrics/SPT5_T0_REP1.mLb.mkD.sorted.metrics.txt", "chromap/merged_library/picard_metrics/SPT5_T0_REP2.mLb.clN.sorted.CollectMultipleMetrics.alignment_summary_metrics", "chromap/merged_library/picard_metrics/SPT5_T0_REP2.mLb.clN.sorted.CollectMultipleMetrics.base_distribution_by_cycle_metrics", "chromap/merged_library/picard_metrics/SPT5_T0_REP2.mLb.clN.sorted.CollectMultipleMetrics.insert_size_metrics", "chromap/merged_library/picard_metrics/SPT5_T0_REP2.mLb.clN.sorted.CollectMultipleMetrics.quality_by_cycle_metrics", "chromap/merged_library/picard_metrics/SPT5_T0_REP2.mLb.clN.sorted.CollectMultipleMetrics.quality_distribution_metrics", - "chromap/merged_library/picard_metrics/SPT5_T0_REP2.mLb.mkD.sorted.MarkDuplicates.metrics.txt", + "chromap/merged_library/picard_metrics/SPT5_T0_REP2.mLb.mkD.sorted.metrics.txt", "chromap/merged_library/picard_metrics/SPT5_T15_REP1.mLb.clN.sorted.CollectMultipleMetrics.alignment_summary_metrics", "chromap/merged_library/picard_metrics/SPT5_T15_REP1.mLb.clN.sorted.CollectMultipleMetrics.base_distribution_by_cycle_metrics", "chromap/merged_library/picard_metrics/SPT5_T15_REP1.mLb.clN.sorted.CollectMultipleMetrics.insert_size_metrics", "chromap/merged_library/picard_metrics/SPT5_T15_REP1.mLb.clN.sorted.CollectMultipleMetrics.quality_by_cycle_metrics", "chromap/merged_library/picard_metrics/SPT5_T15_REP1.mLb.clN.sorted.CollectMultipleMetrics.quality_distribution_metrics", - "chromap/merged_library/picard_metrics/SPT5_T15_REP1.mLb.mkD.sorted.MarkDuplicates.metrics.txt", + "chromap/merged_library/picard_metrics/SPT5_T15_REP1.mLb.mkD.sorted.metrics.txt", "chromap/merged_library/picard_metrics/SPT5_T15_REP2.mLb.clN.sorted.CollectMultipleMetrics.alignment_summary_metrics", "chromap/merged_library/picard_metrics/SPT5_T15_REP2.mLb.clN.sorted.CollectMultipleMetrics.base_distribution_by_cycle_metrics", "chromap/merged_library/picard_metrics/SPT5_T15_REP2.mLb.clN.sorted.CollectMultipleMetrics.insert_size_metrics", "chromap/merged_library/picard_metrics/SPT5_T15_REP2.mLb.clN.sorted.CollectMultipleMetrics.quality_by_cycle_metrics", "chromap/merged_library/picard_metrics/SPT5_T15_REP2.mLb.clN.sorted.CollectMultipleMetrics.quality_distribution_metrics", - "chromap/merged_library/picard_metrics/SPT5_T15_REP2.mLb.mkD.sorted.MarkDuplicates.metrics.txt", + "chromap/merged_library/picard_metrics/SPT5_T15_REP2.mLb.mkD.sorted.metrics.txt", "chromap/merged_library/picard_metrics/pdf", "chromap/merged_library/picard_metrics/pdf/SPT5_INPUT_REP1.mLb.clN.sorted.CollectMultipleMetrics.base_distribution_by_cycle.pdf", "chromap/merged_library/picard_metrics/pdf/SPT5_INPUT_REP1.mLb.clN.sorted.CollectMultipleMetrics.insert_size_histogram.pdf", @@ -405,8 +372,6 @@ "fastqc/zips/SPT5_T15_REP2_T1_2_fastqc.zip", "genome", "genome/genome.fa", - "genome/genome.fa.fai", - "genome/genome.fa.sizes", "genome/index", "genome/index/chromap", "genome/index/chromap/genome.index", @@ -424,6 +389,7 @@ "multiqc/broad_peak/multiqc_data/deeptools_plot_fingerprint_counts_mlib_deeptools.yaml", "multiqc/broad_peak/multiqc_data/deeptools_plot_profile_mlib_deeptools.yaml", "multiqc/broad_peak/multiqc_data/fastqc-1-status-check-heatmap.yaml", + "multiqc/broad_peak/multiqc_data/fastqc-1_adapter_content_plot.yaml", "multiqc/broad_peak/multiqc_data/fastqc-1_per_base_n_content_plot.yaml", "multiqc/broad_peak/multiqc_data/fastqc-1_per_base_sequence_quality_plot.yaml", "multiqc/broad_peak/multiqc_data/fastqc-1_per_sequence_gc_content_plot_Counts.yaml", @@ -524,6 +490,7 @@ "multiqc/broad_peak/multiqc_plots/pdf/deseq2_clustering_1.pdf", "multiqc/broad_peak/multiqc_plots/pdf/deseq2_pca_1.pdf", "multiqc/broad_peak/multiqc_plots/pdf/fastqc-1-status-check-heatmap.pdf", + "multiqc/broad_peak/multiqc_plots/pdf/fastqc-1_adapter_content_plot.pdf", "multiqc/broad_peak/multiqc_plots/pdf/fastqc-1_per_base_n_content_plot.pdf", "multiqc/broad_peak/multiqc_plots/pdf/fastqc-1_per_base_sequence_quality_plot.pdf", "multiqc/broad_peak/multiqc_plots/pdf/fastqc-1_per_sequence_gc_content_plot_Counts.pdf", @@ -611,6 +578,7 @@ "multiqc/broad_peak/multiqc_plots/png/deseq2_clustering_1.png", "multiqc/broad_peak/multiqc_plots/png/deseq2_pca_1.png", "multiqc/broad_peak/multiqc_plots/png/fastqc-1-status-check-heatmap.png", + "multiqc/broad_peak/multiqc_plots/png/fastqc-1_adapter_content_plot.png", "multiqc/broad_peak/multiqc_plots/png/fastqc-1_per_base_n_content_plot.png", "multiqc/broad_peak/multiqc_plots/png/fastqc-1_per_base_sequence_quality_plot.png", "multiqc/broad_peak/multiqc_plots/png/fastqc-1_per_sequence_gc_content_plot_Counts.png", @@ -698,6 +666,7 @@ "multiqc/broad_peak/multiqc_plots/svg/deseq2_clustering_1.svg", "multiqc/broad_peak/multiqc_plots/svg/deseq2_pca_1.svg", "multiqc/broad_peak/multiqc_plots/svg/fastqc-1-status-check-heatmap.svg", + "multiqc/broad_peak/multiqc_plots/svg/fastqc-1_adapter_content_plot.svg", "multiqc/broad_peak/multiqc_plots/svg/fastqc-1_per_base_n_content_plot.svg", "multiqc/broad_peak/multiqc_plots/svg/fastqc-1_per_base_sequence_quality_plot.svg", "multiqc/broad_peak/multiqc_plots/svg/fastqc-1_per_sequence_gc_content_plot_Counts.svg", @@ -780,6 +749,9 @@ "pipeline_info", "pipeline_info/nf_core_chipseq_software_mqc_versions.yml", "pipeline_info/samplesheet.valid.csv", + "samtools", + "samtools/genome.fa.fai", + "samtools/genome.fa.sizes", "trimgalore", "trimgalore/fastqc", "trimgalore/fastqc/SPT5_INPUT_REP1_T1_1_val_1_fastqc.html", @@ -824,74 +796,67 @@ [ "SPT5_INPUT_REP1.mLB.clN.bedGraph:md5,e18a171dc9e71782335f2ca933da0773", "SPT5_INPUT_REP2.mLB.clN.bedGraph:md5,3155c2b26db574cfccbb0388dea6617a", - "SPT5_T0_REP1.mLB.clN.bedGraph:md5,ede095f77136b5b49310b028dc1f3174", - "SPT5_T0_REP2.mLB.clN.bedGraph:md5,15b423419d7d837db69c11f911e11b27", - "SPT5_T15_REP1.mLB.clN.bedGraph:md5,df839f1a73260decf2510fbbe038fc04", - "SPT5_T15_REP2.mLB.clN.bedGraph:md5,286e56304db30e41a14e0f806b03e9b4", - "SPT5_T0_REP1_peaks.broadPeak:md5,cdb63f77da49a06fa941a616a1d55bc8", - "SPT5_T0_REP1_peaks.gappedPeak:md5,9f8bb554a7265da0b2fad9437e4d142e", - "SPT5_T0_REP1_peaks.xls:md5,98ddc7de15179f2089c4ca7edfd04f54", - "SPT5_T0_REP2_peaks.broadPeak:md5,495a4742eaee970e33fa750104407ef6", - "SPT5_T0_REP2_peaks.gappedPeak:md5,a0d63650cb48abaa6c2130b605407cf1", - "SPT5_T0_REP2_peaks.xls:md5,b9750306eb436ccfb0d81157a5fd9e52", - "SPT5_T15_REP1_peaks.broadPeak:md5,46981efb339fa2c42e810847e8497dc5", - "SPT5_T15_REP1_peaks.gappedPeak:md5,82cff9b8bd303804eebdc8657bb56cb4", - "SPT5_T15_REP1_peaks.xls:md5,dae6ba573660315bf1fb4e74bdbdd6e2", - "SPT5_T15_REP2_peaks.broadPeak:md5,23260c2aaf03c42b23c20beedd087b56", - "SPT5_T15_REP2_peaks.gappedPeak:md5,6d483c8b6d417cff6bfd791786086e70", - "SPT5_T15_REP2_peaks.xls:md5,84e1f24959be7587278d7dfd9f5de054", + "SPT5_T0_REP1.mLB.clN.bedGraph:md5,2497e5d9197400d42d51641f82c017b3", + "SPT5_T0_REP2.mLB.clN.bedGraph:md5,552f2dc1010cea4e1d822081409bb11b", + "SPT5_T15_REP1.mLB.clN.bedGraph:md5,52c8de5177ed6d20c2e598d9d9717de4", + "SPT5_T15_REP2.mLB.clN.bedGraph:md5,66db76ce702dea56dd5fb9a8b261a7fb", + "SPT5_T0_REP1_peaks.broadPeak:md5,b4a7e2305ed63853b04d5e18678ea27a", + "SPT5_T0_REP1_peaks.gappedPeak:md5,2765b191811a573296f0122b9a270e4b", + "SPT5_T0_REP1_peaks.xls:md5,c98206fe98326026daf9f76a72de3e5b", + "SPT5_T0_REP2_peaks.broadPeak:md5,62ab089b02bc12cd0031dc86491475f3", + "SPT5_T0_REP2_peaks.gappedPeak:md5,96527d7bc1aec737df63a68f47973ca3", + "SPT5_T0_REP2_peaks.xls:md5,210833a6e5a9d266241408eb05e7e4c5", + "SPT5_T15_REP1_peaks.broadPeak:md5,431281296b82744d3bdd020c97246c33", + "SPT5_T15_REP1_peaks.gappedPeak:md5,2a2721519c702cfa1aeef89cf738ae14", + "SPT5_T15_REP1_peaks.xls:md5,c10e1b3beb4dd8bec17e05dc0e2b21db", + "SPT5_T15_REP2_peaks.broadPeak:md5,b362db9e035e538aae20a6e1d3528129", + "SPT5_T15_REP2_peaks.gappedPeak:md5,7568ce0e0a8ac4cf4dd368b5ad861815", + "SPT5_T15_REP2_peaks.xls:md5,53a6728105f880c08a813adf23e1bbfd", "SPT5.consensus_peaks.antibody.txt:md5,8d7549b0cb2e42ffd5c23879e7f54ce9", - "SPT5.consensus_peaks.bed:md5,8ea70a15a378024c30a9568600555034", - "SPT5.consensus_peaks.boolean.intersect.txt:md5,c4f46e92304ed3c1b52d7bdeebe8c698", - "SPT5.consensus_peaks.boolean.txt:md5,eace8fbb8eba87f86f5c69e930eac904", - "SPT5.consensus_peaks.saf:md5,23a594a758915928b43edc7739a44177", + "SPT5.consensus_peaks.bed:md5,f907ace2725a7640c56659dabdd87325", + "SPT5.consensus_peaks.boolean.intersect.txt:md5,ccb9a148841bee735e645ae10a03d5ef", + "SPT5.consensus_peaks.boolean.txt:md5,0aa4347a6eaaf04d407ca3c7cbbe2012", + "SPT5.consensus_peaks.saf:md5,084dbc36235b2e47a7deedb1e252305d", "R_sessionInfo.log:md5,fb0da0d7ad6994ed66a8e68348b19676", - "SPT5_T0_REP1.txt:md5,dfa7d7245a161c32c2e447683b1d25a6", - "SPT5_T0_REP2.txt:md5,73fd9f1c8828047c660fe7e4f9c807c3", - "SPT5_T15_REP1.txt:md5,f1a2bfdef65bc7a77d48679e8ab56f32", - "SPT5_T15_REP2.txt:md5,2074dcb8bba01e46bcc9a3cd6f70a40d", - "SPT5_T0_REP1.FRiP_mqc.tsv:md5,c2b23400b33ec3a9cc34e66cfe537fbd", + "SPT5_T0_REP1.txt:md5,19574031268672407c6470c85d893f8a", + "SPT5_T0_REP2.txt:md5,af99b4e8c358dd38294d869dbfd3840c", + "SPT5_T15_REP1.txt:md5,a52a87e68477de5cb5fc775cd1769cd7", + "SPT5_T15_REP2.txt:md5,c49157b1204f14dae9951ad17dad852c", + "SPT5_T0_REP1.FRiP_mqc.tsv:md5,717b525f2e602af9b7ab94b9077c27e5", "SPT5_T0_REP1.peak_count_mqc.tsv:md5,5dfd6e81fc37ed98c0d4d98e2727ae38", - "SPT5_T0_REP2.FRiP_mqc.tsv:md5,481370ab6899feae252efabe4f363341", + "SPT5_T0_REP2.FRiP_mqc.tsv:md5,201571e15a186045bac586d1d48d78c9", "SPT5_T0_REP2.peak_count_mqc.tsv:md5,8f18c7c73722cad888d33939ae4db691", - "SPT5_T15_REP1.FRiP_mqc.tsv:md5,baec917104635e2dfa90aee25481c98c", - "SPT5_T15_REP1.peak_count_mqc.tsv:md5,309dc93e03386dbe39172a3b708c3641", - "SPT5_T15_REP2.FRiP_mqc.tsv:md5,ecced7a70b355073d5fb4c11fa8832e7", + "SPT5_T15_REP1.FRiP_mqc.tsv:md5,e7e4a3157d1a9ba3d15497acf8e3d006", + "SPT5_T15_REP1.peak_count_mqc.tsv:md5,103b422e3a01ab91de014221c6d0ae7c", + "SPT5_T15_REP2.FRiP_mqc.tsv:md5,225bb6df5e5b27cc8df9a577ee684016", "SPT5_T15_REP2.peak_count_mqc.tsv:md5,f798ceafbec8d5e9a52ffebae84c71fe", "SPT5_INPUT_REP1.mLb.clN.sorted.bam.flagstat:md5,e7e595088e284c9bc29cd7198bd54d2c", "SPT5_INPUT_REP1.mLb.clN.sorted.bam.idxstats:md5,0096b9a233e8dda267a26d82e4a38438", - "SPT5_INPUT_REP1.mLb.clN.sorted.bam.stats:md5,c06240b832185dc3dd6e6978e77112e6", "SPT5_INPUT_REP2.mLb.clN.sorted.bam.flagstat:md5,4aef254b0aa86eb12f008cf6935b55de", "SPT5_INPUT_REP2.mLb.clN.sorted.bam.idxstats:md5,6d1f4c880ec716e49553b1da0842fb23", - "SPT5_INPUT_REP2.mLb.clN.sorted.bam.stats:md5,0fb7438c2648c761e0ba572f24ef0082", - "SPT5_T0_REP1.mLb.clN.sorted.bam.flagstat:md5,19dfded40fbc15d167a504f1c826a126", - "SPT5_T0_REP1.mLb.clN.sorted.bam.idxstats:md5,28753ada79dbb64b6c20e366b397c72f", - "SPT5_T0_REP1.mLb.clN.sorted.bam.stats:md5,1245d1483e4e1f768f4812ade15da0cf", - "SPT5_T0_REP2.mLb.clN.sorted.bam.flagstat:md5,5c8c568f09b893efbc7094660edc2ea7", - "SPT5_T0_REP2.mLb.clN.sorted.bam.idxstats:md5,c5be4b76660e272ab4566e5a655e9d7e", - "SPT5_T0_REP2.mLb.clN.sorted.bam.stats:md5,8e33efdaffb639732d6c5efebb5ff533", - "SPT5_T15_REP1.mLb.clN.sorted.bam.flagstat:md5,adc741fdefc2424d4fc00232047ad3ed", - "SPT5_T15_REP1.mLb.clN.sorted.bam.idxstats:md5,eab2f5d5e3cdf1122dee24656ec6ab01", - "SPT5_T15_REP1.mLb.clN.sorted.bam.stats:md5,4333e4831bee76da4b787d03d325d882", - "SPT5_T15_REP2.mLb.clN.sorted.bam.flagstat:md5,c00504e2664b69e0ca3cd351e7f511e8", - "SPT5_T15_REP2.mLb.clN.sorted.bam.idxstats:md5,2f44885f36790e09682f145a54c4b794", - "SPT5_T15_REP2.mLb.clN.sorted.bam.stats:md5,795626bfd91ef1a7846550e28b7c8f2f", + "SPT5_T0_REP1.mLb.clN.sorted.bam.flagstat:md5,8d8fb06b8fc3404496fa9b48cdda2451", + "SPT5_T0_REP1.mLb.clN.sorted.bam.idxstats:md5,668215502e73688fcd0240b1fdc8317c", + "SPT5_T0_REP2.mLb.clN.sorted.bam.flagstat:md5,ba7275e3bcd280d5e529f37afbe7170e", + "SPT5_T0_REP2.mLb.clN.sorted.bam.idxstats:md5,1f4036479acebe98b653a93a224a8555", + "SPT5_T15_REP1.mLb.clN.sorted.bam.flagstat:md5,a8dbdf30f25d934680017e142ff8bd9f", + "SPT5_T15_REP1.mLb.clN.sorted.bam.idxstats:md5,be29501e6bdf9752a765c40196afb8f0", + "SPT5_T15_REP2.mLb.clN.sorted.bam.flagstat:md5,622e67ab9e5ff5ced62fe139e6229fca", + "SPT5_T15_REP2.mLb.clN.sorted.bam.idxstats:md5,de15f2e5ebc654fd49db1c7a12a53494", "genome.fa:md5,4bad9f4b18056156a81f7f952abbe125", - "genome.fa.fai:md5,6f4c0ce5258e6948135ad006e1f9ee1b", - "genome.fa.sizes:md5,e122f8021a5ef14104c32785cb9b7adc", "genome.index:md5,377432ea6242989cae4dabb60859f6bd", "cutadapt_filtered_reads_plot.yaml:md5,976fdb8049d847c977195863418e3655", - "cutadapt_trimmed_sequences_plot_3_Counts.yaml:md5,14b35027cce2eba80181265e04f6f489", - "cutadapt_trimmed_sequences_plot_3_Obs_Exp.yaml:md5,98410382bb4083d3215a24f0f27b21dd", - "fastqc-1-status-check-heatmap.yaml:md5,8876a09ccb279f76e1b516506cc19157", - "fastqc-1_per_base_n_content_plot.yaml:md5,d6764dbc1915525bc18c74a27d1fa194", - "fastqc-1_per_base_sequence_quality_plot.yaml:md5,0dd7d8a364d42063440dc847e23eeda9", - "fastqc-1_per_sequence_gc_content_plot_Counts.yaml:md5,2cb304ef2551b4ce47126228769a152b", - "fastqc-1_per_sequence_gc_content_plot_Percentages.yaml:md5,9f835a07bebf743957983ed013a7eb3c", - "fastqc-1_per_sequence_quality_scores_plot.yaml:md5,e7e1e6edaae3140586aecc3b77c6e533", - "fastqc-1_sequence_counts_plot.yaml:md5,2b43b4cbebb560f669e317c6b8e946ae", - "fastqc-1_sequence_duplication_levels_plot.yaml:md5,02ef5110211a2848b6619e1adb4573ce", - "fastqc-1_top_overrepresented_sequences_table.yaml:md5,8a80554c91d9fca8acb82f023de02f11", + "cutadapt_trimmed_sequences_plot_3_Counts.yaml:md5,e6733f4ff773a27d0ab81564913b4b54", + "cutadapt_trimmed_sequences_plot_3_Obs_Exp.yaml:md5,9ffcfe37c02af14b8eddd4746066e56a", + "fastqc-1-status-check-heatmap.yaml:md5,6c6e1591b5ff248c85446f9728a3dad4", + "fastqc-1_adapter_content_plot.yaml:md5,d78273a7e4ff36434bb91246fef01523", + "fastqc-1_per_base_n_content_plot.yaml:md5,3625446964b669ccff279aba54510462", + "fastqc-1_per_base_sequence_quality_plot.yaml:md5,1fb4d35d6b94fc4f41d5be1304844b95", + "fastqc-1_per_sequence_gc_content_plot_Counts.yaml:md5,101f11f9cebcc626755f32322b27ebd3", + "fastqc-1_per_sequence_gc_content_plot_Percentages.yaml:md5,0055f4bbded45434618259f47fe5fe85", + "fastqc-1_per_sequence_quality_scores_plot.yaml:md5,eed2628303916e49143ccf37300fb5de", + "fastqc-1_sequence_counts_plot.yaml:md5,6ca3a8cf8d258777e29b8e8731157d90", + "fastqc-1_sequence_duplication_levels_plot.yaml:md5,3e3622b7dd80be1db92ac06df8e3d056", + "fastqc-1_top_overrepresented_sequences_table.yaml:md5,a333a02f5313876cf1713d7b0168d5f3", "fastqc-status-check-heatmap.yaml:md5,1e473e0f9140b718607d8c72cf3c0b45", "fastqc_adapter_content_plot.yaml:md5,591991daf3e3c49873f4a51a3710b072", "fastqc_per_base_n_content_plot.yaml:md5,c16a4af177b9ad9694a9535023906927", @@ -901,89 +866,89 @@ "fastqc_per_sequence_quality_scores_plot.yaml:md5,351b55974af5ee21294ebf5deb850d7c", "fastqc_sequence_counts_plot.yaml:md5,5522b2b42f0b3753dd359aad1565d7c2", "fastqc_sequence_duplication_levels_plot.yaml:md5,e883323380f2880c81ea36dc91ad8678", - "fastqc_sequence_length_distribution_plot.yaml:md5,f1d36d9bed4b85e0ae349b514ab788fc", + "fastqc_sequence_length_distribution_plot.yaml:md5,d57678f16381986766d56b631c838106", "fastqc_top_overrepresented_sequences_table.yaml:md5,443e161371f73cebf63c14f7a9f3580d", - "featureCounts_assignment_plot.yaml:md5,59ab3e806eb3368dc38752997f1070bf", + "featureCounts_assignment_plot.yaml:md5,7ba9bc1659472a0859c527d0f8f10c8b", "multiqc_citations.yaml:md5,fca5dc7cb20162434c714d26b11161f3", - "multiqc_cutadapt.yaml:md5,25f32008ccf0041ac74bb82d744d6eda", "multiqc_fastqc.yaml:md5,30fe6d1a5e5c04695dda81294b828ec9", - "multiqc_fastqc_1.yaml:md5,dd7981fa28827b895ef844011053eeff", - "multiqc_featurecounts.yaml:md5,810bcaa3a288314bbac4aaac40849250", - "multiqc_frip_score.yaml:md5,750ac3a7276e113423e2aa62c55b3a9c", - "multiqc_nsc_coefficient.yaml:md5,03475a6631170b334d04705afea4576c", - "multiqc_peak_annotation.yaml:md5,4879c78fdd66d6b9518e6462670bab31", - "multiqc_peak_count.yaml:md5,18009097a9da6426b84e23b184bdc46c", - "multiqc_phantompeakqualtools.yaml:md5,6962682a9111dde60ebaaf0fccc27829", - "multiqc_picard-1_AlignmentSummaryMetrics.yaml:md5,33824d5f5fe73b1c26a872d321708c0a", - "multiqc_picard-1_insertSize.yaml:md5,957775d435d56f52379e24d6b04a2c8e", - "multiqc_picard-1_quality_by_cycle.yaml:md5,11d2fd45c7db4759c8f0743ef1dd9df7", - "multiqc_picard-1_quality_score_distribution.yaml:md5,b14809d683b8b39fad1fe990de1c989e", - "multiqc_picard_baseContent.yaml:md5,544c5cbdfe01bab45549cec414967114", - "multiqc_picard_dups.yaml:md5,87a02182a377c4d4b4160aa71330c29e", - "multiqc_rsc_coefficient.yaml:md5,2d96c8135be53a4a5e425776d2e99702", - "multiqc_samtools_flagstat.yaml:md5,0c6b02ed035229e92036013c88ebce4f", - "multiqc_samtools_flagstat_1.yaml:md5,8b31a5e88418459fa84853ad3f771f77", - "multiqc_samtools_flagstat_2.yaml:md5,fb211e05b13842a922d259a610379065", - "multiqc_samtools_idxstats.yaml:md5,6a409806f4246c0397b29b0142fd8894", - "multiqc_samtools_idxstats_1.yaml:md5,9e825d815fe4642da3a086292dec7792", - "multiqc_samtools_idxstats_2.yaml:md5,7568aab6c7d1b403cff8f07ef503b9cd", - "multiqc_samtools_stats.yaml:md5,9d9b24aceea1c649a84fa5bcb35fa6c6", - "multiqc_samtools_stats_1.yaml:md5,0e4875a9c9c2bfd78588a3ce04ef5caf", - "multiqc_samtools_stats_2.yaml:md5,383b58724b6e90ca35f568ebf6ee8919", - "multiqc_strand_shift_correlation.yaml:md5,14fa8c729c885eea869abeb465ddc31c", - "picard-1_alignment_readlength_plot.yaml:md5,1f645e3a75839bf834fa250fb0e46d91", - "picard-1_alignment_summary_Aligned_Bases.yaml:md5,392fec9f38be3feea5b930209544b972", - "picard-1_alignment_summary_Aligned_Reads.yaml:md5,0c165b0cfff600a509e976c106263b2f", + "multiqc_fastqc_1.yaml:md5,cd4a85c27c3cf85f1d0612afce793186", + "multiqc_featurecounts.yaml:md5,e8d7d07826b918b9de226607c83ebeab", + "multiqc_frip_score.yaml:md5,bb0959532068d1639a75c7d9c49d492b", + "multiqc_nsc_coefficient.yaml:md5,a19610ff8ca0d60834a3408e76f15c92", + "multiqc_peak_annotation.yaml:md5,9e16a9d6e5bcbf2e5bceee0ef7eec600", + "multiqc_peak_count.yaml:md5,395d6208b4e19a68666f9d22a770cfce", + "multiqc_phantompeakqualtools.yaml:md5,a28abb9241ec87e4a0d077f29acf6669", + "multiqc_picard-1_AlignmentSummaryMetrics.yaml:md5,73dfc8dfa07e06633c66e12715ab2b18", + "multiqc_picard-1_insertSize.yaml:md5,3364ad42f23a53723388df3f0b13a25d", + "multiqc_picard-1_quality_by_cycle.yaml:md5,c3036e5c3626ca012a7345b3b578ad8f", + "multiqc_picard-1_quality_score_distribution.yaml:md5,37ef6ec1ee50f6816b703f3f7d4040c9", + "multiqc_picard_baseContent.yaml:md5,39b10e42d8b300d3b6dc2bb8d453c8e8", + "multiqc_picard_dups.yaml:md5,15a0c399e9eb03f96b6986897d28ee46", + "multiqc_rsc_coefficient.yaml:md5,4cdfd1cf61b780606ff79b3b7702e2d3", + "multiqc_samtools_flagstat.yaml:md5,b0602157e3b133c8c6a5ea0da373f95e", + "multiqc_samtools_flagstat_1.yaml:md5,3d34f85288be603b026182b3153d73b0", + "multiqc_samtools_flagstat_2.yaml:md5,e1ff04aa8821cea5669edc9e158c61f0", + "multiqc_samtools_idxstats.yaml:md5,ea5462b130dba17cc734b06fdffea98f", + "multiqc_samtools_idxstats_1.yaml:md5,ca00f0c2ad430266007ad46b39950976", + "multiqc_samtools_idxstats_2.yaml:md5,431ef2b34a7c7c9d6123b3ac5f49a9eb", + "multiqc_samtools_stats.yaml:md5,79c81250f7c13657d3a5410bfb2836cb", + "multiqc_samtools_stats_1.yaml:md5,5c197924c6282f82c5d7e154ea6c5dc7", + "multiqc_samtools_stats_2.yaml:md5,a08674e1272632fe61880e4aa6b8654c", + "picard-1_alignment_readlength_plot.yaml:md5,654f00b7a14220482e4eab35dda2e2a4", + "picard-1_alignment_summary_Aligned_Bases.yaml:md5,890df66d27392114a8fff8b92062f884", + "picard-1_alignment_summary_Aligned_Reads.yaml:md5,41a9fd39fa4e4cf4874c74d9c3b1b36f", "picard-1_histogram.yaml:md5,8a80554c91d9fca8acb82f023de02f11", - "picard-1_histogram_1.yaml:md5,11d2fd45c7db4759c8f0743ef1dd9df7", - "picard-1_histogram_2.yaml:md5,b14809d683b8b39fad1fe990de1c989e", - "picard-1_insert_size_Counts.yaml:md5,e1f0357f70401d205d452582b84a56d8", - "picard-1_insert_size_Percentages.yaml:md5,ad986dace70bab10123558b1ad6ca619", - "picard-1_quality_by_cycle.yaml:md5,9e7eb35b07281a2aa470445d649346cb", - "picard-1_quality_score_distribution.yaml:md5,84815b05788dcb45af6b2287a563eef7", - "picard_base_distribution_by_cycle__Adenine.yaml:md5,cebb58e48fc182ff663525262d34ff47", - "picard_base_distribution_by_cycle__Cytosine.yaml:md5,546ac75e67fc4be0edca45b4f12fe264", - "picard_base_distribution_by_cycle__Guanine.yaml:md5,76b61f99de3499b422b4310ae567a5c5", - "picard_base_distribution_by_cycle__Thymine.yaml:md5,a4620ac796d26437235bcb4edc3f638d", - "picard_base_distribution_by_cycle__Undetermined.yaml:md5,6984ec68df34f03fec07d6e8d4fec1b2", - "picard_deduplication.yaml:md5,1af3b920ddf0b94d2c617d2ef74e58f1", + "picard-1_histogram_1.yaml:md5,c3036e5c3626ca012a7345b3b578ad8f", + "picard-1_histogram_2.yaml:md5,37ef6ec1ee50f6816b703f3f7d4040c9", + "picard-1_insert_size_Counts.yaml:md5,6b5ec6e58c61e2b8c02dcc1079d4850b", + "picard-1_insert_size_Percentages.yaml:md5,78f9b07ed2216cc9f10edadc1d26b1e8", + "picard-1_quality_by_cycle.yaml:md5,cc12a6863a9e9fd351d5f368bbbf67fa", + "picard-1_quality_score_distribution.yaml:md5,f265abd4067a5efa88592f59c2285a74", + "picard_base_distribution_by_cycle__Adenine.yaml:md5,ce7a138e6e63261b2a9bbb0a1a893ad3", + "picard_base_distribution_by_cycle__Cytosine.yaml:md5,06b2ce4ae7426f37bebaf5f811afcd37", + "picard_base_distribution_by_cycle__Guanine.yaml:md5,f6558c8c952c62492ab48e2afbdfaf05", + "picard_base_distribution_by_cycle__Thymine.yaml:md5,fad99bf3733f7ba3b965473116a74fc3", + "picard_base_distribution_by_cycle__Undetermined.yaml:md5,77df6cbfd78cc0f8914e2663c349e2d3", + "picard_deduplication.yaml:md5,7ff4f04ead40ec4e9e5b7ba071848260", "picard_histogram.yaml:md5,8a80554c91d9fca8acb82f023de02f11", "picard_histogram_1.yaml:md5,8a80554c91d9fca8acb82f023de02f11", "picard_histogram_2.yaml:md5,8a80554c91d9fca8acb82f023de02f11", - "samtools-flagstat-dp_Percentage_of_total-1.yaml:md5,c4c251d723c0eb8f771394be7c05b936", + "samtools-flagstat-dp_Percentage_of_total-1.yaml:md5,cf95e15f68492c3d28bd2f97a1e520fa", "samtools-flagstat-dp_Percentage_of_total-2.yaml:md5,1b1eec5d19ddf1b345b133f2fda62036", "samtools-flagstat-dp_Percentage_of_total.yaml:md5,da48ca14276999ee304433554ec71838", - "samtools-flagstat-dp_Read_counts-1.yaml:md5,cc68af7fd21bcf37b541c694d581f0e8", - "samtools-flagstat-dp_Read_counts-2.yaml:md5,f9d6bc85d9d764e4ad0b263ffd44b78f", - "samtools-flagstat-dp_Read_counts.yaml:md5,ace0d7287774382756c835fc5b1eedfc", - "samtools-idxstats-mapped-reads-plot_Normalised_Counts-1.yaml:md5,2be56aade977cc181057e04a844549bc", - "samtools-idxstats-mapped-reads-plot_Normalised_Counts-2.yaml:md5,4a81590c28ff69908533f1531f21d9e2", - "samtools-idxstats-mapped-reads-plot_Normalised_Counts.yaml:md5,0df5d134d0f597db2ff42153373569a4", - "samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts-1.yaml:md5,92a125f968d6c8d527db4a1dfc3ef2b6", - "samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts-2.yaml:md5,73158eb30b7790f63c1bd090cd1c9d70", - "samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts.yaml:md5,d359fb0516c6106fb1a07e6d40d6f260", - "samtools-idxstats-mapped-reads-plot_Raw_Counts-1.yaml:md5,69d094f1c604439690bb0e345fecb580", - "samtools-idxstats-mapped-reads-plot_Raw_Counts-2.yaml:md5,e568afd5cc3a8df573ba648f5b2e42ab", - "samtools-idxstats-mapped-reads-plot_Raw_Counts.yaml:md5,a9b9091af444359e66dfc749c8c23453", - "samtools-stats-dp.yaml:md5,dcae905df4f97d6989e53e07acf1b67e", - "samtools_alignment_plot.yaml:md5,b2ec92e142361d39483852b5df683cf6", - "samplesheet.valid.csv:md5,276425084544b3baf533e2f17207a384" + "samtools-flagstat-dp_Read_counts-1.yaml:md5,2ae75ff402a33ed6860caeede16eb3ef", + "samtools-flagstat-dp_Read_counts-2.yaml:md5,838317f2e7734a94a078523723d32843", + "samtools-flagstat-dp_Read_counts.yaml:md5,eceac01ca34290c4db7fb6140d153be8", + "samtools-idxstats-mapped-reads-plot_Normalised_Counts-1.yaml:md5,5c933fa507dbf7596a605230111f0a64", + "samtools-idxstats-mapped-reads-plot_Normalised_Counts-2.yaml:md5,c1ddb17ae59d9165e87dad0c1f307798", + "samtools-idxstats-mapped-reads-plot_Normalised_Counts.yaml:md5,1997cdb7d0d94607b4963db997448e30", + "samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts-1.yaml:md5,ccd6f471d40577dc0c3f41cabc4e4de3", + "samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts-2.yaml:md5,fa7b86a76db7dbcecf9f6d8aaef02548", + "samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts.yaml:md5,af595221614c392509298544209abb4b", + "samtools-idxstats-mapped-reads-plot_Raw_Counts-1.yaml:md5,2c93beb85d475bb55b7aafa2586e2711", + "samtools-idxstats-mapped-reads-plot_Raw_Counts-2.yaml:md5,09f96c565fcc0b81aec8f60a9ea2a0e3", + "samtools-idxstats-mapped-reads-plot_Raw_Counts.yaml:md5,9a9403f14725273c8b44d90937ef0aa6", + "samtools-stats-dp.yaml:md5,a6bf11b91c4d80c11d84fe7f5cab8cb7", + "samtools_alignment_plot.yaml:md5,861b787bfca0dac75cb2d9467ee21f36", + "samplesheet.valid.csv:md5,276425084544b3baf533e2f17207a384", + "genome.fa.fai:md5,6f4c0ce5258e6948135ad006e1f9ee1b", + "genome.fa.sizes:md5,e122f8021a5ef14104c32785cb9b7adc" ] ], + "timestamp": "2026-03-18T20:24:09.431648", "meta": { - "nf-test": "0.9.2", - "nextflow": "25.04.3" - }, - "timestamp": "2025-09-17T13:22:19.456795982" + "nf-test": "0.9.4", + "nextflow": "25.04.0" + } }, "chromap with stub": { "content": [ 20 ], + "timestamp": "2026-03-17T14:23:25.411753", "meta": { - "nf-test": "0.9.2", - "nextflow": "25.04.6" - }, - "timestamp": "2025-09-04T20:51:25.375669" + "nf-test": "0.9.4", + "nextflow": "25.04.0" + } } -} +} \ No newline at end of file diff --git a/tests/default.nf.test.snap b/tests/default.nf.test.snap index 9efc5a4de..f27bdf1df 100644 --- a/tests/default.nf.test.snap +++ b/tests/default.nf.test.snap @@ -3,119 +3,93 @@ "content": [ 215, { - "ANNOTATE_BOOLEAN_PEAKS": { - "sed": 4.7 - }, "BAMTOOLS_FILTER": { - "bamtools": "2.5.2", - "samtools": "1.15.1" + "bamtools": "2.5.3", + "samtools": 1.23 }, "BAM_REMOVE_ORPHANS": { - "samtools": "1.15.1" + "samtools": 1.23 }, "BEDTOOLS_GENOMECOV": { "bedtools": "2.31.1" }, "BWA_INDEX": { - "bwa": "0.7.18-r1243-dirty" + "bwa": "0.7.19-r1273" }, "BWA_MEM": { - "bwa": "0.7.18-r1243-dirty", - "samtools": 1.2 - }, - "CUSTOM_GETCHROMSIZES": { - "getchromsizes": 1.2 + "bwa": "0.7.19-r1273", + "samtools": "1.22.1" }, "DEEPTOOLS_COMPUTEMATRIX": { - "deeptools": "3.5.5" + "deeptools": "3.5.6" }, "DEEPTOOLS_PLOTFINGERPRINT": { - "deeptools": "3.5.5" + "deeptools": "3.5.6" }, "DEEPTOOLS_PLOTHEATMAP": { - "deeptools": "3.5.5" + "deeptools": "3.5.6" }, "DEEPTOOLS_PLOTPROFILE": { - "deeptools": "3.5.5" - }, - "DESEQ2_QC": { - "bioconductor-deseq2": "1.28.0", - "r-base": "4.0.3" + "deeptools": "3.5.6" }, "FASTQC": { "fastqc": "0.12.1" }, "FRIP_SCORE": { - "bedtools": "2.30.0", - "samtools": "1.15.1" + "bedtools": "2.31.1", + "samtools": 1.23 }, "GENOME_BLACKLIST_REGIONS": { - "bedtools": "2.30.0" - }, - "GTF2BED": { - "perl": "5.26.2" - }, - "HOMER_ANNOTATEPEAKS": { - "homer": 4.11 - }, - "IGV": { - "python": "3.8.3" + "bedtools": "2.31.1" }, "MACS3_CALLPEAK": { - "macs3": "3.0.1" + "macs3": "3.0.4" }, "MACS3_CONSENSUS": { - "python": "3.10.0", - "r-base": "4.1.1" - }, - "MULTIQC_CUSTOM_PEAKS": { - "sed": 4.7 - }, - "PHANTOMPEAKQUALTOOLS": { - "phantompeakqualtools": "1.2.2" + "R": "4.1.3", + "python": "3.14.0" }, "PICARD_COLLECTMULTIPLEMETRICS": { - "picard": "3.2.0-1-g3948afb6b" + "picard": "3.4.0" }, "PICARD_MARKDUPLICATES": { - "picard": "3.2.0-1-g3948afb6b" + "picard": "3.4.0" }, "PICARD_MERGESAMFILES": { - "picard": "3.2.0-1-g3948afb6b" + "picard": "3.4.0" }, "PLOT_HOMER_ANNOTATEPEAKS": { - "r-base": "4.0.3" + "R": "4.5.3" }, "PLOT_MACS3_QC": { - "r-base": "4.0.3" + "R": "4.5.3" }, - "SAMPLESHEET_CHECK": { - "python": "3.8.3" + "SAMTOOLS_FAIDX": { + "samtools": "1.22.1" }, "SAMTOOLS_FLAGSTAT": { "samtools": "1.22.1" }, "SAMTOOLS_IDXSTATS": { - "samtools": 1.2 + "samtools": "1.22.1" }, "SAMTOOLS_INDEX": { - "samtools": 1.2 + "samtools": "1.22.1" }, "SAMTOOLS_SORT": { - "samtools": 1.2 + "samtools": "1.22.1" }, "SAMTOOLS_STATS": { - "samtools": 1.2 + "samtools": "1.22.1" }, "SUBREAD_FEATURECOUNTS": { - "subread": "2.0.1" + "subread": "2.1.1" }, "TRIMGALORE": { - "cutadapt": 3.4, - "trimgalore": "0.6.7" + "trimgalore": "0.6.10" }, "UCSC_BEDGRAPHTOBIGWIG": { - "ucsc": 445 + "ucsc": 482 }, "Workflow": { "nf-core/chipseq": "v2.2.0dev" @@ -227,8 +201,8 @@ "bwa/merged_library/macs3/broad_peak/consensus/SPT5/SPT5.consensus_peaks.boolean.intersect.plot.pdf", "bwa/merged_library/macs3/broad_peak/consensus/SPT5/SPT5.consensus_peaks.boolean.intersect.txt", "bwa/merged_library/macs3/broad_peak/consensus/SPT5/SPT5.consensus_peaks.boolean.txt", - "bwa/merged_library/macs3/broad_peak/consensus/SPT5/SPT5.consensus_peaks.featureCounts.txt", - "bwa/merged_library/macs3/broad_peak/consensus/SPT5/SPT5.consensus_peaks.featureCounts.txt.summary", + "bwa/merged_library/macs3/broad_peak/consensus/SPT5/SPT5.consensus_peaks.featureCounts.tsv", + "bwa/merged_library/macs3/broad_peak/consensus/SPT5/SPT5.consensus_peaks.featureCounts.tsv.summary", "bwa/merged_library/macs3/broad_peak/consensus/SPT5/SPT5.consensus_peaks.saf", "bwa/merged_library/macs3/broad_peak/consensus/SPT5/deseq2", "bwa/merged_library/macs3/broad_peak/consensus/SPT5/deseq2/R_sessionInfo.log", @@ -296,37 +270,37 @@ "bwa/merged_library/picard_metrics/SPT5_INPUT_REP1.mLb.clN.sorted.CollectMultipleMetrics.insert_size_metrics", "bwa/merged_library/picard_metrics/SPT5_INPUT_REP1.mLb.clN.sorted.CollectMultipleMetrics.quality_by_cycle_metrics", "bwa/merged_library/picard_metrics/SPT5_INPUT_REP1.mLb.clN.sorted.CollectMultipleMetrics.quality_distribution_metrics", - "bwa/merged_library/picard_metrics/SPT5_INPUT_REP1.mLb.mkD.sorted.MarkDuplicates.metrics.txt", + "bwa/merged_library/picard_metrics/SPT5_INPUT_REP1.mLb.mkD.sorted.metrics.txt", "bwa/merged_library/picard_metrics/SPT5_INPUT_REP2.mLb.clN.sorted.CollectMultipleMetrics.alignment_summary_metrics", "bwa/merged_library/picard_metrics/SPT5_INPUT_REP2.mLb.clN.sorted.CollectMultipleMetrics.base_distribution_by_cycle_metrics", "bwa/merged_library/picard_metrics/SPT5_INPUT_REP2.mLb.clN.sorted.CollectMultipleMetrics.insert_size_metrics", "bwa/merged_library/picard_metrics/SPT5_INPUT_REP2.mLb.clN.sorted.CollectMultipleMetrics.quality_by_cycle_metrics", "bwa/merged_library/picard_metrics/SPT5_INPUT_REP2.mLb.clN.sorted.CollectMultipleMetrics.quality_distribution_metrics", - "bwa/merged_library/picard_metrics/SPT5_INPUT_REP2.mLb.mkD.sorted.MarkDuplicates.metrics.txt", + "bwa/merged_library/picard_metrics/SPT5_INPUT_REP2.mLb.mkD.sorted.metrics.txt", "bwa/merged_library/picard_metrics/SPT5_T0_REP1.mLb.clN.sorted.CollectMultipleMetrics.alignment_summary_metrics", "bwa/merged_library/picard_metrics/SPT5_T0_REP1.mLb.clN.sorted.CollectMultipleMetrics.base_distribution_by_cycle_metrics", "bwa/merged_library/picard_metrics/SPT5_T0_REP1.mLb.clN.sorted.CollectMultipleMetrics.insert_size_metrics", "bwa/merged_library/picard_metrics/SPT5_T0_REP1.mLb.clN.sorted.CollectMultipleMetrics.quality_by_cycle_metrics", "bwa/merged_library/picard_metrics/SPT5_T0_REP1.mLb.clN.sorted.CollectMultipleMetrics.quality_distribution_metrics", - "bwa/merged_library/picard_metrics/SPT5_T0_REP1.mLb.mkD.sorted.MarkDuplicates.metrics.txt", + "bwa/merged_library/picard_metrics/SPT5_T0_REP1.mLb.mkD.sorted.metrics.txt", "bwa/merged_library/picard_metrics/SPT5_T0_REP2.mLb.clN.sorted.CollectMultipleMetrics.alignment_summary_metrics", "bwa/merged_library/picard_metrics/SPT5_T0_REP2.mLb.clN.sorted.CollectMultipleMetrics.base_distribution_by_cycle_metrics", "bwa/merged_library/picard_metrics/SPT5_T0_REP2.mLb.clN.sorted.CollectMultipleMetrics.insert_size_metrics", "bwa/merged_library/picard_metrics/SPT5_T0_REP2.mLb.clN.sorted.CollectMultipleMetrics.quality_by_cycle_metrics", "bwa/merged_library/picard_metrics/SPT5_T0_REP2.mLb.clN.sorted.CollectMultipleMetrics.quality_distribution_metrics", - "bwa/merged_library/picard_metrics/SPT5_T0_REP2.mLb.mkD.sorted.MarkDuplicates.metrics.txt", + "bwa/merged_library/picard_metrics/SPT5_T0_REP2.mLb.mkD.sorted.metrics.txt", "bwa/merged_library/picard_metrics/SPT5_T15_REP1.mLb.clN.sorted.CollectMultipleMetrics.alignment_summary_metrics", "bwa/merged_library/picard_metrics/SPT5_T15_REP1.mLb.clN.sorted.CollectMultipleMetrics.base_distribution_by_cycle_metrics", "bwa/merged_library/picard_metrics/SPT5_T15_REP1.mLb.clN.sorted.CollectMultipleMetrics.insert_size_metrics", "bwa/merged_library/picard_metrics/SPT5_T15_REP1.mLb.clN.sorted.CollectMultipleMetrics.quality_by_cycle_metrics", "bwa/merged_library/picard_metrics/SPT5_T15_REP1.mLb.clN.sorted.CollectMultipleMetrics.quality_distribution_metrics", - "bwa/merged_library/picard_metrics/SPT5_T15_REP1.mLb.mkD.sorted.MarkDuplicates.metrics.txt", + "bwa/merged_library/picard_metrics/SPT5_T15_REP1.mLb.mkD.sorted.metrics.txt", "bwa/merged_library/picard_metrics/SPT5_T15_REP2.mLb.clN.sorted.CollectMultipleMetrics.alignment_summary_metrics", "bwa/merged_library/picard_metrics/SPT5_T15_REP2.mLb.clN.sorted.CollectMultipleMetrics.base_distribution_by_cycle_metrics", "bwa/merged_library/picard_metrics/SPT5_T15_REP2.mLb.clN.sorted.CollectMultipleMetrics.insert_size_metrics", "bwa/merged_library/picard_metrics/SPT5_T15_REP2.mLb.clN.sorted.CollectMultipleMetrics.quality_by_cycle_metrics", "bwa/merged_library/picard_metrics/SPT5_T15_REP2.mLb.clN.sorted.CollectMultipleMetrics.quality_distribution_metrics", - "bwa/merged_library/picard_metrics/SPT5_T15_REP2.mLb.mkD.sorted.MarkDuplicates.metrics.txt", + "bwa/merged_library/picard_metrics/SPT5_T15_REP2.mLb.mkD.sorted.metrics.txt", "bwa/merged_library/picard_metrics/pdf", "bwa/merged_library/picard_metrics/pdf/SPT5_INPUT_REP1.mLb.clN.sorted.CollectMultipleMetrics.base_distribution_by_cycle.pdf", "bwa/merged_library/picard_metrics/pdf/SPT5_INPUT_REP1.mLb.clN.sorted.CollectMultipleMetrics.insert_size_histogram.pdf", @@ -405,8 +379,6 @@ "fastqc/zips/SPT5_T15_REP2_T1_2_fastqc.zip", "genome", "genome/genome.fa", - "genome/genome.fa.fai", - "genome/genome.fa.sizes", "igv", "igv/broad_peak", "igv/broad_peak/igv_files.txt", @@ -421,6 +393,7 @@ "multiqc/broad_peak/multiqc_data/deeptools_plot_fingerprint_counts_mlib_deeptools.yaml", "multiqc/broad_peak/multiqc_data/deeptools_plot_profile_mlib_deeptools.yaml", "multiqc/broad_peak/multiqc_data/fastqc-1-status-check-heatmap.yaml", + "multiqc/broad_peak/multiqc_data/fastqc-1_adapter_content_plot.yaml", "multiqc/broad_peak/multiqc_data/fastqc-1_per_base_n_content_plot.yaml", "multiqc/broad_peak/multiqc_data/fastqc-1_per_base_sequence_quality_plot.yaml", "multiqc/broad_peak/multiqc_data/fastqc-1_per_sequence_gc_content_plot_Counts.yaml", @@ -521,6 +494,7 @@ "multiqc/broad_peak/multiqc_plots/pdf/deseq2_clustering_1.pdf", "multiqc/broad_peak/multiqc_plots/pdf/deseq2_pca_1.pdf", "multiqc/broad_peak/multiqc_plots/pdf/fastqc-1-status-check-heatmap.pdf", + "multiqc/broad_peak/multiqc_plots/pdf/fastqc-1_adapter_content_plot.pdf", "multiqc/broad_peak/multiqc_plots/pdf/fastqc-1_per_base_n_content_plot.pdf", "multiqc/broad_peak/multiqc_plots/pdf/fastqc-1_per_base_sequence_quality_plot.pdf", "multiqc/broad_peak/multiqc_plots/pdf/fastqc-1_per_sequence_gc_content_plot_Counts.pdf", @@ -608,6 +582,7 @@ "multiqc/broad_peak/multiqc_plots/png/deseq2_clustering_1.png", "multiqc/broad_peak/multiqc_plots/png/deseq2_pca_1.png", "multiqc/broad_peak/multiqc_plots/png/fastqc-1-status-check-heatmap.png", + "multiqc/broad_peak/multiqc_plots/png/fastqc-1_adapter_content_plot.png", "multiqc/broad_peak/multiqc_plots/png/fastqc-1_per_base_n_content_plot.png", "multiqc/broad_peak/multiqc_plots/png/fastqc-1_per_base_sequence_quality_plot.png", "multiqc/broad_peak/multiqc_plots/png/fastqc-1_per_sequence_gc_content_plot_Counts.png", @@ -695,6 +670,7 @@ "multiqc/broad_peak/multiqc_plots/svg/deseq2_clustering_1.svg", "multiqc/broad_peak/multiqc_plots/svg/deseq2_pca_1.svg", "multiqc/broad_peak/multiqc_plots/svg/fastqc-1-status-check-heatmap.svg", + "multiqc/broad_peak/multiqc_plots/svg/fastqc-1_adapter_content_plot.svg", "multiqc/broad_peak/multiqc_plots/svg/fastqc-1_per_base_n_content_plot.svg", "multiqc/broad_peak/multiqc_plots/svg/fastqc-1_per_base_sequence_quality_plot.svg", "multiqc/broad_peak/multiqc_plots/svg/fastqc-1_per_sequence_gc_content_plot_Counts.svg", @@ -777,6 +753,9 @@ "pipeline_info", "pipeline_info/nf_core_chipseq_software_mqc_versions.yml", "pipeline_info/samplesheet.valid.csv", + "samtools", + "samtools/genome.fa.fai", + "samtools/genome.fa.sizes", "trimgalore", "trimgalore/fastqc", "trimgalore/fastqc/SPT5_INPUT_REP1_T1_1_val_1_fastqc.html", @@ -821,73 +800,66 @@ [ "SPT5_INPUT_REP1.mLB.clN.bedGraph:md5,0a93a9e9e1c5c89f62050e0a2c12ca31", "SPT5_INPUT_REP2.mLB.clN.bedGraph:md5,729d6cd9bd4e7a1e8ffc2f1cadc6483e", - "SPT5_T0_REP1.mLB.clN.bedGraph:md5,490d0e8ae9d5b64ec5ff8988bc17fc61", + "SPT5_T0_REP1.mLB.clN.bedGraph:md5,7d6d55a647a218f65b2b1653ba4b930d", "SPT5_T0_REP2.mLB.clN.bedGraph:md5,b6d1bb76e3dcb321d010762ca8046fa6", - "SPT5_T15_REP1.mLB.clN.bedGraph:md5,79aa337a5bdf210529e9e97189bc5799", - "SPT5_T15_REP2.mLB.clN.bedGraph:md5,e82594c663a3e25539b0c039821df8b7", - "SPT5_T0_REP1_peaks.broadPeak:md5,2ce0ad3163d0b2b6f0ee2d310dc3e45a", - "SPT5_T0_REP1_peaks.gappedPeak:md5,bdf9295567830a37a1ac36dd5b9ae634", - "SPT5_T0_REP1_peaks.xls:md5,f9ee78e3871b340a559f3f2397ef0768", + "SPT5_T15_REP1.mLB.clN.bedGraph:md5,2e0f7340ba33729e7a46f75965168481", + "SPT5_T15_REP2.mLB.clN.bedGraph:md5,a013dd85f9fdbd134b51058260bf7941", + "SPT5_T0_REP1_peaks.broadPeak:md5,0574cd91ce590e3be41c9057c6d4ea25", + "SPT5_T0_REP1_peaks.gappedPeak:md5,95203ab9aa297a4c52a4c8bbc8603fd7", + "SPT5_T0_REP1_peaks.xls:md5,f2dc646828f6d1da711e8c57f939b1fa", "SPT5_T0_REP2_peaks.broadPeak:md5,890430bbefd9dd9f4f575f7065ea8dec", - "SPT5_T0_REP2_peaks.gappedPeak:md5,52a63b465e877b4ad92664b6e7aeb373", - "SPT5_T0_REP2_peaks.xls:md5,751fc83d323657de6500ebca9ff68df4", - "SPT5_T15_REP1_peaks.broadPeak:md5,f9323725e703a522568f2ad29a127b49", - "SPT5_T15_REP1_peaks.gappedPeak:md5,f21a5c675481d468d3642595038bb14b", - "SPT5_T15_REP1_peaks.xls:md5,f51707f749e96430f1c17d36042f5d81", - "SPT5_T15_REP2_peaks.broadPeak:md5,84e9c7f351b97480144e425da99f6514", - "SPT5_T15_REP2_peaks.gappedPeak:md5,32e6527e3d8a689673e39623d06a20a1", - "SPT5_T15_REP2_peaks.xls:md5,7d2176161e884fd9323d7be3046425d4", + "SPT5_T0_REP2_peaks.gappedPeak:md5,0d3af85e7bbfbc5466b31ef5b9024b0b", + "SPT5_T0_REP2_peaks.xls:md5,e90dbef17d6e11fb8ce9dcd96b9ca295", + "SPT5_T15_REP1_peaks.broadPeak:md5,1032063d2c5f446d37f4b5b0ceb7d23c", + "SPT5_T15_REP1_peaks.gappedPeak:md5,7f18ecffb41df5fe01368ebbc0739b63", + "SPT5_T15_REP1_peaks.xls:md5,7878dd7172f259f62fb5fcd0078b5b18", + "SPT5_T15_REP2_peaks.broadPeak:md5,f4c23f9980599a7284946d405edbd42d", + "SPT5_T15_REP2_peaks.gappedPeak:md5,ea2d293dcfc22bbae738ffb31789865e", + "SPT5_T15_REP2_peaks.xls:md5,f435c26383a6999b6701453622c88cd5", "SPT5.consensus_peaks.antibody.txt:md5,8d7549b0cb2e42ffd5c23879e7f54ce9", - "SPT5.consensus_peaks.bed:md5,e055af9bc784a52d1177c350236a110d", + "SPT5.consensus_peaks.bed:md5,aab979f03ad217943d5ca0e9d76ebcae", "SPT5.consensus_peaks.boolean.intersect.txt:md5,226d673c3f7aa84f7b5e09424837a44f", - "SPT5.consensus_peaks.boolean.txt:md5,fe8c81e4e4f01e2b94e7329180dae76b", - "SPT5.consensus_peaks.saf:md5,4059f3ad4872dce06274e259130b494d", + "SPT5.consensus_peaks.boolean.txt:md5,0d244d8d163cb500d4a63d5d65efeb1d", + "SPT5.consensus_peaks.saf:md5,c9d5066e8762c26a60826588ebfb5cb3", "R_sessionInfo.log:md5,fb0da0d7ad6994ed66a8e68348b19676", - "SPT5_T0_REP1.txt:md5,03739eadb08c6b4844244bbd723b494d", - "SPT5_T0_REP2.txt:md5,4759e68dd7990b84832b51e748193c53", - "SPT5_T15_REP1.txt:md5,3343882841ef91a5dc97d1e9570a0049", - "SPT5_T15_REP2.txt:md5,eeabed0e3d11e89b3b71e4ecc2c60059", - "SPT5_T0_REP1.FRiP_mqc.tsv:md5,750459b0b1af635dd8dada8a40a74543", + "SPT5_T0_REP1.txt:md5,9c1214be493ac0cd3d74f252e5b64c83", + "SPT5_T0_REP2.txt:md5,9308f0c488ce36acdc0cd8582f70a7c9", + "SPT5_T15_REP1.txt:md5,3fd9242b7cc2d7fdefbc28c896ce413d", + "SPT5_T15_REP2.txt:md5,8747da0db881a6e8a15b79971ece19fc", + "SPT5_T0_REP1.FRiP_mqc.tsv:md5,2716cc752dbb14692a72c7d25ea96523", "SPT5_T0_REP1.peak_count_mqc.tsv:md5,e65fa814da290aa296b58e00a50c9312", "SPT5_T0_REP2.FRiP_mqc.tsv:md5,5d078120aa1b17e372f5de5359230018", "SPT5_T0_REP2.peak_count_mqc.tsv:md5,99895c132942ac3813f9bd36f6e4dde2", "SPT5_T15_REP1.FRiP_mqc.tsv:md5,df7d3681bfd13b7eb553c41ee8e0f3cf", "SPT5_T15_REP1.peak_count_mqc.tsv:md5,f8ced44d005a1e3ece1afc15679f0bde", - "SPT5_T15_REP2.FRiP_mqc.tsv:md5,3755b3f252e26d54af798a2793b415e5", + "SPT5_T15_REP2.FRiP_mqc.tsv:md5,4c69023919e61530ec9670f5243c9f69", "SPT5_T15_REP2.peak_count_mqc.tsv:md5,9bd63147b11a3502c709c6cf6a034d89", "SPT5_INPUT_REP1.mLb.clN.sorted.bam.flagstat:md5,f697eae4421b77f0c98467563e12a7aa", "SPT5_INPUT_REP1.mLb.clN.sorted.bam.idxstats:md5,5aa769ef078f2da2c3891d77bf1398a1", - "SPT5_INPUT_REP1.mLb.clN.sorted.bam.stats:md5,97da194b4647a6c730333021f0fff1d3", "SPT5_INPUT_REP2.mLb.clN.sorted.bam.flagstat:md5,4011eb87948fd763dbeb9c239a040d35", "SPT5_INPUT_REP2.mLb.clN.sorted.bam.idxstats:md5,d4c3b764672c816b04e4e9c3280f3084", - "SPT5_INPUT_REP2.mLb.clN.sorted.bam.stats:md5,03736b8dc2342f48b20ef3dc8df16881", - "SPT5_T0_REP1.mLb.clN.sorted.bam.flagstat:md5,db26beae134046e82c9592c8fdfb9429", - "SPT5_T0_REP1.mLb.clN.sorted.bam.idxstats:md5,d5a96cea11aeff6db1b27097d46d9a63", - "SPT5_T0_REP1.mLb.clN.sorted.bam.stats:md5,0c7fa4adaa04dc755173708edb68482d", + "SPT5_T0_REP1.mLb.clN.sorted.bam.flagstat:md5,4963bec61844874ee582de6ffb1de3db", + "SPT5_T0_REP1.mLb.clN.sorted.bam.idxstats:md5,ed9564b379671bf1a8ca192277da210e", "SPT5_T0_REP2.mLb.clN.sorted.bam.flagstat:md5,893e8291999322c789d85aefb8b0cfa7", "SPT5_T0_REP2.mLb.clN.sorted.bam.idxstats:md5,c5f613c58e4ed7717b7350cbd27bd6dc", - "SPT5_T0_REP2.mLb.clN.sorted.bam.stats:md5,3f2c333a818b3f3a91ea16fe02e65dc8", "SPT5_T15_REP1.mLb.clN.sorted.bam.flagstat:md5,1a585d233af6d14ae233391ddf0e5ce1", - "SPT5_T15_REP1.mLb.clN.sorted.bam.idxstats:md5,9ecc636c2c9431b8ebfa02eb7fb7c406", - "SPT5_T15_REP1.mLb.clN.sorted.bam.stats:md5,7e2754605111d20a5ec4e3a9dab2cd32", - "SPT5_T15_REP2.mLb.clN.sorted.bam.flagstat:md5,4f11313a4acb305eb03274e04341138a", - "SPT5_T15_REP2.mLb.clN.sorted.bam.idxstats:md5,e09ea5ac8eae18f04dd6e32df5d529e0", - "SPT5_T15_REP2.mLb.clN.sorted.bam.stats:md5,695ca97e4e9629474e4ed61c5e051d83", + "SPT5_T15_REP1.mLb.clN.sorted.bam.idxstats:md5,9be87f81da2b2f21d3750aaf31eee8b7", + "SPT5_T15_REP2.mLb.clN.sorted.bam.flagstat:md5,0f28a70d15ed2500bd27e857a0027a4c", + "SPT5_T15_REP2.mLb.clN.sorted.bam.idxstats:md5,53730b0be4c786651b2c59cc0c1de186", "genome.fa:md5,4bad9f4b18056156a81f7f952abbe125", - "genome.fa.fai:md5,6f4c0ce5258e6948135ad006e1f9ee1b", - "genome.fa.sizes:md5,e122f8021a5ef14104c32785cb9b7adc", "cutadapt_filtered_reads_plot.yaml:md5,976fdb8049d847c977195863418e3655", - "cutadapt_trimmed_sequences_plot_3_Counts.yaml:md5,14b35027cce2eba80181265e04f6f489", - "cutadapt_trimmed_sequences_plot_3_Obs_Exp.yaml:md5,98410382bb4083d3215a24f0f27b21dd", - "fastqc-1-status-check-heatmap.yaml:md5,8876a09ccb279f76e1b516506cc19157", - "fastqc-1_per_base_n_content_plot.yaml:md5,d6764dbc1915525bc18c74a27d1fa194", - "fastqc-1_per_base_sequence_quality_plot.yaml:md5,0dd7d8a364d42063440dc847e23eeda9", - "fastqc-1_per_sequence_gc_content_plot_Counts.yaml:md5,2cb304ef2551b4ce47126228769a152b", - "fastqc-1_per_sequence_gc_content_plot_Percentages.yaml:md5,9f835a07bebf743957983ed013a7eb3c", - "fastqc-1_per_sequence_quality_scores_plot.yaml:md5,e7e1e6edaae3140586aecc3b77c6e533", - "fastqc-1_sequence_counts_plot.yaml:md5,2b43b4cbebb560f669e317c6b8e946ae", - "fastqc-1_sequence_duplication_levels_plot.yaml:md5,02ef5110211a2848b6619e1adb4573ce", - "fastqc-1_top_overrepresented_sequences_table.yaml:md5,8a80554c91d9fca8acb82f023de02f11", + "cutadapt_trimmed_sequences_plot_3_Counts.yaml:md5,e6733f4ff773a27d0ab81564913b4b54", + "cutadapt_trimmed_sequences_plot_3_Obs_Exp.yaml:md5,9ffcfe37c02af14b8eddd4746066e56a", + "fastqc-1-status-check-heatmap.yaml:md5,6c6e1591b5ff248c85446f9728a3dad4", + "fastqc-1_adapter_content_plot.yaml:md5,d78273a7e4ff36434bb91246fef01523", + "fastqc-1_per_base_n_content_plot.yaml:md5,3625446964b669ccff279aba54510462", + "fastqc-1_per_base_sequence_quality_plot.yaml:md5,1fb4d35d6b94fc4f41d5be1304844b95", + "fastqc-1_per_sequence_gc_content_plot_Counts.yaml:md5,101f11f9cebcc626755f32322b27ebd3", + "fastqc-1_per_sequence_gc_content_plot_Percentages.yaml:md5,0055f4bbded45434618259f47fe5fe85", + "fastqc-1_per_sequence_quality_scores_plot.yaml:md5,eed2628303916e49143ccf37300fb5de", + "fastqc-1_sequence_counts_plot.yaml:md5,6ca3a8cf8d258777e29b8e8731157d90", + "fastqc-1_sequence_duplication_levels_plot.yaml:md5,3e3622b7dd80be1db92ac06df8e3d056", + "fastqc-1_top_overrepresented_sequences_table.yaml:md5,a333a02f5313876cf1713d7b0168d5f3", "fastqc-status-check-heatmap.yaml:md5,1e473e0f9140b718607d8c72cf3c0b45", "fastqc_adapter_content_plot.yaml:md5,591991daf3e3c49873f4a51a3710b072", "fastqc_per_base_n_content_plot.yaml:md5,c16a4af177b9ad9694a9535023906927", @@ -897,79 +869,79 @@ "fastqc_per_sequence_quality_scores_plot.yaml:md5,351b55974af5ee21294ebf5deb850d7c", "fastqc_sequence_counts_plot.yaml:md5,5522b2b42f0b3753dd359aad1565d7c2", "fastqc_sequence_duplication_levels_plot.yaml:md5,e883323380f2880c81ea36dc91ad8678", - "fastqc_sequence_length_distribution_plot.yaml:md5,f1d36d9bed4b85e0ae349b514ab788fc", + "fastqc_sequence_length_distribution_plot.yaml:md5,d57678f16381986766d56b631c838106", "fastqc_top_overrepresented_sequences_table.yaml:md5,443e161371f73cebf63c14f7a9f3580d", - "featureCounts_assignment_plot.yaml:md5,8207e5d0a6432a3661f9ffe45b14c94f", + "featureCounts_assignment_plot.yaml:md5,9ebb47589533f668f7b2b4e59d5231c5", "multiqc_citations.yaml:md5,fca5dc7cb20162434c714d26b11161f3", - "multiqc_cutadapt.yaml:md5,25f32008ccf0041ac74bb82d744d6eda", "multiqc_fastqc.yaml:md5,30fe6d1a5e5c04695dda81294b828ec9", - "multiqc_fastqc_1.yaml:md5,dd7981fa28827b895ef844011053eeff", - "multiqc_featurecounts.yaml:md5,f3859f6c8dce0e1acd116f516e814fbc", - "multiqc_frip_score.yaml:md5,70f0eb1370581c57537cdd650fc7af92", - "multiqc_nsc_coefficient.yaml:md5,6befd2c9a2a88d80d84225b282de3857", + "multiqc_fastqc_1.yaml:md5,cd4a85c27c3cf85f1d0612afce793186", + "multiqc_featurecounts.yaml:md5,6af47474530327a6254a44f1f833ab1c", + "multiqc_frip_score.yaml:md5,a12e53352fb861b27e22fada20d4a352", + "multiqc_nsc_coefficient.yaml:md5,2f98bade263dddff526bc627bd956f94", "multiqc_peak_annotation.yaml:md5,807711a8de90b96350cdb704713f377c", "multiqc_peak_count.yaml:md5,9febb685e0995e635c0d34644aef1c22", - "multiqc_phantompeakqualtools.yaml:md5,8b98fb4f8b51f22c6d688b0f69fa8af6", - "multiqc_picard-1_AlignmentSummaryMetrics.yaml:md5,4131380513ad07ea9d03bf07ee580b21", - "multiqc_picard-1_insertSize.yaml:md5,e0db1e0acb304b399940e0597f0b2fc7", - "multiqc_picard-1_quality_by_cycle.yaml:md5,04701f440eb72e4adfa5334472db84fc", - "multiqc_picard-1_quality_score_distribution.yaml:md5,c3891e6ac941eecca13a57383c909510", - "multiqc_picard_baseContent.yaml:md5,f696b1a8fa5d664c674812d78c08956d", - "multiqc_picard_dups.yaml:md5,3a2202c3af4eb47216a1343a2cf4bce9", - "multiqc_rsc_coefficient.yaml:md5,8461f0178d38bdb58cfad7dad7bfdb88", - "multiqc_samtools_flagstat.yaml:md5,2833155ed2487f9cb7829f8264fed339", - "multiqc_samtools_flagstat_1.yaml:md5,e0deba4fd1bb7f802549e95fba444cdc", - "multiqc_samtools_flagstat_2.yaml:md5,18245e4474861a2f45f54ca9afa8828a", - "multiqc_samtools_idxstats.yaml:md5,86f0b32ebd9494aea700d24b78f4785f", - "multiqc_samtools_idxstats_1.yaml:md5,2a83a1a9f1a66e90b9f73181a5a196c6", - "multiqc_samtools_idxstats_2.yaml:md5,e9cd19da34eac4fd2c9196fc303da4e2", - "multiqc_samtools_stats.yaml:md5,c75c982cdca8a83186d345bf66b365e0", - "multiqc_samtools_stats_1.yaml:md5,33531055d31307925f94f5e6460463fc", - "multiqc_samtools_stats_2.yaml:md5,e538f9993283ee9f2a056f279d3a8dca", - "multiqc_strand_shift_correlation.yaml:md5,9a9a859ce75534a8074811ee1ca80f71", - "picard-1_alignment_readlength_plot.yaml:md5,fc25da4e9daefd74134d960adde48951", - "picard-1_alignment_summary_Aligned_Bases.yaml:md5,c174cd7cabe80cedf2c6e11b0091b7cb", - "picard-1_alignment_summary_Aligned_Reads.yaml:md5,afc30230b330fd55b13de82100976be6", + "multiqc_phantompeakqualtools.yaml:md5,e9b072da0ce783d5b7ec217d83a15987", + "multiqc_picard-1_AlignmentSummaryMetrics.yaml:md5,3127f1885c9d22281d5e853478833a70", + "multiqc_picard-1_insertSize.yaml:md5,43486e24b88a3712442e891968bd2ce0", + "multiqc_picard-1_quality_by_cycle.yaml:md5,e3132d7e118d112e819c781db8b68f23", + "multiqc_picard-1_quality_score_distribution.yaml:md5,ae43cc721ebb096df6dc36c2b077c288", + "multiqc_picard_baseContent.yaml:md5,01c7596a92f3884c4972c987745c96ec", + "multiqc_picard_dups.yaml:md5,9bf99a105d35807fc4645086d72998e0", + "multiqc_rsc_coefficient.yaml:md5,e5c7d53b2b9b12bb55690838915820ae", + "multiqc_samtools_flagstat.yaml:md5,f1f82442834faeea1e3393b91faa3f38", + "multiqc_samtools_flagstat_1.yaml:md5,7ae591bb360acba0858ccc9177245a44", + "multiqc_samtools_flagstat_2.yaml:md5,89c5fd1d7975ad6bfe9dbbeefcaa2a4b", + "multiqc_samtools_idxstats.yaml:md5,48c253ff301403f97b6973603784b25a", + "multiqc_samtools_idxstats_1.yaml:md5,684841cb92622bdd9aebfcc6e08aa03f", + "multiqc_samtools_idxstats_2.yaml:md5,f81be62ac233142a9923a8d724c99802", + "multiqc_samtools_stats.yaml:md5,533bfee2bf752b47276e14a3b108f1b2", + "multiqc_samtools_stats_1.yaml:md5,ff3a9d5854cf0471c96fa52ec3579066", + "multiqc_samtools_stats_2.yaml:md5,be2d5080821f867bf05b87a84c83b864", + "picard-1_alignment_readlength_plot.yaml:md5,3edd8c54cbfad9c32847a94ba80008e3", + "picard-1_alignment_summary_Aligned_Bases.yaml:md5,9477ebe92f7bf9a1b667aff6f9efe845", + "picard-1_alignment_summary_Aligned_Reads.yaml:md5,9d19a860ec8c799d7b229b47c76d383c", "picard-1_histogram.yaml:md5,8a80554c91d9fca8acb82f023de02f11", - "picard-1_histogram_1.yaml:md5,04701f440eb72e4adfa5334472db84fc", - "picard-1_histogram_2.yaml:md5,c3891e6ac941eecca13a57383c909510", - "picard-1_insert_size_Counts.yaml:md5,95be371f6c22ce55e0f6915a1e45fb43", - "picard-1_insert_size_Percentages.yaml:md5,9e7b10d0267a86a55938108c20dbbe93", - "picard-1_quality_by_cycle.yaml:md5,bebc4523218048e1d1957cd70397bb61", - "picard-1_quality_score_distribution.yaml:md5,e80f658b3eb4c4737c774b0060941bfc", - "picard_base_distribution_by_cycle__Adenine.yaml:md5,8d020ac49d29295b49a11dd53ba453aa", - "picard_base_distribution_by_cycle__Cytosine.yaml:md5,26f8572c29758c423562abdaa03b7a34", - "picard_base_distribution_by_cycle__Guanine.yaml:md5,58aea7e2c0eed31250b5f86a1188d737", - "picard_base_distribution_by_cycle__Thymine.yaml:md5,1a4b97ac690abe12d5513d0d3a40cc11", - "picard_base_distribution_by_cycle__Undetermined.yaml:md5,4c2feab0a1a94826c53fabe7a3274dda", - "picard_deduplication.yaml:md5,c5e459b5774f23a7b0e398e5cb86bd56", + "picard-1_histogram_1.yaml:md5,e3132d7e118d112e819c781db8b68f23", + "picard-1_histogram_2.yaml:md5,ae43cc721ebb096df6dc36c2b077c288", + "picard-1_insert_size_Counts.yaml:md5,653f4829a5e9a98bbb21b2fba99ad672", + "picard-1_insert_size_Percentages.yaml:md5,364de79ac1c04ba383d66b7a1d71541d", + "picard-1_quality_by_cycle.yaml:md5,04479bcef32a5ea65ce55f6772373c60", + "picard-1_quality_score_distribution.yaml:md5,6bdb95104cc7ea521d2db72896da9272", + "picard_base_distribution_by_cycle__Adenine.yaml:md5,1452490858309fc8dd9f308045790a8b", + "picard_base_distribution_by_cycle__Cytosine.yaml:md5,a88f7594290117503637336e33629751", + "picard_base_distribution_by_cycle__Guanine.yaml:md5,b0f4ecff965c1da1eda2dfa80b0723f7", + "picard_base_distribution_by_cycle__Thymine.yaml:md5,bff14a87ef525cce731dbe42bf463ea8", + "picard_base_distribution_by_cycle__Undetermined.yaml:md5,7772113ed25a6d2951a4e6100c30932b", + "picard_deduplication.yaml:md5,c5d69579294e7592e5e28277e01c278e", "picard_histogram.yaml:md5,8a80554c91d9fca8acb82f023de02f11", "picard_histogram_1.yaml:md5,8a80554c91d9fca8acb82f023de02f11", "picard_histogram_2.yaml:md5,8a80554c91d9fca8acb82f023de02f11", - "samtools-flagstat-dp_Percentage_of_total-1.yaml:md5,823114a992da2bab04eb4edd903746d8", - "samtools-flagstat-dp_Percentage_of_total-2.yaml:md5,a97c37a9d95494fe0d02d6e16e6057a6", - "samtools-flagstat-dp_Percentage_of_total.yaml:md5,9c2b32dc86d09eeb870c8fb63d46f9e5", - "samtools-flagstat-dp_Read_counts-1.yaml:md5,d5dfeebe9bff8dd3fcdfdbf32adb106b", - "samtools-flagstat-dp_Read_counts-2.yaml:md5,c3cbc20287333e65b0053c0c644d81f3", - "samtools-flagstat-dp_Read_counts.yaml:md5,265762d51681a3cc1ad8aeb85c71a4e0", - "samtools-idxstats-mapped-reads-plot_Normalised_Counts-1.yaml:md5,8837b9900307d0e626f08864e5bdf2cd", - "samtools-idxstats-mapped-reads-plot_Normalised_Counts-2.yaml:md5,969627a72da77f241fcca5c19547f6cb", - "samtools-idxstats-mapped-reads-plot_Normalised_Counts.yaml:md5,55e93fb7b4a86e11fbc2cc0381f4cec3", - "samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts-1.yaml:md5,1b97bc9b6f2d353285aa0f873a433754", - "samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts-2.yaml:md5,be4649e0e75abcf2d3f8b7cdfce34506", - "samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts.yaml:md5,63ed0a2b79eb80512305f288c837054d", - "samtools-idxstats-mapped-reads-plot_Raw_Counts-1.yaml:md5,ec7d25c50ae159832a8ce0cb8630a03d", - "samtools-idxstats-mapped-reads-plot_Raw_Counts-2.yaml:md5,12259c95d8a4038e99ccdaf583695592", - "samtools-idxstats-mapped-reads-plot_Raw_Counts.yaml:md5,5e3a88d956ac7dcc1b7a6d5ae3f3b814", - "samtools-stats-dp.yaml:md5,25a63e73197b0fb5a9c3663698b08589", - "samtools_alignment_plot.yaml:md5,f05cae90c4fb4ff66c4e92eaabd2caf2", - "samplesheet.valid.csv:md5,276425084544b3baf533e2f17207a384" + "samtools-flagstat-dp_Percentage_of_total-1.yaml:md5,09bb5ef391631b8845e3f3fe212f8048", + "samtools-flagstat-dp_Percentage_of_total-2.yaml:md5,96d661539b95863c30e181e5b64e46ca", + "samtools-flagstat-dp_Percentage_of_total.yaml:md5,cc9d1b338f526d4bab4bfa867c5dcd21", + "samtools-flagstat-dp_Read_counts-1.yaml:md5,ca690a967e8e0f699d27f38e864e2fce", + "samtools-flagstat-dp_Read_counts-2.yaml:md5,46debe080c753b6ba45501ea268e5d95", + "samtools-flagstat-dp_Read_counts.yaml:md5,2a3cbb23287d2123c29cfa1a3454a72a", + "samtools-idxstats-mapped-reads-plot_Normalised_Counts-1.yaml:md5,ac2602eede7202f9c0348760eb0b8bb6", + "samtools-idxstats-mapped-reads-plot_Normalised_Counts-2.yaml:md5,b1fe44cbd1cda8d4727a232c8c8bd513", + "samtools-idxstats-mapped-reads-plot_Normalised_Counts.yaml:md5,ac1c7fc1c35a6719c962993d9bf5471e", + "samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts-1.yaml:md5,80c5b4f9cc0400799be48ef05aa6c410", + "samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts-2.yaml:md5,62d984dcdceba150863dd1e72c93f245", + "samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts.yaml:md5,989f82110113d8855a3f0cfa996cbdc6", + "samtools-idxstats-mapped-reads-plot_Raw_Counts-1.yaml:md5,94ddd17f7b9d15e547be9294e872e193", + "samtools-idxstats-mapped-reads-plot_Raw_Counts-2.yaml:md5,b8204d3b4480d3e9eec09d1289e52637", + "samtools-idxstats-mapped-reads-plot_Raw_Counts.yaml:md5,c944d25812a73c4ce9de9834943e6732", + "samtools-stats-dp.yaml:md5,ba5ad95c00d0bcef0d7aa32f941a813d", + "samtools_alignment_plot.yaml:md5,c1b5b60c3c83928275df7f720c5b1697", + "samplesheet.valid.csv:md5,276425084544b3baf533e2f17207a384", + "genome.fa.fai:md5,6f4c0ce5258e6948135ad006e1f9ee1b", + "genome.fa.sizes:md5,e122f8021a5ef14104c32785cb9b7adc" ] ], + "timestamp": "2026-03-18T20:38:18.721779", "meta": { - "nf-test": "0.9.2", - "nextflow": "25.04.3" - }, - "timestamp": "2025-09-17T12:59:57.48698662" + "nf-test": "0.9.4", + "nextflow": "25.04.0" + } } -} +} \ No newline at end of file diff --git a/tests/nextflow.config b/tests/nextflow.config index 21fe2997c..b5de98d2b 100644 --- a/tests/nextflow.config +++ b/tests/nextflow.config @@ -4,15 +4,17 @@ ======================================================================================== */ -// Limit resources so that this can run on GitHub Actions +// Impose sensible resource limits for testing process { - resourceLimits = [ - cpus: 2, - memory: '6.GB', - time: '6.h' - ] + withName: '.*' { + cpus = 2 + memory = 6.GB + time = 2.h + } + withName: 'BWA_INDEX' { + memory = 16.GB + } } - params { modules_testdata_base_path = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/' pipelines_testdata_base_path = 'https://raw.githubusercontent.com/nf-core/test-datasets/refs/heads/chipseq' diff --git a/tests/skip_consensus_peaks.nf.test.snap b/tests/skip_consensus_peaks.nf.test.snap index 25abda32d..3e4332178 100644 --- a/tests/skip_consensus_peaks.nf.test.snap +++ b/tests/skip_consensus_peaks.nf.test.snap @@ -3,115 +3,96 @@ "content": [ 20 ], + "timestamp": "2026-03-17T14:29:41.990841", "meta": { - "nf-test": "0.9.2", - "nextflow": "25.04.6" - }, - "timestamp": "2025-09-04T21:50:26.130655" + "nf-test": "0.9.4", + "nextflow": "25.04.0" + } }, "skip_consensus_peaks": { "content": [ 210, { "BAMTOOLS_FILTER": { - "bamtools": "2.5.2", - "samtools": "1.15.1" + "bamtools": "2.5.3", + "samtools": 1.23 }, "BAM_REMOVE_ORPHANS": { - "samtools": "1.15.1" + "samtools": 1.23 }, "BEDTOOLS_GENOMECOV": { "bedtools": "2.31.1" }, "BWA_INDEX": { - "bwa": "0.7.18-r1243-dirty" + "bwa": "0.7.19-r1273" }, "BWA_MEM": { - "bwa": "0.7.18-r1243-dirty", - "samtools": 1.2 - }, - "CUSTOM_GETCHROMSIZES": { - "getchromsizes": 1.2 + "bwa": "0.7.19-r1273", + "samtools": "1.22.1" }, "DEEPTOOLS_COMPUTEMATRIX": { - "deeptools": "3.5.5" + "deeptools": "3.5.6" }, "DEEPTOOLS_PLOTFINGERPRINT": { - "deeptools": "3.5.5" + "deeptools": "3.5.6" }, "DEEPTOOLS_PLOTHEATMAP": { - "deeptools": "3.5.5" + "deeptools": "3.5.6" }, "DEEPTOOLS_PLOTPROFILE": { - "deeptools": "3.5.5" + "deeptools": "3.5.6" }, "FASTQC": { "fastqc": "0.12.1" }, "FRIP_SCORE": { - "bedtools": "2.30.0", - "samtools": "1.15.1" + "bedtools": "2.31.1", + "samtools": 1.23 }, "GENOME_BLACKLIST_REGIONS": { - "bedtools": "2.30.0" - }, - "GTF2BED": { - "perl": "5.26.2" - }, - "HOMER_ANNOTATEPEAKS": { - "homer": 4.11 - }, - "IGV": { - "python": "3.8.3" + "bedtools": "2.31.1" }, "MACS3_CALLPEAK": { - "macs3": "3.0.1" - }, - "MULTIQC_CUSTOM_PEAKS": { - "sed": 4.7 - }, - "PHANTOMPEAKQUALTOOLS": { - "phantompeakqualtools": "1.2.2" + "macs3": "3.0.4" }, "PICARD_COLLECTMULTIPLEMETRICS": { - "picard": "3.2.0-1-g3948afb6b" + "picard": "3.4.0" }, "PICARD_MARKDUPLICATES": { - "picard": "3.2.0-1-g3948afb6b" + "picard": "3.4.0" }, "PICARD_MERGESAMFILES": { - "picard": "3.2.0-1-g3948afb6b" + "picard": "3.4.0" }, "PLOT_HOMER_ANNOTATEPEAKS": { - "r-base": "4.0.3" + "R": "4.5.3" }, "PLOT_MACS3_QC": { - "r-base": "4.0.3" + "R": "4.5.3" }, - "SAMPLESHEET_CHECK": { - "python": "3.8.3" + "SAMTOOLS_FAIDX": { + "samtools": "1.22.1" }, "SAMTOOLS_FLAGSTAT": { "samtools": "1.22.1" }, "SAMTOOLS_IDXSTATS": { - "samtools": 1.2 + "samtools": "1.22.1" }, "SAMTOOLS_INDEX": { - "samtools": 1.2 + "samtools": "1.22.1" }, "SAMTOOLS_SORT": { - "samtools": 1.2 + "samtools": "1.22.1" }, "SAMTOOLS_STATS": { - "samtools": 1.2 + "samtools": "1.22.1" }, "TRIMGALORE": { - "cutadapt": 3.4, - "trimgalore": "0.6.7" + "trimgalore": "0.6.10" }, "UCSC_BEDGRAPHTOBIGWIG": { - "ucsc": 445 + "ucsc": 482 }, "Workflow": { "nf-core/chipseq": "v2.2.0dev" @@ -265,37 +246,37 @@ "bwa/merged_library/picard_metrics/SPT5_INPUT_REP1.mLb.clN.sorted.CollectMultipleMetrics.insert_size_metrics", "bwa/merged_library/picard_metrics/SPT5_INPUT_REP1.mLb.clN.sorted.CollectMultipleMetrics.quality_by_cycle_metrics", "bwa/merged_library/picard_metrics/SPT5_INPUT_REP1.mLb.clN.sorted.CollectMultipleMetrics.quality_distribution_metrics", - "bwa/merged_library/picard_metrics/SPT5_INPUT_REP1.mLb.mkD.sorted.MarkDuplicates.metrics.txt", + "bwa/merged_library/picard_metrics/SPT5_INPUT_REP1.mLb.mkD.sorted.metrics.txt", "bwa/merged_library/picard_metrics/SPT5_INPUT_REP2.mLb.clN.sorted.CollectMultipleMetrics.alignment_summary_metrics", "bwa/merged_library/picard_metrics/SPT5_INPUT_REP2.mLb.clN.sorted.CollectMultipleMetrics.base_distribution_by_cycle_metrics", "bwa/merged_library/picard_metrics/SPT5_INPUT_REP2.mLb.clN.sorted.CollectMultipleMetrics.insert_size_metrics", "bwa/merged_library/picard_metrics/SPT5_INPUT_REP2.mLb.clN.sorted.CollectMultipleMetrics.quality_by_cycle_metrics", "bwa/merged_library/picard_metrics/SPT5_INPUT_REP2.mLb.clN.sorted.CollectMultipleMetrics.quality_distribution_metrics", - "bwa/merged_library/picard_metrics/SPT5_INPUT_REP2.mLb.mkD.sorted.MarkDuplicates.metrics.txt", + "bwa/merged_library/picard_metrics/SPT5_INPUT_REP2.mLb.mkD.sorted.metrics.txt", "bwa/merged_library/picard_metrics/SPT5_T0_REP1.mLb.clN.sorted.CollectMultipleMetrics.alignment_summary_metrics", "bwa/merged_library/picard_metrics/SPT5_T0_REP1.mLb.clN.sorted.CollectMultipleMetrics.base_distribution_by_cycle_metrics", "bwa/merged_library/picard_metrics/SPT5_T0_REP1.mLb.clN.sorted.CollectMultipleMetrics.insert_size_metrics", "bwa/merged_library/picard_metrics/SPT5_T0_REP1.mLb.clN.sorted.CollectMultipleMetrics.quality_by_cycle_metrics", "bwa/merged_library/picard_metrics/SPT5_T0_REP1.mLb.clN.sorted.CollectMultipleMetrics.quality_distribution_metrics", - "bwa/merged_library/picard_metrics/SPT5_T0_REP1.mLb.mkD.sorted.MarkDuplicates.metrics.txt", + "bwa/merged_library/picard_metrics/SPT5_T0_REP1.mLb.mkD.sorted.metrics.txt", "bwa/merged_library/picard_metrics/SPT5_T0_REP2.mLb.clN.sorted.CollectMultipleMetrics.alignment_summary_metrics", "bwa/merged_library/picard_metrics/SPT5_T0_REP2.mLb.clN.sorted.CollectMultipleMetrics.base_distribution_by_cycle_metrics", "bwa/merged_library/picard_metrics/SPT5_T0_REP2.mLb.clN.sorted.CollectMultipleMetrics.insert_size_metrics", "bwa/merged_library/picard_metrics/SPT5_T0_REP2.mLb.clN.sorted.CollectMultipleMetrics.quality_by_cycle_metrics", "bwa/merged_library/picard_metrics/SPT5_T0_REP2.mLb.clN.sorted.CollectMultipleMetrics.quality_distribution_metrics", - "bwa/merged_library/picard_metrics/SPT5_T0_REP2.mLb.mkD.sorted.MarkDuplicates.metrics.txt", + "bwa/merged_library/picard_metrics/SPT5_T0_REP2.mLb.mkD.sorted.metrics.txt", "bwa/merged_library/picard_metrics/SPT5_T15_REP1.mLb.clN.sorted.CollectMultipleMetrics.alignment_summary_metrics", "bwa/merged_library/picard_metrics/SPT5_T15_REP1.mLb.clN.sorted.CollectMultipleMetrics.base_distribution_by_cycle_metrics", "bwa/merged_library/picard_metrics/SPT5_T15_REP1.mLb.clN.sorted.CollectMultipleMetrics.insert_size_metrics", "bwa/merged_library/picard_metrics/SPT5_T15_REP1.mLb.clN.sorted.CollectMultipleMetrics.quality_by_cycle_metrics", "bwa/merged_library/picard_metrics/SPT5_T15_REP1.mLb.clN.sorted.CollectMultipleMetrics.quality_distribution_metrics", - "bwa/merged_library/picard_metrics/SPT5_T15_REP1.mLb.mkD.sorted.MarkDuplicates.metrics.txt", + "bwa/merged_library/picard_metrics/SPT5_T15_REP1.mLb.mkD.sorted.metrics.txt", "bwa/merged_library/picard_metrics/SPT5_T15_REP2.mLb.clN.sorted.CollectMultipleMetrics.alignment_summary_metrics", "bwa/merged_library/picard_metrics/SPT5_T15_REP2.mLb.clN.sorted.CollectMultipleMetrics.base_distribution_by_cycle_metrics", "bwa/merged_library/picard_metrics/SPT5_T15_REP2.mLb.clN.sorted.CollectMultipleMetrics.insert_size_metrics", "bwa/merged_library/picard_metrics/SPT5_T15_REP2.mLb.clN.sorted.CollectMultipleMetrics.quality_by_cycle_metrics", "bwa/merged_library/picard_metrics/SPT5_T15_REP2.mLb.clN.sorted.CollectMultipleMetrics.quality_distribution_metrics", - "bwa/merged_library/picard_metrics/SPT5_T15_REP2.mLb.mkD.sorted.MarkDuplicates.metrics.txt", + "bwa/merged_library/picard_metrics/SPT5_T15_REP2.mLb.mkD.sorted.metrics.txt", "bwa/merged_library/picard_metrics/pdf", "bwa/merged_library/picard_metrics/pdf/SPT5_INPUT_REP1.mLb.clN.sorted.CollectMultipleMetrics.base_distribution_by_cycle.pdf", "bwa/merged_library/picard_metrics/pdf/SPT5_INPUT_REP1.mLb.clN.sorted.CollectMultipleMetrics.insert_size_histogram.pdf", @@ -374,8 +355,6 @@ "fastqc/zips/SPT5_T15_REP2_T1_2_fastqc.zip", "genome", "genome/genome.fa", - "genome/genome.fa.fai", - "genome/genome.fa.sizes", "igv", "igv/broad_peak", "igv/broad_peak/igv_files.txt", @@ -390,6 +369,7 @@ "multiqc/broad_peak/multiqc_data/deeptools_plot_fingerprint_counts_mlib_deeptools.yaml", "multiqc/broad_peak/multiqc_data/deeptools_plot_profile_mlib_deeptools.yaml", "multiqc/broad_peak/multiqc_data/fastqc-1-status-check-heatmap.yaml", + "multiqc/broad_peak/multiqc_data/fastqc-1_adapter_content_plot.yaml", "multiqc/broad_peak/multiqc_data/fastqc-1_per_base_n_content_plot.yaml", "multiqc/broad_peak/multiqc_data/fastqc-1_per_base_sequence_quality_plot.yaml", "multiqc/broad_peak/multiqc_data/fastqc-1_per_sequence_gc_content_plot_Counts.yaml", @@ -484,6 +464,7 @@ "multiqc/broad_peak/multiqc_plots/pdf/cutadapt_trimmed_sequences_plot_3_Obs_Exp.pdf", "multiqc/broad_peak/multiqc_plots/pdf/deeptools_fingerprint_plot.pdf", "multiqc/broad_peak/multiqc_plots/pdf/fastqc-1-status-check-heatmap.pdf", + "multiqc/broad_peak/multiqc_plots/pdf/fastqc-1_adapter_content_plot.pdf", "multiqc/broad_peak/multiqc_plots/pdf/fastqc-1_per_base_n_content_plot.pdf", "multiqc/broad_peak/multiqc_plots/pdf/fastqc-1_per_base_sequence_quality_plot.pdf", "multiqc/broad_peak/multiqc_plots/pdf/fastqc-1_per_sequence_gc_content_plot_Counts.pdf", @@ -567,6 +548,7 @@ "multiqc/broad_peak/multiqc_plots/png/cutadapt_trimmed_sequences_plot_3_Obs_Exp.png", "multiqc/broad_peak/multiqc_plots/png/deeptools_fingerprint_plot.png", "multiqc/broad_peak/multiqc_plots/png/fastqc-1-status-check-heatmap.png", + "multiqc/broad_peak/multiqc_plots/png/fastqc-1_adapter_content_plot.png", "multiqc/broad_peak/multiqc_plots/png/fastqc-1_per_base_n_content_plot.png", "multiqc/broad_peak/multiqc_plots/png/fastqc-1_per_base_sequence_quality_plot.png", "multiqc/broad_peak/multiqc_plots/png/fastqc-1_per_sequence_gc_content_plot_Counts.png", @@ -650,6 +632,7 @@ "multiqc/broad_peak/multiqc_plots/svg/cutadapt_trimmed_sequences_plot_3_Obs_Exp.svg", "multiqc/broad_peak/multiqc_plots/svg/deeptools_fingerprint_plot.svg", "multiqc/broad_peak/multiqc_plots/svg/fastqc-1-status-check-heatmap.svg", + "multiqc/broad_peak/multiqc_plots/svg/fastqc-1_adapter_content_plot.svg", "multiqc/broad_peak/multiqc_plots/svg/fastqc-1_per_base_n_content_plot.svg", "multiqc/broad_peak/multiqc_plots/svg/fastqc-1_per_base_sequence_quality_plot.svg", "multiqc/broad_peak/multiqc_plots/svg/fastqc-1_per_sequence_gc_content_plot_Counts.svg", @@ -730,6 +713,9 @@ "pipeline_info", "pipeline_info/nf_core_chipseq_software_mqc_versions.yml", "pipeline_info/samplesheet.valid.csv", + "samtools", + "samtools/genome.fa.fai", + "samtools/genome.fa.sizes", "trimgalore", "trimgalore/fastqc", "trimgalore/fastqc/SPT5_INPUT_REP1_T1_1_val_1_fastqc.html", @@ -774,63 +760,56 @@ [ "SPT5_INPUT_REP1.mLB.clN.bedGraph:md5,0a93a9e9e1c5c89f62050e0a2c12ca31", "SPT5_INPUT_REP2.mLB.clN.bedGraph:md5,729d6cd9bd4e7a1e8ffc2f1cadc6483e", - "SPT5_T0_REP1.mLB.clN.bedGraph:md5,490d0e8ae9d5b64ec5ff8988bc17fc61", + "SPT5_T0_REP1.mLB.clN.bedGraph:md5,7d6d55a647a218f65b2b1653ba4b930d", "SPT5_T0_REP2.mLB.clN.bedGraph:md5,b6d1bb76e3dcb321d010762ca8046fa6", - "SPT5_T15_REP1.mLB.clN.bedGraph:md5,79aa337a5bdf210529e9e97189bc5799", - "SPT5_T15_REP2.mLB.clN.bedGraph:md5,e82594c663a3e25539b0c039821df8b7", - "SPT5_T0_REP1_peaks.broadPeak:md5,2ce0ad3163d0b2b6f0ee2d310dc3e45a", - "SPT5_T0_REP1_peaks.gappedPeak:md5,bdf9295567830a37a1ac36dd5b9ae634", - "SPT5_T0_REP1_peaks.xls:md5,f9ee78e3871b340a559f3f2397ef0768", + "SPT5_T15_REP1.mLB.clN.bedGraph:md5,2e0f7340ba33729e7a46f75965168481", + "SPT5_T15_REP2.mLB.clN.bedGraph:md5,a013dd85f9fdbd134b51058260bf7941", + "SPT5_T0_REP1_peaks.broadPeak:md5,0574cd91ce590e3be41c9057c6d4ea25", + "SPT5_T0_REP1_peaks.gappedPeak:md5,95203ab9aa297a4c52a4c8bbc8603fd7", + "SPT5_T0_REP1_peaks.xls:md5,f2dc646828f6d1da711e8c57f939b1fa", "SPT5_T0_REP2_peaks.broadPeak:md5,890430bbefd9dd9f4f575f7065ea8dec", - "SPT5_T0_REP2_peaks.gappedPeak:md5,52a63b465e877b4ad92664b6e7aeb373", - "SPT5_T0_REP2_peaks.xls:md5,751fc83d323657de6500ebca9ff68df4", - "SPT5_T15_REP1_peaks.broadPeak:md5,f9323725e703a522568f2ad29a127b49", - "SPT5_T15_REP1_peaks.gappedPeak:md5,f21a5c675481d468d3642595038bb14b", - "SPT5_T15_REP1_peaks.xls:md5,f51707f749e96430f1c17d36042f5d81", - "SPT5_T15_REP2_peaks.broadPeak:md5,84e9c7f351b97480144e425da99f6514", - "SPT5_T15_REP2_peaks.gappedPeak:md5,32e6527e3d8a689673e39623d06a20a1", - "SPT5_T15_REP2_peaks.xls:md5,7d2176161e884fd9323d7be3046425d4", - "SPT5_T0_REP1.FRiP_mqc.tsv:md5,750459b0b1af635dd8dada8a40a74543", + "SPT5_T0_REP2_peaks.gappedPeak:md5,0d3af85e7bbfbc5466b31ef5b9024b0b", + "SPT5_T0_REP2_peaks.xls:md5,e90dbef17d6e11fb8ce9dcd96b9ca295", + "SPT5_T15_REP1_peaks.broadPeak:md5,1032063d2c5f446d37f4b5b0ceb7d23c", + "SPT5_T15_REP1_peaks.gappedPeak:md5,7f18ecffb41df5fe01368ebbc0739b63", + "SPT5_T15_REP1_peaks.xls:md5,7878dd7172f259f62fb5fcd0078b5b18", + "SPT5_T15_REP2_peaks.broadPeak:md5,f4c23f9980599a7284946d405edbd42d", + "SPT5_T15_REP2_peaks.gappedPeak:md5,ea2d293dcfc22bbae738ffb31789865e", + "SPT5_T15_REP2_peaks.xls:md5,f435c26383a6999b6701453622c88cd5", + "SPT5_T0_REP1.FRiP_mqc.tsv:md5,2716cc752dbb14692a72c7d25ea96523", "SPT5_T0_REP1.peak_count_mqc.tsv:md5,e65fa814da290aa296b58e00a50c9312", "SPT5_T0_REP2.FRiP_mqc.tsv:md5,5d078120aa1b17e372f5de5359230018", "SPT5_T0_REP2.peak_count_mqc.tsv:md5,99895c132942ac3813f9bd36f6e4dde2", "SPT5_T15_REP1.FRiP_mqc.tsv:md5,df7d3681bfd13b7eb553c41ee8e0f3cf", "SPT5_T15_REP1.peak_count_mqc.tsv:md5,f8ced44d005a1e3ece1afc15679f0bde", - "SPT5_T15_REP2.FRiP_mqc.tsv:md5,3755b3f252e26d54af798a2793b415e5", + "SPT5_T15_REP2.FRiP_mqc.tsv:md5,4c69023919e61530ec9670f5243c9f69", "SPT5_T15_REP2.peak_count_mqc.tsv:md5,9bd63147b11a3502c709c6cf6a034d89", "SPT5_INPUT_REP1.mLb.clN.sorted.bam.flagstat:md5,f697eae4421b77f0c98467563e12a7aa", "SPT5_INPUT_REP1.mLb.clN.sorted.bam.idxstats:md5,5aa769ef078f2da2c3891d77bf1398a1", - "SPT5_INPUT_REP1.mLb.clN.sorted.bam.stats:md5,97da194b4647a6c730333021f0fff1d3", "SPT5_INPUT_REP2.mLb.clN.sorted.bam.flagstat:md5,4011eb87948fd763dbeb9c239a040d35", "SPT5_INPUT_REP2.mLb.clN.sorted.bam.idxstats:md5,d4c3b764672c816b04e4e9c3280f3084", - "SPT5_INPUT_REP2.mLb.clN.sorted.bam.stats:md5,03736b8dc2342f48b20ef3dc8df16881", - "SPT5_T0_REP1.mLb.clN.sorted.bam.flagstat:md5,db26beae134046e82c9592c8fdfb9429", - "SPT5_T0_REP1.mLb.clN.sorted.bam.idxstats:md5,d5a96cea11aeff6db1b27097d46d9a63", - "SPT5_T0_REP1.mLb.clN.sorted.bam.stats:md5,0c7fa4adaa04dc755173708edb68482d", + "SPT5_T0_REP1.mLb.clN.sorted.bam.flagstat:md5,4963bec61844874ee582de6ffb1de3db", + "SPT5_T0_REP1.mLb.clN.sorted.bam.idxstats:md5,ed9564b379671bf1a8ca192277da210e", "SPT5_T0_REP2.mLb.clN.sorted.bam.flagstat:md5,893e8291999322c789d85aefb8b0cfa7", "SPT5_T0_REP2.mLb.clN.sorted.bam.idxstats:md5,c5f613c58e4ed7717b7350cbd27bd6dc", - "SPT5_T0_REP2.mLb.clN.sorted.bam.stats:md5,3f2c333a818b3f3a91ea16fe02e65dc8", "SPT5_T15_REP1.mLb.clN.sorted.bam.flagstat:md5,1a585d233af6d14ae233391ddf0e5ce1", - "SPT5_T15_REP1.mLb.clN.sorted.bam.idxstats:md5,9ecc636c2c9431b8ebfa02eb7fb7c406", - "SPT5_T15_REP1.mLb.clN.sorted.bam.stats:md5,7e2754605111d20a5ec4e3a9dab2cd32", - "SPT5_T15_REP2.mLb.clN.sorted.bam.flagstat:md5,4f11313a4acb305eb03274e04341138a", - "SPT5_T15_REP2.mLb.clN.sorted.bam.idxstats:md5,e09ea5ac8eae18f04dd6e32df5d529e0", - "SPT5_T15_REP2.mLb.clN.sorted.bam.stats:md5,695ca97e4e9629474e4ed61c5e051d83", + "SPT5_T15_REP1.mLb.clN.sorted.bam.idxstats:md5,9be87f81da2b2f21d3750aaf31eee8b7", + "SPT5_T15_REP2.mLb.clN.sorted.bam.flagstat:md5,0f28a70d15ed2500bd27e857a0027a4c", + "SPT5_T15_REP2.mLb.clN.sorted.bam.idxstats:md5,53730b0be4c786651b2c59cc0c1de186", "genome.fa:md5,4bad9f4b18056156a81f7f952abbe125", - "genome.fa.fai:md5,6f4c0ce5258e6948135ad006e1f9ee1b", - "genome.fa.sizes:md5,e122f8021a5ef14104c32785cb9b7adc", "cutadapt_filtered_reads_plot.yaml:md5,976fdb8049d847c977195863418e3655", - "cutadapt_trimmed_sequences_plot_3_Counts.yaml:md5,14b35027cce2eba80181265e04f6f489", - "cutadapt_trimmed_sequences_plot_3_Obs_Exp.yaml:md5,98410382bb4083d3215a24f0f27b21dd", - "fastqc-1-status-check-heatmap.yaml:md5,8876a09ccb279f76e1b516506cc19157", - "fastqc-1_per_base_n_content_plot.yaml:md5,d6764dbc1915525bc18c74a27d1fa194", - "fastqc-1_per_base_sequence_quality_plot.yaml:md5,0dd7d8a364d42063440dc847e23eeda9", - "fastqc-1_per_sequence_gc_content_plot_Counts.yaml:md5,2cb304ef2551b4ce47126228769a152b", - "fastqc-1_per_sequence_gc_content_plot_Percentages.yaml:md5,9f835a07bebf743957983ed013a7eb3c", - "fastqc-1_per_sequence_quality_scores_plot.yaml:md5,e7e1e6edaae3140586aecc3b77c6e533", - "fastqc-1_sequence_counts_plot.yaml:md5,2b43b4cbebb560f669e317c6b8e946ae", - "fastqc-1_sequence_duplication_levels_plot.yaml:md5,02ef5110211a2848b6619e1adb4573ce", - "fastqc-1_top_overrepresented_sequences_table.yaml:md5,8a80554c91d9fca8acb82f023de02f11", + "cutadapt_trimmed_sequences_plot_3_Counts.yaml:md5,e6733f4ff773a27d0ab81564913b4b54", + "cutadapt_trimmed_sequences_plot_3_Obs_Exp.yaml:md5,9ffcfe37c02af14b8eddd4746066e56a", + "fastqc-1-status-check-heatmap.yaml:md5,6c6e1591b5ff248c85446f9728a3dad4", + "fastqc-1_adapter_content_plot.yaml:md5,d78273a7e4ff36434bb91246fef01523", + "fastqc-1_per_base_n_content_plot.yaml:md5,3625446964b669ccff279aba54510462", + "fastqc-1_per_base_sequence_quality_plot.yaml:md5,1fb4d35d6b94fc4f41d5be1304844b95", + "fastqc-1_per_sequence_gc_content_plot_Counts.yaml:md5,101f11f9cebcc626755f32322b27ebd3", + "fastqc-1_per_sequence_gc_content_plot_Percentages.yaml:md5,0055f4bbded45434618259f47fe5fe85", + "fastqc-1_per_sequence_quality_scores_plot.yaml:md5,eed2628303916e49143ccf37300fb5de", + "fastqc-1_sequence_counts_plot.yaml:md5,6ca3a8cf8d258777e29b8e8731157d90", + "fastqc-1_sequence_duplication_levels_plot.yaml:md5,3e3622b7dd80be1db92ac06df8e3d056", + "fastqc-1_top_overrepresented_sequences_table.yaml:md5,a333a02f5313876cf1713d7b0168d5f3", "fastqc-status-check-heatmap.yaml:md5,1e473e0f9140b718607d8c72cf3c0b45", "fastqc_adapter_content_plot.yaml:md5,591991daf3e3c49873f4a51a3710b072", "fastqc_per_base_n_content_plot.yaml:md5,c16a4af177b9ad9694a9535023906927", @@ -840,77 +819,77 @@ "fastqc_per_sequence_quality_scores_plot.yaml:md5,351b55974af5ee21294ebf5deb850d7c", "fastqc_sequence_counts_plot.yaml:md5,5522b2b42f0b3753dd359aad1565d7c2", "fastqc_sequence_duplication_levels_plot.yaml:md5,e883323380f2880c81ea36dc91ad8678", - "fastqc_sequence_length_distribution_plot.yaml:md5,f1d36d9bed4b85e0ae349b514ab788fc", + "fastqc_sequence_length_distribution_plot.yaml:md5,d57678f16381986766d56b631c838106", "fastqc_top_overrepresented_sequences_table.yaml:md5,443e161371f73cebf63c14f7a9f3580d", "multiqc_citations.yaml:md5,c4cdebc20cfc52eb2eee741a36323b3e", - "multiqc_cutadapt.yaml:md5,25f32008ccf0041ac74bb82d744d6eda", "multiqc_fastqc.yaml:md5,30fe6d1a5e5c04695dda81294b828ec9", - "multiqc_fastqc_1.yaml:md5,dd7981fa28827b895ef844011053eeff", - "multiqc_frip_score.yaml:md5,70f0eb1370581c57537cdd650fc7af92", - "multiqc_nsc_coefficient.yaml:md5,6befd2c9a2a88d80d84225b282de3857", + "multiqc_fastqc_1.yaml:md5,cd4a85c27c3cf85f1d0612afce793186", + "multiqc_frip_score.yaml:md5,a12e53352fb861b27e22fada20d4a352", + "multiqc_nsc_coefficient.yaml:md5,2f98bade263dddff526bc627bd956f94", "multiqc_peak_annotation.yaml:md5,807711a8de90b96350cdb704713f377c", "multiqc_peak_count.yaml:md5,9febb685e0995e635c0d34644aef1c22", - "multiqc_phantompeakqualtools.yaml:md5,8b98fb4f8b51f22c6d688b0f69fa8af6", - "multiqc_picard-1_AlignmentSummaryMetrics.yaml:md5,4131380513ad07ea9d03bf07ee580b21", - "multiqc_picard-1_insertSize.yaml:md5,e0db1e0acb304b399940e0597f0b2fc7", - "multiqc_picard-1_quality_by_cycle.yaml:md5,04701f440eb72e4adfa5334472db84fc", - "multiqc_picard-1_quality_score_distribution.yaml:md5,c3891e6ac941eecca13a57383c909510", - "multiqc_picard_baseContent.yaml:md5,f696b1a8fa5d664c674812d78c08956d", - "multiqc_picard_dups.yaml:md5,3a2202c3af4eb47216a1343a2cf4bce9", - "multiqc_rsc_coefficient.yaml:md5,8461f0178d38bdb58cfad7dad7bfdb88", - "multiqc_samtools_flagstat.yaml:md5,2833155ed2487f9cb7829f8264fed339", - "multiqc_samtools_flagstat_1.yaml:md5,e0deba4fd1bb7f802549e95fba444cdc", - "multiqc_samtools_flagstat_2.yaml:md5,18245e4474861a2f45f54ca9afa8828a", - "multiqc_samtools_idxstats.yaml:md5,86f0b32ebd9494aea700d24b78f4785f", - "multiqc_samtools_idxstats_1.yaml:md5,2a83a1a9f1a66e90b9f73181a5a196c6", - "multiqc_samtools_idxstats_2.yaml:md5,e9cd19da34eac4fd2c9196fc303da4e2", - "multiqc_samtools_stats.yaml:md5,c75c982cdca8a83186d345bf66b365e0", - "multiqc_samtools_stats_1.yaml:md5,33531055d31307925f94f5e6460463fc", - "multiqc_samtools_stats_2.yaml:md5,e538f9993283ee9f2a056f279d3a8dca", - "multiqc_strand_shift_correlation.yaml:md5,9a9a859ce75534a8074811ee1ca80f71", - "picard-1_alignment_readlength_plot.yaml:md5,fc25da4e9daefd74134d960adde48951", - "picard-1_alignment_summary_Aligned_Bases.yaml:md5,c174cd7cabe80cedf2c6e11b0091b7cb", - "picard-1_alignment_summary_Aligned_Reads.yaml:md5,afc30230b330fd55b13de82100976be6", + "multiqc_phantompeakqualtools.yaml:md5,e9b072da0ce783d5b7ec217d83a15987", + "multiqc_picard-1_AlignmentSummaryMetrics.yaml:md5,3127f1885c9d22281d5e853478833a70", + "multiqc_picard-1_insertSize.yaml:md5,43486e24b88a3712442e891968bd2ce0", + "multiqc_picard-1_quality_by_cycle.yaml:md5,e3132d7e118d112e819c781db8b68f23", + "multiqc_picard-1_quality_score_distribution.yaml:md5,ae43cc721ebb096df6dc36c2b077c288", + "multiqc_picard_baseContent.yaml:md5,01c7596a92f3884c4972c987745c96ec", + "multiqc_picard_dups.yaml:md5,9bf99a105d35807fc4645086d72998e0", + "multiqc_rsc_coefficient.yaml:md5,e5c7d53b2b9b12bb55690838915820ae", + "multiqc_samtools_flagstat.yaml:md5,f1f82442834faeea1e3393b91faa3f38", + "multiqc_samtools_flagstat_1.yaml:md5,7ae591bb360acba0858ccc9177245a44", + "multiqc_samtools_flagstat_2.yaml:md5,89c5fd1d7975ad6bfe9dbbeefcaa2a4b", + "multiqc_samtools_idxstats.yaml:md5,48c253ff301403f97b6973603784b25a", + "multiqc_samtools_idxstats_1.yaml:md5,684841cb92622bdd9aebfcc6e08aa03f", + "multiqc_samtools_idxstats_2.yaml:md5,f81be62ac233142a9923a8d724c99802", + "multiqc_samtools_stats.yaml:md5,533bfee2bf752b47276e14a3b108f1b2", + "multiqc_samtools_stats_1.yaml:md5,ff3a9d5854cf0471c96fa52ec3579066", + "multiqc_samtools_stats_2.yaml:md5,be2d5080821f867bf05b87a84c83b864", + "picard-1_alignment_readlength_plot.yaml:md5,3edd8c54cbfad9c32847a94ba80008e3", + "picard-1_alignment_summary_Aligned_Bases.yaml:md5,9477ebe92f7bf9a1b667aff6f9efe845", + "picard-1_alignment_summary_Aligned_Reads.yaml:md5,9d19a860ec8c799d7b229b47c76d383c", "picard-1_histogram.yaml:md5,8a80554c91d9fca8acb82f023de02f11", - "picard-1_histogram_1.yaml:md5,04701f440eb72e4adfa5334472db84fc", - "picard-1_histogram_2.yaml:md5,c3891e6ac941eecca13a57383c909510", - "picard-1_insert_size_Counts.yaml:md5,95be371f6c22ce55e0f6915a1e45fb43", - "picard-1_insert_size_Percentages.yaml:md5,9e7b10d0267a86a55938108c20dbbe93", - "picard-1_quality_by_cycle.yaml:md5,bebc4523218048e1d1957cd70397bb61", - "picard-1_quality_score_distribution.yaml:md5,e80f658b3eb4c4737c774b0060941bfc", - "picard_base_distribution_by_cycle__Adenine.yaml:md5,8d020ac49d29295b49a11dd53ba453aa", - "picard_base_distribution_by_cycle__Cytosine.yaml:md5,26f8572c29758c423562abdaa03b7a34", - "picard_base_distribution_by_cycle__Guanine.yaml:md5,58aea7e2c0eed31250b5f86a1188d737", - "picard_base_distribution_by_cycle__Thymine.yaml:md5,1a4b97ac690abe12d5513d0d3a40cc11", - "picard_base_distribution_by_cycle__Undetermined.yaml:md5,4c2feab0a1a94826c53fabe7a3274dda", - "picard_deduplication.yaml:md5,c5e459b5774f23a7b0e398e5cb86bd56", + "picard-1_histogram_1.yaml:md5,e3132d7e118d112e819c781db8b68f23", + "picard-1_histogram_2.yaml:md5,ae43cc721ebb096df6dc36c2b077c288", + "picard-1_insert_size_Counts.yaml:md5,653f4829a5e9a98bbb21b2fba99ad672", + "picard-1_insert_size_Percentages.yaml:md5,364de79ac1c04ba383d66b7a1d71541d", + "picard-1_quality_by_cycle.yaml:md5,04479bcef32a5ea65ce55f6772373c60", + "picard-1_quality_score_distribution.yaml:md5,6bdb95104cc7ea521d2db72896da9272", + "picard_base_distribution_by_cycle__Adenine.yaml:md5,1452490858309fc8dd9f308045790a8b", + "picard_base_distribution_by_cycle__Cytosine.yaml:md5,a88f7594290117503637336e33629751", + "picard_base_distribution_by_cycle__Guanine.yaml:md5,b0f4ecff965c1da1eda2dfa80b0723f7", + "picard_base_distribution_by_cycle__Thymine.yaml:md5,bff14a87ef525cce731dbe42bf463ea8", + "picard_base_distribution_by_cycle__Undetermined.yaml:md5,7772113ed25a6d2951a4e6100c30932b", + "picard_deduplication.yaml:md5,c5d69579294e7592e5e28277e01c278e", "picard_histogram.yaml:md5,8a80554c91d9fca8acb82f023de02f11", "picard_histogram_1.yaml:md5,8a80554c91d9fca8acb82f023de02f11", "picard_histogram_2.yaml:md5,8a80554c91d9fca8acb82f023de02f11", - "samtools-flagstat-dp_Percentage_of_total-1.yaml:md5,823114a992da2bab04eb4edd903746d8", - "samtools-flagstat-dp_Percentage_of_total-2.yaml:md5,a97c37a9d95494fe0d02d6e16e6057a6", - "samtools-flagstat-dp_Percentage_of_total.yaml:md5,9c2b32dc86d09eeb870c8fb63d46f9e5", - "samtools-flagstat-dp_Read_counts-1.yaml:md5,d5dfeebe9bff8dd3fcdfdbf32adb106b", - "samtools-flagstat-dp_Read_counts-2.yaml:md5,c3cbc20287333e65b0053c0c644d81f3", - "samtools-flagstat-dp_Read_counts.yaml:md5,265762d51681a3cc1ad8aeb85c71a4e0", - "samtools-idxstats-mapped-reads-plot_Normalised_Counts-1.yaml:md5,8837b9900307d0e626f08864e5bdf2cd", - "samtools-idxstats-mapped-reads-plot_Normalised_Counts-2.yaml:md5,969627a72da77f241fcca5c19547f6cb", - "samtools-idxstats-mapped-reads-plot_Normalised_Counts.yaml:md5,55e93fb7b4a86e11fbc2cc0381f4cec3", - "samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts-1.yaml:md5,1b97bc9b6f2d353285aa0f873a433754", - "samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts-2.yaml:md5,be4649e0e75abcf2d3f8b7cdfce34506", - "samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts.yaml:md5,63ed0a2b79eb80512305f288c837054d", - "samtools-idxstats-mapped-reads-plot_Raw_Counts-1.yaml:md5,ec7d25c50ae159832a8ce0cb8630a03d", - "samtools-idxstats-mapped-reads-plot_Raw_Counts-2.yaml:md5,12259c95d8a4038e99ccdaf583695592", - "samtools-idxstats-mapped-reads-plot_Raw_Counts.yaml:md5,5e3a88d956ac7dcc1b7a6d5ae3f3b814", - "samtools-stats-dp.yaml:md5,25a63e73197b0fb5a9c3663698b08589", - "samtools_alignment_plot.yaml:md5,f05cae90c4fb4ff66c4e92eaabd2caf2", - "samplesheet.valid.csv:md5,276425084544b3baf533e2f17207a384" + "samtools-flagstat-dp_Percentage_of_total-1.yaml:md5,09bb5ef391631b8845e3f3fe212f8048", + "samtools-flagstat-dp_Percentage_of_total-2.yaml:md5,96d661539b95863c30e181e5b64e46ca", + "samtools-flagstat-dp_Percentage_of_total.yaml:md5,cc9d1b338f526d4bab4bfa867c5dcd21", + "samtools-flagstat-dp_Read_counts-1.yaml:md5,ca690a967e8e0f699d27f38e864e2fce", + "samtools-flagstat-dp_Read_counts-2.yaml:md5,46debe080c753b6ba45501ea268e5d95", + "samtools-flagstat-dp_Read_counts.yaml:md5,2a3cbb23287d2123c29cfa1a3454a72a", + "samtools-idxstats-mapped-reads-plot_Normalised_Counts-1.yaml:md5,ac2602eede7202f9c0348760eb0b8bb6", + "samtools-idxstats-mapped-reads-plot_Normalised_Counts-2.yaml:md5,b1fe44cbd1cda8d4727a232c8c8bd513", + "samtools-idxstats-mapped-reads-plot_Normalised_Counts.yaml:md5,ac1c7fc1c35a6719c962993d9bf5471e", + "samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts-1.yaml:md5,80c5b4f9cc0400799be48ef05aa6c410", + "samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts-2.yaml:md5,62d984dcdceba150863dd1e72c93f245", + "samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts.yaml:md5,989f82110113d8855a3f0cfa996cbdc6", + "samtools-idxstats-mapped-reads-plot_Raw_Counts-1.yaml:md5,94ddd17f7b9d15e547be9294e872e193", + "samtools-idxstats-mapped-reads-plot_Raw_Counts-2.yaml:md5,b8204d3b4480d3e9eec09d1289e52637", + "samtools-idxstats-mapped-reads-plot_Raw_Counts.yaml:md5,c944d25812a73c4ce9de9834943e6732", + "samtools-stats-dp.yaml:md5,ba5ad95c00d0bcef0d7aa32f941a813d", + "samtools_alignment_plot.yaml:md5,c1b5b60c3c83928275df7f720c5b1697", + "samplesheet.valid.csv:md5,276425084544b3baf533e2f17207a384", + "genome.fa.fai:md5,6f4c0ce5258e6948135ad006e1f9ee1b", + "genome.fa.sizes:md5,e122f8021a5ef14104c32785cb9b7adc" ] ], + "timestamp": "2026-03-18T20:48:13.334633", "meta": { - "nf-test": "0.9.2", - "nextflow": "25.04.3" - }, - "timestamp": "2025-09-17T11:32:05.17980739" + "nf-test": "0.9.4", + "nextflow": "25.04.0" + } } -} +} \ No newline at end of file diff --git a/tests/skip_trimming.nf.test.snap b/tests/skip_trimming.nf.test.snap index b7704fdcf..2a1418ff3 100644 --- a/tests/skip_trimming.nf.test.snap +++ b/tests/skip_trimming.nf.test.snap @@ -3,115 +3,90 @@ "content": [ 209, { - "ANNOTATE_BOOLEAN_PEAKS": { - "sed": 4.7 - }, "BAMTOOLS_FILTER": { - "bamtools": "2.5.2", - "samtools": "1.15.1" + "bamtools": "2.5.3", + "samtools": 1.23 }, "BAM_REMOVE_ORPHANS": { - "samtools": "1.15.1" + "samtools": 1.23 }, "BEDTOOLS_GENOMECOV": { "bedtools": "2.31.1" }, "BWA_INDEX": { - "bwa": "0.7.18-r1243-dirty" + "bwa": "0.7.19-r1273" }, "BWA_MEM": { - "bwa": "0.7.18-r1243-dirty", - "samtools": 1.2 - }, - "CUSTOM_GETCHROMSIZES": { - "getchromsizes": 1.2 + "bwa": "0.7.19-r1273", + "samtools": "1.22.1" }, "DEEPTOOLS_COMPUTEMATRIX": { - "deeptools": "3.5.5" + "deeptools": "3.5.6" }, "DEEPTOOLS_PLOTFINGERPRINT": { - "deeptools": "3.5.5" + "deeptools": "3.5.6" }, "DEEPTOOLS_PLOTHEATMAP": { - "deeptools": "3.5.5" + "deeptools": "3.5.6" }, "DEEPTOOLS_PLOTPROFILE": { - "deeptools": "3.5.5" - }, - "DESEQ2_QC": { - "bioconductor-deseq2": "1.28.0", - "r-base": "4.0.3" + "deeptools": "3.5.6" }, "FASTQC": { "fastqc": "0.12.1" }, "FRIP_SCORE": { - "bedtools": "2.30.0", - "samtools": "1.15.1" + "bedtools": "2.31.1", + "samtools": 1.23 }, "GENOME_BLACKLIST_REGIONS": { - "bedtools": "2.30.0" - }, - "GTF2BED": { - "perl": "5.26.2" - }, - "HOMER_ANNOTATEPEAKS": { - "homer": 4.11 - }, - "IGV": { - "python": "3.8.3" + "bedtools": "2.31.1" }, "MACS3_CALLPEAK": { - "macs3": "3.0.1" + "macs3": "3.0.4" }, "MACS3_CONSENSUS": { - "python": "3.10.0", - "r-base": "4.1.1" - }, - "MULTIQC_CUSTOM_PEAKS": { - "sed": 4.7 - }, - "PHANTOMPEAKQUALTOOLS": { - "phantompeakqualtools": "1.2.2" + "R": "4.1.3", + "python": "3.14.0" }, "PICARD_COLLECTMULTIPLEMETRICS": { - "picard": "3.2.0-1-g3948afb6b" + "picard": "3.4.0" }, "PICARD_MARKDUPLICATES": { - "picard": "3.2.0-1-g3948afb6b" + "picard": "3.4.0" }, "PICARD_MERGESAMFILES": { - "picard": "3.2.0-1-g3948afb6b" + "picard": "3.4.0" }, "PLOT_HOMER_ANNOTATEPEAKS": { - "r-base": "4.0.3" + "R": "4.5.3" }, "PLOT_MACS3_QC": { - "r-base": "4.0.3" + "R": "4.5.3" }, - "SAMPLESHEET_CHECK": { - "python": "3.8.3" + "SAMTOOLS_FAIDX": { + "samtools": "1.22.1" }, "SAMTOOLS_FLAGSTAT": { "samtools": "1.22.1" }, "SAMTOOLS_IDXSTATS": { - "samtools": 1.2 + "samtools": "1.22.1" }, "SAMTOOLS_INDEX": { - "samtools": 1.2 + "samtools": "1.22.1" }, "SAMTOOLS_SORT": { - "samtools": 1.2 + "samtools": "1.22.1" }, "SAMTOOLS_STATS": { - "samtools": 1.2 + "samtools": "1.22.1" }, "SUBREAD_FEATURECOUNTS": { - "subread": "2.0.1" + "subread": "2.1.1" }, "UCSC_BEDGRAPHTOBIGWIG": { - "ucsc": 445 + "ucsc": 482 }, "Workflow": { "nf-core/chipseq": "v2.2.0dev" @@ -223,8 +198,8 @@ "bwa/merged_library/macs3/broad_peak/consensus/SPT5/SPT5.consensus_peaks.boolean.intersect.plot.pdf", "bwa/merged_library/macs3/broad_peak/consensus/SPT5/SPT5.consensus_peaks.boolean.intersect.txt", "bwa/merged_library/macs3/broad_peak/consensus/SPT5/SPT5.consensus_peaks.boolean.txt", - "bwa/merged_library/macs3/broad_peak/consensus/SPT5/SPT5.consensus_peaks.featureCounts.txt", - "bwa/merged_library/macs3/broad_peak/consensus/SPT5/SPT5.consensus_peaks.featureCounts.txt.summary", + "bwa/merged_library/macs3/broad_peak/consensus/SPT5/SPT5.consensus_peaks.featureCounts.tsv", + "bwa/merged_library/macs3/broad_peak/consensus/SPT5/SPT5.consensus_peaks.featureCounts.tsv.summary", "bwa/merged_library/macs3/broad_peak/consensus/SPT5/SPT5.consensus_peaks.saf", "bwa/merged_library/macs3/broad_peak/consensus/SPT5/deseq2", "bwa/merged_library/macs3/broad_peak/consensus/SPT5/deseq2/R_sessionInfo.log", @@ -292,37 +267,37 @@ "bwa/merged_library/picard_metrics/SPT5_INPUT_REP1.mLb.clN.sorted.CollectMultipleMetrics.insert_size_metrics", "bwa/merged_library/picard_metrics/SPT5_INPUT_REP1.mLb.clN.sorted.CollectMultipleMetrics.quality_by_cycle_metrics", "bwa/merged_library/picard_metrics/SPT5_INPUT_REP1.mLb.clN.sorted.CollectMultipleMetrics.quality_distribution_metrics", - "bwa/merged_library/picard_metrics/SPT5_INPUT_REP1.mLb.mkD.sorted.MarkDuplicates.metrics.txt", + "bwa/merged_library/picard_metrics/SPT5_INPUT_REP1.mLb.mkD.sorted.metrics.txt", "bwa/merged_library/picard_metrics/SPT5_INPUT_REP2.mLb.clN.sorted.CollectMultipleMetrics.alignment_summary_metrics", "bwa/merged_library/picard_metrics/SPT5_INPUT_REP2.mLb.clN.sorted.CollectMultipleMetrics.base_distribution_by_cycle_metrics", "bwa/merged_library/picard_metrics/SPT5_INPUT_REP2.mLb.clN.sorted.CollectMultipleMetrics.insert_size_metrics", "bwa/merged_library/picard_metrics/SPT5_INPUT_REP2.mLb.clN.sorted.CollectMultipleMetrics.quality_by_cycle_metrics", "bwa/merged_library/picard_metrics/SPT5_INPUT_REP2.mLb.clN.sorted.CollectMultipleMetrics.quality_distribution_metrics", - "bwa/merged_library/picard_metrics/SPT5_INPUT_REP2.mLb.mkD.sorted.MarkDuplicates.metrics.txt", + "bwa/merged_library/picard_metrics/SPT5_INPUT_REP2.mLb.mkD.sorted.metrics.txt", "bwa/merged_library/picard_metrics/SPT5_T0_REP1.mLb.clN.sorted.CollectMultipleMetrics.alignment_summary_metrics", "bwa/merged_library/picard_metrics/SPT5_T0_REP1.mLb.clN.sorted.CollectMultipleMetrics.base_distribution_by_cycle_metrics", "bwa/merged_library/picard_metrics/SPT5_T0_REP1.mLb.clN.sorted.CollectMultipleMetrics.insert_size_metrics", "bwa/merged_library/picard_metrics/SPT5_T0_REP1.mLb.clN.sorted.CollectMultipleMetrics.quality_by_cycle_metrics", "bwa/merged_library/picard_metrics/SPT5_T0_REP1.mLb.clN.sorted.CollectMultipleMetrics.quality_distribution_metrics", - "bwa/merged_library/picard_metrics/SPT5_T0_REP1.mLb.mkD.sorted.MarkDuplicates.metrics.txt", + "bwa/merged_library/picard_metrics/SPT5_T0_REP1.mLb.mkD.sorted.metrics.txt", "bwa/merged_library/picard_metrics/SPT5_T0_REP2.mLb.clN.sorted.CollectMultipleMetrics.alignment_summary_metrics", "bwa/merged_library/picard_metrics/SPT5_T0_REP2.mLb.clN.sorted.CollectMultipleMetrics.base_distribution_by_cycle_metrics", "bwa/merged_library/picard_metrics/SPT5_T0_REP2.mLb.clN.sorted.CollectMultipleMetrics.insert_size_metrics", "bwa/merged_library/picard_metrics/SPT5_T0_REP2.mLb.clN.sorted.CollectMultipleMetrics.quality_by_cycle_metrics", "bwa/merged_library/picard_metrics/SPT5_T0_REP2.mLb.clN.sorted.CollectMultipleMetrics.quality_distribution_metrics", - "bwa/merged_library/picard_metrics/SPT5_T0_REP2.mLb.mkD.sorted.MarkDuplicates.metrics.txt", + "bwa/merged_library/picard_metrics/SPT5_T0_REP2.mLb.mkD.sorted.metrics.txt", "bwa/merged_library/picard_metrics/SPT5_T15_REP1.mLb.clN.sorted.CollectMultipleMetrics.alignment_summary_metrics", "bwa/merged_library/picard_metrics/SPT5_T15_REP1.mLb.clN.sorted.CollectMultipleMetrics.base_distribution_by_cycle_metrics", "bwa/merged_library/picard_metrics/SPT5_T15_REP1.mLb.clN.sorted.CollectMultipleMetrics.insert_size_metrics", "bwa/merged_library/picard_metrics/SPT5_T15_REP1.mLb.clN.sorted.CollectMultipleMetrics.quality_by_cycle_metrics", "bwa/merged_library/picard_metrics/SPT5_T15_REP1.mLb.clN.sorted.CollectMultipleMetrics.quality_distribution_metrics", - "bwa/merged_library/picard_metrics/SPT5_T15_REP1.mLb.mkD.sorted.MarkDuplicates.metrics.txt", + "bwa/merged_library/picard_metrics/SPT5_T15_REP1.mLb.mkD.sorted.metrics.txt", "bwa/merged_library/picard_metrics/SPT5_T15_REP2.mLb.clN.sorted.CollectMultipleMetrics.alignment_summary_metrics", "bwa/merged_library/picard_metrics/SPT5_T15_REP2.mLb.clN.sorted.CollectMultipleMetrics.base_distribution_by_cycle_metrics", "bwa/merged_library/picard_metrics/SPT5_T15_REP2.mLb.clN.sorted.CollectMultipleMetrics.insert_size_metrics", "bwa/merged_library/picard_metrics/SPT5_T15_REP2.mLb.clN.sorted.CollectMultipleMetrics.quality_by_cycle_metrics", "bwa/merged_library/picard_metrics/SPT5_T15_REP2.mLb.clN.sorted.CollectMultipleMetrics.quality_distribution_metrics", - "bwa/merged_library/picard_metrics/SPT5_T15_REP2.mLb.mkD.sorted.MarkDuplicates.metrics.txt", + "bwa/merged_library/picard_metrics/SPT5_T15_REP2.mLb.mkD.sorted.metrics.txt", "bwa/merged_library/picard_metrics/pdf", "bwa/merged_library/picard_metrics/pdf/SPT5_INPUT_REP1.mLb.clN.sorted.CollectMultipleMetrics.base_distribution_by_cycle.pdf", "bwa/merged_library/picard_metrics/pdf/SPT5_INPUT_REP1.mLb.clN.sorted.CollectMultipleMetrics.insert_size_histogram.pdf", @@ -401,8 +376,6 @@ "fastqc/zips/SPT5_T15_REP2_T1_2_fastqc.zip", "genome", "genome/genome.fa", - "genome/genome.fa.fai", - "genome/genome.fa.sizes", "igv", "igv/broad_peak", "igv/broad_peak/igv_files.txt", @@ -712,7 +685,10 @@ "multiqc/broad_peak/multiqc_report.html", "pipeline_info", "pipeline_info/nf_core_chipseq_software_mqc_versions.yml", - "pipeline_info/samplesheet.valid.csv" + "pipeline_info/samplesheet.valid.csv", + "samtools", + "samtools/genome.fa.fai", + "samtools/genome.fa.sizes" ], [ "SPT5_INPUT_REP1.mLB.clN.bedGraph:md5,cd382620d1d0b392cc476acb3ee5b64c", @@ -722,27 +698,27 @@ "SPT5_T15_REP1.mLB.clN.bedGraph:md5,53acbef45032a4c58766c9d220e1a761", "SPT5_T15_REP2.mLB.clN.bedGraph:md5,d2fbf8ad95d452e738f36081d51e4d22", "SPT5_T0_REP1_peaks.broadPeak:md5,ddf2e346dd0b80bd433c09312d31cb51", - "SPT5_T0_REP1_peaks.gappedPeak:md5,8369af877d77ad749cc436da6be1f681", - "SPT5_T0_REP1_peaks.xls:md5,a472d7386b44247005ccafb042dfb707", + "SPT5_T0_REP1_peaks.gappedPeak:md5,38996ca713aeb8069165e347e69bed89", + "SPT5_T0_REP1_peaks.xls:md5,d68f4b095c466fccb5c65c8807f142a2", "SPT5_T0_REP2_peaks.broadPeak:md5,f0cfc61afe6532be3a2e8aa58b219475", - "SPT5_T0_REP2_peaks.gappedPeak:md5,dad460c1b9b502fb6e9ab82f7c6224de", - "SPT5_T0_REP2_peaks.xls:md5,84ab1f2163ce19a0fabfa2ca9d0b4b27", + "SPT5_T0_REP2_peaks.gappedPeak:md5,662544b3eb0698cdac55f5c6de64effa", + "SPT5_T0_REP2_peaks.xls:md5,0ff7b06ab6705611c8529106074df58f", "SPT5_T15_REP1_peaks.broadPeak:md5,c69998af961be40bbfd05de7f64d6082", - "SPT5_T15_REP1_peaks.gappedPeak:md5,eb64f4c0b278e290cb30c093f15c6b72", - "SPT5_T15_REP1_peaks.xls:md5,86a27c070283b7b7d514a350e81349cf", + "SPT5_T15_REP1_peaks.gappedPeak:md5,e4743ad8009585d58775152973a4f4b5", + "SPT5_T15_REP1_peaks.xls:md5,1349a66a5b5ccd00f9cb06dab6cef163", "SPT5_T15_REP2_peaks.broadPeak:md5,0d78fad01d7bd0a5afefac4596f30e5d", - "SPT5_T15_REP2_peaks.gappedPeak:md5,171d3010b424e1677cc0e7517fb81648", - "SPT5_T15_REP2_peaks.xls:md5,be9851f9a602c7cceb465050a3296c19", + "SPT5_T15_REP2_peaks.gappedPeak:md5,a608b84a516b2ef6397b9cd4510b8a35", + "SPT5_T15_REP2_peaks.xls:md5,52ba1d0c0eece3b31ae4201641863726", "SPT5.consensus_peaks.antibody.txt:md5,8d7549b0cb2e42ffd5c23879e7f54ce9", "SPT5.consensus_peaks.bed:md5,9b34dc3d8947445141d5ca5b0eb89783", "SPT5.consensus_peaks.boolean.intersect.txt:md5,7116f13c4c424ada6c835332dc3f2c2a", "SPT5.consensus_peaks.boolean.txt:md5,286afd8100d04bcc4ba1dbbb29860379", "SPT5.consensus_peaks.saf:md5,cddc94704ec90a98277b8b3806f2d430", "R_sessionInfo.log:md5,fb0da0d7ad6994ed66a8e68348b19676", - "SPT5_T0_REP1.txt:md5,f837aac25ac546c99cfd692d64a52b2c", - "SPT5_T0_REP2.txt:md5,9308f0c488ce36acdc0cd8582f70a7c9", - "SPT5_T15_REP1.txt:md5,6bb17b0b3e24a7474ad4d4a2ded7bed9", - "SPT5_T15_REP2.txt:md5,a5a895e740fa7921e2538a03b4a11dd1", + "SPT5_T0_REP1.txt:md5,d7b5bac4252723ebfb8787f5a98b18c4", + "SPT5_T0_REP2.txt:md5,0d932c00e2d41c4207a1bab45ae56783", + "SPT5_T15_REP1.txt:md5,3be69b511ebea43ed5ebf6e9a6db0eb9", + "SPT5_T15_REP2.txt:md5,6832d403e27cbb8d3846fd44a6afa9a9", "SPT5_T0_REP1.FRiP_mqc.tsv:md5,71ba5302aa382467cc8e20b6e784da1f", "SPT5_T0_REP1.peak_count_mqc.tsv:md5,4c8c808f8256c29b3ab505b0dd6230e4", "SPT5_T0_REP2.FRiP_mqc.tsv:md5,ee04cae92b9a376290bc9206e82cfa3e", @@ -753,25 +729,17 @@ "SPT5_T15_REP2.peak_count_mqc.tsv:md5,d79e410476850feb03c3c7c6742f59e0", "SPT5_INPUT_REP1.mLb.clN.sorted.bam.flagstat:md5,b72640ccdf91428002029db2c63c1b6f", "SPT5_INPUT_REP1.mLb.clN.sorted.bam.idxstats:md5,ad58d8f8538233584fd3696b3564e0c9", - "SPT5_INPUT_REP1.mLb.clN.sorted.bam.stats:md5,9222fb8d6745ea71276bf89bb7a4d0c8", "SPT5_INPUT_REP2.mLb.clN.sorted.bam.flagstat:md5,033709b3864b52884c8634bd7cc1bece", "SPT5_INPUT_REP2.mLb.clN.sorted.bam.idxstats:md5,7eaa74b59bf44b7d7cdea4410e6ec108", - "SPT5_INPUT_REP2.mLb.clN.sorted.bam.stats:md5,484b802c0a7c7a12a1080a90c9335c7c", "SPT5_T0_REP1.mLb.clN.sorted.bam.flagstat:md5,17d2b9b48e2cdcb1bf8f6d2cf6534a79", "SPT5_T0_REP1.mLb.clN.sorted.bam.idxstats:md5,34dff36730a3d7b9859ceec4a1839629", - "SPT5_T0_REP1.mLb.clN.sorted.bam.stats:md5,e0bb8689562200eb4b482209aa7c1869", "SPT5_T0_REP2.mLb.clN.sorted.bam.flagstat:md5,9446a8b788af24c6b58cd199830a960c", "SPT5_T0_REP2.mLb.clN.sorted.bam.idxstats:md5,3ea2de03ecc1e9a7d40e0745209df4f6", - "SPT5_T0_REP2.mLb.clN.sorted.bam.stats:md5,018d6c1a44be2ce2fb13f9ec9991bf9b", "SPT5_T15_REP1.mLb.clN.sorted.bam.flagstat:md5,8cdd16d3ba56563bd5aa6948fd75681f", "SPT5_T15_REP1.mLb.clN.sorted.bam.idxstats:md5,01b871e313ba91da05273cf4c2009f8b", - "SPT5_T15_REP1.mLb.clN.sorted.bam.stats:md5,db8a9d94a90956153c2f401e22d0ef54", "SPT5_T15_REP2.mLb.clN.sorted.bam.flagstat:md5,19db2ca7bb1d78ab6dfe446667844f50", "SPT5_T15_REP2.mLb.clN.sorted.bam.idxstats:md5,32990e1b7bc7d52fc68f60b5e766c596", - "SPT5_T15_REP2.mLb.clN.sorted.bam.stats:md5,b82c7fc2ac638d865e7906e8eec41346", "genome.fa:md5,4bad9f4b18056156a81f7f952abbe125", - "genome.fa.fai:md5,6f4c0ce5258e6948135ad006e1f9ee1b", - "genome.fa.sizes:md5,e122f8021a5ef14104c32785cb9b7adc", "fastqc-status-check-heatmap.yaml:md5,1e473e0f9140b718607d8c72cf3c0b45", "fastqc_adapter_content_plot.yaml:md5,591991daf3e3c49873f4a51a3710b072", "fastqc_per_base_n_content_plot.yaml:md5,c16a4af177b9ad9694a9535023906927", @@ -782,10 +750,10 @@ "fastqc_sequence_counts_plot.yaml:md5,5522b2b42f0b3753dd359aad1565d7c2", "fastqc_sequence_duplication_levels_plot.yaml:md5,e883323380f2880c81ea36dc91ad8678", "fastqc_top_overrepresented_sequences_table.yaml:md5,443e161371f73cebf63c14f7a9f3580d", - "featureCounts_assignment_plot.yaml:md5,50570bbf25d46c413b8700dd42000bfc", + "featureCounts_assignment_plot.yaml:md5,7d46061ca4ab9c393806d9dc2190d469", "multiqc_citations.yaml:md5,fa96797dbe164da76c4006ba9a9aa1e2", "multiqc_fastqc.yaml:md5,30fe6d1a5e5c04695dda81294b828ec9", - "multiqc_featurecounts.yaml:md5,ced4c5eba074f83ff81de10775aff55f", + "multiqc_featurecounts.yaml:md5,80609145666915fc888987e28628ec87", "multiqc_frip_score.yaml:md5,68a0bf27565f380e121d4861fd35ed67", "multiqc_nsc_coefficient.yaml:md5,167f8d2ff0b5c54265ef70e727257348", "multiqc_peak_annotation.yaml:md5,91cbb7d9660d47c3de8771deb1ee5192", @@ -804,10 +772,9 @@ "multiqc_samtools_idxstats.yaml:md5,dc6b87d84aeef0439da6077b67501cc3", "multiqc_samtools_idxstats_1.yaml:md5,d7a1a6d14cfb88aa868784024f9b208e", "multiqc_samtools_idxstats_2.yaml:md5,0a34ea933b55ee8ec1882cb22b0a097d", - "multiqc_samtools_stats.yaml:md5,75a45fdc0dff7bd8e983c26fa1639815", - "multiqc_samtools_stats_1.yaml:md5,b1a5b16e9fab0cdb3c81f7ff982e1f23", - "multiqc_samtools_stats_2.yaml:md5,0b4e00e27f065e7a056635818735d494", - "multiqc_strand_shift_correlation.yaml:md5,d07ccd5f89fe50a98a5e6673c938187c", + "multiqc_samtools_stats.yaml:md5,4f6b2c1a2c66f3dc383608132776aafd", + "multiqc_samtools_stats_1.yaml:md5,572342726058b8bec39ab26180d94b92", + "multiqc_samtools_stats_2.yaml:md5,e29f10b3ac3cd08a2a96eb72d06bfaf1", "picard-1_alignment_readlength_plot.yaml:md5,cd5131a2c38d9dc8072c39ee191d7e0b", "picard-1_alignment_summary_Aligned_Bases.yaml:md5,86717ca1bbeef507046dee670543c763", "picard-1_alignment_summary_Aligned_Reads.yaml:md5,c8559ff41529868f4e419cd22c41ba6f", @@ -842,25 +809,27 @@ "samtools-idxstats-mapped-reads-plot_Raw_Counts-1.yaml:md5,972b5bd2f63137965c322ed8c5b6e245", "samtools-idxstats-mapped-reads-plot_Raw_Counts-2.yaml:md5,35f42b24afe3b25a093c78d8610cd732", "samtools-idxstats-mapped-reads-plot_Raw_Counts.yaml:md5,c035319353bb52655028940619e48afd", - "samtools-stats-dp.yaml:md5,a589756f342eea833dfb9c4f7f925427", + "samtools-stats-dp.yaml:md5,b1858c8488f3c506498726af69965dd6", "samtools_alignment_plot.yaml:md5,a33df285c13ab5b360d9eb5282471908", - "samplesheet.valid.csv:md5,276425084544b3baf533e2f17207a384" + "samplesheet.valid.csv:md5,276425084544b3baf533e2f17207a384", + "genome.fa.fai:md5,6f4c0ce5258e6948135ad006e1f9ee1b", + "genome.fa.sizes:md5,e122f8021a5ef14104c32785cb9b7adc" ] ], + "timestamp": "2026-03-18T21:03:39.17604", "meta": { - "nf-test": "0.9.2", - "nextflow": "25.04.3" - }, - "timestamp": "2025-09-17T13:34:31.102064875" + "nf-test": "0.9.4", + "nextflow": "25.04.0" + } }, "skip_trimming with stub": { "content": [ 190 ], + "timestamp": "2026-03-17T14:36:41.411257", "meta": { - "nf-test": "0.9.2", - "nextflow": "25.04.6" - }, - "timestamp": "2025-09-05T10:38:29.093856" + "nf-test": "0.9.4", + "nextflow": "25.04.0" + } } -} +} \ No newline at end of file diff --git a/tests/star.nf.test.snap b/tests/star.nf.test.snap index 5a846cf12..5d4c89187 100644 --- a/tests/star.nf.test.snap +++ b/tests/star.nf.test.snap @@ -3,118 +3,93 @@ "content": [ 215, { - "ANNOTATE_BOOLEAN_PEAKS": { - "sed": 4.7 - }, "BAMTOOLS_FILTER": { - "bamtools": "2.5.2", - "samtools": "1.15.1" + "bamtools": "2.5.3", + "samtools": 1.23 }, "BAM_REMOVE_ORPHANS": { - "samtools": "1.15.1" + "samtools": 1.23 }, "BEDTOOLS_GENOMECOV": { "bedtools": "2.31.1" }, - "CUSTOM_GETCHROMSIZES": { - "getchromsizes": 1.2 - }, "DEEPTOOLS_COMPUTEMATRIX": { - "deeptools": "3.5.5" + "deeptools": "3.5.6" }, "DEEPTOOLS_PLOTFINGERPRINT": { - "deeptools": "3.5.5" + "deeptools": "3.5.6" }, "DEEPTOOLS_PLOTHEATMAP": { - "deeptools": "3.5.5" + "deeptools": "3.5.6" }, "DEEPTOOLS_PLOTPROFILE": { - "deeptools": "3.5.5" - }, - "DESEQ2_QC": { - "bioconductor-deseq2": "1.28.0", - "r-base": "4.0.3" + "deeptools": "3.5.6" }, "FASTQC": { "fastqc": "0.12.1" }, "FRIP_SCORE": { - "bedtools": "2.30.0", - "samtools": "1.15.1" + "bedtools": "2.31.1", + "samtools": 1.23 }, "GENOME_BLACKLIST_REGIONS": { - "bedtools": "2.30.0" - }, - "GTF2BED": { - "perl": "5.26.2" - }, - "HOMER_ANNOTATEPEAKS": { - "homer": 4.11 - }, - "IGV": { - "python": "3.8.3" + "bedtools": "2.31.1" }, "MACS3_CALLPEAK": { - "macs3": "3.0.1" + "macs3": "3.0.4" }, "MACS3_CONSENSUS": { - "python": "3.10.0", - "r-base": "4.1.1" - }, - "MULTIQC_CUSTOM_PEAKS": { - "sed": 4.7 - }, - "PHANTOMPEAKQUALTOOLS": { - "phantompeakqualtools": "1.2.2" + "R": "4.1.3", + "python": "3.14.0" }, "PICARD_COLLECTMULTIPLEMETRICS": { - "picard": "3.2.0-1-g3948afb6b" + "picard": "3.4.0" }, "PICARD_MARKDUPLICATES": { - "picard": "3.2.0-1-g3948afb6b" + "picard": "3.4.0" }, "PICARD_MERGESAMFILES": { - "picard": "3.2.0-1-g3948afb6b" + "picard": "3.4.0" }, "PLOT_HOMER_ANNOTATEPEAKS": { - "r-base": "4.0.3" + "R": "4.5.3" }, "PLOT_MACS3_QC": { - "r-base": "4.0.3" + "R": "4.5.3" }, - "SAMPLESHEET_CHECK": { - "python": "3.8.3" + "SAMTOOLS_FAIDX": { + "samtools": "1.22.1" }, "SAMTOOLS_FLAGSTAT": { "samtools": "1.22.1" }, "SAMTOOLS_IDXSTATS": { - "samtools": 1.2 + "samtools": "1.22.1" }, "SAMTOOLS_INDEX": { - "samtools": 1.2 + "samtools": "1.22.1" }, "SAMTOOLS_SORT": { - "samtools": 1.2 + "samtools": "1.22.1" }, "SAMTOOLS_STATS": { - "samtools": 1.2 + "samtools": "1.22.1" }, "STAR_ALIGN": { - "star": "2.6.1d" + "star": "2.7.11b" }, "STAR_GENOMEGENERATE": { - "star": "2.6.1d" + "samtools": 1.2, + "star": "2.7.11b" }, "SUBREAD_FEATURECOUNTS": { - "subread": "2.0.1" + "subread": "2.1.1" }, "TRIMGALORE": { - "cutadapt": 3.4, - "trimgalore": "0.6.7" + "trimgalore": "0.6.10" }, "UCSC_BEDGRAPHTOBIGWIG": { - "ucsc": 445 + "ucsc": 482 }, "Workflow": { "nf-core/chipseq": "v2.2.0dev" @@ -149,8 +124,6 @@ "fastqc/zips/SPT5_T15_REP2_T1_2_fastqc.zip", "genome", "genome/genome.fa", - "genome/genome.fa.fai", - "genome/genome.fa.sizes", "igv", "igv/broad_peak", "igv/broad_peak/igv_files.txt", @@ -165,6 +138,7 @@ "multiqc/broad_peak/multiqc_data/deeptools_plot_fingerprint_counts_mlib_deeptools.yaml", "multiqc/broad_peak/multiqc_data/deeptools_plot_profile_mlib_deeptools.yaml", "multiqc/broad_peak/multiqc_data/fastqc-1-status-check-heatmap.yaml", + "multiqc/broad_peak/multiqc_data/fastqc-1_adapter_content_plot.yaml", "multiqc/broad_peak/multiqc_data/fastqc-1_per_base_n_content_plot.yaml", "multiqc/broad_peak/multiqc_data/fastqc-1_per_base_sequence_quality_plot.yaml", "multiqc/broad_peak/multiqc_data/fastqc-1_per_sequence_gc_content_plot_Counts.yaml", @@ -265,6 +239,7 @@ "multiqc/broad_peak/multiqc_plots/pdf/deseq2_clustering_1.pdf", "multiqc/broad_peak/multiqc_plots/pdf/deseq2_pca_1.pdf", "multiqc/broad_peak/multiqc_plots/pdf/fastqc-1-status-check-heatmap.pdf", + "multiqc/broad_peak/multiqc_plots/pdf/fastqc-1_adapter_content_plot.pdf", "multiqc/broad_peak/multiqc_plots/pdf/fastqc-1_per_base_n_content_plot.pdf", "multiqc/broad_peak/multiqc_plots/pdf/fastqc-1_per_base_sequence_quality_plot.pdf", "multiqc/broad_peak/multiqc_plots/pdf/fastqc-1_per_sequence_gc_content_plot_Counts.pdf", @@ -352,6 +327,7 @@ "multiqc/broad_peak/multiqc_plots/png/deseq2_clustering_1.png", "multiqc/broad_peak/multiqc_plots/png/deseq2_pca_1.png", "multiqc/broad_peak/multiqc_plots/png/fastqc-1-status-check-heatmap.png", + "multiqc/broad_peak/multiqc_plots/png/fastqc-1_adapter_content_plot.png", "multiqc/broad_peak/multiqc_plots/png/fastqc-1_per_base_n_content_plot.png", "multiqc/broad_peak/multiqc_plots/png/fastqc-1_per_base_sequence_quality_plot.png", "multiqc/broad_peak/multiqc_plots/png/fastqc-1_per_sequence_gc_content_plot_Counts.png", @@ -439,6 +415,7 @@ "multiqc/broad_peak/multiqc_plots/svg/deseq2_clustering_1.svg", "multiqc/broad_peak/multiqc_plots/svg/deseq2_pca_1.svg", "multiqc/broad_peak/multiqc_plots/svg/fastqc-1-status-check-heatmap.svg", + "multiqc/broad_peak/multiqc_plots/svg/fastqc-1_adapter_content_plot.svg", "multiqc/broad_peak/multiqc_plots/svg/fastqc-1_per_base_n_content_plot.svg", "multiqc/broad_peak/multiqc_plots/svg/fastqc-1_per_base_sequence_quality_plot.svg", "multiqc/broad_peak/multiqc_plots/svg/fastqc-1_per_sequence_gc_content_plot_Counts.svg", @@ -521,6 +498,9 @@ "pipeline_info", "pipeline_info/nf_core_chipseq_software_mqc_versions.yml", "pipeline_info/samplesheet.valid.csv", + "samtools", + "samtools/genome.fa.fai", + "samtools/genome.fa.sizes", "star", "star/library", "star/library/log", @@ -652,8 +632,8 @@ "star/merged_library/macs3/broad_peak/consensus/SPT5/SPT5.consensus_peaks.boolean.intersect.plot.pdf", "star/merged_library/macs3/broad_peak/consensus/SPT5/SPT5.consensus_peaks.boolean.intersect.txt", "star/merged_library/macs3/broad_peak/consensus/SPT5/SPT5.consensus_peaks.boolean.txt", - "star/merged_library/macs3/broad_peak/consensus/SPT5/SPT5.consensus_peaks.featureCounts.txt", - "star/merged_library/macs3/broad_peak/consensus/SPT5/SPT5.consensus_peaks.featureCounts.txt.summary", + "star/merged_library/macs3/broad_peak/consensus/SPT5/SPT5.consensus_peaks.featureCounts.tsv", + "star/merged_library/macs3/broad_peak/consensus/SPT5/SPT5.consensus_peaks.featureCounts.tsv.summary", "star/merged_library/macs3/broad_peak/consensus/SPT5/SPT5.consensus_peaks.saf", "star/merged_library/macs3/broad_peak/consensus/SPT5/deseq2", "star/merged_library/macs3/broad_peak/consensus/SPT5/deseq2/R_sessionInfo.log", @@ -721,37 +701,37 @@ "star/merged_library/picard_metrics/SPT5_INPUT_REP1.mLb.clN.sorted.CollectMultipleMetrics.insert_size_metrics", "star/merged_library/picard_metrics/SPT5_INPUT_REP1.mLb.clN.sorted.CollectMultipleMetrics.quality_by_cycle_metrics", "star/merged_library/picard_metrics/SPT5_INPUT_REP1.mLb.clN.sorted.CollectMultipleMetrics.quality_distribution_metrics", - "star/merged_library/picard_metrics/SPT5_INPUT_REP1.mLb.mkD.sorted.MarkDuplicates.metrics.txt", + "star/merged_library/picard_metrics/SPT5_INPUT_REP1.mLb.mkD.sorted.metrics.txt", "star/merged_library/picard_metrics/SPT5_INPUT_REP2.mLb.clN.sorted.CollectMultipleMetrics.alignment_summary_metrics", "star/merged_library/picard_metrics/SPT5_INPUT_REP2.mLb.clN.sorted.CollectMultipleMetrics.base_distribution_by_cycle_metrics", "star/merged_library/picard_metrics/SPT5_INPUT_REP2.mLb.clN.sorted.CollectMultipleMetrics.insert_size_metrics", "star/merged_library/picard_metrics/SPT5_INPUT_REP2.mLb.clN.sorted.CollectMultipleMetrics.quality_by_cycle_metrics", "star/merged_library/picard_metrics/SPT5_INPUT_REP2.mLb.clN.sorted.CollectMultipleMetrics.quality_distribution_metrics", - "star/merged_library/picard_metrics/SPT5_INPUT_REP2.mLb.mkD.sorted.MarkDuplicates.metrics.txt", + "star/merged_library/picard_metrics/SPT5_INPUT_REP2.mLb.mkD.sorted.metrics.txt", "star/merged_library/picard_metrics/SPT5_T0_REP1.mLb.clN.sorted.CollectMultipleMetrics.alignment_summary_metrics", "star/merged_library/picard_metrics/SPT5_T0_REP1.mLb.clN.sorted.CollectMultipleMetrics.base_distribution_by_cycle_metrics", "star/merged_library/picard_metrics/SPT5_T0_REP1.mLb.clN.sorted.CollectMultipleMetrics.insert_size_metrics", "star/merged_library/picard_metrics/SPT5_T0_REP1.mLb.clN.sorted.CollectMultipleMetrics.quality_by_cycle_metrics", "star/merged_library/picard_metrics/SPT5_T0_REP1.mLb.clN.sorted.CollectMultipleMetrics.quality_distribution_metrics", - "star/merged_library/picard_metrics/SPT5_T0_REP1.mLb.mkD.sorted.MarkDuplicates.metrics.txt", + "star/merged_library/picard_metrics/SPT5_T0_REP1.mLb.mkD.sorted.metrics.txt", "star/merged_library/picard_metrics/SPT5_T0_REP2.mLb.clN.sorted.CollectMultipleMetrics.alignment_summary_metrics", "star/merged_library/picard_metrics/SPT5_T0_REP2.mLb.clN.sorted.CollectMultipleMetrics.base_distribution_by_cycle_metrics", "star/merged_library/picard_metrics/SPT5_T0_REP2.mLb.clN.sorted.CollectMultipleMetrics.insert_size_metrics", "star/merged_library/picard_metrics/SPT5_T0_REP2.mLb.clN.sorted.CollectMultipleMetrics.quality_by_cycle_metrics", "star/merged_library/picard_metrics/SPT5_T0_REP2.mLb.clN.sorted.CollectMultipleMetrics.quality_distribution_metrics", - "star/merged_library/picard_metrics/SPT5_T0_REP2.mLb.mkD.sorted.MarkDuplicates.metrics.txt", + "star/merged_library/picard_metrics/SPT5_T0_REP2.mLb.mkD.sorted.metrics.txt", "star/merged_library/picard_metrics/SPT5_T15_REP1.mLb.clN.sorted.CollectMultipleMetrics.alignment_summary_metrics", "star/merged_library/picard_metrics/SPT5_T15_REP1.mLb.clN.sorted.CollectMultipleMetrics.base_distribution_by_cycle_metrics", "star/merged_library/picard_metrics/SPT5_T15_REP1.mLb.clN.sorted.CollectMultipleMetrics.insert_size_metrics", "star/merged_library/picard_metrics/SPT5_T15_REP1.mLb.clN.sorted.CollectMultipleMetrics.quality_by_cycle_metrics", "star/merged_library/picard_metrics/SPT5_T15_REP1.mLb.clN.sorted.CollectMultipleMetrics.quality_distribution_metrics", - "star/merged_library/picard_metrics/SPT5_T15_REP1.mLb.mkD.sorted.MarkDuplicates.metrics.txt", + "star/merged_library/picard_metrics/SPT5_T15_REP1.mLb.mkD.sorted.metrics.txt", "star/merged_library/picard_metrics/SPT5_T15_REP2.mLb.clN.sorted.CollectMultipleMetrics.alignment_summary_metrics", "star/merged_library/picard_metrics/SPT5_T15_REP2.mLb.clN.sorted.CollectMultipleMetrics.base_distribution_by_cycle_metrics", "star/merged_library/picard_metrics/SPT5_T15_REP2.mLb.clN.sorted.CollectMultipleMetrics.insert_size_metrics", "star/merged_library/picard_metrics/SPT5_T15_REP2.mLb.clN.sorted.CollectMultipleMetrics.quality_by_cycle_metrics", "star/merged_library/picard_metrics/SPT5_T15_REP2.mLb.clN.sorted.CollectMultipleMetrics.quality_distribution_metrics", - "star/merged_library/picard_metrics/SPT5_T15_REP2.mLb.mkD.sorted.MarkDuplicates.metrics.txt", + "star/merged_library/picard_metrics/SPT5_T15_REP2.mLb.mkD.sorted.metrics.txt", "star/merged_library/picard_metrics/pdf", "star/merged_library/picard_metrics/pdf/SPT5_INPUT_REP1.mLb.clN.sorted.CollectMultipleMetrics.base_distribution_by_cycle.pdf", "star/merged_library/picard_metrics/pdf/SPT5_INPUT_REP1.mLb.clN.sorted.CollectMultipleMetrics.insert_size_histogram.pdf", @@ -845,20 +825,19 @@ ], [ "genome.fa:md5,4bad9f4b18056156a81f7f952abbe125", - "genome.fa.fai:md5,6f4c0ce5258e6948135ad006e1f9ee1b", - "genome.fa.sizes:md5,e122f8021a5ef14104c32785cb9b7adc", "cutadapt_filtered_reads_plot.yaml:md5,976fdb8049d847c977195863418e3655", - "cutadapt_trimmed_sequences_plot_3_Counts.yaml:md5,14b35027cce2eba80181265e04f6f489", - "cutadapt_trimmed_sequences_plot_3_Obs_Exp.yaml:md5,98410382bb4083d3215a24f0f27b21dd", - "fastqc-1-status-check-heatmap.yaml:md5,8876a09ccb279f76e1b516506cc19157", - "fastqc-1_per_base_n_content_plot.yaml:md5,d6764dbc1915525bc18c74a27d1fa194", - "fastqc-1_per_base_sequence_quality_plot.yaml:md5,0dd7d8a364d42063440dc847e23eeda9", - "fastqc-1_per_sequence_gc_content_plot_Counts.yaml:md5,2cb304ef2551b4ce47126228769a152b", - "fastqc-1_per_sequence_gc_content_plot_Percentages.yaml:md5,9f835a07bebf743957983ed013a7eb3c", - "fastqc-1_per_sequence_quality_scores_plot.yaml:md5,e7e1e6edaae3140586aecc3b77c6e533", - "fastqc-1_sequence_counts_plot.yaml:md5,2b43b4cbebb560f669e317c6b8e946ae", - "fastqc-1_sequence_duplication_levels_plot.yaml:md5,02ef5110211a2848b6619e1adb4573ce", - "fastqc-1_top_overrepresented_sequences_table.yaml:md5,8a80554c91d9fca8acb82f023de02f11", + "cutadapt_trimmed_sequences_plot_3_Counts.yaml:md5,e6733f4ff773a27d0ab81564913b4b54", + "cutadapt_trimmed_sequences_plot_3_Obs_Exp.yaml:md5,9ffcfe37c02af14b8eddd4746066e56a", + "fastqc-1-status-check-heatmap.yaml:md5,6c6e1591b5ff248c85446f9728a3dad4", + "fastqc-1_adapter_content_plot.yaml:md5,d78273a7e4ff36434bb91246fef01523", + "fastqc-1_per_base_n_content_plot.yaml:md5,3625446964b669ccff279aba54510462", + "fastqc-1_per_base_sequence_quality_plot.yaml:md5,1fb4d35d6b94fc4f41d5be1304844b95", + "fastqc-1_per_sequence_gc_content_plot_Counts.yaml:md5,101f11f9cebcc626755f32322b27ebd3", + "fastqc-1_per_sequence_gc_content_plot_Percentages.yaml:md5,0055f4bbded45434618259f47fe5fe85", + "fastqc-1_per_sequence_quality_scores_plot.yaml:md5,eed2628303916e49143ccf37300fb5de", + "fastqc-1_sequence_counts_plot.yaml:md5,6ca3a8cf8d258777e29b8e8731157d90", + "fastqc-1_sequence_duplication_levels_plot.yaml:md5,3e3622b7dd80be1db92ac06df8e3d056", + "fastqc-1_top_overrepresented_sequences_table.yaml:md5,a333a02f5313876cf1713d7b0168d5f3", "fastqc-status-check-heatmap.yaml:md5,1e473e0f9140b718607d8c72cf3c0b45", "fastqc_adapter_content_plot.yaml:md5,591991daf3e3c49873f4a51a3710b072", "fastqc_per_base_n_content_plot.yaml:md5,c16a4af177b9ad9694a9535023906927", @@ -868,73 +847,73 @@ "fastqc_per_sequence_quality_scores_plot.yaml:md5,351b55974af5ee21294ebf5deb850d7c", "fastqc_sequence_counts_plot.yaml:md5,5522b2b42f0b3753dd359aad1565d7c2", "fastqc_sequence_duplication_levels_plot.yaml:md5,e883323380f2880c81ea36dc91ad8678", - "fastqc_sequence_length_distribution_plot.yaml:md5,f1d36d9bed4b85e0ae349b514ab788fc", + "fastqc_sequence_length_distribution_plot.yaml:md5,d57678f16381986766d56b631c838106", "fastqc_top_overrepresented_sequences_table.yaml:md5,443e161371f73cebf63c14f7a9f3580d", - "featureCounts_assignment_plot.yaml:md5,ecfb3bac14ec28fad54df5566fbedc78", + "featureCounts_assignment_plot.yaml:md5,af828a63e428826fc5d3ff32647ce0c0", "multiqc_citations.yaml:md5,fca5dc7cb20162434c714d26b11161f3", - "multiqc_cutadapt.yaml:md5,25f32008ccf0041ac74bb82d744d6eda", "multiqc_fastqc.yaml:md5,30fe6d1a5e5c04695dda81294b828ec9", - "multiqc_fastqc_1.yaml:md5,dd7981fa28827b895ef844011053eeff", - "multiqc_featurecounts.yaml:md5,6381de03e2215c33c83e992c25c57070", - "multiqc_frip_score.yaml:md5,93403b64f3337142b767ce2c5ab6c8aa", - "multiqc_nsc_coefficient.yaml:md5,340aa24532f76adba83d7bae0be6010d", + "multiqc_fastqc_1.yaml:md5,cd4a85c27c3cf85f1d0612afce793186", + "multiqc_featurecounts.yaml:md5,f69f606ff89c226af76a314ef8d5c570", + "multiqc_frip_score.yaml:md5,36436376e2c9a22a938134a7622f1329", + "multiqc_nsc_coefficient.yaml:md5,db4bf467647aaa58aa24f9c2a84baeed", "multiqc_peak_annotation.yaml:md5,a2d85e81922d57a1881bbf4ff4c22d7f", "multiqc_peak_count.yaml:md5,90357ad171d18834bfa94d2ca8f3627a", - "multiqc_phantompeakqualtools.yaml:md5,323b4c3b78855979064ae372d732c837", - "multiqc_picard-1_AlignmentSummaryMetrics.yaml:md5,ef71891983624de943ae7b64c6adde0e", - "multiqc_picard-1_insertSize.yaml:md5,d385de777c76c309644c51983d4bf3f4", - "multiqc_picard-1_quality_by_cycle.yaml:md5,8de4dd7d6d79a665fe43cad73308d647", - "multiqc_picard-1_quality_score_distribution.yaml:md5,46e8cf8274b2d62e758c794e7b956c4e", - "multiqc_picard_baseContent.yaml:md5,100d98f4a60e12fe75a14f3d5e67959e", - "multiqc_picard_dups.yaml:md5,b662f0201be417301e6d522588cff920", - "multiqc_rsc_coefficient.yaml:md5,451051a418d3d64489a8bdfae3fe1249", - "multiqc_samtools_flagstat.yaml:md5,9bc3c0dfd09eae5cff3527524cc03566", - "multiqc_samtools_flagstat_1.yaml:md5,420c4f1d7a0ab1558cbc9e6e7f2cf443", - "multiqc_samtools_flagstat_2.yaml:md5,ebfade2b3f478a335d724bfbff763743", - "multiqc_samtools_idxstats.yaml:md5,e5eb9c6dc9c5dc6125cae05c1b4de944", - "multiqc_samtools_idxstats_1.yaml:md5,4ac5a78a974a6e5e5a038b963433ee08", - "multiqc_samtools_idxstats_2.yaml:md5,3672d4e8304bbd75ea176aeb2c6e0533", - "multiqc_samtools_stats.yaml:md5,e6c2a7caf8babb26af5fee07f7a7090d", - "multiqc_samtools_stats_1.yaml:md5,ead1283548e02f0f6dc7fab553959dfb", - "multiqc_samtools_stats_2.yaml:md5,abdd0b1a5a908fddb05c6c4a4ad2bd4e", - "multiqc_strand_shift_correlation.yaml:md5,b3300505766eb423380ba48bd8161720", - "picard-1_alignment_readlength_plot.yaml:md5,9f96961103f78afcc5e42ab1818d1646", - "picard-1_alignment_summary_Aligned_Bases.yaml:md5,64a9971ff2cb4560639a455283127f8c", - "picard-1_alignment_summary_Aligned_Reads.yaml:md5,c76bfcdb15234c76d396731e11505b50", + "multiqc_phantompeakqualtools.yaml:md5,41ee3c7cb346e8edd6bfa1840dbb3148", + "multiqc_picard-1_AlignmentSummaryMetrics.yaml:md5,a08a48e002fbc010d987f067bccf9d21", + "multiqc_picard-1_insertSize.yaml:md5,d5752d2971e46bdb039b26e13975e0a8", + "multiqc_picard-1_quality_by_cycle.yaml:md5,274510d9d5ebd92855c91575d689f23c", + "multiqc_picard-1_quality_score_distribution.yaml:md5,7181c6520952202b6f6c4c59a79e2f9f", + "multiqc_picard_baseContent.yaml:md5,afeae1015f2202d6860a463f74f2dfb2", + "multiqc_picard_dups.yaml:md5,12a480fb4ec36fadd7de6b79d6646f77", + "multiqc_rsc_coefficient.yaml:md5,fd55f3f1c4324f4fcfa5222d846b894a", + "multiqc_samtools_flagstat.yaml:md5,052425f0d7c1b6b685ff13eddd1f7c3d", + "multiqc_samtools_flagstat_1.yaml:md5,68cc882c81e39977e7ee7e11f480c7a3", + "multiqc_samtools_flagstat_2.yaml:md5,24b7467f1c4958f748fbef7b5cb90b2e", + "multiqc_samtools_idxstats.yaml:md5,161755a5da0e2f64d009b29db7caf3ee", + "multiqc_samtools_idxstats_1.yaml:md5,46ecc1660878d96d3c8ec4a5d7241032", + "multiqc_samtools_idxstats_2.yaml:md5,aee859edcc202e01934b40ca15c1e4f7", + "multiqc_samtools_stats.yaml:md5,8a995db38967f0b5c339078425ac70f9", + "multiqc_samtools_stats_1.yaml:md5,255695d4d6ca87b1bc2bb46dee0856fb", + "multiqc_samtools_stats_2.yaml:md5,d17c8c8a0c62973f443db09e458a3f30", + "picard-1_alignment_readlength_plot.yaml:md5,43006423c38f9dacc54308a545ce27d6", + "picard-1_alignment_summary_Aligned_Bases.yaml:md5,1bfcb93e21b3630f3dba984a190b5c67", + "picard-1_alignment_summary_Aligned_Reads.yaml:md5,364411d722c2569b232d8d1f306270f6", "picard-1_histogram.yaml:md5,8a80554c91d9fca8acb82f023de02f11", - "picard-1_histogram_1.yaml:md5,8de4dd7d6d79a665fe43cad73308d647", - "picard-1_histogram_2.yaml:md5,46e8cf8274b2d62e758c794e7b956c4e", - "picard-1_insert_size_Counts.yaml:md5,1ec1bd7724dbcb994f30d99fe69dc1d6", - "picard-1_insert_size_Percentages.yaml:md5,9b196b6ed38de47e8801202590d450d0", - "picard-1_quality_by_cycle.yaml:md5,87098b5d96a1cb537825af05b97e268c", - "picard-1_quality_score_distribution.yaml:md5,d5f7ddb2c0272504ba93afc7da5b0587", - "picard_base_distribution_by_cycle__Adenine.yaml:md5,ef4ad32dec4f77bb90a132d609b255e1", - "picard_base_distribution_by_cycle__Cytosine.yaml:md5,3c200f01e52989e526d29d2b7115a74c", - "picard_base_distribution_by_cycle__Guanine.yaml:md5,b2889be7d2ae942c443275c82f6efbcd", - "picard_base_distribution_by_cycle__Thymine.yaml:md5,716d2da60ed4d0d3377b006383d6dce4", - "picard_base_distribution_by_cycle__Undetermined.yaml:md5,b9253c0964dcaa0da814da7baec45489", - "picard_deduplication.yaml:md5,f1a83b57199d6b43947bc93b6bb0f475", + "picard-1_histogram_1.yaml:md5,274510d9d5ebd92855c91575d689f23c", + "picard-1_histogram_2.yaml:md5,7181c6520952202b6f6c4c59a79e2f9f", + "picard-1_insert_size_Counts.yaml:md5,3394bb38c3b2674fc8596cea504c2a35", + "picard-1_insert_size_Percentages.yaml:md5,101e18eff7487218d0bc0435d7cb3edd", + "picard-1_quality_by_cycle.yaml:md5,ac1570fa2fbb774d045b8063a38ea475", + "picard-1_quality_score_distribution.yaml:md5,54504c0c85ab893fa9bef8c5594b3fe8", + "picard_base_distribution_by_cycle__Adenine.yaml:md5,ea5539035066d55f9ce0cce3092e9b71", + "picard_base_distribution_by_cycle__Cytosine.yaml:md5,1ff0d8fa67bdac5bf12eeef76034ba35", + "picard_base_distribution_by_cycle__Guanine.yaml:md5,cf13ddf5eb118b54a2e7bae98ad82df4", + "picard_base_distribution_by_cycle__Thymine.yaml:md5,65f4fddb8f37c79751b3be001316ed91", + "picard_base_distribution_by_cycle__Undetermined.yaml:md5,fb60eee4ab17148525395d5ac03c45ff", + "picard_deduplication.yaml:md5,2e601aca787c042f3217006177626c54", "picard_histogram.yaml:md5,8a80554c91d9fca8acb82f023de02f11", "picard_histogram_1.yaml:md5,8a80554c91d9fca8acb82f023de02f11", "picard_histogram_2.yaml:md5,8a80554c91d9fca8acb82f023de02f11", - "samtools-flagstat-dp_Percentage_of_total-1.yaml:md5,9aead269fffdd3301ae0b340a3bbe74b", - "samtools-flagstat-dp_Percentage_of_total-2.yaml:md5,07ec7c0f91de170272313df6ce6559bf", - "samtools-flagstat-dp_Percentage_of_total.yaml:md5,abb461d60bd539fca9d4669e139fc02c", - "samtools-flagstat-dp_Read_counts-1.yaml:md5,ee4f7b5bbc916b36a047c6b34fdeb2b3", - "samtools-flagstat-dp_Read_counts-2.yaml:md5,d7ea93a3f1b8650308f0a2d220c8e6e2", - "samtools-flagstat-dp_Read_counts.yaml:md5,a2bd29f88ec1ad79ada2ce11e939f55f", - "samtools-idxstats-mapped-reads-plot_Normalised_Counts-1.yaml:md5,ff9db1b8b5524b6c66d4486ccd7e1787", - "samtools-idxstats-mapped-reads-plot_Normalised_Counts-2.yaml:md5,85e8d9ad1e57dbed75cd9533db051741", - "samtools-idxstats-mapped-reads-plot_Normalised_Counts.yaml:md5,e264c5efc0f3b4eb1c5a0de0a74b92dd", - "samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts-1.yaml:md5,852cfcaea7977bca1b7564da3073c09e", - "samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts-2.yaml:md5,ada0ee445e16b8472bbeb5e14951c9eb", - "samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts.yaml:md5,45ea8d62014457e61c96c7c96bf896de", - "samtools-idxstats-mapped-reads-plot_Raw_Counts-1.yaml:md5,4686a73101348ef7d61e6644af8b14cb", - "samtools-idxstats-mapped-reads-plot_Raw_Counts-2.yaml:md5,0072c4f90d3f23f570a4e77af1a2380a", - "samtools-idxstats-mapped-reads-plot_Raw_Counts.yaml:md5,ad1e44dc4e648d29c6023df52a99b6f3", - "samtools-stats-dp.yaml:md5,0853ae2540ae0ddc1eee315795f50963", - "samtools_alignment_plot.yaml:md5,98033f60aa7b654476b3ba1b4d24ccb7", + "samtools-flagstat-dp_Percentage_of_total-1.yaml:md5,7f5f29d5237dcf009f8da7ac51def174", + "samtools-flagstat-dp_Percentage_of_total-2.yaml:md5,1a17e60308156cb05bacdc4450aeb373", + "samtools-flagstat-dp_Percentage_of_total.yaml:md5,362d2193e88b87cecdb3684ac53b4950", + "samtools-flagstat-dp_Read_counts-1.yaml:md5,7eebf2653486a02db5860bb3ab5830ba", + "samtools-flagstat-dp_Read_counts-2.yaml:md5,84527e9fcc6cd9af3a5a1b04a90e3f99", + "samtools-flagstat-dp_Read_counts.yaml:md5,5a571810f75b695928faf1e0821f203a", + "samtools-idxstats-mapped-reads-plot_Normalised_Counts-1.yaml:md5,51652ae5862b748b78913cfd45db5027", + "samtools-idxstats-mapped-reads-plot_Normalised_Counts-2.yaml:md5,a61c13ea19f6eda57775ade3b6287b06", + "samtools-idxstats-mapped-reads-plot_Normalised_Counts.yaml:md5,7f15d71423400784ac33c0378b8c01e5", + "samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts-1.yaml:md5,56e2a1bcd41156dff07d4a16083bb62e", + "samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts-2.yaml:md5,b88cf377100b36f0583a7d4cf94e82cf", + "samtools-idxstats-mapped-reads-plot_Observed_over_Expected_Counts.yaml:md5,d4346380ce382d04ff2b32e0db262425", + "samtools-idxstats-mapped-reads-plot_Raw_Counts-1.yaml:md5,c5c5eb07c5bd898f02f8e45c1405f363", + "samtools-idxstats-mapped-reads-plot_Raw_Counts-2.yaml:md5,569910952bbfc4525972fe3431cf5165", + "samtools-idxstats-mapped-reads-plot_Raw_Counts.yaml:md5,419fc35bbb01e2a35f66f2abdb4b8d49", + "samtools-stats-dp.yaml:md5,3334c53a05a1f70ee4bd06226479a1a5", + "samtools_alignment_plot.yaml:md5,e78658bf88e7d795367a1c1323d96b62", "samplesheet.valid.csv:md5,276425084544b3baf533e2f17207a384", + "genome.fa.fai:md5,6f4c0ce5258e6948135ad006e1f9ee1b", + "genome.fa.sizes:md5,e122f8021a5ef14104c32785cb9b7adc", "SPT5_INPUT_REP1_T1.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", "SPT5_INPUT_REP2_T1.SJ.out.tab:md5,a9622ab87264c0ebeafce71db1307c8d", "SPT5_T0_REP1_T1.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", @@ -943,74 +922,68 @@ "SPT5_T15_REP2_T1.SJ.out.tab:md5,d41d8cd98f00b204e9800998ecf8427e", "SPT5_INPUT_REP1.mLB.clN.bedGraph:md5,27ec9b3ea78e51a6747f10e87fb28e75", "SPT5_INPUT_REP2.mLB.clN.bedGraph:md5,0f5eaf0b37296d9a39240163d428d3da", - "SPT5_T0_REP1.mLB.clN.bedGraph:md5,596f22b3ea72ada620869624f0341d84", - "SPT5_T0_REP2.mLB.clN.bedGraph:md5,4e3c18d3683f4e20d9cac82084d517cf", - "SPT5_T15_REP1.mLB.clN.bedGraph:md5,4bc854fd64d47ef4e61204ffedbc93eb", - "SPT5_T15_REP2.mLB.clN.bedGraph:md5,57953f83dbbbff0b256193835448c73d", - "SPT5_T0_REP1_peaks.broadPeak:md5,e1fe25b8c90c7c95d2a51928e85bdd83", - "SPT5_T0_REP1_peaks.gappedPeak:md5,760698ecb506b316817d968900833238", - "SPT5_T0_REP1_peaks.xls:md5,dc2b6465f427257b51ccd1b111d2eefe", + "SPT5_T0_REP1.mLB.clN.bedGraph:md5,16be7d838c6ccb52a7205d6affe4856a", + "SPT5_T0_REP2.mLB.clN.bedGraph:md5,7fe898c6cdf6d00ff90144ba391bb9df", + "SPT5_T15_REP1.mLB.clN.bedGraph:md5,2ab1546e5cf69c46f0340054a8f78efd", + "SPT5_T15_REP2.mLB.clN.bedGraph:md5,04a755253939b714f9fe92667ceecad2", + "SPT5_T0_REP1_peaks.broadPeak:md5,5c48f4161896e2e5b19524737643ad95", + "SPT5_T0_REP1_peaks.gappedPeak:md5,15e0b902c54e444514e555a096468ed6", + "SPT5_T0_REP1_peaks.xls:md5,713e133e92dc3f9829be9f560667b399", "SPT5_T0_REP2_peaks.broadPeak:md5,79103c79030c78fc1325e4cbafc95e5c", - "SPT5_T0_REP2_peaks.gappedPeak:md5,ca3e89e348bbdfc47eafb3124831e613", - "SPT5_T0_REP2_peaks.xls:md5,74069350284c2cff563a0322bd3d07f6", - "SPT5_T15_REP1_peaks.broadPeak:md5,50efff4d3528c7e0ece4fe362e470355", - "SPT5_T15_REP1_peaks.gappedPeak:md5,109943b71c04c3e87c457cefbd4c0ee0", - "SPT5_T15_REP1_peaks.xls:md5,52ccf059539573e7c04c9ae340659074", - "SPT5_T15_REP2_peaks.broadPeak:md5,ab8026340d88cee1f3928eddc7fb4c57", - "SPT5_T15_REP2_peaks.gappedPeak:md5,2c3b8b200abb4421de858c4c2b2612d8", - "SPT5_T15_REP2_peaks.xls:md5,2b3f181464eed38ba6744178af1eb179", + "SPT5_T0_REP2_peaks.gappedPeak:md5,51521b317d347c44e6cd22f1d199a674", + "SPT5_T0_REP2_peaks.xls:md5,092dc89f9153cc1d548f612894420a87", + "SPT5_T15_REP1_peaks.broadPeak:md5,4604a39c23ae9bc13e841e692067f8b5", + "SPT5_T15_REP1_peaks.gappedPeak:md5,b0df674e7aaab8416fb6e28a8c7e19ec", + "SPT5_T15_REP1_peaks.xls:md5,14fdfd61c5e2cd9e585b14d3644e5e77", + "SPT5_T15_REP2_peaks.broadPeak:md5,35dddf1de1ca8d71b23dbce7fd71b2bf", + "SPT5_T15_REP2_peaks.gappedPeak:md5,4cb902c720f6b7fe3c805f01297f8fc3", + "SPT5_T15_REP2_peaks.xls:md5,9e0c806473ac230751c34633faf4505f", "SPT5.consensus_peaks.antibody.txt:md5,8d7549b0cb2e42ffd5c23879e7f54ce9", "SPT5.consensus_peaks.bed:md5,d4b24e01db0c16067e8664b09ac82727", "SPT5.consensus_peaks.boolean.intersect.txt:md5,139332a4ef8cc9bb579b59a89a2733d9", - "SPT5.consensus_peaks.boolean.txt:md5,43574256ceacfb84bff577d821c10931", + "SPT5.consensus_peaks.boolean.txt:md5,64ff738adf7975f9b1dd7856097aa937", "SPT5.consensus_peaks.saf:md5,a683c45f94a5657267b85079ee255c47", "R_sessionInfo.log:md5,fb0da0d7ad6994ed66a8e68348b19676", - "SPT5_T0_REP1.txt:md5,583f04d078c3bd05feb65ea27ba8648d", - "SPT5_T0_REP2.txt:md5,85b01b375872ea5f0d8ff6e30506c3a0", - "SPT5_T15_REP1.txt:md5,f4f6ac1cd022786bebfbbf95a2aee516", - "SPT5_T15_REP2.txt:md5,d35ccc6ae2716f29962c8ddb2157e8b5", - "SPT5_T0_REP1.FRiP_mqc.tsv:md5,1ef596de76ffcb846bbfba2b7a5d976c", + "SPT5_T0_REP1.txt:md5,a347c6ec9b54de883eb50c91392b0058", + "SPT5_T0_REP2.txt:md5,713fcd986e25427f46dcbb0bc84e1cac", + "SPT5_T15_REP1.txt:md5,4486de2a4215767549c5cb1ce00e4627", + "SPT5_T15_REP2.txt:md5,dff02d73c5e86137f11f4352d1c42c8d", + "SPT5_T0_REP1.FRiP_mqc.tsv:md5,18b703b4e72845d8666f6629159ac53c", "SPT5_T0_REP1.peak_count_mqc.tsv:md5,216c166c0ad3b74cae18a73f5e466bca", - "SPT5_T0_REP2.FRiP_mqc.tsv:md5,da593770046268c635e1656a412a57d6", + "SPT5_T0_REP2.FRiP_mqc.tsv:md5,cfe37873afe8572b7e1a3a229517f88d", "SPT5_T0_REP2.peak_count_mqc.tsv:md5,b66e4517b062acf30970ddfe9bf01ee3", - "SPT5_T15_REP1.FRiP_mqc.tsv:md5,ee4ce8611ed69cdc8d46828f7026378f", + "SPT5_T15_REP1.FRiP_mqc.tsv:md5,136de5ea6fd969d4b020e72cc787553f", "SPT5_T15_REP1.peak_count_mqc.tsv:md5,a410be995115d5395bddad58356c9317", - "SPT5_T15_REP2.FRiP_mqc.tsv:md5,9c4b15116ad398fbfa7d62772ef8c171", + "SPT5_T15_REP2.FRiP_mqc.tsv:md5,375dc140735e345ba2e69ae9d7548487", "SPT5_T15_REP2.peak_count_mqc.tsv:md5,7cf04251bb45fa69667e008221cf9574", "SPT5_INPUT_REP1.mLb.clN.sorted.bam.flagstat:md5,eab2d557e005abce4fca95f1393d6821", "SPT5_INPUT_REP1.mLb.clN.sorted.bam.idxstats:md5,c35a726fcffa4b526325847aab379cc5", - "SPT5_INPUT_REP1.mLb.clN.sorted.bam.stats:md5,5f5db9f3088da6e56584461901877c32", "SPT5_INPUT_REP2.mLb.clN.sorted.bam.flagstat:md5,a0559f289e9e537c0ea7aff0dc4e747f", "SPT5_INPUT_REP2.mLb.clN.sorted.bam.idxstats:md5,c58de994b339515b810056873cf07d01", - "SPT5_INPUT_REP2.mLb.clN.sorted.bam.stats:md5,3a1620c038f590e9bde9985867d5ddad", - "SPT5_T0_REP1.mLb.clN.sorted.bam.flagstat:md5,0f3e7a90fce3d84e6c48808d4ce6144f", - "SPT5_T0_REP1.mLb.clN.sorted.bam.idxstats:md5,e514058de5c07b88f90fd193bb6cd744", - "SPT5_T0_REP1.mLb.clN.sorted.bam.stats:md5,2b142bebb83ed2e83e53e0ec72ab8394", - "SPT5_T0_REP2.mLb.clN.sorted.bam.flagstat:md5,379f7b0f465248b2d860f3a3d643e1c1", - "SPT5_T0_REP2.mLb.clN.sorted.bam.idxstats:md5,c50048ac58020c3aadb7238aa084b1fb", - "SPT5_T0_REP2.mLb.clN.sorted.bam.stats:md5,13aa4b3d01bf70c233374cdcffe5f9e3", - "SPT5_T15_REP1.mLb.clN.sorted.bam.flagstat:md5,4dccc74273d642ed6e3761361cb7430d", - "SPT5_T15_REP1.mLb.clN.sorted.bam.idxstats:md5,8df7c4aafa77be27610c4cf83fee9f05", - "SPT5_T15_REP1.mLb.clN.sorted.bam.stats:md5,2050bd328423c9ef255fd2a56d2e9607", - "SPT5_T15_REP2.mLb.clN.sorted.bam.flagstat:md5,7b3d69e31aac6914877369682086b0ea", - "SPT5_T15_REP2.mLb.clN.sorted.bam.idxstats:md5,e880a1de98270eb312384d43da1b0595", - "SPT5_T15_REP2.mLb.clN.sorted.bam.stats:md5,041fa26a893e035030e31f792eac5752" + "SPT5_T0_REP1.mLb.clN.sorted.bam.flagstat:md5,c88393f02eaea9cbdf5b615ac4616982", + "SPT5_T0_REP1.mLb.clN.sorted.bam.idxstats:md5,60eee697e117738370bb9716feb0d227", + "SPT5_T0_REP2.mLb.clN.sorted.bam.flagstat:md5,1667c5ae25ead83bdda8e001d255f2fb", + "SPT5_T0_REP2.mLb.clN.sorted.bam.idxstats:md5,cd2cac16f93a1c607957f4dee7a0ad49", + "SPT5_T15_REP1.mLb.clN.sorted.bam.flagstat:md5,96f50b2e37e68b5d3ae7dffb64475875", + "SPT5_T15_REP1.mLb.clN.sorted.bam.idxstats:md5,e64affaf9ed80b35b0bbee53a8031168", + "SPT5_T15_REP2.mLb.clN.sorted.bam.flagstat:md5,ef103582d03109c664e11fe368ea3d4d", + "SPT5_T15_REP2.mLb.clN.sorted.bam.idxstats:md5,aa2db2bcb3aa876cfbfe24b49d98aabd" ] ], + "timestamp": "2026-03-18T21:19:45.013713", "meta": { - "nf-test": "0.9.2", - "nextflow": "25.04.3" - }, - "timestamp": "2025-09-17T13:50:40.996684387" + "nf-test": "0.9.4", + "nextflow": "25.04.0" + } }, "star with stub": { "content": [ 20 ], + "timestamp": "2026-03-17T16:23:46.465421", "meta": { - "nf-test": "0.9.2", - "nextflow": "25.04.6" - }, - "timestamp": "2025-09-04T22:40:58.444452" + "nf-test": "0.9.4", + "nextflow": "25.04.0" + } } -} +} \ No newline at end of file diff --git a/workflows/chipseq.nf b/workflows/chipseq.nf index ec176fb10..ba615ab77 100644 --- a/workflows/chipseq.nf +++ b/workflows/chipseq.nf @@ -7,9 +7,9 @@ // // MODULE: Loaded from modules/local/ // -include { IGV } from '../modules/local/igv' -include { MULTIQC } from '../modules/local/multiqc' -include { MULTIQC_CUSTOM_PHANTOMPEAKQUALTOOLS } from '../modules/local/multiqc_custom_phantompeakqualtools' +include { IGV } from '../modules/local/igv/main' +include { MULTIQC } from '../modules/local/multiqc/main' +include { MULTIQC_CUSTOM_PHANTOMPEAKQUALTOOLS } from '../modules/local/multiqc_custom_phantompeakqualtools/main' // // SUBWORKFLOW: Consisting of a mix of local and nf-core/modules @@ -17,13 +17,13 @@ include { MULTIQC_CUSTOM_PHANTOMPEAKQUALTOOLS } from '../modules/local/multiqc_c include { paramsSummaryMap } from 'plugin/nf-schema' include { paramsSummaryMultiqc } from '../subworkflows/nf-core/utils_nfcore_pipeline' include { softwareVersionsToYAML } from '../subworkflows/nf-core/utils_nfcore_pipeline' -include { methodsDescriptionText } from '../subworkflows/local/utils_nfcore_chipseq_pipeline' -include { INPUT_CHECK } from '../subworkflows/local/input_check' -include { ALIGN_STAR } from '../subworkflows/local/align_star' -include { BAM_FILTER_BAMTOOLS } from '../subworkflows/local/bam_filter_bamtools' -include { BAM_BEDGRAPH_BIGWIG_BEDTOOLS_UCSC } from '../subworkflows/local/bam_bedgraph_bigwig_bedtools_ucsc' -include { BAM_PEAKS_CALL_QC_ANNOTATE_MACS3_HOMER } from '../subworkflows/local/bam_peaks_call_qc_annotate_macs3_homer.nf' -include { BED_CONSENSUS_QUANTIFY_QC_BEDTOOLS_FEATURECOUNTS_DESEQ2 } from '../subworkflows/local/bed_consensus_quantify_qc_bedtools_featurecounts_deseq2.nf' +include { methodsDescriptionText } from '../subworkflows/local/utils_nfcore_chipseq_pipeline/main' +include { INPUT_CHECK } from '../subworkflows/local/input_check/main' +include { ALIGN_STAR } from '../subworkflows/local/align_star/main' +include { BAM_FILTER_BAMTOOLS } from '../subworkflows/local/bam_filter_bamtools/main' +include { BAM_BEDGRAPH_BIGWIG_BEDTOOLS_UCSC } from '../subworkflows/local/bam_bedgraph_bigwig_bedtools_ucsc/main' +include { BAM_PEAKS_CALL_QC_ANNOTATE_MACS3_HOMER } from '../subworkflows/local/bam_peaks_call_qc_annotate_macs3_homer/main' +include { BED_CONSENSUS_QUANTIFY_QC_BEDTOOLS_FEATURECOUNTS_DESEQ2 } from '../subworkflows/local/bed_consensus_quantify_qc_bedtools_featurecounts_deseq2/main' /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -104,6 +104,27 @@ workflow CHIPSEQ { main: ch_multiqc_files = channel.empty() + + // + // Collection versions from topic channel + // + def topic_versions = channel.topic("versions") + .distinct() + .branch { entry -> + versions_file: entry instanceof Path + versions_tuple: true + } + + def topic_versions_string = topic_versions.versions_tuple + .map { process, tool, version -> + [ process[process.lastIndexOf(':')+1..-1], " ${tool}: ${version}" ] + } + .groupTuple(by:0) + .map { process, tool_versions -> + tool_versions.unique().sort() + "${process}:\n${tool_versions.join('\n')}" + } + // // SUBWORKFLOW: Read in samplesheet, validate and stage input files // @@ -111,7 +132,6 @@ workflow CHIPSEQ { ch_samplesheet, params.seq_center ) - ch_versions = ch_versions.mix(INPUT_CHECK.out.versions) // TODO: OPTIONAL, you can use nf-validation plugin to create an input channel from the samplesheet with Channel.fromSamplesheet("input") // See the documentation https://nextflow-io.github.io/nf-validation/samplesheets/fromSamplesheet/ // ! There is currently no tooling to help you write a sample sheet schema @@ -128,7 +148,6 @@ workflow CHIPSEQ { 0, 10000 ) - ch_versions = ch_versions.mix(FASTQ_FASTQC_UMITOOLS_TRIMGALORE.out.versions) // // SUBWORKFLOW: Alignment with BWA & BAM QC @@ -153,7 +172,6 @@ workflow CHIPSEQ { ch_samtools_stats = FASTQ_ALIGN_BWA.out.stats ch_samtools_flagstat = FASTQ_ALIGN_BWA.out.flagstat ch_samtools_idxstats = FASTQ_ALIGN_BWA.out.idxstats - ch_versions = ch_versions.mix(FASTQ_ALIGN_BWA.out.versions) } // @@ -175,7 +193,6 @@ workflow CHIPSEQ { ch_samtools_stats = FASTQ_ALIGN_BOWTIE2.out.stats ch_samtools_flagstat = FASTQ_ALIGN_BOWTIE2.out.flagstat ch_samtools_idxstats = FASTQ_ALIGN_BOWTIE2.out.idxstats - ch_versions = ch_versions.mix(FASTQ_ALIGN_BOWTIE2.out.versions) } // @@ -199,7 +216,6 @@ workflow CHIPSEQ { ch_samtools_stats = FASTQ_ALIGN_CHROMAP.out.stats ch_samtools_flagstat = FASTQ_ALIGN_CHROMAP.out.flagstat ch_samtools_idxstats = FASTQ_ALIGN_CHROMAP.out.idxstats - ch_versions = ch_versions.mix(FASTQ_ALIGN_CHROMAP.out.versions) } // @@ -222,8 +238,6 @@ workflow CHIPSEQ { ch_samtools_flagstat = ALIGN_STAR.out.flagstat ch_samtools_idxstats = ALIGN_STAR.out.idxstats ch_star_multiqc = ALIGN_STAR.out.log_final - - ch_versions = ch_versions.mix(ALIGN_STAR.out.versions) } // @@ -247,7 +261,6 @@ workflow CHIPSEQ { PICARD_MERGESAMFILES ( ch_sort_bam ) - ch_versions = ch_versions.mix(PICARD_MERGESAMFILES.out.versions.first()) // // SUBWORKFLOW: Mark duplicates & filter BAM files after merging @@ -263,7 +276,6 @@ workflow CHIPSEQ { [ [:], it ] } ) - ch_versions = ch_versions.mix(BAM_MARKDUPLICATES_PICARD.out.versions) // // SUBWORKFLOW: Filter BAM file with BamTools @@ -278,7 +290,6 @@ workflow CHIPSEQ { ch_bamtools_filter_se_config, ch_bamtools_filter_pe_config ) - ch_versions = ch_versions.mix(BAM_FILTER_BAMTOOLS.out.versions) // // MODULE: Preseq coverage analysis @@ -289,7 +300,6 @@ workflow CHIPSEQ { BAM_MARKDUPLICATES_PICARD.out.bam ) ch_preseq_multiqc = PRESEQ_LCEXTRAP.out.lc_extrap - ch_versions = ch_versions.mix(PRESEQ_LCEXTRAP.out.versions.first()) } // @@ -314,7 +324,6 @@ workflow CHIPSEQ { } ) ch_picardcollectmultiplemetrics_multiqc = PICARD_COLLECTMULTIPLEMETRICS.out.metrics - ch_versions = ch_versions.mix(PICARD_COLLECTMULTIPLEMETRICS.out.versions.first()) } // @@ -329,7 +338,6 @@ workflow CHIPSEQ { BAM_FILTER_BAMTOOLS.out.bam ) ch_phantompeakqualtools_spp_multiqc = PHANTOMPEAKQUALTOOLS.out.spp - ch_versions = ch_versions.mix(PHANTOMPEAKQUALTOOLS.out.versions.first()) // // MODULE: MultiQC custom content for Phantompeaktools @@ -352,7 +360,6 @@ workflow CHIPSEQ { BAM_FILTER_BAMTOOLS.out.bam.join(BAM_FILTER_BAMTOOLS.out.flagstat, by: [0]), ch_chrom_sizes ) - ch_versions = ch_versions.mix(BAM_BEDGRAPH_BIGWIG_BEDTOOLS_UCSC.out.versions) ch_deeptoolsplotprofile_multiqc = Channel.empty() @@ -364,7 +371,6 @@ workflow CHIPSEQ { BAM_BEDGRAPH_BIGWIG_BEDTOOLS_UCSC.out.bigwig, ch_gene_bed ) - ch_versions = ch_versions.mix(DEEPTOOLS_COMPUTEMATRIX.out.versions.first()) // // MODULE: deepTools profile plots @@ -373,7 +379,6 @@ workflow CHIPSEQ { DEEPTOOLS_COMPUTEMATRIX.out.matrix ) ch_deeptoolsplotprofile_multiqc = DEEPTOOLS_PLOTPROFILE.out.table - ch_versions = ch_versions.mix(DEEPTOOLS_PLOTPROFILE.out.versions.first()) // // MODULE: deepTools heatmaps @@ -381,7 +386,6 @@ workflow CHIPSEQ { DEEPTOOLS_PLOTHEATMAP ( DEEPTOOLS_COMPUTEMATRIX.out.matrix ) - ch_versions = ch_versions.mix(DEEPTOOLS_PLOTHEATMAP.out.versions.first()) } // @@ -418,7 +422,6 @@ workflow CHIPSEQ { ch_ip_control_bam_bai ) ch_deeptoolsplotfingerprint_multiqc = DEEPTOOLS_PLOTFINGERPRINT.out.matrix - ch_versions = ch_versions.mix(DEEPTOOLS_PLOTFINGERPRINT.out.versions.first()) } // @@ -427,12 +430,15 @@ workflow CHIPSEQ { ch_macs_gsize = Channel.empty() ch_subreadfeaturecounts_multiqc = Channel.empty() ch_macs_gsize = params.macs_gsize + if (!params.macs_gsize) { KHMER_UNIQUEKMERS ( - ch_fasta, + ch_fasta.map { item -> [ [:], item]}, params.read_length ) - ch_macs_gsize = KHMER_UNIQUEKMERS.out.kmers.map { it.text.trim() } + ch_macs_gsize = KHMER_UNIQUEKMERS.out.kmers.map { meta, file -> + file.text.trim()} + ch_macs_gsize.view() } // Create channels: [ meta, ip_bam, control_bam ] @@ -459,7 +465,6 @@ workflow CHIPSEQ { params.skip_peak_annotation, params.skip_peak_qc ) - ch_versions = ch_versions.mix(BAM_PEAKS_CALL_QC_ANNOTATE_MACS3_HOMER.out.versions) // // Consensus peaks analysis @@ -499,7 +504,6 @@ workflow CHIPSEQ { ch_subreadfeaturecounts_multiqc = BED_CONSENSUS_QUANTIFY_QC_BEDTOOLS_FEATURECOUNTS_DESEQ2.out.featurecounts_summary ch_deseq2_pca_multiqc = BED_CONSENSUS_QUANTIFY_QC_BEDTOOLS_FEATURECOUNTS_DESEQ2.out.deseq2_qc_pca_multiqc ch_deseq2_clustering_multiqc = BED_CONSENSUS_QUANTIFY_QC_BEDTOOLS_FEATURECOUNTS_DESEQ2.out.deseq2_qc_dists_multiqc - ch_versions = ch_versions.mix(BED_CONSENSUS_QUANTIFY_QC_BEDTOOLS_FEATURECOUNTS_DESEQ2.out.versions) } // @@ -515,37 +519,19 @@ workflow CHIPSEQ { ch_macs3_consensus_bed_lib.collect{it[1]}.ifEmpty([]), ch_macs3_consensus_txt_lib.collect{it[1]}.ifEmpty([]) ) - ch_versions = ch_versions.mix(IGV.out.versions) } // // Collate and save software versions // - def topic_versions = Channel.topic("versions") - .distinct() - .branch { entry -> - versions_file: entry instanceof Path - versions_tuple: true - } - - def topic_versions_string = topic_versions.versions_tuple - .map { process, tool, version -> - [ process[process.lastIndexOf(':')+1..-1], " ${tool}: ${version}" ] - } - .groupTuple(by:0) - .map { process, tool_versions -> - tool_versions.unique().sort() - "${process}:\n${tool_versions.join('\n')}" - } - - softwareVersionsToYAML(ch_versions.mix(topic_versions.versions_file)) + ch_collated_versions = softwareVersionsToYAML(ch_versions.mix(topic_versions.versions_file)) .mix(topic_versions_string) .collectFile( storeDir: "${params.outdir}/pipeline_info", name: 'nf_core_' + 'chipseq_software_' + 'mqc_' + 'versions.yml', sort: true, newLine: true - ).set { ch_collated_versions } + ) // // MODULE: MultiQC @@ -608,7 +594,6 @@ workflow CHIPSEQ { emit: multiqc_report = ch_multiqc_report.toList() // channel: /path/to/multiqc_report.html - versions = ch_versions // channel: [ path(versions.yml) ] }