diff --git a/CHANGELOG.md b/CHANGELOG.md index 50ec3625..70a30572 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 | BiG-SLiCE | | 2.0.2 | | nf-core | 3.3.2 | 4.0.2 | | AMPcombi | 2.0.1 | 3.0.0 | +| GECCO | 0.9.10 | 0.10.1 | ### `Deprecated` diff --git a/modules.json b/modules.json index d21ff37a..55a95b05 100644 --- a/modules.json +++ b/modules.json @@ -62,12 +62,12 @@ }, "bakta/bakta": { "branch": "master", - "git_sha": "72c983560c9b9c2a02ff636451a5e5008f7d020b", + "git_sha": "6d46786420b4d7bc88eba026eb389c0c5535d120", "installed_by": ["modules"] }, "bakta/baktadbdownload": { "branch": "master", - "git_sha": "72c983560c9b9c2a02ff636451a5e5008f7d020b", + "git_sha": "6d46786420b4d7bc88eba026eb389c0c5535d120", "installed_by": ["modules"] }, "bigslice/bigslice": { @@ -107,12 +107,12 @@ }, "gecco/convert": { "branch": "master", - "git_sha": "2aa243bd8a9b20122ed6fb5d2d3c75b963eef171", + "git_sha": "4e22228ad92f91569757aa831b6a1f91f6ffd435", "installed_by": ["modules"] }, "gecco/run": { "branch": "master", - "git_sha": "81880787133db07d9b4c1febd152c090eb8325dc", + "git_sha": "4e22228ad92f91569757aa831b6a1f91f6ffd435", "installed_by": ["modules"] }, "gunzip": { @@ -197,7 +197,7 @@ }, "prokka": { "branch": "master", - "git_sha": "81880787133db07d9b4c1febd152c090eb8325dc", + "git_sha": "2dc23692bd1c3a23a12cfd959808a8fe7e3c6557", "installed_by": ["modules"] }, "pyrodigal": { diff --git a/modules/nf-core/bakta/bakta/main.nf b/modules/nf-core/bakta/bakta/main.nf index 7de3cdc1..59b453da 100644 --- a/modules/nf-core/bakta/bakta/main.nf +++ b/modules/nf-core/bakta/bakta/main.nf @@ -3,9 +3,9 @@ process BAKTA_BAKTA { label 'process_medium' conda "${moduleDir}/environment.yml" - container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + container "${workflow.containerEngine in ['singularity', 'apptainer'] && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/bakta:1.11.4--pyhdfd78af_0' - : 'biocontainers/bakta:1.11.4--pyhdfd78af_0'}" + : 'quay.io/biocontainers/bakta:1.11.4--pyhdfd78af_0'}" input: tuple val(meta), path(fasta) @@ -26,7 +26,7 @@ process BAKTA_BAKTA { tuple val(meta), path("${prefix}.hypotheticals.faa"), emit: hypotheticals_faa tuple val(meta), path("${prefix}.tsv"), emit: tsv tuple val(meta), path("${prefix}.txt"), emit: txt - path "versions.yml", emit: versions + tuple val("${task.process}"), val('bakta'), eval("bakta --version 2>&1 | sed 's/bakta //'"), emit: versions_bakta, topic: versions when: task.ext.when == null || task.ext.when @@ -40,6 +40,8 @@ process BAKTA_BAKTA { def hmms_opt = hmms ? "--hmms ${hmms}" : "" """ + export MPLCONFIGDIR=\$PWD/.matplotlib + bakta \\ ${fasta} \\ ${args} \\ @@ -50,16 +52,13 @@ process BAKTA_BAKTA { ${regions_opt} \\ ${hmms_opt} \\ --db ${db} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bakta: \$(echo \$(bakta --version) 2>&1 | cut -f '2' -d ' ') - END_VERSIONS """ stub: prefix = task.ext.prefix ?: "${meta.id}" """ + export MPLCONFIGDIR=\$PWD/.matplotlib + touch ${prefix}.embl touch ${prefix}.faa touch ${prefix}.ffn @@ -70,10 +69,5 @@ process BAKTA_BAKTA { touch ${prefix}.hypotheticals.faa touch ${prefix}.tsv touch ${prefix}.txt - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bakta: \$(echo \$(bakta --version) 2>&1 | cut -f '2' -d ' ') - END_VERSIONS """ } diff --git a/modules/nf-core/bakta/bakta/meta.yml b/modules/nf-core/bakta/bakta/meta.yml index 1944fbb1..6f4582a7 100644 --- a/modules/nf-core/bakta/bakta/meta.yml +++ b/modules/nf-core/bakta/bakta/meta.yml @@ -6,12 +6,14 @@ keywords: - bacteria tools: - bakta: - description: Rapid & standardized annotation of bacterial genomes, MAGs & plasmids. + description: Rapid & standardized annotation of bacterial genomes, MAGs & + plasmids. homepage: https://github.com/oschwengers/bakta documentation: https://github.com/oschwengers/bakta tool_dev_url: https://github.com/oschwengers/bakta doi: "10.1099/mgen.0.000685" - licence: ["GPL v3"] + licence: + - "GPL v3" identifier: biotools:bakta input: - - meta: @@ -31,10 +33,11 @@ input: description: | Path to the Bakta database directory. Must have amrfinderplus database directory already installed within it (in a directory called 'amrfinderplus-db/'). ontologies: - - edam: http://edamontology.org/data_1049 ## Directory name + - edam: http://edamontology.org/data_1049 # Directory name - proteins: type: file - description: FASTA/GenBank file of trusted proteins to first annotate from (optional) + description: FASTA/GenBank file of trusted proteins to first annotate from + (optional) pattern: "*.{fa,fas,fna,fasta,faa}" ontologies: - edam: http://edamontology.org/format_1929 # FASTA @@ -93,7 +96,6 @@ output: pattern: "*.ffn" ontologies: - edam: http://edamontology.org/format_1929 # FASTA - fna: - - meta: type: map @@ -138,8 +140,8 @@ output: e.g. [ id:'test', single_end:false ] - ${prefix}.hypotheticals.tsv: type: file - description: additional information on hypothetical protein CDS as simple - human readable tab separated values + description: additional information on hypothetical protein CDS as + simple human readable tab separated values pattern: "*.hypotheticals.tsv" ontologies: - edam: http://edamontology.org/format_3475 # TSV @@ -179,13 +181,27 @@ output: pattern: "*.txt" ontologies: - edam: http://edamontology.org/format_3475 # TSV + versions_bakta: + - - ${task.process}: + type: string + description: The name of the process + - bakta: + type: string + description: The name of the tool + - bakta --version 2>&1 | sed 's/bakta //': + 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 + - bakta: + type: string + description: The name of the tool + - bakta --version 2>&1 | sed 's/bakta //': + type: eval + description: The expression to obtain the version of the tool authors: - "@rpetit3" - "@oschwengers" diff --git a/modules/nf-core/bakta/bakta/tests/main.nf.test b/modules/nf-core/bakta/bakta/tests/main.nf.test index 29a5b39d..b41b8ec0 100644 --- a/modules/nf-core/bakta/bakta/tests/main.nf.test +++ b/modules/nf-core/bakta/bakta/tests/main.nf.test @@ -25,7 +25,7 @@ nextflow_process { when { process { - """ + """ input[0] = [ [ id:'test', single_end:false ], // meta map file(params.modules_testdata_base_path + 'genomics/prokaryotes/bacteroides_fragilis/illumina/fasta/test1.contigs.fa.gz', checkIfExists: true) @@ -52,7 +52,7 @@ nextflow_process { { assert path(process.out.hypotheticals_faa.get(0).get(1)).text.contains("MKNLILVLGCFFFLISCQQTEKEKLEELVKNWNGKEVLL") }, { assert path(process.out.tsv.get(0).get(1)).text.contains("SO:0001217, UniRef:UniRef50_A0A0I9S7A3") }, { assert path(process.out.txt.get(0).get(1)).text.contains("Length: 1739120") }, - { assert snapshot(process.out.versions).match("versions") } + { assert snapshot(process.out.findAll { key, val -> key.startsWith('versions') }).match() } ) } @@ -64,7 +64,7 @@ nextflow_process { when { process { - """ + """ input[0] = [[id: 'stub'],file('stub')] input[1] = [] input[2] = [] @@ -78,7 +78,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/bakta/bakta/tests/main.nf.test.snap b/modules/nf-core/bakta/bakta/tests/main.nf.test.snap index 5bc75a3e..1d34eb85 100644 --- a/modules/nf-core/bakta/bakta/tests/main.nf.test.snap +++ b/modules/nf-core/bakta/bakta/tests/main.nf.test.snap @@ -1,102 +1,25 @@ { - "versions": { + "Bakta - bacteroides_fragilis - genome.fasta": { "content": [ - [ - "versions.yml:md5,39d76e345cee9a020d2109d1891c3c0b" - ] + { + "versions_bakta": [ + [ + "BAKTA_BAKTA", + "bakta", + "1.11.4" + ] + ] + } ], + "timestamp": "2026-03-17T21:20:19.285606344", "meta": { - "nf-test": "0.9.2", - "nextflow": "25.04.7" - }, - "timestamp": "2025-10-22T11:18:34.505077069" + "nf-test": "0.9.4", + "nextflow": "26.02.0" + } }, "Bakta - stub": { "content": [ { - "0": [ - [ - { - "id": "stub" - }, - "stub.embl:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "1": [ - [ - { - "id": "stub" - }, - "stub.faa:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "10": [ - "versions.yml:md5,39d76e345cee9a020d2109d1891c3c0b" - ], - "2": [ - [ - { - "id": "stub" - }, - "stub.ffn:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "3": [ - [ - { - "id": "stub" - }, - "stub.fna:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "4": [ - [ - { - "id": "stub" - }, - "stub.gbff:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "5": [ - [ - { - "id": "stub" - }, - "stub.gff3:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "6": [ - [ - { - "id": "stub" - }, - "stub.hypotheticals.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "7": [ - [ - { - "id": "stub" - }, - "stub.hypotheticals.faa:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "8": [ - [ - { - "id": "stub" - }, - "stub.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "9": [ - [ - { - "id": "stub" - }, - "stub.txt:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], "embl": [ [ { @@ -177,15 +100,19 @@ "stub.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,39d76e345cee9a020d2109d1891c3c0b" + "versions_bakta": [ + [ + "BAKTA_BAKTA", + "bakta", + "1.11.4" + ] ] } ], + "timestamp": "2026-03-17T21:20:30.005281737", "meta": { - "nf-test": "0.9.2", - "nextflow": "25.04.7" - }, - "timestamp": "2025-10-22T11:11:23.220239457" + "nf-test": "0.9.4", + "nextflow": "26.02.0" + } } } \ No newline at end of file diff --git a/modules/nf-core/bakta/baktadbdownload/main.nf b/modules/nf-core/bakta/baktadbdownload/main.nf index 36a172b0..60f23ee7 100644 --- a/modules/nf-core/bakta/baktadbdownload/main.nf +++ b/modules/nf-core/bakta/baktadbdownload/main.nf @@ -2,13 +2,13 @@ process BAKTA_BAKTADBDOWNLOAD { label 'process_single' conda "${moduleDir}/environment.yml" - container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + container "${workflow.containerEngine in ['singularity', 'apptainer'] && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/bakta:1.11.4--pyhdfd78af_0' - : 'biocontainers/bakta:1.11.4--pyhdfd78af_0'}" + : 'quay.io/biocontainers/bakta:1.11.4--pyhdfd78af_0'}" output: path "db*", emit: db - path "versions.yml", emit: versions + tuple val("${task.process}"), val('bakta'), eval("bakta --version 2>&1 | sed 's/bakta //'"), emit: versions_bakta, topic: versions when: task.ext.when == null || task.ext.when @@ -16,28 +16,24 @@ process BAKTA_BAKTADBDOWNLOAD { script: def args = task.ext.args ?: '' """ + export MPLCONFIGDIR=\$PWD/.matplotlib + bakta_db \\ download \\ ${args} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bakta: \$(echo \$(bakta_db --version) 2>&1 | cut -f '2' -d ' ') - END_VERSIONS """ stub: def args = task.ext.args ?: '' """ + export MPLCONFIGDIR=\$PWD/.matplotlib + echo "bakta_db \\ download \\ ${args}" - mkdir db - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bakta: \$(echo \$(bakta_db --version) 2>&1 | cut -f '2' -d ' ') - END_VERSIONS + mkdir -p db + touch db/version.json + touch db/bakta.db """ } diff --git a/modules/nf-core/bakta/baktadbdownload/meta.yml b/modules/nf-core/bakta/baktadbdownload/meta.yml index 103d38ff..22c8bc99 100644 --- a/modules/nf-core/bakta/baktadbdownload/meta.yml +++ b/modules/nf-core/bakta/baktadbdownload/meta.yml @@ -9,26 +9,43 @@ keywords: - download tools: - bakta: - description: Rapid & standardized annotation of bacterial genomes, MAGs & plasmids + description: Rapid & standardized annotation of bacterial genomes, MAGs & + plasmids homepage: https://github.com/oschwengers/bakta documentation: https://github.com/oschwengers/bakta tool_dev_url: https://github.com/oschwengers/bakta doi: "10.1099/mgen.0.000685" - licence: ["GPL v3"] + licence: + - "GPL v3" identifier: biotools:bakta +input: [] output: db: - db*: type: directory description: BAKTA database directory pattern: "db*/" + versions_bakta: + - - ${task.process}: + type: string + description: The name of the process + - bakta: + type: string + description: The name of the tool + - bakta --version 2>&1 | sed 's/bakta //': + 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 + - bakta: + type: string + description: The name of the tool + - bakta --version 2>&1 | sed 's/bakta //': + type: eval + description: The expression to obtain the version of the tool authors: - "@jfy133" - "@jasmezz" diff --git a/modules/nf-core/bakta/baktadbdownload/tests/main.nf.test b/modules/nf-core/bakta/baktadbdownload/tests/main.nf.test index a5f827f9..cb91d8f9 100644 --- a/modules/nf-core/bakta/baktadbdownload/tests/main.nf.test +++ b/modules/nf-core/bakta/baktadbdownload/tests/main.nf.test @@ -23,14 +23,14 @@ nextflow_process { assertAll( { assert process.success }, { assert path(process.out.db.get(0)).exists() }, - { assert snapshot(process.out.versions).match() } + { assert snapshot(process.out.findAll { key, val -> key.startsWith('versions') }).match() } ) } } test("Bakta database download - stub") { - + options "-stub" when { @@ -43,10 +43,7 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot( - process.out.db + - process.out.versions - ).match() } + { assert snapshot(sanitizeOutput(process.out)).match() } ) } diff --git a/modules/nf-core/bakta/baktadbdownload/tests/main.nf.test.snap b/modules/nf-core/bakta/baktadbdownload/tests/main.nf.test.snap index 0d6e2aac..e4a42eff 100644 --- a/modules/nf-core/bakta/baktadbdownload/tests/main.nf.test.snap +++ b/modules/nf-core/bakta/baktadbdownload/tests/main.nf.test.snap @@ -1,29 +1,44 @@ { "Bakta database download": { "content": [ - [ - "versions.yml:md5,e6f280a0deb9981dbf7f1d6270ab0908" - ] + { + "versions_bakta": [ + [ + "BAKTA_BAKTADBDOWNLOAD", + "bakta", + "1.11.4" + ] + ] + } ], + "timestamp": "2026-03-17T21:23:17.513160347", "meta": { - "nf-test": "0.9.2", - "nextflow": "25.04.7" - }, - "timestamp": "2025-10-22T11:28:20.601164502" + "nf-test": "0.9.4", + "nextflow": "26.02.0" + } }, "Bakta database download - stub": { "content": [ - [ - [ - + { + "db": [ + [ + "bakta.db:md5,d41d8cd98f00b204e9800998ecf8427e", + "version.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], - "versions.yml:md5,e6f280a0deb9981dbf7f1d6270ab0908" - ] + "versions_bakta": [ + [ + "BAKTA_BAKTADBDOWNLOAD", + "bakta", + "1.11.4" + ] + ] + } ], + "timestamp": "2026-03-18T10:36:34.397679686", "meta": { - "nf-test": "0.9.2", - "nextflow": "25.04.7" - }, - "timestamp": "2025-10-22T11:28:26.466451602" + "nf-test": "0.9.4", + "nextflow": "26.02.0" + } } } \ No newline at end of file diff --git a/modules/nf-core/gecco/convert/environment.yml b/modules/nf-core/gecco/convert/environment.yml index 7eefcd9e..02d423b7 100644 --- a/modules/nf-core/gecco/convert/environment.yml +++ b/modules/nf-core/gecco/convert/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::gecco=0.10.0 + - bioconda::gecco=0.10.1 diff --git a/modules/nf-core/gecco/convert/main.nf b/modules/nf-core/gecco/convert/main.nf index f1022d5f..1f5aa2e6 100644 --- a/modules/nf-core/gecco/convert/main.nf +++ b/modules/nf-core/gecco/convert/main.nf @@ -3,9 +3,9 @@ process GECCO_CONVERT { label 'process_low' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/gecco:0.10.0--pyhdfd78af_0': - 'biocontainers/gecco:0.10.0--pyhdfd78af_0' }" + container "${ workflow.containerEngine in ['singularity', 'apptainer'] && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/gecco:0.10.1--pyhdfd78af_0': + 'quay.io/biocontainers/gecco:0.10.1--pyhdfd78af_0' }" input: tuple val(meta), path(clusters), path(gbk) @@ -13,44 +13,36 @@ process GECCO_CONVERT { val(format) output: - tuple val(meta), path("*.gff") , emit: gff , optional: true - tuple val(meta), path("*.region*.gbk"), emit: bigslice, optional: true - tuple val(meta), path("*.faa") , emit: faa , optional: true - tuple val(meta), path("*.fna") , emit: fna , optional: true - path "versions.yml" , emit: versions + tuple val(meta), path("${prefix}/*.gff") , emit: gff , optional: true + tuple val(meta), path("${prefix}/*.region*.gbk"), emit: bigslice, optional: true + tuple val(meta), path("${prefix}/*.faa") , emit: faa , optional: true + tuple val(meta), path("${prefix}/*.fna") , emit: fna , optional: true + tuple val("${task.process}"), val('gecco'), eval("gecco -V |& sed 's/gecco //'"), emit: versions_gecco, topic: versions when: task.ext.when == null || task.ext.when script: def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" // IMPORTANT: -o ${prefix} does not work in 0.10.0 + prefix = task.ext.prefix ?: "${meta.id}" """ gecco \\ convert \\ - $args \\ - --jobs $task.cpus \\ - $mode \\ + ${args} \\ + --jobs ${task.cpus} \\ + ${mode} \\ --input-dir ./ \\ - --format ${format} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - gecco: \$(echo \$(gecco --version) | cut -f 2 -d ' ' ) - END_VERSIONS + --format ${format} \\ + --output ${prefix} """ stub: def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" + prefix = task.ext.prefix ?: "${meta.id}" """ echo $args - touch ${prefix}.gff - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - gecco: \$(echo \$(gecco --version) | cut -f 2 -d ' ' ) - END_VERSIONS + mkdir ${prefix} + touch ${prefix}/${prefix}.gff """ } diff --git a/modules/nf-core/gecco/convert/meta.yml b/modules/nf-core/gecco/convert/meta.yml index bf58cb52..2b17dd11 100644 --- a/modules/nf-core/gecco/convert/meta.yml +++ b/modules/nf-core/gecco/convert/meta.yml @@ -19,9 +19,9 @@ tools: documentation: "https://gecco.embl.de" tool_dev_url: "https://github.com/zellerlab/GECCO" doi: "10.1101/2021.05.03.442509" - licence: ["GPL v3"] + licence: + - "GPL v3" identifier: "" - input: - - meta: type: map @@ -44,12 +44,19 @@ input: - edam: "http://edamontology.org/format_1936" # GenBank - mode: type: string - description: Either clusters or gbk folder output, depending on what is reformatted - enum: ["clusters", "gbk"] + description: Either clusters or gbk folder output, depending on what is + reformatted + enum: + - "clusters" + - "gbk" - format: type: string description: Format for the output file - enum: ["gff", "bigslice", "faa", "fna"] + enum: + - "gff" + - "bigslice" + - "faa" + - "fna" output: gff: - - meta: @@ -57,7 +64,7 @@ output: description: | Groovy Map containing sample information e.g. `[ id:'sample1' ]` - - "*.gff": + - ${prefix}/*.gff: type: file description: | GFF3 converted cluster tables containing the position @@ -71,7 +78,7 @@ output: description: | Groovy Map containing sample information e.g. `[ id:'sample1' ]` - - "*.region*.gbk": + - ${prefix}/*.region*.gbk: type: file description: | Converted and aliased GenBank files so that they can be loaded by BiG-SLiCE @@ -84,7 +91,7 @@ output: description: | Groovy Map containing sample information e.g. `[ id:'sample1' ]` - - "*.faa": + - ${prefix}/*.faa: type: file description: | Amino-acid FASTA converted GenBank files of all the proteins in a cluster @@ -97,21 +104,34 @@ output: description: | Groovy Map containing sample information e.g. `[ id:'sample1' ]` - - "*.fna": + - ${prefix}/*.fna: type: file description: | Nucleotide sequence FASTA converted GenBank files from the cluster pattern: "*.fna" ontologies: - edam: "http://edamontology.org/format_1929" # FASTA + versions_gecco: + - - ${task.process}: + type: string + description: The name of the process + - gecco: + type: string + description: The name of the tool + - gecco -V |& sed 's/gecco //': + 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 + - gecco: + type: string + description: The name of the tool + - gecco -V |& sed 's/gecco //': + type: eval + description: The expression to obtain the version of the tool authors: - "@vagkaratzas" maintainers: diff --git a/modules/nf-core/gecco/convert/tests/main.nf.test b/modules/nf-core/gecco/convert/tests/main.nf.test index 769a1a87..7c0a082a 100644 --- a/modules/nf-core/gecco/convert/tests/main.nf.test +++ b/modules/nf-core/gecco/convert/tests/main.nf.test @@ -16,7 +16,7 @@ nextflow_process { process { """ input[0] = [ - [ id:'test_gecco', single_end:true ], // meta map + [ id:'test_gecco' ], file(params.modules_testdata_base_path + 'genomics/prokaryotes/candidatus_portiera_aleyrodidarum/genome/genome.fasta', checkIfExists: true), [] ] @@ -32,11 +32,11 @@ nextflow_process { process { """ input[0] = GECCO_RUN.out.clusters - .mix(GECCO_RUN.out.gbk) - .groupTuple(by:0) - .map { meta, paths -> - [meta, paths[0], paths[1]] - } + .mix(GECCO_RUN.out.gbk) + .groupTuple(by:0) + .map { meta, paths -> + [meta, paths[0], paths[1]] + } input[1] = "clusters" input[2] = "gff" """ @@ -46,10 +46,7 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot( - process.out.gff, - process.out.versions.collect{ path(it).yaml } - ).match() } + { assert snapshot(sanitizeOutput(process.out)).match() } ) } @@ -61,11 +58,11 @@ nextflow_process { process { """ input[0] = GECCO_RUN.out.clusters - .mix(GECCO_RUN.out.gbk) - .groupTuple(by:0) - .map { meta, paths -> - [meta, paths[0], paths[1]] - } + .mix(GECCO_RUN.out.gbk) + .groupTuple(by:0) + .map { meta, paths -> + [meta, paths[0], paths[1]] + } input[1] = "gbk" input[2] = "faa" """ @@ -75,10 +72,7 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot( - process.out.faa, - process.out.versions.collect{ path(it).yaml } - ).match() } + { assert snapshot(sanitizeOutput(process.out)).match() } ) } @@ -92,11 +86,11 @@ nextflow_process { process { """ input[0] = GECCO_RUN.out.clusters - .mix(GECCO_RUN.out.gbk) - .groupTuple(by:0) - .map { meta, paths -> - [meta, paths[0], paths[1]] - } + .mix(GECCO_RUN.out.gbk) + .groupTuple(by:0) + .map { meta, paths -> + [meta, paths[0], paths[1]] + } input[1] = "clusters" input[2] = "gff" """ @@ -106,10 +100,7 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot( - process.out, - process.out.versions.collect{ path(it).yaml } - ).match() } + { assert snapshot(sanitizeOutput(process.out)).match() } ) } diff --git a/modules/nf-core/gecco/convert/tests/main.nf.test.snap b/modules/nf-core/gecco/convert/tests/main.nf.test.snap index 96ce6a8c..36fbd6de 100644 --- a/modules/nf-core/gecco/convert/tests/main.nf.test.snap +++ b/modules/nf-core/gecco/convert/tests/main.nf.test.snap @@ -1,78 +1,77 @@ { "candidatus_portiera_aleyrodidarum - gbk - faa": { "content": [ - [ - [ - { - "id": "test_gecco", - "single_end": true - }, - "NC_018507.1_cluster_1.faa:md5,82c70d6273c21eadf2d16f5fcdcd5e7f" + { + "bigslice": [ + + ], + "faa": [ + [ + { + "id": "test_gecco" + }, + "NC_018507.1_cluster_1.faa:md5,82c70d6273c21eadf2d16f5fcdcd5e7f" + ] + ], + "fna": [ + + ], + "gff": [ + + ], + "versions_gecco": [ + [ + "GECCO_CONVERT", + "gecco", + "0.10.1" + ] ] - ], - [ - { - "GECCO_CONVERT": { - "gecco": "0.10.0" - } - } - ] + } ], + "timestamp": "2026-05-11T05:25:38.876338304", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.0" - }, - "timestamp": "2025-11-09T09:00:23.11547703" + "nf-test": "0.9.5", + "nextflow": "26.04.0" + } }, "candidatus_portiera_aleyrodidarum - clusters - gff": { - "content": [ - [ - [ - { - "id": "test_gecco", - "single_end": true - }, - "test_gecco.clusters.gff:md5,21437cce86b3880f2c4d41798563d0df" - ] - ], - [ - { - "GECCO_CONVERT": { - "gecco": "0.10.0" - } - } - ] - ], - "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.0" - }, - "timestamp": "2025-11-09T09:00:08.211056173" - }, - "candidatus_portiera_aleyrodidarum - clusters - gff - stub": { "content": [ { - "0": [ - [ - { - "id": "test_gecco", - "single_end": true - }, - "test_gecco.gff:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "1": [ + "bigslice": [ ], - "2": [ + "faa": [ ], - "3": [ + "fna": [ ], - "4": [ - "versions.yml:md5,86c663d3d9423b28361d384e9146c0a7" + "gff": [ + [ + { + "id": "test_gecco" + }, + "test_gecco.clusters.gff:md5,224aa9da12d71ab26ec51efa9314ce84" + ] ], + "versions_gecco": [ + [ + "GECCO_CONVERT", + "gecco", + "0.10.1" + ] + ] + } + ], + "timestamp": "2026-05-11T05:25:17.889904431", + "meta": { + "nf-test": "0.9.5", + "nextflow": "26.04.0" + } + }, + "candidatus_portiera_aleyrodidarum - clusters - gff - stub": { + "content": [ + { "bigslice": [ ], @@ -85,28 +84,24 @@ "gff": [ [ { - "id": "test_gecco", - "single_end": true + "id": "test_gecco" }, "test_gecco.gff:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,86c663d3d9423b28361d384e9146c0a7" + "versions_gecco": [ + [ + "GECCO_CONVERT", + "gecco", + "0.10.1" + ] ] - }, - [ - { - "GECCO_CONVERT": { - "gecco": "0.10.0" - } - } - ] + } ], + "timestamp": "2026-05-11T05:25:49.289218883", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.04.8" - }, - "timestamp": "2025-11-09T08:28:53.159566209" + "nf-test": "0.9.5", + "nextflow": "26.04.0" + } } } \ No newline at end of file diff --git a/modules/nf-core/gecco/run/environment.yml b/modules/nf-core/gecco/run/environment.yml index bb47bc85..02d423b7 100644 --- a/modules/nf-core/gecco/run/environment.yml +++ b/modules/nf-core/gecco/run/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::gecco=0.9.10 + - bioconda::gecco=0.10.1 diff --git a/modules/nf-core/gecco/run/main.nf b/modules/nf-core/gecco/run/main.nf index 04399d14..64338470 100644 --- a/modules/nf-core/gecco/run/main.nf +++ b/modules/nf-core/gecco/run/main.nf @@ -3,9 +3,9 @@ process GECCO_RUN { label 'process_low' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/gecco:0.9.10--pyhdfd78af_0': - 'biocontainers/gecco:0.9.10--pyhdfd78af_0' }" + container "${ workflow.containerEngine in ['singularity', 'apptainer'] && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/gecco:0.10.1--pyhdfd78af_0': + 'quay.io/biocontainers/gecco:0.10.1--pyhdfd78af_0' }" input: tuple val(meta), path(input), path(hmm) @@ -17,8 +17,7 @@ process GECCO_RUN { tuple val(meta), path("*.clusters.tsv") , optional: true, emit: clusters tuple val(meta), path("*_cluster_*.gbk"), optional: true, emit: gbk tuple val(meta), path("*.json") , optional: true, emit: json - - path "versions.yml" , emit: versions + tuple val("${task.process}"), val('gecco'), eval("gecco -V |& sed 's/gecco //'"), emit: versions_gecco, topic: versions when: task.ext.when == null || task.ext.when @@ -31,22 +30,16 @@ process GECCO_RUN { """ gecco \\ run \\ - $args \\ - -j $task.cpus \\ + ${args} \\ + -j ${task.cpus} \\ -o ./ \\ -g ${input} \\ - $custom_model \\ - $custom_hmm + ${custom_model} \\ + ${custom_hmm} for i in \$(find -name '${input.baseName}*' -type f); do mv \$i \${i/${input.baseName}/${prefix}}; done - - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - gecco: \$(echo \$(gecco --version) | cut -f 2 -d ' ' ) - END_VERSIONS """ stub: @@ -56,10 +49,5 @@ process GECCO_RUN { touch ${prefix}.features.tsv touch ${prefix}.clusters.tsv touch NC_018507.1_cluster_1.gbk - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - gecco: \$(echo \$(gecco --version) | cut -f 2 -d ' ' ) - END_VERSIONS """ } diff --git a/modules/nf-core/gecco/run/meta.yml b/modules/nf-core/gecco/run/meta.yml index 6a557cea..a6f6c53b 100644 --- a/modules/nf-core/gecco/run/meta.yml +++ b/modules/nf-core/gecco/run/meta.yml @@ -1,7 +1,7 @@ name: "gecco_run" -description: GECCO is a fast and scalable method for identifying putative novel Biosynthetic - Gene Clusters (BGCs) in genomic and metagenomic data using Conditional Random Fields - (CRFs). +description: GECCO is a fast and scalable method for identifying putative novel + Biosynthetic Gene Clusters (BGCs) in genomic and metagenomic data using + Conditional Random Fields (CRFs). keywords: - bgc - detection @@ -14,7 +14,8 @@ tools: documentation: "https://gecco.embl.de" tool_dev_url: "https://github.com/zellerlab/GECCO" doi: "10.1101/2021.05.03.442509" - licence: ["GPL v3"] + licence: + - "GPL v3" identifier: "" input: - - meta: @@ -24,31 +25,36 @@ input: e.g. [ id:'test', single_end:false ] - input: type: file - description: A genomic file containing one or more sequences as input. Input - type is any supported by Biopython (fasta, gbk, etc.) + description: A genomic file containing one or more sequences as input. + Input type is any supported by Biopython (fasta, gbk, etc.) pattern: "*" + ontologies: [] - hmm: type: file description: Alternative HMM file(s) to use in HMMER format pattern: "*.hmm" - - - model_dir: - type: directory - description: Path to an alternative CRF (Conditional Random Fields) module to - use + ontologies: + - edam: http://edamontology.org/format_1370 + - model_dir: + type: directory + description: Path to an alternative CRF (Conditional Random Fields) module + to use output: - - genes: - - meta: + genes: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - "*.genes.tsv": type: file - description: TSV file containing detected/predicted genes with BGC probability - scores. Will not be generated if no hits are found. + description: TSV file containing detected/predicted genes with BGC + probability scores. Will not be generated if no hits are found. pattern: "*.genes.tsv" - - features: - - meta: + ontologies: + - edam: http://edamontology.org/format_3475 + features: + - - meta: type: map description: | Groovy Map containing sample information @@ -57,44 +63,68 @@ output: type: file description: TSV file containing identified domains pattern: "*.features.tsv" - - clusters: - - meta: + ontologies: + - edam: http://edamontology.org/format_3475 + clusters: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - "*.clusters.tsv": type: file - description: TSV file containing coordinates of predicted clusters and BGC types. Will - not be generated if no hits are found. + description: TSV file containing coordinates of predicted clusters and + BGC types. Will not be generated if no hits are found. pattern: "*.clusters.tsv" - - gbk: - - meta: + ontologies: + - edam: http://edamontology.org/format_3475 + gbk: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - "*_cluster_*.gbk": type: file - description: Per cluster GenBank file (if found) containing sequence with annotations. - Will not be generated if no hits are found. + description: Per cluster GenBank file (if found) containing sequence + with annotations. Will not be generated if no hits are found. pattern: "*.gbk" - - json: - - meta: + ontologies: + - edam: "http://edamontology.org/format_1936" + json: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - "*.json": type: file - description: AntiSMASH v6 sideload JSON file (if --antismash-sideload) supplied. - Will not be generated if no hits are found. + description: AntiSMASH v6 sideload JSON file (if --antismash-sideload) + supplied. Will not be generated if no hits are found. pattern: "*.gbk" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: + - edam: "http://edamontology.org/format_1936" + versions_gecco: + - - ${task.process}: + type: string + description: The name of the process + - gecco: + type: string + description: The name of the tool + - gecco -V |& sed 's/gecco //': + type: eval + description: The expression to obtain the version of the tool +topics: + versions: + - - ${task.process}: + type: string + description: The name of the process + - gecco: + type: string + description: The name of the tool + - gecco -V |& sed 's/gecco //': + type: eval + description: The expression to obtain the version of the tool authors: - "@jfy133" maintainers: diff --git a/modules/nf-core/gecco/run/tests/main.nf.test b/modules/nf-core/gecco/run/tests/main.nf.test index 002a8e84..29c65c4e 100644 --- a/modules/nf-core/gecco/run/tests/main.nf.test +++ b/modules/nf-core/gecco/run/tests/main.nf.test @@ -15,7 +15,7 @@ nextflow_process { process { """ input[0] = [ - [ id:'test', single_end:false ], // meta map + [ id:'test' ], file(params.modules_testdata_base_path + 'genomics/prokaryotes/candidatus_portiera_aleyrodidarum/genome/genome.fasta', checkIfExists: true), [] ] @@ -27,13 +27,8 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot( - process.out.genes + - process.out.features + - process.out.clusters + - process.out.versions - ).match() }, - { assert path(process.out.gbk.get(0).get(1)).text.contains("MVKNDIDILILGGGCTGLSLAYYLSFLPNTVRIFLIENKFIYNND") } + { assert snapshot(sanitizeOutput(process.out, unstableKeys: ["gbk"])).match() }, + { assert path(process.out.gbk[0][1]).text.contains("MVKNDIDILILGGGCTGLSLAYYLSFLPNTVRIFLIENKFIYNND") } ) } @@ -47,7 +42,7 @@ nextflow_process { process { """ input[0] = [ - [ id:'test', single_end:false ], // meta map + [ id:'test' ], file(params.modules_testdata_base_path + 'genomics/prokaryotes/candidatus_portiera_aleyrodidarum/genome/genome.fasta', checkIfExists: true), [] ] @@ -59,7 +54,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/gecco/run/tests/main.nf.test.snap b/modules/nf-core/gecco/run/tests/main.nf.test.snap index aec1cd52..651c2441 100644 --- a/modules/nf-core/gecco/run/tests/main.nf.test.snap +++ b/modules/nf-core/gecco/run/tests/main.nf.test.snap @@ -1,87 +1,64 @@ { "gecco/run - candidatus_portiera_aleyrodidarum - genome_fasta": { - "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test.genes.tsv:md5,2338b99d9b77200e9a071941ad8bb3ac" - ], - [ - { - "id": "test", - "single_end": false - }, - "test.features.tsv:md5,dcd929c60337b4835729d886897cdd36" - ], - [ - { - "id": "test", - "single_end": false - }, - "test.clusters.tsv:md5,84a10da0afff6e2085d8296db69eb8b0" - ], - "versions.yml:md5,3ade04da8c7c1f46cdf07ecb0334a777" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-05-29T13:44:10.071851827" - }, - "gecco/run - candidatus_portiera_aleyrodidarum - genome_fasta - stub": { "content": [ { - "0": [ + "clusters": [ [ { - "id": "test", - "single_end": false + "id": "test" }, - "test.genes.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.clusters.tsv:md5,84a10da0afff6e2085d8296db69eb8b0" ] ], - "1": [ + "features": [ [ { - "id": "test", - "single_end": false + "id": "test" }, - "test.features.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.features.tsv:md5,dcd929c60337b4835729d886897cdd36" ] ], - "2": [ + "gbk": [ [ { - "id": "test", - "single_end": false + "id": "test" }, - "test.clusters.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + "NC_018507.1_cluster_1.gbk" ] ], - "3": [ + "genes": [ [ { - "id": "test", - "single_end": false + "id": "test" }, - "NC_018507.1_cluster_1.gbk:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.genes.tsv:md5,2338b99d9b77200e9a071941ad8bb3ac" ] ], - "4": [ + "json": [ ], - "5": [ - "versions.yml:md5,3ade04da8c7c1f46cdf07ecb0334a777" - ], + "versions_gecco": [ + [ + "GECCO_RUN", + "gecco", + "0.10.1" + ] + ] + } + ], + "timestamp": "2026-05-11T05:34:32.232528829", + "meta": { + "nf-test": "0.9.5", + "nextflow": "26.04.0" + } + }, + "gecco/run - candidatus_portiera_aleyrodidarum - genome_fasta - stub": { + "content": [ + { "clusters": [ [ { - "id": "test", - "single_end": false + "id": "test" }, "test.clusters.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -89,8 +66,7 @@ "features": [ [ { - "id": "test", - "single_end": false + "id": "test" }, "test.features.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -98,8 +74,7 @@ "gbk": [ [ { - "id": "test", - "single_end": false + "id": "test" }, "NC_018507.1_cluster_1.gbk:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -107,8 +82,7 @@ "genes": [ [ { - "id": "test", - "single_end": false + "id": "test" }, "test.genes.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -116,15 +90,19 @@ "json": [ ], - "versions": [ - "versions.yml:md5,3ade04da8c7c1f46cdf07ecb0334a777" + "versions_gecco": [ + [ + "GECCO_RUN", + "gecco", + "0.10.1" + ] ] } ], + "timestamp": "2026-05-11T05:34:41.156812882", "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-22T22:07:47.729614386" + "nf-test": "0.9.5", + "nextflow": "26.04.0" + } } } \ No newline at end of file diff --git a/modules/nf-core/gecco/run/tests/tags.yml b/modules/nf-core/gecco/run/tests/tags.yml deleted file mode 100644 index 1542bcca..00000000 --- a/modules/nf-core/gecco/run/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -gecco/run: - - "modules/nf-core/gecco/run/**" diff --git a/modules/nf-core/prokka/environment.yml b/modules/nf-core/prokka/environment.yml index b4687037..20e4dabe 100644 --- a/modules/nf-core/prokka/environment.yml +++ b/modules/nf-core/prokka/environment.yml @@ -6,3 +6,4 @@ channels: dependencies: - bioconda::prokka=1.14.6 - conda-forge::openjdk=8.0.412 + - conda-forge::parallel=20241122 diff --git a/modules/nf-core/prokka/main.nf b/modules/nf-core/prokka/main.nf index bf5e64fc..efc34893 100644 --- a/modules/nf-core/prokka/main.nf +++ b/modules/nf-core/prokka/main.nf @@ -3,7 +3,7 @@ process PROKKA { label 'process_low' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + container "${ workflow.containerEngine in ['singularity', 'apptainer'] && !task.ext.singularity_pull_docker_container ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/3a/3af46b047c8fe84112adeaecf300878217c629b97f111f923ecf327656ddd141/data' : 'community.wave.seqera.io/library/prokka_openjdk:10546cadeef11472' }" @@ -25,7 +25,7 @@ process PROKKA { tuple val(meta), path("${prefix}/*.log"), emit: log tuple val(meta), path("${prefix}/*.txt"), emit: txt tuple val(meta), path("${prefix}/*.tsv"), emit: tsv - path "versions.yml" , emit: versions + tuple val("${task.process}"), val('prokka'), eval("prokka --version 2>&1 | sed 's/^.*prokka //'"), topic: versions, emit: versions_prokka when: task.ext.when == null || task.ext.when @@ -50,11 +50,6 @@ process PROKKA { ${input} ${cleanup} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - prokka: \$(echo \$(prokka --version 2>&1) | sed 's/^.*prokka //') - END_VERSIONS """ stub: @@ -74,10 +69,5 @@ process PROKKA { touch ${prefix}/${prefix}.txt touch ${prefix}/${prefix}.tsv touch ${prefix}/${prefix}.gff - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - prokka: \$(echo \$(prokka --version 2>&1) | sed 's/^.*prokka //') - END_VERSIONS """ } diff --git a/modules/nf-core/prokka/meta.yml b/modules/nf-core/prokka/meta.yml index 90745735..b8ba0d8f 100644 --- a/modules/nf-core/prokka/meta.yml +++ b/modules/nf-core/prokka/meta.yml @@ -1,5 +1,6 @@ name: prokka -description: Whole genome annotation of small genomes (bacterial, archeal, viral) +description: Whole genome annotation of small genomes (bacterial, archeal, + viral) keywords: - annotation - fasta @@ -9,7 +10,8 @@ tools: description: Rapid annotation of prokaryotic genomes homepage: https://github.com/tseemann/prokka doi: "10.1093/bioinformatics/btu153" - licence: ["GPL v2"] + licence: + - "GPL v2" identifier: biotools:prokka input: - - meta: @@ -21,35 +23,43 @@ input: type: file description: | FASTA file to be annotated. Has to contain at least a non-empty string dummy value. - - - proteins: - type: file - description: FASTA file of trusted proteins to first annotate from (optional) - - - prodigal_tf: - type: file - description: Training file to use for Prodigal (optional) + ontologies: [] + - proteins: + type: file + description: FASTA file of trusted proteins to first annotate from + (optional) + ontologies: [] + - prodigal_tf: + type: file + description: Training file to use for Prodigal (optional) + ontologies: [] output: - - gff: - - meta: + gff: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - ${prefix}/*.gff: type: file - description: annotation in GFF3 format, containing both sequences and annotations + description: annotation in GFF3 format, containing both sequences and + annotations pattern: "*.{gff}" - - gbk: - - meta: + ontologies: [] + gbk: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - ${prefix}/*.gbk: type: file - description: annotation in GenBank format, containing both sequences and annotations + description: annotation in GenBank format, containing both sequences and + annotations pattern: "*.{gbk}" - - fna: - - meta: + ontologies: [] + fna: + - - meta: type: map description: | Groovy Map containing sample information @@ -58,8 +68,9 @@ output: type: file description: nucleotide FASTA file of the input contig sequences pattern: "*.{fna}" - - faa: - - meta: + ontologies: [] + faa: + - - meta: type: map description: | Groovy Map containing sample information @@ -68,19 +79,21 @@ output: type: file description: protein FASTA file of the translated CDS sequences pattern: "*.{faa}" - - ffn: - - meta: + ontologies: [] + ffn: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - ${prefix}/*.ffn: type: file - description: nucleotide FASTA file of all the prediction transcripts (CDS, rRNA, - tRNA, tmRNA, misc_RNA) + description: nucleotide FASTA file of all the prediction transcripts + (CDS, rRNA, tRNA, tmRNA, misc_RNA) pattern: "*.{ffn}" - - sqn: - - meta: + ontologies: [] + sqn: + - - meta: type: map description: | Groovy Map containing sample information @@ -89,29 +102,33 @@ output: type: file description: an ASN1 format "Sequin" file for submission to Genbank pattern: "*.{sqn}" - - fsa: - - meta: + ontologies: [] + fsa: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - ${prefix}/*.fsa: type: file - description: nucleotide FASTA file of the input contig sequences, used by "tbl2asn" - to create the .sqn file + description: nucleotide FASTA file of the input contig sequences, used + by "tbl2asn" to create the .sqn file pattern: "*.{fsa}" - - tbl: - - meta: + ontologies: [] + tbl: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - ${prefix}/*.tbl: type: file - description: feature Table file, used by "tbl2asn" to create the .sqn file + description: feature Table file, used by "tbl2asn" to create the .sqn + file pattern: "*.{tbl}" - - err: - - meta: + ontologies: [] + err: + - - meta: type: map description: | Groovy Map containing sample information @@ -120,8 +137,9 @@ output: type: file description: unacceptable annotations - the NCBI discrepancy report. pattern: "*.{err}" - - log: - - meta: + ontologies: [] + log: + - - meta: type: map description: | Groovy Map containing sample information @@ -130,8 +148,9 @@ output: type: file description: contains all the output that Prokka produced during its run pattern: "*.{log}" - - txt: - - meta: + ontologies: [] + txt: + - - meta: type: map description: | Groovy Map containing sample information @@ -140,21 +159,41 @@ output: type: file description: statistics relating to the annotated features found pattern: "*.{txt}" - - tsv: - - meta: + ontologies: [] + tsv: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - ${prefix}/*.tsv: type: file - description: tab-separated file of all features (locus_tag,ftype,len_bp,gene,EC_number,COG,product) + description: tab-separated file of all features + (locus_tag,ftype,len_bp,gene,EC_number,COG,product) pattern: "*.{tsv}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3475 + versions_prokka: + - - ${task.process}: + type: string + description: The name of the process + - prokka: + type: string + description: The name of the tool + - prokka --version 2>&1 | sed 's/^.*prokka //': + type: eval + description: The expression to obtain the version of the tool +topics: + versions: + - - ${task.process}: + type: string + description: The name of the process + - prokka: + type: string + description: The name of the tool + - prokka --version 2>&1 | sed 's/^.*prokka //': + type: eval + description: The expression to obtain the version of the tool authors: - "@rpetit3" maintainers: diff --git a/modules/nf-core/prokka/tests/main.nf.test b/modules/nf-core/prokka/tests/main.nf.test index 68150b33..e9dd855b 100644 --- a/modules/nf-core/prokka/tests/main.nf.test +++ b/modules/nf-core/prokka/tests/main.nf.test @@ -26,22 +26,7 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert path(process.out.gbk.get(0).get(1)).exists() }, - { assert path(process.out.log.get(0).get(1)).exists() }, - { assert path(process.out.sqn.get(0).get(1)).exists() }, - { assert snapshot( - process.out.gff, - process.out.fna, - process.out.faa, - process.out.ffn, - process.out.fsa, - process.out.tbl, - process.out.err, - process.out.txt, - process.out.tsv, - process.out.versions - ).match() - } + { assert snapshot(sanitizeOutput(process.out, unstableKeys:["gbk", "log", "sqn"])).match()} ) } @@ -65,22 +50,7 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert path(process.out.gbk.get(0).get(1)).exists() }, - { assert path(process.out.log.get(0).get(1)).exists() }, - { assert path(process.out.sqn.get(0).get(1)).exists() }, - { assert snapshot( - process.out.gff, - process.out.fna, - process.out.faa, - process.out.ffn, - process.out.fsa, - process.out.tbl, - process.out.err, - process.out.txt, - process.out.tsv, - process.out.versions - ).match() - } + { assert snapshot(sanitizeOutput(process.out, unstableKeys:["gbk", "log", "sqn"])).match()} ) } @@ -106,7 +76,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/prokka/tests/main.nf.test.snap b/modules/nf-core/prokka/tests/main.nf.test.snap index 35713a8f..830d6cda 100644 --- a/modules/nf-core/prokka/tests/main.nf.test.snap +++ b/modules/nf-core/prokka/tests/main.nf.test.snap @@ -1,304 +1,259 @@ { "Prokka - sarscov2 - genome.fasta": { "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test.gff:md5,5dbfb8fcf2db020564c16045976a0933" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.fna:md5,787307f29a263e5657cc276ebbf7e2b3" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.faa:md5,a4ceda83262b3c222a6b1f508fb9e24b" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.ffn:md5,80f474b5367b7ea5ed23791935f65e34" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.fsa:md5,71bbefcb7f12046bcd3263f58cfd5404" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.tbl:md5,d8f816a066ced94b62d9618b13fb8add" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.err:md5,b3daedc646fddd422824e2b3e5e9229d" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.txt:md5,b40e485ffc8eaf1feacf8d79d9751a33" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.tsv:md5,da7c720c3018c5081d6a70b517b7d450" + { + "err": [ + [ + { + "id": "test", + "single_end": false + }, + "test.err:md5,b3daedc646fddd422824e2b3e5e9229d" + ] + ], + "faa": [ + [ + { + "id": "test", + "single_end": false + }, + "test.faa:md5,a4ceda83262b3c222a6b1f508fb9e24b" + ] + ], + "ffn": [ + [ + { + "id": "test", + "single_end": false + }, + "test.ffn:md5,80f474b5367b7ea5ed23791935f65e34" + ] + ], + "fna": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fna:md5,787307f29a263e5657cc276ebbf7e2b3" + ] + ], + "fsa": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fsa:md5,71bbefcb7f12046bcd3263f58cfd5404" + ] + ], + "gbk": [ + [ + { + "id": "test", + "single_end": false + }, + "test.gbk" + ] + ], + "gff": [ + [ + { + "id": "test", + "single_end": false + }, + "test.gff:md5,5dbfb8fcf2db020564c16045976a0933" + ] + ], + "log": [ + [ + { + "id": "test", + "single_end": false + }, + "test.log" + ] + ], + "sqn": [ + [ + { + "id": "test", + "single_end": false + }, + "test.sqn" + ] + ], + "tbl": [ + [ + { + "id": "test", + "single_end": false + }, + "test.tbl:md5,d8f816a066ced94b62d9618b13fb8add" + ] + ], + "tsv": [ + [ + { + "id": "test", + "single_end": false + }, + "test.tsv:md5,da7c720c3018c5081d6a70b517b7d450" + ] + ], + "txt": [ + [ + { + "id": "test", + "single_end": false + }, + "test.txt:md5,b40e485ffc8eaf1feacf8d79d9751a33" + ] + ], + "versions_prokka": [ + [ + "PROKKA", + "prokka", + "1.14.6" + ] ] - ], - [ - "versions.yml:md5,e83a22fe02167e290d90853b45650db9" - ] + } ], + "timestamp": "2026-05-23T16:24:30.853426", "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" - }, - "timestamp": "2024-07-30T12:34:20.447734" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } }, "Prokka - sarscov2 - genome.fasta.gz": { - "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test.gff:md5,5dbfb8fcf2db020564c16045976a0933" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.fna:md5,787307f29a263e5657cc276ebbf7e2b3" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.faa:md5,a4ceda83262b3c222a6b1f508fb9e24b" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.ffn:md5,80f474b5367b7ea5ed23791935f65e34" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.fsa:md5,71bbefcb7f12046bcd3263f58cfd5404" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.tbl:md5,d8f816a066ced94b62d9618b13fb8add" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.err:md5,b3daedc646fddd422824e2b3e5e9229d" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.txt:md5,b40e485ffc8eaf1feacf8d79d9751a33" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.tsv:md5,da7c720c3018c5081d6a70b517b7d450" - ] - ], - [ - "versions.yml:md5,e83a22fe02167e290d90853b45650db9" - ] - ], - "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.3" - }, - "timestamp": "2024-12-19T09:48:05.110188714" - }, - "Prokka - sarscov2 - stub": { "content": [ { - "0": [ + "err": [ [ { "id": "test", "single_end": false }, - "test.gff:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.err:md5,b3daedc646fddd422824e2b3e5e9229d" ] ], - "1": [ + "faa": [ [ { "id": "test", "single_end": false }, - "test.gbk:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.faa:md5,a4ceda83262b3c222a6b1f508fb9e24b" ] ], - "10": [ + "ffn": [ [ { "id": "test", "single_end": false }, - "test.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.ffn:md5,80f474b5367b7ea5ed23791935f65e34" ] ], - "11": [ + "fna": [ [ { "id": "test", "single_end": false }, - "test.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.fna:md5,787307f29a263e5657cc276ebbf7e2b3" ] ], - "12": [ - "versions.yml:md5,e83a22fe02167e290d90853b45650db9" - ], - "2": [ + "fsa": [ [ { "id": "test", "single_end": false }, - "test.fna:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.fsa:md5,71bbefcb7f12046bcd3263f58cfd5404" ] ], - "3": [ + "gbk": [ [ { "id": "test", "single_end": false }, - "test.faa:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.gbk" ] ], - "4": [ + "gff": [ [ { "id": "test", "single_end": false }, - "test.ffn:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.gff:md5,5dbfb8fcf2db020564c16045976a0933" ] ], - "5": [ + "log": [ [ { "id": "test", "single_end": false }, - "test.sqn:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.log" ] ], - "6": [ + "sqn": [ [ { "id": "test", "single_end": false }, - "test.fsa:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.sqn" ] ], - "7": [ + "tbl": [ [ { "id": "test", "single_end": false }, - "test.tbl:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.tbl:md5,d8f816a066ced94b62d9618b13fb8add" ] ], - "8": [ + "tsv": [ [ { "id": "test", "single_end": false }, - "test.err:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.tsv:md5,da7c720c3018c5081d6a70b517b7d450" ] ], - "9": [ + "txt": [ [ { "id": "test", "single_end": false }, - "test.log:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.txt:md5,b40e485ffc8eaf1feacf8d79d9751a33" ] ], + "versions_prokka": [ + [ + "PROKKA", + "prokka", + "1.14.6" + ] + ] + } + ], + "timestamp": "2026-05-23T16:24:46.194236", + "meta": { + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } + }, + "Prokka - sarscov2 - stub": { + "content": [ + { "err": [ [ { @@ -407,15 +362,19 @@ "test.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,e83a22fe02167e290d90853b45650db9" + "versions_prokka": [ + [ + "PROKKA", + "prokka", + "1.14.6" + ] ] } ], + "timestamp": "2026-05-23T16:24:51.703195", "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.3" - }, - "timestamp": "2025-01-06T10:51:57.362187225" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } } } \ No newline at end of file diff --git a/modules/nf-core/prokka/tests/tags.yml b/modules/nf-core/prokka/tests/tags.yml deleted file mode 100644 index a2dc7bdc..00000000 --- a/modules/nf-core/prokka/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -prokka: - - "modules/nf-core/prokka/**" diff --git a/subworkflows/local/annotation.nf b/subworkflows/local/annotation.nf index 6b9623c4..9c269e17 100644 --- a/subworkflows/local/annotation.nf +++ b/subworkflows/local/annotation.nf @@ -75,7 +75,6 @@ workflow ANNOTATION { else if (params.annotation_tool == "prokka") { PROKKA(fasta, [], []) - ch_versions = ch_versions.mix(PROKKA.out.versions) ch_multiqc_files = PROKKA.out.txt.collect { it[1] }.ifEmpty([]) ch_annotation_faa = PROKKA.out.faa ch_annotation_fna = PROKKA.out.fna @@ -91,7 +90,6 @@ workflow ANNOTATION { } else { BAKTA_BAKTADBDOWNLOAD() - ch_versions = ch_versions.mix(BAKTA_BAKTADBDOWNLOAD.out.versions) ch_bakta_db = BAKTA_BAKTADBDOWNLOAD.out.db } @@ -111,7 +109,6 @@ workflow ANNOTATION { [], ch_bakta_hmm, ) - ch_versions = ch_versions.mix(BAKTA_BAKTA.out.versions) ch_multiqc_files = BAKTA_BAKTA.out.txt.collect { it[1] }.ifEmpty([]) ch_annotation_faa = BAKTA_BAKTA.out.faa ch_annotation_fna = BAKTA_BAKTA.out.fna diff --git a/subworkflows/local/bgc.nf b/subworkflows/local/bgc.nf index 52f44530..287bea40 100644 --- a/subworkflows/local/bgc.nf +++ b/subworkflows/local/bgc.nf @@ -97,7 +97,6 @@ workflow BGC { } GECCO_RUN(ch_gecco_input, []) - ch_versions = ch_versions.mix(GECCO_RUN.out.versions) ch_geccoresults_for_combgc = GECCO_RUN.out.gbk .mix(GECCO_RUN.out.clusters) .groupTuple() @@ -116,7 +115,6 @@ workflow BGC { } GECCO_CONVERT(ch_gecco_clusters_and_gbk, params.bgc_gecco_convertmode, params.bgc_gecco_convertformat) - ch_versions = ch_versions.mix(GECCO_CONVERT.out.versions) } // BIGSLICE