diff --git a/CHANGELOG.md b/CHANGELOG.md index b020611b..3613a432 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [v2.2.0dev] +### Added + +- Update all modules to the last version in nf-core/modules ([#92](https://github.com/nf-core/crisprseq/pull/92)) + ## [v2.1.0 - Jamon Salas](https://github.com/nf-core/crisprseq/releases/tag/2.1.0) - [14.11.2023] ### Added diff --git a/modules.json b/modules.json index e396008c..0adbc8ec 100644 --- a/modules.json +++ b/modules.json @@ -7,120 +7,120 @@ "nf-core": { "bowtie2/align": { "branch": "master", - "git_sha": "fe54581f8bed20e4c4a51c616c93fd3379d89820", + "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", "installed_by": ["modules"] }, "bowtie2/build": { "branch": "master", - "git_sha": "6a24fbe314bb2e6fe6306c29a63076ea87e8eb3c", + "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", "installed_by": ["modules"] }, "bwa/index": { "branch": "master", - "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", + "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", "installed_by": ["modules"] }, "bwa/mem": { "branch": "master", - "git_sha": "603ecbd9f45300c9788f197d2a15a005685b4220", + "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", "installed_by": ["modules"] }, "cat/fastq": { "branch": "master", - "git_sha": "5c460c5a4736974abde2843294f35307ee2b0e5e", + "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", "installed_by": ["modules"] }, "crisprcleanr/normalize": { "branch": "master", - "git_sha": "240937a2a9c30298110753292be041188891f2cb", + "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", "installed_by": ["modules"], "patch": "modules/nf-core/crisprcleanr/normalize/crisprcleanr-normalize.diff" }, "custom/dumpsoftwareversions": { "branch": "master", - "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", + "git_sha": "bba7e362e4afead70653f84d8700588ea28d0f9e", "installed_by": ["modules"] }, "cutadapt": { "branch": "master", - "git_sha": "0efbaeb95c58da5a1096c99b5e919bc0c99cc952", + "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", "installed_by": ["modules"], "patch": "modules/nf-core/cutadapt/cutadapt.diff" }, "fastqc": { "branch": "master", - "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", + "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", "installed_by": ["modules"] }, "mageck/count": { "branch": "master", - "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", + "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", "installed_by": ["modules"], "patch": "modules/nf-core/mageck/count/mageck-count.diff" }, "mageck/mle": { "branch": "master", - "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", + "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", "installed_by": ["modules"], "patch": "modules/nf-core/mageck/mle/mageck-mle.diff" }, "mageck/test": { "branch": "master", - "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", + "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", "installed_by": ["modules"], "patch": "modules/nf-core/mageck/test/mageck-test.diff" }, "medaka": { "branch": "master", - "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", + "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", "installed_by": ["modules"], "patch": "modules/nf-core/medaka/medaka.diff" }, "minimap2/align": { "branch": "master", - "git_sha": "603ecbd9f45300c9788f197d2a15a005685b4220", + "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", "installed_by": ["modules"], "patch": "modules/nf-core/minimap2/align/minimap2-align.diff" }, "minimap2/index": { "branch": "master", - "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", + "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", "installed_by": ["modules"] }, "multiqc": { "branch": "master", - "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", + "git_sha": "214d575774c172062924ad3564b4f66655600730", "installed_by": ["modules"] }, "pear": { "branch": "master", - "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", + "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", "installed_by": ["modules"] }, "racon": { "branch": "master", - "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", + "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", "installed_by": ["modules"] }, "samtools/index": { "branch": "master", - "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", + "git_sha": "5394565c5fe4c760e5b35977ec7607c62e81d1f8", "installed_by": ["modules"] }, "seqtk/seq": { "branch": "master", - "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", + "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", "installed_by": ["modules"] }, "vsearch/cluster": { "branch": "master", - "git_sha": "603ecbd9f45300c9788f197d2a15a005685b4220", + "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", "installed_by": ["modules"], "patch": "modules/nf-core/vsearch/cluster/vsearch-cluster.diff" }, "vsearch/sort": { "branch": "master", - "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", + "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", "installed_by": ["modules"] } } diff --git a/modules/nf-core/bowtie2/align/environment.yml b/modules/nf-core/bowtie2/align/environment.yml new file mode 100644 index 00000000..afc3ea87 --- /dev/null +++ b/modules/nf-core/bowtie2/align/environment.yml @@ -0,0 +1,9 @@ +name: bowtie2_align +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::bowtie2=2.4.4 + - bioconda::samtools=1.16.1 + - conda-forge::pigz=2.6 diff --git a/modules/nf-core/bowtie2/align/main.nf b/modules/nf-core/bowtie2/align/main.nf index a77114d2..e67f6a06 100644 --- a/modules/nf-core/bowtie2/align/main.nf +++ b/modules/nf-core/bowtie2/align/main.nf @@ -2,7 +2,7 @@ process BOWTIE2_ALIGN { tag "$meta.id" label "process_high" - conda "bioconda::bowtie2=2.4.4 bioconda::samtools=1.16.1 conda-forge::pigz=2.6" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/mulled-v2-ac74a7f02cebcfcc07d8e8d1d750af9c83b4d45a:a0ffedb52808e102887f6ce600d092675bf3528a-0' : 'biocontainers/mulled-v2-ac74a7f02cebcfcc07d8e8d1d750af9c83b4d45a:a0ffedb52808e102887f6ce600d092675bf3528a-0' }" diff --git a/modules/nf-core/bowtie2/align/meta.yml b/modules/nf-core/bowtie2/align/meta.yml index 60d04c12..e66811d0 100644 --- a/modules/nf-core/bowtie2/align/meta.yml +++ b/modules/nf-core/bowtie2/align/meta.yml @@ -65,3 +65,6 @@ output: authors: - "@joseespinosa" - "@drpatelh" +maintainers: + - "@joseespinosa" + - "@drpatelh" diff --git a/modules/nf-core/bowtie2/build/environment.yml b/modules/nf-core/bowtie2/build/environment.yml new file mode 100644 index 00000000..17af3e50 --- /dev/null +++ b/modules/nf-core/bowtie2/build/environment.yml @@ -0,0 +1,7 @@ +name: bowtie2_build +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::bowtie2=2.4.5 diff --git a/modules/nf-core/bowtie2/build/main.nf b/modules/nf-core/bowtie2/build/main.nf index 069d9c12..3a909716 100644 --- a/modules/nf-core/bowtie2/build/main.nf +++ b/modules/nf-core/bowtie2/build/main.nf @@ -2,10 +2,10 @@ process BOWTIE2_BUILD { tag "$fasta" label 'process_high' - conda "bioconda::bowtie2=2.4.4" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bowtie2:2.4.4--py39hbb4e92a_0' : - 'biocontainers/bowtie2:2.4.4--py39hbb4e92a_0' }" + 'https://depot.galaxyproject.org/singularity/bowtie2:2.4.5--py39hbb4e92a_0' : + 'biocontainers/bowtie2:2.4.5--py39hbb4e92a_0' }" input: tuple val(meta), path(fasta) diff --git a/modules/nf-core/bowtie2/build/meta.yml b/modules/nf-core/bowtie2/build/meta.yml index 0240224d..2d687991 100644 --- a/modules/nf-core/bowtie2/build/meta.yml +++ b/modules/nf-core/bowtie2/build/meta.yml @@ -41,3 +41,6 @@ output: authors: - "@joseespinosa" - "@drpatelh" +maintainers: + - "@joseespinosa" + - "@drpatelh" diff --git a/modules/nf-core/bwa/index/environment.yml b/modules/nf-core/bwa/index/environment.yml new file mode 100644 index 00000000..5d3cb323 --- /dev/null +++ b/modules/nf-core/bwa/index/environment.yml @@ -0,0 +1,7 @@ +name: bwa_index +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::bwa=0.7.17 diff --git a/modules/nf-core/bwa/index/main.nf b/modules/nf-core/bwa/index/main.nf index 8d2e56d9..24b5a2ea 100644 --- a/modules/nf-core/bwa/index/main.nf +++ b/modules/nf-core/bwa/index/main.nf @@ -2,7 +2,7 @@ process BWA_INDEX { tag "$fasta" label 'process_single' - conda "bioconda::bwa=0.7.17" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/bwa:0.7.17--hed695b0_7' : 'biocontainers/bwa:0.7.17--hed695b0_7' }" @@ -18,13 +18,14 @@ process BWA_INDEX { task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${fasta.baseName}" + def args = task.ext.args ?: '' """ mkdir bwa bwa \\ index \\ $args \\ - -p bwa/${fasta.baseName} \\ + -p bwa/${prefix} \\ $fasta cat <<-END_VERSIONS > versions.yml @@ -34,14 +35,15 @@ process BWA_INDEX { """ stub: + def prefix = task.ext.prefix ?: "${fasta.baseName}" """ mkdir bwa - touch bwa/genome.amb - touch bwa/genome.ann - touch bwa/genome.bwt - touch bwa/genome.pac - touch bwa/genome.sa + 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}": diff --git a/modules/nf-core/bwa/index/meta.yml b/modules/nf-core/bwa/index/meta.yml index 2c6cfcd7..730628d0 100644 --- a/modules/nf-core/bwa/index/meta.yml +++ b/modules/nf-core/bwa/index/meta.yml @@ -40,3 +40,6 @@ output: authors: - "@drpatelh" - "@maxulysse" +maintainers: + - "@drpatelh" + - "@maxulysse" diff --git a/modules/nf-core/bwa/index/tests/main.nf.test b/modules/nf-core/bwa/index/tests/main.nf.test new file mode 100644 index 00000000..5fc8d496 --- /dev/null +++ b/modules/nf-core/bwa/index/tests/main.nf.test @@ -0,0 +1,33 @@ +nextflow_process { + + name "Test Process BWA_INDEX" + tag "modules_nfcore" + tag "modules" + tag "bwa" + tag "bwa/index" + script "../main.nf" + process "BWA_INDEX" + + test("BWA index") { + + when { + process { + """ + input[0] = [ + [id: 'test'], + file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + ] + """ + } + } + + then { + 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 new file mode 100644 index 00000000..e51ad5bf --- /dev/null +++ b/modules/nf-core/bwa/index/tests/main.nf.test.snap @@ -0,0 +1,43 @@ +{ + "BWA index": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + [ + "genome.amb:md5,3a68b8b2287e07dd3f5f95f4344ba76e", + "genome.ann:md5,c32e11f6c859f166c7525a9c1d583567", + "genome.bwt:md5,0469c30a1e239dd08f68afe66fde99da", + "genome.pac:md5,983e3d2cd6f36e2546e6d25a0da78d66", + "genome.sa:md5,ab3952cabf026b48cd3eb5bccbb636d1" + ] + ] + ], + "1": [ + "versions.yml:md5,0f20525da90e7489a7ebb02adca3265f" + ], + "index": [ + [ + { + "id": "test" + }, + [ + "genome.amb:md5,3a68b8b2287e07dd3f5f95f4344ba76e", + "genome.ann:md5,c32e11f6c859f166c7525a9c1d583567", + "genome.bwt:md5,0469c30a1e239dd08f68afe66fde99da", + "genome.pac:md5,983e3d2cd6f36e2546e6d25a0da78d66", + "genome.sa:md5,ab3952cabf026b48cd3eb5bccbb636d1" + ] + ] + ], + "versions": [ + "versions.yml:md5,0f20525da90e7489a7ebb02adca3265f" + ] + } + ], + "timestamp": "2023-10-17T17:20:20.180927714" + } +} \ 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 new file mode 100644 index 00000000..28bb483c --- /dev/null +++ b/modules/nf-core/bwa/index/tests/tags.yml @@ -0,0 +1,2 @@ +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 new file mode 100644 index 00000000..401a0d06 --- /dev/null +++ b/modules/nf-core/bwa/mem/environment.yml @@ -0,0 +1,9 @@ +name: bwa_mem +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bwa=0.7.17 + # renovate: datasource=conda depName=bioconda/samtools + - samtools=1.16.1 diff --git a/modules/nf-core/bwa/mem/main.nf b/modules/nf-core/bwa/mem/main.nf index d2f85daf..17e6fbd0 100644 --- a/modules/nf-core/bwa/mem/main.nf +++ b/modules/nf-core/bwa/mem/main.nf @@ -2,7 +2,7 @@ process BWA_MEM { tag "$meta.id" label 'process_high' - conda "bioconda::bwa=0.7.17 bioconda::samtools=1.16.1" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/mulled-v2-fe8faa35dbf6dc65a0f7f5d4ea12e31a79f73e40:219b6c272b25e7e642ae3ff0bf0c5c81a5135ab4-0' : 'biocontainers/mulled-v2-fe8faa35dbf6dc65a0f7f5d4ea12e31a79f73e40:219b6c272b25e7e642ae3ff0bf0c5c81a5135ab4-0' }" @@ -40,4 +40,16 @@ process BWA_MEM { samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') END_VERSIONS """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.bam + + 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 62357bf8..440fb1f9 100644 --- a/modules/nf-core/bwa/mem/meta.yml +++ b/modules/nf-core/bwa/mem/meta.yml @@ -53,3 +53,6 @@ output: authors: - "@drpatelh" - "@jeremy1805" +maintainers: + - "@drpatelh" + - "@jeremy1805" diff --git a/modules/nf-core/bwa/mem/tests/main.nf.test b/modules/nf-core/bwa/mem/tests/main.nf.test new file mode 100644 index 00000000..b199bb70 --- /dev/null +++ b/modules/nf-core/bwa/mem/tests/main.nf.test @@ -0,0 +1,172 @@ +nextflow_process { + + name "Test Process BWA_MEM" + tag "modules_nfcore" + tag "modules" + tag "bwa" + tag "bwa/mem" + script "../main.nf" + process "BWA_MEM" + + test("Single-End") { + + setup { + run("BWA_INDEX") { + script "../../index/main.nf" + process { + """ + input[0] = [ + [id: 'test'], + file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + ] + """ + } + } + } + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:true ], // meta map + [ + file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) + ] + ] + input[1] = BWA_INDEX.out.index + input[2] = false + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("Single-End Sort") { + + setup { + run("BWA_INDEX") { + script "../../index/main.nf" + process { + """ + input[0] = [ + [id: 'test'], + file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + ] + """ + } + } + } + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:true ], // meta map + [ + file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) + ] + ] + input[1] = BWA_INDEX.out.index + input[2] = true + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("Paired-End") { + + setup { + run("BWA_INDEX") { + script "../../index/main.nf" + process { + """ + input[0] = [ + [id: 'test'], + file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + ] + """ + } + } + } + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + [ + 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[1] = BWA_INDEX.out.index + input[2] = false + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("Paired-End Sort") { + + setup { + run("BWA_INDEX") { + script "../../index/main.nf" + process { + """ + input[0] = [ + [id: 'test'], + file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + ] + """ + } + } + } + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + [ + 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[1] = BWA_INDEX.out.index + input[2] = true + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).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 new file mode 100644 index 00000000..ea3bfed4 --- /dev/null +++ b/modules/nf-core/bwa/mem/tests/main.nf.test.snap @@ -0,0 +1,126 @@ +{ + "Single-End": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + "test.bam:md5,3d43027d4163ada97911b814001511e5" + ] + ], + "1": [ + "versions.yml:md5,809f4a8c7f0c8497a9099dab9d6cc71e" + ], + "bam": [ + [ + { + "id": "test", + "single_end": true + }, + "test.bam:md5,3d43027d4163ada97911b814001511e5" + ] + ], + "versions": [ + "versions.yml:md5,809f4a8c7f0c8497a9099dab9d6cc71e" + ] + } + ], + "timestamp": "2023-10-18T11:02:55.420631681" + }, + "Single-End Sort": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + "test.bam:md5,61eac1213d2bf5e88e225e545010e9b8" + ] + ], + "1": [ + "versions.yml:md5,809f4a8c7f0c8497a9099dab9d6cc71e" + ], + "bam": [ + [ + { + "id": "test", + "single_end": true + }, + "test.bam:md5,61eac1213d2bf5e88e225e545010e9b8" + ] + ], + "versions": [ + "versions.yml:md5,809f4a8c7f0c8497a9099dab9d6cc71e" + ] + } + ], + "timestamp": "2023-10-18T11:03:02.646869498" + }, + "Paired-End": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,809ccfe4300fa5005a9d0d4dc09b1a36" + ] + ], + "1": [ + "versions.yml:md5,809f4a8c7f0c8497a9099dab9d6cc71e" + ], + "bam": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,809ccfe4300fa5005a9d0d4dc09b1a36" + ] + ], + "versions": [ + "versions.yml:md5,809f4a8c7f0c8497a9099dab9d6cc71e" + ] + } + ], + "timestamp": "2023-10-18T11:03:09.793041294" + }, + "Paired-End Sort": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,2622f4380f992c505af7dab8c256313f" + ] + ], + "1": [ + "versions.yml:md5,809f4a8c7f0c8497a9099dab9d6cc71e" + ], + "bam": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,2622f4380f992c505af7dab8c256313f" + ] + ], + "versions": [ + "versions.yml:md5,809f4a8c7f0c8497a9099dab9d6cc71e" + ] + } + ], + "timestamp": "2023-10-18T11:04:43.662093286" + } +} \ 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 new file mode 100644 index 00000000..82992d1f --- /dev/null +++ b/modules/nf-core/bwa/mem/tests/tags.yml @@ -0,0 +1,3 @@ +bwa/mem: + - modules/nf-core/bwa/index/** + - modules/nf-core/bwa/mem/** diff --git a/modules/nf-core/cat/fastq/environment.yml b/modules/nf-core/cat/fastq/environment.yml new file mode 100644 index 00000000..bff93add --- /dev/null +++ b/modules/nf-core/cat/fastq/environment.yml @@ -0,0 +1,7 @@ +name: cat_fastq +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - conda-forge::sed=4.7 diff --git a/modules/nf-core/cat/fastq/main.nf b/modules/nf-core/cat/fastq/main.nf index 5021e6fc..3d963784 100644 --- a/modules/nf-core/cat/fastq/main.nf +++ b/modules/nf-core/cat/fastq/main.nf @@ -2,7 +2,7 @@ process CAT_FASTQ { tag "$meta.id" label 'process_single' - conda "conda-forge::sed=4.7" + 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' }" diff --git a/modules/nf-core/cat/fastq/meta.yml b/modules/nf-core/cat/fastq/meta.yml index 8a39e309..db4ac3c7 100644 --- a/modules/nf-core/cat/fastq/meta.yml +++ b/modules/nf-core/cat/fastq/meta.yml @@ -34,7 +34,9 @@ output: type: file description: File containing software versions pattern: "versions.yml" - authors: - "@joseespinosa" - "@drpatelh" +maintainers: + - "@joseespinosa" + - "@drpatelh" diff --git a/modules/nf-core/cat/fastq/tests/main.nf.test b/modules/nf-core/cat/fastq/tests/main.nf.test new file mode 100644 index 00000000..f5f94182 --- /dev/null +++ b/modules/nf-core/cat/fastq/tests/main.nf.test @@ -0,0 +1,143 @@ +nextflow_process { + + name "Test Process CAT_FASTQ" + script "../main.nf" + process "CAT_FASTQ" + tag "modules" + tag "modules_nfcore" + tag "cat" + tag "cat/fastq" + + test("test_cat_fastq_single_end") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = [ + [ id:'test', single_end:true ], // meta map + [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), + file(params.test_data['sarscov2']['illumina']['test2_1_fastq_gz'], checkIfExists: true) ] + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.reads).match() }, + { assert path(process.out.versions.get(0)).getText().contains("cat") } + ) + } + } + + test("test_cat_fastq_paired_end") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), + file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true), + file(params.test_data['sarscov2']['illumina']['test2_1_fastq_gz'], checkIfExists: true), + file(params.test_data['sarscov2']['illumina']['test2_2_fastq_gz'], checkIfExists: true) ] + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.reads).match() }, + { assert path(process.out.versions.get(0)).getText().contains("cat") } + ) + } + } + + test("test_cat_fastq_single_end_same_name") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = [ + [ id:'test', single_end:true ], // meta map + [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), + file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) ] + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.reads).match() }, + { assert path(process.out.versions.get(0)).getText().contains("cat") } + ) + } + } + + test("test_cat_fastq_paired_end_same_name") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), + file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true), + file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), + file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true) ] + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.reads).match() }, + { assert path(process.out.versions.get(0)).getText().contains("cat") } + ) + } + } + + test("test_cat_fastq_single_end_single_file") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = [ + [ id:'test', single_end:true ], // meta map + [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true)] + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.reads).match() }, + { assert path(process.out.versions.get(0)).getText().contains("cat") } + ) + } + } +} diff --git a/modules/nf-core/cat/fastq/tests/main.nf.test.snap b/modules/nf-core/cat/fastq/tests/main.nf.test.snap new file mode 100644 index 00000000..ec2342e5 --- /dev/null +++ b/modules/nf-core/cat/fastq/tests/main.nf.test.snap @@ -0,0 +1,78 @@ +{ + "test_cat_fastq_single_end": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.merged.fastq.gz:md5,f9cf5e375f7de81a406144a2c70cc64d" + ] + ] + ], + "timestamp": "2023-10-17T23:19:12.990284837" + }, + "test_cat_fastq_single_end_same_name": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.merged.fastq.gz:md5,63f817db7a29a03eb538104495556f66" + ] + ] + ], + "timestamp": "2023-10-17T23:19:31.554568147" + }, + "test_cat_fastq_single_end_single_file": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.merged.fastq.gz:md5,e325ef7deb4023447a1f074e285761af" + ] + ] + ], + "timestamp": "2023-10-17T23:19:49.629360033" + }, + "test_cat_fastq_paired_end_same_name": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.merged.fastq.gz:md5,63f817db7a29a03eb538104495556f66", + "test_2.merged.fastq.gz:md5,fe9f266f43a6fc3dcab690a18419a56e" + ] + ] + ] + ], + "timestamp": "2023-10-17T23:19:40.711617539" + }, + "test_cat_fastq_paired_end": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.merged.fastq.gz:md5,f9cf5e375f7de81a406144a2c70cc64d", + "test_2.merged.fastq.gz:md5,77c8e966e130d8c6b6ec9be52fcb2bda" + ] + ] + ] + ], + "timestamp": "2023-10-18T07:53:20.923560211" + } +} \ No newline at end of file diff --git a/modules/nf-core/cat/fastq/tests/tags.yml b/modules/nf-core/cat/fastq/tests/tags.yml new file mode 100644 index 00000000..6ac43614 --- /dev/null +++ b/modules/nf-core/cat/fastq/tests/tags.yml @@ -0,0 +1,2 @@ +cat/fastq: + - modules/nf-core/cat/fastq/** diff --git a/modules/nf-core/crisprcleanr/normalize/environment.yml b/modules/nf-core/crisprcleanr/normalize/environment.yml new file mode 100644 index 00000000..b183c62d --- /dev/null +++ b/modules/nf-core/crisprcleanr/normalize/environment.yml @@ -0,0 +1,7 @@ +name: crisprcleanr_normalize +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::r-crisprcleanr=3.0.0 diff --git a/modules/nf-core/crisprcleanr/normalize/main.nf b/modules/nf-core/crisprcleanr/normalize/main.nf index 0a8bbf44..33e4ecd1 100644 --- a/modules/nf-core/crisprcleanr/normalize/main.nf +++ b/modules/nf-core/crisprcleanr/normalize/main.nf @@ -2,7 +2,7 @@ process CRISPRCLEANR_NORMALIZE { tag "$meta.id" label 'process_medium' - conda "bioconda::r-crisprcleanr=3.0.0" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/r-crisprcleanr:3.0.0--r42hdfd78af_1': 'biocontainers/r-crisprcleanr:3.0.0--r42hdfd78af_1' }" diff --git a/modules/nf-core/crisprcleanr/normalize/meta.yml b/modules/nf-core/crisprcleanr/normalize/meta.yml index d38feb81..e76a414f 100644 --- a/modules/nf-core/crisprcleanr/normalize/meta.yml +++ b/modules/nf-core/crisprcleanr/normalize/meta.yml @@ -13,7 +13,6 @@ tools: tool_dev_url: "https://github.com/francescojm/CRISPRcleanR/tree/v3.0.0" doi: "10.1186/s12864-018-4989-y" licence: "['MIT']" - input: - meta: type: map @@ -28,7 +27,6 @@ input: type: file description: sgRNA library pattern: "*.tsv" - output: - meta: type: map @@ -43,6 +41,7 @@ output: type: file description: normalized count file pattern: "*.tsv" - authors: - "@LaurenceKuhl" +maintainers: + - "@LaurenceKuhl" diff --git a/modules/nf-core/custom/dumpsoftwareversions/environment.yml b/modules/nf-core/custom/dumpsoftwareversions/environment.yml new file mode 100644 index 00000000..f0c63f69 --- /dev/null +++ b/modules/nf-core/custom/dumpsoftwareversions/environment.yml @@ -0,0 +1,7 @@ +name: custom_dumpsoftwareversions +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::multiqc=1.17 diff --git a/modules/nf-core/custom/dumpsoftwareversions/main.nf b/modules/nf-core/custom/dumpsoftwareversions/main.nf index ebc87273..7685b33c 100644 --- a/modules/nf-core/custom/dumpsoftwareversions/main.nf +++ b/modules/nf-core/custom/dumpsoftwareversions/main.nf @@ -2,10 +2,10 @@ process CUSTOM_DUMPSOFTWAREVERSIONS { label 'process_single' // Requires `pyyaml` which does not have a dedicated container but is in the MultiQC container - conda "bioconda::multiqc=1.14" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/multiqc:1.14--pyhdfd78af_0' : - 'biocontainers/multiqc:1.14--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/multiqc:1.17--pyhdfd78af_0' : + 'biocontainers/multiqc:1.17--pyhdfd78af_0' }" input: path versions diff --git a/modules/nf-core/custom/dumpsoftwareversions/meta.yml b/modules/nf-core/custom/dumpsoftwareversions/meta.yml index c32657de..5f15a5fd 100644 --- a/modules/nf-core/custom/dumpsoftwareversions/meta.yml +++ b/modules/nf-core/custom/dumpsoftwareversions/meta.yml @@ -1,4 +1,4 @@ -# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/yaml-schema.json +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json name: custom_dumpsoftwareversions description: Custom module used to dump software versions within the nf-core pipeline template keywords: @@ -16,7 +16,6 @@ input: type: file description: YML file containing software versions pattern: "*.yml" - output: - yml: type: file @@ -30,7 +29,9 @@ output: type: file description: File containing software versions pattern: "versions.yml" - authors: - "@drpatelh" - "@grst" +maintainers: + - "@drpatelh" + - "@grst" diff --git a/modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test b/modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test new file mode 100644 index 00000000..eec1db10 --- /dev/null +++ b/modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test @@ -0,0 +1,38 @@ +nextflow_process { + + name "Test Process CUSTOM_DUMPSOFTWAREVERSIONS" + script "../main.nf" + process "CUSTOM_DUMPSOFTWAREVERSIONS" + tag "modules" + tag "modules_nfcore" + tag "custom" + tag "dumpsoftwareversions" + tag "custom/dumpsoftwareversions" + + test("Should run without failures") { + when { + process { + """ + def tool1_version = ''' + TOOL1: + tool1: 0.11.9 + '''.stripIndent() + + def tool2_version = ''' + TOOL2: + tool2: 1.9 + '''.stripIndent() + + input[0] = Channel.of(tool1_version, tool2_version).collectFile() + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } +} diff --git a/modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test.snap b/modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test.snap new file mode 100644 index 00000000..4274ed57 --- /dev/null +++ b/modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test.snap @@ -0,0 +1,27 @@ +{ + "Should run without failures": { + "content": [ + { + "0": [ + "software_versions.yml:md5,1c851188476409cda5752ce971b20b58" + ], + "1": [ + "software_versions_mqc.yml:md5,2570f4ba271ad08357b0d3d32a9cf84d" + ], + "2": [ + "versions.yml:md5,3843ac526e762117eedf8825b40683df" + ], + "mqc_yml": [ + "software_versions_mqc.yml:md5,2570f4ba271ad08357b0d3d32a9cf84d" + ], + "versions": [ + "versions.yml:md5,3843ac526e762117eedf8825b40683df" + ], + "yml": [ + "software_versions.yml:md5,1c851188476409cda5752ce971b20b58" + ] + } + ], + "timestamp": "2023-11-03T14:43:22.157011" + } +} diff --git a/modules/nf-core/custom/dumpsoftwareversions/tests/tags.yml b/modules/nf-core/custom/dumpsoftwareversions/tests/tags.yml new file mode 100644 index 00000000..405aa24a --- /dev/null +++ b/modules/nf-core/custom/dumpsoftwareversions/tests/tags.yml @@ -0,0 +1,2 @@ +custom/dumpsoftwareversions: + - modules/nf-core/custom/dumpsoftwareversions/** diff --git a/modules/nf-core/cutadapt/environment.yml b/modules/nf-core/cutadapt/environment.yml new file mode 100644 index 00000000..d32a8f97 --- /dev/null +++ b/modules/nf-core/cutadapt/environment.yml @@ -0,0 +1,7 @@ +name: cutadapt +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::cutadapt=3.4 diff --git a/modules/nf-core/cutadapt/main.nf b/modules/nf-core/cutadapt/main.nf index 936c259b..6f2fcd14 100644 --- a/modules/nf-core/cutadapt/main.nf +++ b/modules/nf-core/cutadapt/main.nf @@ -2,7 +2,7 @@ process CUTADAPT { tag "$meta.id" label 'process_medium' - conda "bioconda::cutadapt=3.4" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/cutadapt:3.4--py39h38f01e4_1' : 'biocontainers/cutadapt:3.4--py39h38f01e4_1' }" diff --git a/modules/nf-core/cutadapt/meta.yml b/modules/nf-core/cutadapt/meta.yml index 768bac3a..5ecfe27a 100644 --- a/modules/nf-core/cutadapt/meta.yml +++ b/modules/nf-core/cutadapt/meta.yml @@ -44,3 +44,6 @@ output: authors: - "@drpatelh" - "@kevinmenden" +maintainers: + - "@drpatelh" + - "@kevinmenden" diff --git a/modules/nf-core/fastqc/environment.yml b/modules/nf-core/fastqc/environment.yml new file mode 100644 index 00000000..1787b38a --- /dev/null +++ b/modules/nf-core/fastqc/environment.yml @@ -0,0 +1,7 @@ +name: fastqc +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::fastqc=0.12.1 diff --git a/modules/nf-core/fastqc/main.nf b/modules/nf-core/fastqc/main.nf index 07d5e433..50e59f2b 100644 --- a/modules/nf-core/fastqc/main.nf +++ b/modules/nf-core/fastqc/main.nf @@ -2,10 +2,10 @@ process FASTQC { tag "$meta.id" label 'process_medium' - conda "bioconda::fastqc=0.11.9" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/fastqc:0.11.9--0' : - 'biocontainers/fastqc:0.11.9--0' }" + 'https://depot.galaxyproject.org/singularity/fastqc:0.12.1--hdfd78af_0' : + 'biocontainers/fastqc:0.12.1--hdfd78af_0' }" input: tuple val(meta), path(reads) @@ -29,7 +29,11 @@ process FASTQC { printf "%s %s\\n" $rename_to | while read old_name new_name; do [ -f "\${new_name}" ] || ln -s \$old_name \$new_name done - fastqc $args --threads $task.cpus $renamed_files + + fastqc \\ + $args \\ + --threads $task.cpus \\ + $renamed_files cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/fastqc/meta.yml b/modules/nf-core/fastqc/meta.yml index 4da5bb5a..ee5507e0 100644 --- a/modules/nf-core/fastqc/meta.yml +++ b/modules/nf-core/fastqc/meta.yml @@ -50,3 +50,8 @@ authors: - "@grst" - "@ewels" - "@FelixKrueger" +maintainers: + - "@drpatelh" + - "@grst" + - "@ewels" + - "@FelixKrueger" diff --git a/modules/nf-core/fastqc/tests/main.nf.test b/modules/nf-core/fastqc/tests/main.nf.test new file mode 100644 index 00000000..6437a144 --- /dev/null +++ b/modules/nf-core/fastqc/tests/main.nf.test @@ -0,0 +1,41 @@ +nextflow_process { + + name "Test Process FASTQC" + script "../main.nf" + process "FASTQC" + tag "modules" + tag "modules_nfcore" + tag "fastqc" + + test("Single-Read") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = [ + [ id: 'test', single_end:true ], + [ + file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) + ] + ] + """ + } + } + + then { + assertAll ( + { assert process.success }, + // NOTE The report contains the date inside it, which means that the md5sum is stable per day, but not longer than that. So you can't md5sum it. + // looks like this:
Mon 2 Oct 2023
test.gz
+ // https://github.com/nf-core/modules/pull/3903#issuecomment-1743620039 + { assert process.out.html.get(0).get(1) ==~ ".*/test_fastqc.html" }, + { assert path(process.out.html.get(0).get(1)).getText().contains("File typeConventional base calls") }, + { assert snapshot(process.out.versions).match("versions") }, + { assert process.out.zip.get(0).get(1) ==~ ".*/test_fastqc.zip" } + ) + } + } +} diff --git a/modules/nf-core/fastqc/tests/main.nf.test.snap b/modules/nf-core/fastqc/tests/main.nf.test.snap new file mode 100644 index 00000000..636a32ce --- /dev/null +++ b/modules/nf-core/fastqc/tests/main.nf.test.snap @@ -0,0 +1,10 @@ +{ + "versions": { + "content": [ + [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ] + ], + "timestamp": "2023-10-09T23:40:54+0000" + } +} \ No newline at end of file diff --git a/modules/nf-core/fastqc/tests/tags.yml b/modules/nf-core/fastqc/tests/tags.yml new file mode 100644 index 00000000..7834294b --- /dev/null +++ b/modules/nf-core/fastqc/tests/tags.yml @@ -0,0 +1,2 @@ +fastqc: + - modules/nf-core/fastqc/** diff --git a/modules/nf-core/mageck/count/environment.yml b/modules/nf-core/mageck/count/environment.yml new file mode 100644 index 00000000..0729b284 --- /dev/null +++ b/modules/nf-core/mageck/count/environment.yml @@ -0,0 +1,7 @@ +name: mageck_count +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::mageck=0.5.9 diff --git a/modules/nf-core/mageck/count/mageck-count.diff b/modules/nf-core/mageck/count/mageck-count.diff index 53659a20..0a682374 100644 --- a/modules/nf-core/mageck/count/mageck-count.diff +++ b/modules/nf-core/mageck/count/mageck-count.diff @@ -7,46 +7,44 @@ Changes in module 'nf-core/mageck/count' - label 'process_medium' + label 'process_high' - conda "bioconda::mageck=0.5.9" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? -@@ -12,8 +12,12 @@ +@@ -12,9 +12,12 @@ path(library) output: - tuple val(meta), path("*count*.txt"), emit: count -+ tuple val(meta), path("*count.txt"), emit: count ++ tuple val(meta), path("*count.txt") , emit: count tuple val(meta), path("*.count_normalized.txt"), emit: norm -+ tuple val(meta), path("*.countsummary.txt"), emit: summary +- path "versions.yml" , emit: versions ++ tuple val(meta), path("*.countsummary.txt") , emit: summary + tuple val(meta), path("*.count_normalized.txt"), emit: normalized -+ tuple val(meta), path("*.log"), emit: logs -+ - path "versions.yml" , emit: versions ++ tuple val(meta), path("*.log") , emit: logs ++ path "versions.yml" , emit: versions when: -@@ -22,9 +26,15 @@ + task.ext.when == null || task.ext.when +@@ -22,8 +25,13 @@ script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def input_file = ("$inputfile".endsWith(".fastq.gz")) ? "--fastq ${inputfile}" : "-k ${inputfile}" -+ // def input_file = ("$inputfile".endsWith(".fastq.gz") || "$inputfile".endsWith(".fq.gz")) ? "--fastq ${inputfile}" : "-k ${inputfile}" def sample_label = ("$inputfile".endsWith(".fastq.gz") || "$inputfile".endsWith(".fq.gz")) ? "--sample-label ${meta.id}" : '' -- -+ ++ + if (meta.single_end && ("$inputfile".endsWith(".fastq.gz") || "$inputfile".endsWith(".fq.gz"))) { + input = "--fastq ${inputfile}" + } else { + input = "--fastq ${inputfile[0]} --fastq-2 ${inputfile[1]}" + } -+ + """ mageck \\ - count \\ -@@ -32,7 +42,7 @@ +@@ -32,7 +40,7 @@ -l $library \\ -n $prefix \\ $sample_label \\ - $input_file \\ -+ $input ++ $input \\ cat <<-END_VERSIONS > versions.yml diff --git a/modules/nf-core/mageck/count/main.nf b/modules/nf-core/mageck/count/main.nf index f47ad55e..46136900 100644 --- a/modules/nf-core/mageck/count/main.nf +++ b/modules/nf-core/mageck/count/main.nf @@ -2,7 +2,7 @@ process MAGECK_COUNT { tag "$meta.id" label 'process_high' - conda "bioconda::mageck=0.5.9" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/mageck:0.5.9--py37h6bb024c_0': 'biocontainers/mageck:0.5.9--py37h6bb024c_0' }" @@ -12,12 +12,12 @@ process MAGECK_COUNT { path(library) output: - tuple val(meta), path("*count.txt"), emit: count + tuple val(meta), path("*count.txt") , emit: count tuple val(meta), path("*.count_normalized.txt"), emit: norm - tuple val(meta), path("*.countsummary.txt"), emit: summary + tuple val(meta), path("*.countsummary.txt") , emit: summary tuple val(meta), path("*.count_normalized.txt"), emit: normalized - tuple val(meta), path("*.log"), emit: logs - path "versions.yml", emit: versions + tuple val(meta), path("*.log") , emit: logs + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when @@ -25,15 +25,14 @@ process MAGECK_COUNT { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - // def input_file = ("$inputfile".endsWith(".fastq.gz") || "$inputfile".endsWith(".fq.gz")) ? "--fastq ${inputfile}" : "-k ${inputfile}" def sample_label = ("$inputfile".endsWith(".fastq.gz") || "$inputfile".endsWith(".fq.gz")) ? "--sample-label ${meta.id}" : '' - + if (meta.single_end && ("$inputfile".endsWith(".fastq.gz") || "$inputfile".endsWith(".fq.gz"))) { input = "--fastq ${inputfile}" } else { input = "--fastq ${inputfile[0]} --fastq-2 ${inputfile[1]}" } - + """ mageck \\ count \\ @@ -41,7 +40,7 @@ process MAGECK_COUNT { -l $library \\ -n $prefix \\ $sample_label \\ - $input + $input \\ cat <<-END_VERSIONS > versions.yml diff --git a/modules/nf-core/mageck/count/meta.yml b/modules/nf-core/mageck/count/meta.yml index d091fb11..3e3ad475 100644 --- a/modules/nf-core/mageck/count/meta.yml +++ b/modules/nf-core/mageck/count/meta.yml @@ -10,10 +10,8 @@ tools: description: "MAGeCK (Model-based Analysis of Genome-wide CRISPR-Cas9 Knockout), an algorithm to process, QC, analyze and visualize CRISPR screening data." homepage: "https://sourceforge.net/p/mageck/wiki/Home/" documentation: "https://sourceforge.net/p/mageck/wiki/demo/#step-4-run-the-mageck-count-command" - doi: "10.1186/s13059-014-0554-4" licence: "['BSD License']" - input: - meta: type: map @@ -28,7 +26,6 @@ input: type: file description: library fastq file containing the sgRNA and gene name or count table containing the sgRNA and number of reads to per sample pattern: "*.{fq,fastq,fastq.gz,fq.gz,csv,txt,tsv}" - output: - meta: type: map @@ -47,6 +44,7 @@ output: type: file description: File containing read counts pattern: "*.countsummary.txt" - authors: - "@LaurenceKuhl" +maintainers: + - "@LaurenceKuhl" diff --git a/modules/nf-core/mageck/mle/environment.yml b/modules/nf-core/mageck/mle/environment.yml new file mode 100644 index 00000000..27d8c762 --- /dev/null +++ b/modules/nf-core/mageck/mle/environment.yml @@ -0,0 +1,7 @@ +name: mageck_mle +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::mageck=0.5.9 diff --git a/modules/nf-core/mageck/mle/mageck-mle.diff b/modules/nf-core/mageck/mle/mageck-mle.diff index cba65759..f5d5c324 100644 --- a/modules/nf-core/mageck/mle/mageck-mle.diff +++ b/modules/nf-core/mageck/mle/mageck-mle.diff @@ -7,7 +7,7 @@ Changes in module 'nf-core/mageck/mle' - label 'process_medium' + label 'process_high' - conda "bioconda::mageck=0.5.9" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? @@ -8,8 +8,7 @@ 'biocontainers/mageck:0.5.9--py37h6bb024c_0' }" @@ -19,13 +19,5 @@ Changes in module 'nf-core/mageck/mle' output: tuple val(meta), path("*.gene_summary.txt") , emit: gene_summary -@@ -27,7 +26,6 @@ - mageck \\ - mle \\ - $args \\ -- --threads $task.cpus \\ - -k $count_table \\ - -d $design_matrix \\ - -n $prefix ************************************************************ diff --git a/modules/nf-core/mageck/mle/main.nf b/modules/nf-core/mageck/mle/main.nf index 9c744afe..75ff06f2 100644 --- a/modules/nf-core/mageck/mle/main.nf +++ b/modules/nf-core/mageck/mle/main.nf @@ -2,7 +2,7 @@ process MAGECK_MLE { tag "$meta.id" label 'process_high' - conda "bioconda::mageck=0.5.9" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/mageck:0.5.9--py37h6bb024c_0': 'biocontainers/mageck:0.5.9--py37h6bb024c_0' }" @@ -26,6 +26,7 @@ process MAGECK_MLE { mageck \\ mle \\ $args \\ + --threads $task.cpus \\ -k $count_table \\ -d $design_matrix \\ -n $prefix diff --git a/modules/nf-core/mageck/mle/meta.yml b/modules/nf-core/mageck/mle/meta.yml index 07f55d06..bdb3d0cb 100644 --- a/modules/nf-core/mageck/mle/meta.yml +++ b/modules/nf-core/mageck/mle/meta.yml @@ -12,7 +12,6 @@ tools: tool_dev_url: "https://bitbucket.org/liulab/mageck/src" doi: "10.1186/s13059-015-0843-6" licence: "['BSD License']" - input: - meta: type: map @@ -31,7 +30,6 @@ input: type: file description: Design matrix describing the samples and conditions pattern: "*.{txt,tsv}" - output: - meta: type: map @@ -54,6 +52,7 @@ output: sgRNA summary file describing the sgRNA and associated gene pattern: "*.{gene_summary}" - authors: - "@LaurenceKuhl" +maintainers: + - "@LaurenceKuhl" diff --git a/modules/nf-core/mageck/test/environment.yml b/modules/nf-core/mageck/test/environment.yml new file mode 100644 index 00000000..622038ac --- /dev/null +++ b/modules/nf-core/mageck/test/environment.yml @@ -0,0 +1,7 @@ +name: mageck_test +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::mageck=0.5.9 diff --git a/modules/nf-core/mageck/test/mageck-test.diff b/modules/nf-core/mageck/test/mageck-test.diff index 9da13d3b..e4be2cfc 100644 --- a/modules/nf-core/mageck/test/mageck-test.diff +++ b/modules/nf-core/mageck/test/mageck-test.diff @@ -7,7 +7,7 @@ Changes in module 'nf-core/mageck/test' + tag "${meta.treatment}_${meta.reference}" label 'process_medium' - conda "bioconda::mageck=0.5.9" + conda "${moduleDir}/environment.yml" @@ -14,6 +14,8 @@ tuple val(meta), path("*.gene_summary.txt") , emit: gene_summary tuple val(meta), path("*.sgrna_summary.txt") , emit: sgrna_summary @@ -17,13 +17,12 @@ Changes in module 'nf-core/mageck/test' path "versions.yml" , emit: versions when: -@@ -21,14 +23,18 @@ +@@ -21,14 +23,17 @@ script: def args = task.ext.args ?: '' + def args2 = task.ext.args2 ?: '' def prefix = task.ext.prefix ?: "${meta.id}" -+ """ mageck \\ diff --git a/modules/nf-core/mageck/test/main.nf b/modules/nf-core/mageck/test/main.nf index 78d5f58c..8f954b80 100644 --- a/modules/nf-core/mageck/test/main.nf +++ b/modules/nf-core/mageck/test/main.nf @@ -2,7 +2,7 @@ process MAGECK_TEST { tag "${meta.treatment}_${meta.reference}" label 'process_medium' - conda "bioconda::mageck=0.5.9" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/mageck:0.5.9--py37h6bb024c_0': 'biocontainers/mageck:0.5.9--py37h6bb024c_0' }" @@ -26,7 +26,6 @@ process MAGECK_TEST { def args2 = task.ext.args2 ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - """ mageck \\ test \\ diff --git a/modules/nf-core/mageck/test/meta.yml b/modules/nf-core/mageck/test/meta.yml index 250c7b0d..4749d4d7 100644 --- a/modules/nf-core/mageck/test/meta.yml +++ b/modules/nf-core/mageck/test/meta.yml @@ -12,7 +12,6 @@ tools: tool_dev_url: "https://bitbucket.org/liulab/mageck/src" doi: "10.1186/s13059-015-0843-6" licence: "['BSD License']" - input: - meta: type: map @@ -27,7 +26,6 @@ input: sgRNA name (1st column), target gene (2nd column) and read counts in each sample. pattern: "*.{txt,tsv}" - output: - meta: type: map @@ -56,6 +54,7 @@ output: R script allowing to output plots from main hit genes pattern: "*.R" - authors: - "@LaurenceKuhl" +maintainers: + - "@LaurenceKuhl" diff --git a/modules/nf-core/medaka/environment.yml b/modules/nf-core/medaka/environment.yml new file mode 100644 index 00000000..20e2cbbe --- /dev/null +++ b/modules/nf-core/medaka/environment.yml @@ -0,0 +1,7 @@ +name: medaka +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::medaka=1.4.4 diff --git a/modules/nf-core/medaka/main.nf b/modules/nf-core/medaka/main.nf index 80e4c065..a092aeb3 100644 --- a/modules/nf-core/medaka/main.nf +++ b/modules/nf-core/medaka/main.nf @@ -2,7 +2,7 @@ process MEDAKA { tag "$meta.id" label 'process_high' - conda "bioconda::medaka=1.4.4" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/medaka:1.4.4--py38h130def0_0' : 'biocontainers/medaka:1.4.4--py38h130def0_0' }" diff --git a/modules/nf-core/medaka/meta.yml b/modules/nf-core/medaka/meta.yml index ed124d61..9ed3589d 100644 --- a/modules/nf-core/medaka/meta.yml +++ b/modules/nf-core/medaka/meta.yml @@ -10,9 +10,7 @@ tools: homepage: https://nanoporetech.github.io/medaka/index.html documentation: https://nanoporetech.github.io/medaka/index.html tool_dev_url: https://github.com/nanoporetech/medaka - licence: ["Mozilla Public License 2.0"] - input: - meta: type: map @@ -27,7 +25,6 @@ input: type: file description: Genome assembly pattern: "*.{fasta,fa}" - output: - meta: type: map @@ -42,6 +39,7 @@ output: type: file description: Polished genome assembly pattern: "*.fa.gz" - authors: - "@avantonder" +maintainers: + - "@avantonder" diff --git a/modules/nf-core/medaka/tests/main.nf.test b/modules/nf-core/medaka/tests/main.nf.test new file mode 100644 index 00000000..1c5c55fe --- /dev/null +++ b/modules/nf-core/medaka/tests/main.nf.test @@ -0,0 +1,33 @@ +nextflow_process { + + name "Test Process MEDAKA" + tag "modules_nfcore" + tag "modules" + tag "medaka" + script "../main.nf" + process "MEDAKA" + + test("Medaka") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:true ], // meta map + file(params.test_data['sarscov2']['nanopore']['test_fastq_gz'], checkIfExists: true), + file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/medaka/tests/main.nf.test.snap b/modules/nf-core/medaka/tests/main.nf.test.snap new file mode 100644 index 00000000..d3fcba28 --- /dev/null +++ b/modules/nf-core/medaka/tests/main.nf.test.snap @@ -0,0 +1,33 @@ +{ + "Medaka": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fa.gz:md5,f42303f1d6c2c79175faeb00e10b9a6e" + ] + ], + "1": [ + "versions.yml:md5,739bb00a08faba4029f9f5ab9c15275a" + ], + "assembly": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fa.gz:md5,f42303f1d6c2c79175faeb00e10b9a6e" + ] + ], + "versions": [ + "versions.yml:md5,739bb00a08faba4029f9f5ab9c15275a" + ] + } + ], + "timestamp": "2023-10-18T12:38:17.806031909" + } +} \ No newline at end of file diff --git a/modules/nf-core/medaka/tests/tags.yml b/modules/nf-core/medaka/tests/tags.yml new file mode 100644 index 00000000..dd9fb106 --- /dev/null +++ b/modules/nf-core/medaka/tests/tags.yml @@ -0,0 +1,2 @@ +medaka: + - modules/nf-core/medaka/** diff --git a/modules/nf-core/minimap2/align/environment.yml b/modules/nf-core/minimap2/align/environment.yml new file mode 100644 index 00000000..60b9a8bf --- /dev/null +++ b/modules/nf-core/minimap2/align/environment.yml @@ -0,0 +1,8 @@ +name: minimap2_align +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::minimap2=2.24 + - bioconda::samtools=1.14 diff --git a/modules/nf-core/minimap2/align/main.nf b/modules/nf-core/minimap2/align/main.nf index a607be71..54683a2c 100644 --- a/modules/nf-core/minimap2/align/main.nf +++ b/modules/nf-core/minimap2/align/main.nf @@ -3,7 +3,7 @@ process MINIMAP2_ALIGN { label 'process_medium' // Note: the versions here need to match the versions used in the mulled container below and minimap2/index - conda "bioconda::minimap2=2.24 bioconda::samtools=1.14" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/mulled-v2-66534bcbb7031a148b13e2ad42583020b9cd25c4:1679e915ddb9d6b4abda91880c4b48857d471bd8-0' : 'biocontainers/mulled-v2-66534bcbb7031a148b13e2ad42583020b9cd25c4:1679e915ddb9d6b4abda91880c4b48857d471bd8-0' }" diff --git a/modules/nf-core/minimap2/align/meta.yml b/modules/nf-core/minimap2/align/meta.yml index 991b39a0..81cfd6e2 100644 --- a/modules/nf-core/minimap2/align/meta.yml +++ b/modules/nf-core/minimap2/align/meta.yml @@ -63,3 +63,8 @@ authors: - "@sofstam" - "@sateeshperi" - "@jfy133" +maintainers: + - "@heuermh" + - "@sofstam" + - "@sateeshperi" + - "@jfy133" diff --git a/modules/nf-core/minimap2/align/minimap2-align.diff b/modules/nf-core/minimap2/align/minimap2-align.diff index 9b8e5120..6faf1573 100644 --- a/modules/nf-core/minimap2/align/minimap2-align.diff +++ b/modules/nf-core/minimap2/align/minimap2-align.diff @@ -1,4 +1,19 @@ Changes in module 'nf-core/minimap2/align' +--- modules/nf-core/minimap2/align/meta.yml ++++ modules/nf-core/minimap2/align/meta.yml +@@ -25,11 +25,6 @@ + description: | + List of input FASTA or 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_ref'] + - reference: + type: file + description: | + --- modules/nf-core/minimap2/align/main.nf +++ modules/nf-core/minimap2/align/main.nf @@ -9,8 +9,7 @@ @@ -6,7 +21,7 @@ Changes in module 'nf-core/minimap2/align' input: - tuple val(meta), path(reads) -- path reference +- tuple val(meta2), path(reference) + tuple val(meta), path(reads), path(reference) val bam_format val cigar_paf_format diff --git a/modules/nf-core/minimap2/index/environment.yml b/modules/nf-core/minimap2/index/environment.yml new file mode 100644 index 00000000..2a66e410 --- /dev/null +++ b/modules/nf-core/minimap2/index/environment.yml @@ -0,0 +1,7 @@ +name: minimap2_index +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::minimap2=2.24 diff --git a/modules/nf-core/minimap2/index/main.nf b/modules/nf-core/minimap2/index/main.nf index 7a1bb227..45e1cec0 100644 --- a/modules/nf-core/minimap2/index/main.nf +++ b/modules/nf-core/minimap2/index/main.nf @@ -2,7 +2,7 @@ process MINIMAP2_INDEX { label 'process_medium' // Note: the versions here need to match the versions used in minimap2/align - conda "bioconda::minimap2=2.24" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/minimap2:2.24--h7132678_1' : 'biocontainers/minimap2:2.24--h7132678_1' }" diff --git a/modules/nf-core/minimap2/index/meta.yml b/modules/nf-core/minimap2/index/meta.yml index b58f35c6..1d29e3f2 100644 --- a/modules/nf-core/minimap2/index/meta.yml +++ b/modules/nf-core/minimap2/index/meta.yml @@ -38,3 +38,6 @@ output: authors: - "@yuukiiwa" - "@drpatelh" +maintainers: + - "@yuukiiwa" + - "@drpatelh" diff --git a/modules/nf-core/multiqc/environment.yml b/modules/nf-core/multiqc/environment.yml new file mode 100644 index 00000000..d2a9f21a --- /dev/null +++ b/modules/nf-core/multiqc/environment.yml @@ -0,0 +1,7 @@ +name: multiqc +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::multiqc=1.17 diff --git a/modules/nf-core/multiqc/main.nf b/modules/nf-core/multiqc/main.nf index 1fc387be..2bbc3983 100644 --- a/modules/nf-core/multiqc/main.nf +++ b/modules/nf-core/multiqc/main.nf @@ -1,10 +1,10 @@ process MULTIQC { label 'process_single' - conda "bioconda::multiqc=1.14" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/multiqc:1.14--pyhdfd78af_0' : - 'biocontainers/multiqc:1.14--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/multiqc:1.17--pyhdfd78af_0' : + 'biocontainers/multiqc:1.17--pyhdfd78af_0' }" input: path multiqc_files, stageAs: "?/*" diff --git a/modules/nf-core/multiqc/meta.yml b/modules/nf-core/multiqc/meta.yml index f93b5ee5..f1aa660e 100644 --- a/modules/nf-core/multiqc/meta.yml +++ b/modules/nf-core/multiqc/meta.yml @@ -1,5 +1,5 @@ -# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/yaml-schema.json -name: MultiQC +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json +name: multiqc description: Aggregate results from bioinformatics analyses across many samples into a single report keywords: - QC @@ -13,7 +13,6 @@ tools: homepage: https://multiqc.info/ documentation: https://multiqc.info/docs/ licence: ["GPL-3.0-or-later"] - input: - multiqc_files: type: file @@ -31,7 +30,6 @@ input: type: file description: Optional logo file for MultiQC pattern: "*.{png}" - output: - report: type: file @@ -54,3 +52,8 @@ authors: - "@bunop" - "@drpatelh" - "@jfy133" +maintainers: + - "@abhi18av" + - "@bunop" + - "@drpatelh" + - "@jfy133" diff --git a/modules/nf-core/pear/environment.yml b/modules/nf-core/pear/environment.yml new file mode 100644 index 00000000..127af628 --- /dev/null +++ b/modules/nf-core/pear/environment.yml @@ -0,0 +1,7 @@ +name: pear +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::pear=0.9.6 diff --git a/modules/nf-core/pear/main.nf b/modules/nf-core/pear/main.nf index 5011ec6f..01a38859 100644 --- a/modules/nf-core/pear/main.nf +++ b/modules/nf-core/pear/main.nf @@ -2,7 +2,7 @@ process PEAR { tag "$meta.id" label 'process_low' - conda "bioconda::pear=0.9.6" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/pear:0.9.6--h67092d7_8': 'biocontainers/pear:0.9.6--h67092d7_8' }" diff --git a/modules/nf-core/pear/meta.yml b/modules/nf-core/pear/meta.yml index 4182f81e..1b25bc08 100644 --- a/modules/nf-core/pear/meta.yml +++ b/modules/nf-core/pear/meta.yml @@ -10,7 +10,6 @@ tools: homepage: "https://cme.h-its.org/exelixis/web/software/pear/" documentation: "https://cme.h-its.org/exelixis/web/software/pear/doc.html" licence: "['Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported']" - input: - meta: type: map @@ -21,7 +20,6 @@ input: type: file description: | List of input FastQ files with paired-end reads forward and reverse. - output: - meta: type: map @@ -44,6 +42,7 @@ output: type: file description: FastQ file containing discarded reads. pattern: "*.{fastq.gz}" - authors: - "@mirpedrol" +maintainers: + - "@mirpedrol" diff --git a/modules/nf-core/racon/environment.yml b/modules/nf-core/racon/environment.yml new file mode 100644 index 00000000..abc5d784 --- /dev/null +++ b/modules/nf-core/racon/environment.yml @@ -0,0 +1,7 @@ +name: racon +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::racon=1.4.20 diff --git a/modules/nf-core/racon/main.nf b/modules/nf-core/racon/main.nf index 6d0cceb2..de29e355 100644 --- a/modules/nf-core/racon/main.nf +++ b/modules/nf-core/racon/main.nf @@ -2,7 +2,7 @@ process RACON { tag "$meta.id" label 'process_high' - conda "bioconda::racon=1.4.20" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/racon:1.4.20--h9a82719_1' : 'biocontainers/racon:1.4.20--h9a82719_1' }" diff --git a/modules/nf-core/racon/meta.yml b/modules/nf-core/racon/meta.yml index 2e7737d9..9698c0a8 100644 --- a/modules/nf-core/racon/meta.yml +++ b/modules/nf-core/racon/meta.yml @@ -13,7 +13,6 @@ tools: tool_dev_url: https://github.com/lbcb-sci/racon doi: 10.1101/gr.214270.116 licence: ["MIT"] - input: - meta: type: map @@ -32,7 +31,6 @@ input: type: file description: Alignment in PAF format pattern: "*.paf" - output: - meta: type: map @@ -47,6 +45,7 @@ output: type: file description: Improved genome assembly pattern: "*_assembly_consensus.fasta.gz" - authors: - "@avantonder" +maintainers: + - "@avantonder" diff --git a/modules/nf-core/samtools/index/environment.yml b/modules/nf-core/samtools/index/environment.yml new file mode 100644 index 00000000..3c6f95b2 --- /dev/null +++ b/modules/nf-core/samtools/index/environment.yml @@ -0,0 +1,7 @@ +name: samtools_index +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::samtools=1.17 diff --git a/modules/nf-core/samtools/index/main.nf b/modules/nf-core/samtools/index/main.nf index 0b20aa4b..256bd7c4 100644 --- a/modules/nf-core/samtools/index/main.nf +++ b/modules/nf-core/samtools/index/main.nf @@ -2,7 +2,7 @@ process SAMTOOLS_INDEX { tag "$meta.id" label 'process_low' - conda "bioconda::samtools=1.17" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/samtools:1.17--h00cdaf9_0' : 'biocontainers/samtools:1.17--h00cdaf9_0' }" diff --git a/modules/nf-core/samtools/index/meta.yml b/modules/nf-core/samtools/index/meta.yml index 8bd2fa6f..01a4ee03 100644 --- a/modules/nf-core/samtools/index/meta.yml +++ b/modules/nf-core/samtools/index/meta.yml @@ -51,3 +51,7 @@ authors: - "@drpatelh" - "@ewels" - "@maxulysse" +maintainers: + - "@drpatelh" + - "@ewels" + - "@maxulysse" diff --git a/modules/nf-core/samtools/index/tests/csi.nextflow.config b/modules/nf-core/samtools/index/tests/csi.nextflow.config new file mode 100644 index 00000000..0ed260ef --- /dev/null +++ b/modules/nf-core/samtools/index/tests/csi.nextflow.config @@ -0,0 +1,7 @@ +process { + + withName: SAMTOOLS_INDEX { + ext.args = '-c' + } + +} diff --git a/modules/nf-core/samtools/index/tests/main.nf.test b/modules/nf-core/samtools/index/tests/main.nf.test new file mode 100644 index 00000000..c76a9169 --- /dev/null +++ b/modules/nf-core/samtools/index/tests/main.nf.test @@ -0,0 +1,87 @@ +nextflow_process { + + name "Test Process SAMTOOLS_INDEX" + script "../main.nf" + process "SAMTOOLS_INDEX" + tag "modules" + tag "modules_nfcore" + tag "samtools" + tag "samtools/index" + + test("sarscov2 [BAI]") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) + ] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out.bai).match("bai") }, + { assert path(process.out.versions.get(0)).getText().contains("samtools") } + ) + } + } + + test("homo_sapiens [CRAI]") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.test_data['homo_sapiens']['illumina']['test_paired_end_recalibrated_sorted_cram'], checkIfExists: true) + ] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out.crai).match("crai") }, + { assert path(process.out.versions.get(0)).getText().contains("samtools") } + ) + } + } + + test("homo_sapiens [CSI]") { + + config "./csi.nextflow.config" + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) + ] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert path(process.out.csi.get(0).get(1)).exists() }, + { assert path(process.out.versions.get(0)).getText().contains("samtools") } + ) + } + } +} diff --git a/modules/nf-core/samtools/index/tests/main.nf.test.snap b/modules/nf-core/samtools/index/tests/main.nf.test.snap new file mode 100644 index 00000000..b3baee7f --- /dev/null +++ b/modules/nf-core/samtools/index/tests/main.nf.test.snap @@ -0,0 +1,28 @@ +{ + "crai": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.paired_end.recalibrated.sorted.cram.crai:md5,14bc3bd5c89cacc8f4541f9062429029" + ] + ] + ], + "timestamp": "2023-11-15T15:17:37.30801" + }, + "bai": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.paired_end.sorted.bam.bai:md5,704c10dd1326482448ca3073fdebc2f4" + ] + ] + ], + "timestamp": "2023-11-15T15:17:30.869234" + } +} \ 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 new file mode 100644 index 00000000..e0f58a7a --- /dev/null +++ b/modules/nf-core/samtools/index/tests/tags.yml @@ -0,0 +1,2 @@ +samtools/index: + - modules/nf-core/samtools/index/** diff --git a/modules/nf-core/seqtk/seq/environment.yml b/modules/nf-core/seqtk/seq/environment.yml new file mode 100644 index 00000000..78dc2c84 --- /dev/null +++ b/modules/nf-core/seqtk/seq/environment.yml @@ -0,0 +1,7 @@ +name: seqtk_seq +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::seqtk=1.4 diff --git a/modules/nf-core/seqtk/seq/main.nf b/modules/nf-core/seqtk/seq/main.nf index c2785920..af085f0d 100644 --- a/modules/nf-core/seqtk/seq/main.nf +++ b/modules/nf-core/seqtk/seq/main.nf @@ -2,10 +2,10 @@ process SEQTK_SEQ { tag "$meta.id" label 'process_single' - conda "bioconda::seqtk=1.3" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/seqtk:1.3--h5bf99c6_3' : - 'biocontainers/seqtk:1.3--h5bf99c6_3' }" + 'https://depot.galaxyproject.org/singularity/seqtk:1.4--he4a0461_1' : + 'biocontainers/seqtk:1.4--he4a0461_1' }" input: tuple val(meta), path(fastx) diff --git a/modules/nf-core/seqtk/seq/meta.yml b/modules/nf-core/seqtk/seq/meta.yml index 3986257a..780ccc0c 100644 --- a/modules/nf-core/seqtk/seq/meta.yml +++ b/modules/nf-core/seqtk/seq/meta.yml @@ -2,6 +2,8 @@ name: seqtk_seq description: Common transformation operations on FASTA or FASTQ files. keywords: - seq + - filter + - transformation tools: - seqtk: description: Seqtk is a fast and lightweight tool for processing sequences in the FASTA or FASTQ format. The seqtk seq command enables common transformation operations on FASTA or FASTQ files. @@ -9,7 +11,6 @@ tools: documentation: https://docs.csc.fi/apps/seqtk/ tool_dev_url: https://github.com/lh3/seqtk licence: ["MIT"] - input: - meta: type: map @@ -20,7 +21,6 @@ input: type: file description: A FASTQ or FASTA file pattern: "*.{fastq.gz, fastq, fq, fq.gz, fasta, fastq.gz, fa, fa.gz, fas, fas.gz, fna, fna.gz}" - output: - meta: type: map @@ -35,8 +35,11 @@ output: type: file description: FASTQ/FASTA file containing renamed sequences pattern: "*.{fastq.gz, fasta.gz}" - authors: - "@hseabolt" - "@mjcipriano" - "@sateeshperi" +maintainers: + - "@hseabolt" + - "@mjcipriano" + - "@sateeshperi" diff --git a/modules/nf-core/vsearch/cluster/environment.yml b/modules/nf-core/vsearch/cluster/environment.yml new file mode 100644 index 00000000..965a7fab --- /dev/null +++ b/modules/nf-core/vsearch/cluster/environment.yml @@ -0,0 +1,8 @@ +name: vsearch_cluster +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::vsearch=2.21.1 + - bioconda::samtools=1.16.1 diff --git a/modules/nf-core/vsearch/cluster/main.nf b/modules/nf-core/vsearch/cluster/main.nf index fa2d16d4..0aca4446 100644 --- a/modules/nf-core/vsearch/cluster/main.nf +++ b/modules/nf-core/vsearch/cluster/main.nf @@ -2,7 +2,7 @@ process VSEARCH_CLUSTER { tag "$meta.id" label 'process_low' - conda "bioconda::vsearch=2.21.1 bioconda::samtools=1.16.1" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/mulled-v2-53dae514294fca7b44842b784ed85a5303ac2d80:7b3365d778c690ca79bc85aaaeb86bb39a2dec69-0': 'biocontainers/mulled-v2-53dae514294fca7b44842b784ed85a5303ac2d80:7b3365d778c690ca79bc85aaaeb86bb39a2dec69-0' }" @@ -20,7 +20,7 @@ process VSEARCH_CLUSTER { tuple val(meta), path('*.blast.tsv.gz') , optional: true, emit: blast tuple val(meta), path('*.uc.tsv.gz') , optional: true, emit: uc tuple val(meta), path('*.centroids.fasta.gz') , optional: true, emit: centroids - tuple val(meta), path('*_clusters*') , optional: true, emit: clusters + tuple val(meta), path('*.clusters.fasta*.gz') , optional: true, emit: clusters tuple val(meta), path('*.profile.txt.gz') , optional: true, emit: profile tuple val(meta), path('*.msa.fasta.gz') , optional: true, emit: msa path "versions.yml" , emit: versions @@ -37,16 +37,16 @@ process VSEARCH_CLUSTER { if (!args2.contains("--cluster_fast") && !args2.contains("--cluster_size") && !args2.contains("--cluster_smallmem") && !args2.contains("--cluster_unoise") ) { error "Unknown clustering option provided (${args2})" } - def out_ext = args3.contains("--alnout") ? ".aln" : - args3.contains("--biomout") ? ".biom" : - args3.contains("--blast6out") ? ".blast.tsv" : - args3.contains("--centroids") ? ".centroids.fasta" : - args3.contains("--clusters") ? "_clusters" : - args3.contains("--mothur_shared_out") ? ".mothur.tsv" : - args3.contains("--msaout") ? ".msa.fasta" : - args3.contains("--otutabout") ? ".otu.tsv" : - args3.contains("--profile") ? ".profile.txt" : - args3.contains("--samout") ? ".sam" : + def out_ext = args3.contains("--alnout") ? "aln" : + args3.contains("--biomout") ? "biom" : + args3.contains("--blast6out") ? "blast.tsv" : + args3.contains("--centroids") ? "centroids.fasta" : + args3.contains("--clusters") ? "clusters.fasta" : + args3.contains("--mothur_shared_out") ? "mothur.tsv" : + args3.contains("--msaout") ? "msa.fasta" : + args3.contains("--otutabout") ? "otu.tsv" : + args3.contains("--profile") ? "profile.txt" : + args3.contains("--samout") ? "sam" : args3.contains("--uc") ? "uc.tsv" : args3.contains("--userout") ? "out.tsv" : "" @@ -54,10 +54,20 @@ process VSEARCH_CLUSTER { """ vsearch \\ $args2 $fasta \\ - $args3 ${prefix}${out_ext} \\ + $args3 ${prefix}.${out_ext} \\ --threads $task.cpus \\ $args + if [[ $args3 == "--clusters" ]] + then + : + elif [[ $args3 != "--samout" ]] + then + gzip -n ${prefix}.${out_ext} + else + samtools view -T $fasta -S -b ${prefix}.${out_ext} > ${prefix}.bam + fi + cat <<-END_VERSIONS > versions.yml "${task.process}": vsearch: \$(vsearch --version 2>&1 | head -n 1 | sed 's/vsearch //g' | sed 's/,.*//g' | sed 's/^v//' | sed 's/_.*//') diff --git a/modules/nf-core/vsearch/cluster/meta.yml b/modules/nf-core/vsearch/cluster/meta.yml index 469eb8cd..60d64347 100644 --- a/modules/nf-core/vsearch/cluster/meta.yml +++ b/modules/nf-core/vsearch/cluster/meta.yml @@ -12,7 +12,6 @@ tools: tool_dev_url: https://github.com/torognes/vsearch doi: 10.7717/peerj.2584 licence: ["GPL v3-or-later OR BSD-2-clause"] - input: - meta: type: map @@ -21,7 +20,6 @@ input: type: file description: Sequences to cluster in FASTA format pattern: "*.{fasta,fa,fasta.gz,fa.gz}" - output: - meta: type: map @@ -64,6 +62,7 @@ output: type: file description: File containing software versions pattern: "versions.yml" - authors: - "@mirpedrol" +maintainers: + - "@mirpedrol" diff --git a/modules/nf-core/vsearch/cluster/vsearch-cluster.diff b/modules/nf-core/vsearch/cluster/vsearch-cluster.diff index ff6808ac..8f1977e4 100644 --- a/modules/nf-core/vsearch/cluster/vsearch-cluster.diff +++ b/modules/nf-core/vsearch/cluster/vsearch-cluster.diff @@ -1,59 +1,14 @@ Changes in module 'nf-core/vsearch/cluster' --- modules/nf-core/vsearch/cluster/main.nf +++ modules/nf-core/vsearch/cluster/main.nf -@@ -20,7 +20,7 @@ - tuple val(meta), path('*.blast.tsv.gz') , optional: true, emit: blast - tuple val(meta), path('*.uc.tsv.gz') , optional: true, emit: uc - tuple val(meta), path('*.centroids.fasta.gz') , optional: true, emit: centroids -- tuple val(meta), path('*.clusters.fasta.gz') , optional: true, emit: clusters -+ tuple val(meta), path('*_clusters*') , optional: true, emit: clusters - tuple val(meta), path('*.profile.txt.gz') , optional: true, emit: profile - tuple val(meta), path('*.msa.fasta.gz') , optional: true, emit: msa - path "versions.yml" , emit: versions -@@ -37,16 +37,16 @@ - if (!args2.contains("--cluster_fast") && !args2.contains("--cluster_size") && !args2.contains("--cluster_smallmem") && !args2.contains("--cluster_unoise") ) { - error "Unknown clustering option provided (${args2})" - } -- def out_ext = args3.contains("--alnout") ? "aln" : -- args3.contains("--biomout") ? "biom" : -- args3.contains("--blast6out") ? "blast.tsv" : -- args3.contains("--centroids") ? "centroids.fasta" : -- args3.contains("--clusters") ? "clusters.fasta" : -- args3.contains("--mothur_shared_out") ? "mothur.tsv" : -- args3.contains("--msaout") ? "msa.fasta" : -- args3.contains("--otutabout") ? "otu.tsv" : -- args3.contains("--profile") ? "profile.txt" : -- args3.contains("--samout") ? "sam" : -+ def out_ext = args3.contains("--alnout") ? ".aln" : -+ args3.contains("--biomout") ? ".biom" : -+ args3.contains("--blast6out") ? ".blast.tsv" : -+ args3.contains("--centroids") ? ".centroids.fasta" : -+ args3.contains("--clusters") ? "_clusters" : -+ args3.contains("--mothur_shared_out") ? ".mothur.tsv" : -+ args3.contains("--msaout") ? ".msa.fasta" : -+ args3.contains("--otutabout") ? ".otu.tsv" : -+ args3.contains("--profile") ? ".profile.txt" : -+ args3.contains("--samout") ? ".sam" : - args3.contains("--uc") ? "uc.tsv" : - args3.contains("--userout") ? "out.tsv" : - "" -@@ -54,16 +54,9 @@ - """ - vsearch \\ - $args2 $fasta \\ -- $args3 ${prefix}.${out_ext} \\ -+ $args3 ${prefix}${out_ext} \\ - --threads $task.cpus \\ - $args -- -- if [[ $args3 != "--samout" ]] -- then -- gzip -n ${prefix}.${out_ext} -- else -- samtools view -T $fasta -S -b ${prefix}.${out_ext} > ${prefix}.bam -- fi +@@ -60,7 +60,7 @@ - cat <<-END_VERSIONS > versions.yml - "${task.process}": + if [[ $args3 == "--clusters" ]] + then +- gzip -n ${prefix}.${out_ext}* ++ : + elif [[ $args3 != "--samout" ]] + then + gzip -n ${prefix}.${out_ext} ************************************************************ diff --git a/modules/nf-core/vsearch/sort/environment.yml b/modules/nf-core/vsearch/sort/environment.yml new file mode 100644 index 00000000..dd39854e --- /dev/null +++ b/modules/nf-core/vsearch/sort/environment.yml @@ -0,0 +1,7 @@ +name: vsearch_sort +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::vsearch=2.21.1 diff --git a/modules/nf-core/vsearch/sort/main.nf b/modules/nf-core/vsearch/sort/main.nf index 3496c429..6960ac7f 100644 --- a/modules/nf-core/vsearch/sort/main.nf +++ b/modules/nf-core/vsearch/sort/main.nf @@ -2,7 +2,7 @@ process VSEARCH_SORT { tag "$meta.id" label 'process_low' - conda "bioconda::vsearch=2.21.1" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/vsearch:2.21.1--h95f258a_0': 'biocontainers/vsearch:2.21.1--h95f258a_0' }" diff --git a/modules/nf-core/vsearch/sort/meta.yml b/modules/nf-core/vsearch/sort/meta.yml index 8e75c186..ddf28a30 100644 --- a/modules/nf-core/vsearch/sort/meta.yml +++ b/modules/nf-core/vsearch/sort/meta.yml @@ -16,7 +16,6 @@ tools: tool_dev_url: https://github.com/torognes/vsearch doi: 10.7717/peerj.2584 licence: ["GPL v3-or-later OR BSD-2-clause"] - input: - meta: type: map @@ -29,7 +28,6 @@ input: type: string description: Argument to provide to sort algorithm. Sort by abundance with --sortbysize or by sequence length with --sortbylength. enum: ["--sortbysize", "--sortbylength"] - output: - meta: type: map @@ -44,6 +42,7 @@ output: type: file description: File containing software versions pattern: "versions.yml" - authors: - "@mirpedrol" +maintainers: + - "@mirpedrol"