From eb8ca64c90d57d52f622405ec7c1ac34a48c8534 Mon Sep 17 00:00:00 2001 From: vagkaratzas Date: Tue, 21 Oct 2025 12:49:16 +0100 Subject: [PATCH 1/3] swapping pyrodigal from local to nf-core --- .../pyrodigal/environment.yml | 8 - modules/ebi-metagenomics/pyrodigal/main.nf | 59 ------ modules/ebi-metagenomics/pyrodigal/meta.yml | 83 --------- .../pyrodigal/tests/main.nf.test | 112 ------------ .../pyrodigal/tests/main.nf.test.snap | 171 ------------------ .../ebi-metagenomics/pyrodigal/tests/tags.yml | 2 - modules/nf-core | 1 + .../combined_gene_caller/main.nf | 5 +- .../combined_gene_caller/meta.yml | 4 +- .../combined_gene_caller/tests/main.nf.test | 24 ++- .../combined_gene_caller/tests/tags.yml | 2 - 11 files changed, 29 insertions(+), 442 deletions(-) delete mode 100644 modules/ebi-metagenomics/pyrodigal/environment.yml delete mode 100644 modules/ebi-metagenomics/pyrodigal/main.nf delete mode 100644 modules/ebi-metagenomics/pyrodigal/meta.yml delete mode 100644 modules/ebi-metagenomics/pyrodigal/tests/main.nf.test delete mode 100644 modules/ebi-metagenomics/pyrodigal/tests/main.nf.test.snap delete mode 100644 modules/ebi-metagenomics/pyrodigal/tests/tags.yml create mode 120000 modules/nf-core delete mode 100644 subworkflows/ebi-metagenomics/combined_gene_caller/tests/tags.yml diff --git a/modules/ebi-metagenomics/pyrodigal/environment.yml b/modules/ebi-metagenomics/pyrodigal/environment.yml deleted file mode 100644 index 26be9f32..00000000 --- a/modules/ebi-metagenomics/pyrodigal/environment.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- -# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json -channels: - - conda-forge - - bioconda -dependencies: - - bioconda::pyrodigal=3.6.3 - - conda-forge::pigz=2.8 diff --git a/modules/ebi-metagenomics/pyrodigal/main.nf b/modules/ebi-metagenomics/pyrodigal/main.nf deleted file mode 100644 index 6e1b248c..00000000 --- a/modules/ebi-metagenomics/pyrodigal/main.nf +++ /dev/null @@ -1,59 +0,0 @@ -process PYRODIGAL { - tag "$meta.id" - label 'process_medium' - - conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/mulled-v2-2fe9a8ce513c91df34b43a6610df94c3a2eb3bd0:da1134ad604a59a6f439bdcc3f6df690eba47e9a-0': - 'biocontainers/mulled-v2-2fe9a8ce513c91df34b43a6610df94c3a2eb3bd0:da1134ad604a59a6f439bdcc3f6df690eba47e9a-0' }" - - input: - tuple val(meta), path(fasta) - val(output_format) - - output: - tuple val(meta), path("*.${output_format}.gz") , emit: annotations - tuple val(meta), path("*.fna.gz") , emit: fna - tuple val(meta), path("*.faa.gz") , emit: faa - tuple val(meta), path("*.score.gz") , emit: score - path "versions.yml" , emit: versions - - when: - task.ext.when == null || task.ext.when - - script: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" - """ - pigz -cdf ${fasta} | pyrodigal \\ - -j ${task.cpus} \\ - $args \\ - -f $output_format \\ - -o "${prefix}.${output_format}" \\ - -d ${prefix}.fna \\ - -a ${prefix}.faa \\ - -s ${prefix}.score - - pigz -nmf ${prefix}* - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - pyrodigal: \$(echo \$(pyrodigal --version 2>&1 | sed 's/pyrodigal v//')) - END_VERSIONS - """ - stub: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" - """ - touch ${prefix}.${output_format}.gz - touch ${prefix}.fna.gz - touch ${prefix}.faa.gz - touch ${prefix}.score.gz - touch versions.yml - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - pyrodigal: \$(echo \$(pyrodigal --version 2>&1 | sed 's/pyrodigal v//')) - END_VERSIONS - """ -} diff --git a/modules/ebi-metagenomics/pyrodigal/meta.yml b/modules/ebi-metagenomics/pyrodigal/meta.yml deleted file mode 100644 index d8394d07..00000000 --- a/modules/ebi-metagenomics/pyrodigal/meta.yml +++ /dev/null @@ -1,83 +0,0 @@ -name: "pyrodigal" -description: Pyrodigal is a Python module that provides bindings to Prodigal, a fast, - reliable protein-coding gene prediction for prokaryotic genomes. -keywords: - - sort - - annotation - - prediction - - prokaryote -tools: - - "pyrodigal": - description: "Pyrodigal is a Python module that provides bindings to Prodigal - (ORF finder for microbial sequences) using Cython." - homepage: "https://pyrodigal.readthedocs.org/" - documentation: "https://pyrodigal.readthedocs.org/" - tool_dev_url: "https://github.com/althonos/pyrodigal/" - doi: "10.21105/joss.04296" - licence: ["GPL v3"] - identifier: "" -input: - - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - fasta: - type: file - description: FASTA file - pattern: "*.{fasta.gz,fa.gz,fna.gz}" - - - output_format: - type: string - description: Output format - pattern: "{gbk,gff}" -output: - - annotations: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - "*.${output_format}.gz": - type: file - description: Gene annotations. The file format is specified via input channel - "output_format". - pattern: "*.{gbk,gff}.gz" - - fna: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - "*.fna.gz": - type: file - description: nucleotide sequences file - pattern: "*.{fna.gz}" - - faa: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - "*.faa.gz": - type: file - description: protein translations file - pattern: "*.{faa.gz}" - - score: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - "*.score.gz": - type: file - description: all potential genes (with scores) - pattern: "*.{score.gz}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" -authors: - - "@louperelo" -maintainers: - - "@louperelo" diff --git a/modules/ebi-metagenomics/pyrodigal/tests/main.nf.test b/modules/ebi-metagenomics/pyrodigal/tests/main.nf.test deleted file mode 100644 index e1d63154..00000000 --- a/modules/ebi-metagenomics/pyrodigal/tests/main.nf.test +++ /dev/null @@ -1,112 +0,0 @@ -nextflow_process { - - name "Test Process PYRODIGAL" - script "../main.nf" - process "PYRODIGAL" - - tag "modules" - tag "modules_nfcore" - tag "modules_ebimetagenomics" - tag "pyrodigal" - - test("pyrodigal - sarscov2 - gff") { - when { - process { - """ - input[0] = [ - [id:'test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) - ] - input[1] = 'gff' - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } - ) - } - } - - test("pyrodigal - sarscov2 - gbk") { - when { - process { - """ - input[0] = [ - [id:'test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) - ] - input[1] = 'gbk' - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert snapshot( - path(process.out.annotations.get(0).get(1)).linesGzip[14..22], - process.out.faa, - process.out.fna, - process.out.score, - process.out.versions, - ).match() } - ) - } - } - - test("pyrodigal - sarscov2 - gff - stub") { - options "-stub" - when { - process { - """ - input[0] = [ - [id:'test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) - ] - input[1] = 'gff' - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert snapshot(process.out.gff.collect { file(it[1]).getName() } + - process.out.fna.collect { file(it[1]).getName() } + - process.out.faa.collect { file(it[1]).getName() } + - process.out.score.collect { file(it[1]).getName() } + - process.out.versions).match() } - ) - } - } - - test("pyrodigal - sarscov2 - gbk - stub") { - options "-stub" - when { - process { - """ - input[0] = [ - [id:'test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) - ] - input[1] = 'gbk' - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert snapshot(process.out.gff.collect { file(it[1]).getName() } + - process.out.fna.collect { file(it[1]).getName() } + - process.out.faa.collect { file(it[1]).getName() } + - process.out.score.collect { file(it[1]).getName() } + - process.out.versions).match() } - ) - } - } - -} diff --git a/modules/ebi-metagenomics/pyrodigal/tests/main.nf.test.snap b/modules/ebi-metagenomics/pyrodigal/tests/main.nf.test.snap deleted file mode 100644 index 3d56b9f1..00000000 --- a/modules/ebi-metagenomics/pyrodigal/tests/main.nf.test.snap +++ /dev/null @@ -1,171 +0,0 @@ -{ - "pyrodigal - sarscov2 - gff - stub": { - "content": [ - [ - "test.fna.gz", - "test.faa.gz", - "test.score.gz", - "versions.yml:md5,296cc4ed71c8eb16bbc6978fe6299b77" - ] - ], - "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.2" - }, - "timestamp": "2024-12-02T15:17:12.218638993" - }, - "pyrodigal - sarscov2 - gbk": { - "content": [ - [ - " CDS 310..13476", - " /codon_start=1", - " /inference=\"ab initio prediction:pyrodigal:3.6.3\"", - " /locus_tag=\"MT192765.1_1\"", - " /transl_table=11", - " /translation=\"MPVLQVRDVLVRGFGDSVEEVLSEARQHLKDGTCGLVEVEKGVLP", - " QLEQPYVFIKRSDARTAPHGHVMVELVAELEGIQYGRSGETLGVLVPHVGEIPVAYRKV", - " LLRKNGNKGAGGHSYGADLKSFDLGDELGTDPYEDFQENWNTKHSSGVTRELMRELNGG", - " AYTRYVDNNFCGPDGYPLECIKDLLARAGKASCTLSEQLDFIDTKRGVYCCREHEHEIA" - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.faa.gz:md5,7168b854103f3586ccfdb71a44c389f7" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.fna.gz:md5,1bc8a05bcb72a3c324f5e4ffaa716d3b" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.score.gz:md5,63e6975e705be1fe749eb54bd4ea478e" - ] - ], - [ - "versions.yml:md5,296cc4ed71c8eb16bbc6978fe6299b77" - ] - ], - "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.2" - }, - "timestamp": "2024-12-02T15:17:01.228814939" - }, - "pyrodigal - sarscov2 - gff": { - "content": [ - { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - "test.gff.gz:md5,898c1e24e71fa108981597b8bb32110f" - ] - ], - "1": [ - [ - { - "id": "test", - "single_end": false - }, - "test.fna.gz:md5,1bc8a05bcb72a3c324f5e4ffaa716d3b" - ] - ], - "2": [ - [ - { - "id": "test", - "single_end": false - }, - "test.faa.gz:md5,7168b854103f3586ccfdb71a44c389f7" - ] - ], - "3": [ - [ - { - "id": "test", - "single_end": false - }, - "test.score.gz:md5,63e6975e705be1fe749eb54bd4ea478e" - ] - ], - "4": [ - "versions.yml:md5,296cc4ed71c8eb16bbc6978fe6299b77" - ], - "annotations": [ - [ - { - "id": "test", - "single_end": false - }, - "test.gff.gz:md5,898c1e24e71fa108981597b8bb32110f" - ] - ], - "faa": [ - [ - { - "id": "test", - "single_end": false - }, - "test.faa.gz:md5,7168b854103f3586ccfdb71a44c389f7" - ] - ], - "fna": [ - [ - { - "id": "test", - "single_end": false - }, - "test.fna.gz:md5,1bc8a05bcb72a3c324f5e4ffaa716d3b" - ] - ], - "score": [ - [ - { - "id": "test", - "single_end": false - }, - "test.score.gz:md5,63e6975e705be1fe749eb54bd4ea478e" - ] - ], - "versions": [ - "versions.yml:md5,296cc4ed71c8eb16bbc6978fe6299b77" - ] - } - ], - "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.2" - }, - "timestamp": "2024-12-02T15:16:49.907998584" - }, - "pyrodigal - sarscov2 - gbk - stub": { - "content": [ - [ - "test.fna.gz", - "test.faa.gz", - "test.score.gz", - "versions.yml:md5,296cc4ed71c8eb16bbc6978fe6299b77" - ] - ], - "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.2" - }, - "timestamp": "2024-12-02T15:17:22.681680508" - } -} \ No newline at end of file diff --git a/modules/ebi-metagenomics/pyrodigal/tests/tags.yml b/modules/ebi-metagenomics/pyrodigal/tests/tags.yml deleted file mode 100644 index 8851ca8b..00000000 --- a/modules/ebi-metagenomics/pyrodigal/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -pyrodigal: - - "modules/nf-core/pyrodigal/**" diff --git a/modules/nf-core b/modules/nf-core new file mode 120000 index 00000000..8d7258ac --- /dev/null +++ b/modules/nf-core @@ -0,0 +1 @@ +/home/vangelis/Desktop/Projects/nf-modules/.nf-test/tests/6f9976689cd0fddccc971ce71dc5c114/library/modules/nf-core \ No newline at end of file diff --git a/subworkflows/ebi-metagenomics/combined_gene_caller/main.nf b/subworkflows/ebi-metagenomics/combined_gene_caller/main.nf index 4a751e91..f2c48ab7 100644 --- a/subworkflows/ebi-metagenomics/combined_gene_caller/main.nf +++ b/subworkflows/ebi-metagenomics/combined_gene_caller/main.nf @@ -1,5 +1,6 @@ - -include { PYRODIGAL } from '../../../modules/ebi-metagenomics/pyrodigal/main' +/* NF-CORE */ +include { PYRODIGAL } from '../../../modules/nf-core/pyrodigal/main' +/* EBI-METAGENOMICS */ include { FRAGGENESCANRS } from '../../../modules/ebi-metagenomics/fraggenescanrs/main' include { COMBINEDGENECALLER_MERGE } from '../../../modules/ebi-metagenomics/combinedgenecaller/merge/main' diff --git a/subworkflows/ebi-metagenomics/combined_gene_caller/meta.yml b/subworkflows/ebi-metagenomics/combined_gene_caller/meta.yml index a67b4ee5..5be4202b 100644 --- a/subworkflows/ebi-metagenomics/combined_gene_caller/meta.yml +++ b/subworkflows/ebi-metagenomics/combined_gene_caller/meta.yml @@ -1,3 +1,4 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/ebi-metagenomics/nf-modules/master/subworkflows/yaml-schema.json name: "combined_gene_caller" description: | MGnify combined gene calling. @@ -12,7 +13,8 @@ keywords: - microbial components: - - pyrodigal + - pyrodigal: + git_remote: https://github.com/nf-core/modules.git - fraggenescanrs - combinedgenecaller/merge diff --git a/subworkflows/ebi-metagenomics/combined_gene_caller/tests/main.nf.test b/subworkflows/ebi-metagenomics/combined_gene_caller/tests/main.nf.test index de2414f3..53b5b310 100644 --- a/subworkflows/ebi-metagenomics/combined_gene_caller/tests/main.nf.test +++ b/subworkflows/ebi-metagenomics/combined_gene_caller/tests/main.nf.test @@ -9,8 +9,19 @@ nextflow_workflow { tag "subworkflows_ebimetagenomics" tag "subworkflows/combined_gene_caller" tag "combinedgenecaller/merge" - tag "prodigal" - tag "fraggenescan" + tag "fraggenescanrs" + tag "subworkflows/../../modules/nf-core/pyrodigal" + + setup { + nfcoreInitialise("${launchDir}/library/") + nfcoreInstall( + "${launchDir}/library/", + [ + "pyrodigal", + ] + ) + nfcoreLink("${launchDir}/library/", "${baseDir}/modules/") + } test("cgc assembly fasta") { @@ -38,6 +49,9 @@ nextflow_workflow { }, ) } + cleanup { + nfcoreUnlink("${launchDir}/library/", "${baseDir}/modules/nf-core") + } } test("cgc assembly fasta and cmsearch mask file") { @@ -75,6 +89,9 @@ nextflow_workflow { } ) } + cleanup { + nfcoreUnlink("${launchDir}/library/", "${baseDir}/modules/nf-core") + } } test("cgc assembly fasta - stub") { @@ -98,5 +115,8 @@ nextflow_workflow { // { assert snapshot(workflow.out).match() } ) } + cleanup { + nfcoreUnlink("${launchDir}/library/", "${baseDir}/modules/nf-core") + } } } diff --git a/subworkflows/ebi-metagenomics/combined_gene_caller/tests/tags.yml b/subworkflows/ebi-metagenomics/combined_gene_caller/tests/tags.yml deleted file mode 100644 index 15498171..00000000 --- a/subworkflows/ebi-metagenomics/combined_gene_caller/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -subworkflows/combined_gene_caller: - - subworkflows/ebi-metagenomics/combined_gene_caller/** From 534105d3f34a42996e76951850d1132f80a40bd9 Mon Sep 17 00:00:00 2001 From: vagkaratzas Date: Tue, 21 Oct 2025 13:49:51 +0100 Subject: [PATCH 2/3] removing nf-core modules symlink --- modules/nf-core | 1 - 1 file changed, 1 deletion(-) delete mode 120000 modules/nf-core diff --git a/modules/nf-core b/modules/nf-core deleted file mode 120000 index 8d7258ac..00000000 --- a/modules/nf-core +++ /dev/null @@ -1 +0,0 @@ -/home/vangelis/Desktop/Projects/nf-modules/.nf-test/tests/6f9976689cd0fddccc971ce71dc5c114/library/modules/nf-core \ No newline at end of file From 90d534fe511b41aa42d26f47fd23f63ebe119a76 Mon Sep 17 00:00:00 2001 From: vagkaratzas Date: Tue, 21 Oct 2025 13:51:30 +0100 Subject: [PATCH 3/3] adding modules/nf-core to gitignore, since they are getting downloaded for the nf-tests, but are not needed --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 50faa797..8cb00366 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ .nextflow* +modules/nf-core work/ results/ test_output/