diff --git a/modules/nf-core/learnmsa/align/environment.yml b/modules/nf-core/learnmsa/align/environment.yml index 1c1d69fd765..71e04c3d719 100644 --- a/modules/nf-core/learnmsa/align/environment.yml +++ b/modules/nf-core/learnmsa/align/environment.yml @@ -2,5 +2,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::learnmsa=2.0.1 - - conda-forge::pigz=2.8 + - conda-forge::coreutils=9.5 diff --git a/modules/nf-core/learnmsa/align/main.nf b/modules/nf-core/learnmsa/align/main.nf index 304fb07ced6..c9d40fd7221 100644 --- a/modules/nf-core/learnmsa/align/main.nf +++ b/modules/nf-core/learnmsa/align/main.nf @@ -1,37 +1,33 @@ process LEARNMSA_ALIGN { 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-741e0da5cf2d6d964f559672e2908c2111cbb46b:4930edd009376542543bfd2e20008bb1ae58f841-0' : - 'biocontainers/mulled-v2-741e0da5cf2d6d964f559672e2908c2111cbb46b:4930edd009376542543bfd2e20008bb1ae58f841-0' }" + container "registry.hub.docker.com/felbecker/learnmsa:2.0.9" input: tuple val(meta), path(fasta) - val(compress) output: - tuple val(meta), path("*.aln{.gz,}"), emit: alignment + tuple val(meta), path("*.aln") , emit: alignment path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' + def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def write_output = compress ? ">(pigz -cp ${task.cpus} > ${prefix}.aln.gz)" : "${prefix}.aln" + if (workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1) { + error("LearnMSA align module does not support Conda. Please use Docker / Singularity / Podman instead.") + } """ learnMSA \\ - $args \\ - -i <(unpigz -cdf $fasta) \\ - -o $write_output + -i $fasta \\ + -o "${prefix}.aln" \\ + $args cat <<-END_VERSIONS > versions.yml "${task.process}": learnmsa: \$(learnMSA -h | grep 'version' | awk -F 'version ' '{print \$2}' | awk '{print \$1}' | sed 's/)//g') - pigz: \$(echo \$(pigz --version 2>&1) | sed 's/^.*pigz\\w*//' )) END_VERSIONS """ @@ -39,12 +35,11 @@ process LEARNMSA_ALIGN { def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" """ - touch ${prefix}.aln${compress ? '.gz' : ''} + touch ${prefix}.aln cat <<-END_VERSIONS > versions.yml "${task.process}": - learnmsa: \$(learnMSA -h | grep 'version' | awk -F 'version ' '{print \$2}' | awk '{print \$1}' | sed 's/)//g') - pigz: \$(echo \$(pigz --version 2>&1) | sed 's/^.*pigz\\w*//' )) + learnmsa: \$(if command -v learnMSA &>/dev/null; then learnMSA -h | grep 'version' | awk -F 'version ' '{print \$2}' | awk '{print \$1}' | sed 's/)//g'; else echo "STUB_TEST_HARDCODED_VERSION"; fi) END_VERSIONS """ } diff --git a/modules/nf-core/learnmsa/align/meta.yml b/modules/nf-core/learnmsa/align/meta.yml index b3e549fea7b..7cd4a63c4ee 100644 --- a/modules/nf-core/learnmsa/align/meta.yml +++ b/modules/nf-core/learnmsa/align/meta.yml @@ -21,13 +21,8 @@ input: e.g. `[ id:'test']` - fasta: type: file - description: Input sequences in FASTA format. May be gz-compressed or uncompressed. - pattern: "*.{fa,fasta}{.gz,}" - - - compress: - type: boolean - description: Flag representing whether the output MSA should be compressed. - Set to true to enable/false to disable compression. Compression is done using - pigz, and is multithreaded. + description: Input sequences in FASTA format. + pattern: "*.{fa,fasta}" output: - alignment: - meta: @@ -35,10 +30,10 @@ output: description: | Groovy Map containing sample information e.g. `[ id:'test']` - - "*.aln{.gz,}": + - "*.aln": type: file - description: Alignment file, in FASTA format. May be gzipped or uncompressed. - pattern: "*.aln{.gz,}" + description: Alignment file, in FASTA format. + pattern: "*.aln" - versions: - versions.yml: type: file diff --git a/modules/nf-core/learnmsa/align/tests/main.nf.test b/modules/nf-core/learnmsa/align/tests/main.nf.test index 8459ead38d5..9432414fbaa 100644 --- a/modules/nf-core/learnmsa/align/tests/main.nf.test +++ b/modules/nf-core/learnmsa/align/tests/main.nf.test @@ -2,6 +2,7 @@ nextflow_process { name "Test Process LEARNMSA_ALIGN" + config "./nextflow.config" script "../main.nf" process "LEARNMSA_ALIGN" @@ -10,15 +11,15 @@ nextflow_process { tag "learnmsa" tag "learnmsa/align" - test("sarscov2 - fasta - uncompressed") { + test("seatoxin - stub") { + options "-stub" when { process { """ - input[0] = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['genome']['informative_sites_fas'], checkIfExists: true) + input[0] = [ [ id:'test' ], + file(params.modules_testdata_base_path + "../../multiplesequencealign/testdata/setoxin-ref.fa", checkIfExists: true) ] - input[1] = false """ } } @@ -26,31 +27,8 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert path(process.out.alignment.get(0).get(1)).getText().contains(">sample1") }, - { assert snapshot(process.out.versions).match("versions") } - ) - } - - } - - test("sarscov2 - fasta - compressed") { - - when { - process { - """ - input[0] = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['genome']['informative_sites_fas'], checkIfExists: true) - ] - input[1] = true - """ - } - } + { assert snapshot ( process.out ).match() } - then { - assertAll( - { assert process.success }, - { assert path(process.out.alignment.get(0).get(1)).getTextGzip().contains(">sample1") }, - { assert snapshot(process.out.versions).match("versions1") } ) } diff --git a/modules/nf-core/learnmsa/align/tests/main.nf.test.snap b/modules/nf-core/learnmsa/align/tests/main.nf.test.snap index 981738a276d..5c54c14416e 100644 --- a/modules/nf-core/learnmsa/align/tests/main.nf.test.snap +++ b/modules/nf-core/learnmsa/align/tests/main.nf.test.snap @@ -1,26 +1,35 @@ { - "versions": { + "seatoxin - stub": { "content": [ - [ - "versions.yml:md5,85322b0f038aa768f202fd0d748d6c7c" - ] + { + "0": [ + [ + { + "id": "test" + }, + "test.aln:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,c3886d32309d141ad22aba3a8a119d62" + ], + "alignment": [ + [ + { + "id": "test" + }, + "test.aln:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,c3886d32309d141ad22aba3a8a119d62" + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.4" }, - "timestamp": "2024-03-20T16:06:48.867020809" - }, - "versions1": { - "content": [ - [ - "versions.yml:md5,85322b0f038aa768f202fd0d748d6c7c" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-20T16:12:13.921813607" + "timestamp": "2025-01-31T13:29:53.669503397" } } \ No newline at end of file diff --git a/modules/nf-core/learnmsa/align/tests/nextflow.config b/modules/nf-core/learnmsa/align/tests/nextflow.config new file mode 100644 index 00000000000..dbc909d4fff --- /dev/null +++ b/modules/nf-core/learnmsa/align/tests/nextflow.config @@ -0,0 +1,7 @@ +process { + + withName: LEARNMSA_ALIGN{ + container = "nf-core/ubuntu:22.04" + } + +}