diff --git a/modules/nf-core/coptr/estimate/environment.yml b/modules/nf-core/coptr/estimate/environment.yml new file mode 100644 index 00000000000..c5a150067f6 --- /dev/null +++ b/modules/nf-core/coptr/estimate/environment.yml @@ -0,0 +1,7 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + - "bioconda::coptr=1.1.4" diff --git a/modules/nf-core/coptr/estimate/main.nf b/modules/nf-core/coptr/estimate/main.nf new file mode 100644 index 00000000000..d16e0a16a4c --- /dev/null +++ b/modules/nf-core/coptr/estimate/main.nf @@ -0,0 +1,47 @@ +process COPTR_ESTIMATE { + tag "$meta.id" + label 'process_low' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/coptr:1.1.4--pyhdfd78af_3': + 'biocontainers/coptr:1.1.4--pyhdfd78af_3' }" + + input: + tuple val(meta), path(pkl, stageAs: "coverage_maps/*") + + output: + tuple val(meta), path("*.csv"), emit: ptr + 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}" + """ + coptr \\ + estimate \\ + $args \\ + coverage_maps/ \\ + ptrs.csv + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + coptr: \$(coptr |& sed -E '11!d ; s/CoPTR.*?\\(v(.*?)\\).*/\\1/') + END_VERSIONS + """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.csv + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + coptr: \$(coptr |& sed -E '11!d ; s/CoPTR.*?\\(v(.*?)\\).*/\\1/') + END_VERSIONS + """ +} diff --git a/modules/nf-core/coptr/estimate/meta.yml b/modules/nf-core/coptr/estimate/meta.yml new file mode 100644 index 00000000000..2afb599563a --- /dev/null +++ b/modules/nf-core/coptr/estimate/meta.yml @@ -0,0 +1,56 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json +name: "coptr_estimate" +description: Calculates peak-to-through ratio (PTR) from metagenomic sequence data +keywords: + - coptr + - mapping + - ptr +tools: + - "coptr": + description: "Accurate and robust inference of microbial growth dynamics from + metagenomic sequencing reads." + homepage: "https://github.com/tyjo/coptr" + documentation: "https://coptr.readthedocs.io/" + tool_dev_url: "https://github.com/tyjo/coptr" + doi: "10.1101/gr.275533.121" + licence: ["GPL v3"] + identifier: biotools:coptr + +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - pkl: + type: file + description: Python pickle file containing coverage maps + pattern: "*.pkl" + ontologies: + - edam: "http://edamontology.org/format_4002" + +output: + - ptr: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - "*.csv": + type: file + description: CSV table with rows as reference genomes, columns samples and entries as log2 PTR + pattern: "*.csv" + ontologies: + - edam: "http://edamontology.org/format_3752" + + - versions: + - "versions.yml": + type: file + description: File containing software versions + pattern: "versions.yml" + +authors: + - "@ramirobarrantes" +maintainers: + - "@ramirobarrantes" diff --git a/modules/nf-core/coptr/estimate/tests/main.nf.test b/modules/nf-core/coptr/estimate/tests/main.nf.test new file mode 100644 index 00000000000..949a2108762 --- /dev/null +++ b/modules/nf-core/coptr/estimate/tests/main.nf.test @@ -0,0 +1,71 @@ +nextflow_process { + + name "Test Process COPTR_ESTIMATE" + script "../main.nf" + process "COPTR_ESTIMATE" + + tag "modules" + tag "modules_nfcore" + tag "coptr" + tag "coptr/extract" + tag "coptr/estimate" + + setup { + run("COPTR_EXTRACT") { + script "../../extract/main.nf" + process { + """ + input[0] = [ + [id:'test_0'], + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true) + ] + ] + """ + } + } + } + + test("coptr estimate from coverage maps file") { + + when { + process { + """ + input[0] = COPTR_EXTRACT.out.coverage + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() + } + ) + } + + } + + test("coptr estimate from coverage maps file - stub") { + + options "-stub" + + when { + process { + """ + input[0] = COPTR_EXTRACT.out.coverage + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() + } + ) + } + + } + + +} diff --git a/modules/nf-core/coptr/estimate/tests/main.nf.test.snap b/modules/nf-core/coptr/estimate/tests/main.nf.test.snap new file mode 100644 index 00000000000..eb7ff0a32e0 --- /dev/null +++ b/modules/nf-core/coptr/estimate/tests/main.nf.test.snap @@ -0,0 +1,68 @@ +{ + "coptr estimate from coverage maps file - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test_0" + }, + "test_0.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,5400eb14b9d1287f174065acd6c0c6a4" + ], + "ptr": [ + [ + { + "id": "test_0" + }, + "test_0.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,5400eb14b9d1287f174065acd6c0c6a4" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.2" + }, + "timestamp": "2024-12-03T13:46:59.155895" + }, + "coptr estimate from coverage maps file": { + "content": [ + { + "0": [ + [ + { + "id": "test_0" + }, + "ptrs.csv:md5,e94546e830fd9fdcd50e0e6c459f78e5" + ] + ], + "1": [ + "versions.yml:md5,5400eb14b9d1287f174065acd6c0c6a4" + ], + "ptr": [ + [ + { + "id": "test_0" + }, + "ptrs.csv:md5,e94546e830fd9fdcd50e0e6c459f78e5" + ] + ], + "versions": [ + "versions.yml:md5,5400eb14b9d1287f174065acd6c0c6a4" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.2" + }, + "timestamp": "2024-11-29T18:28:40.680244" + } +} \ No newline at end of file diff --git a/modules/nf-core/coptr/extract/main.nf b/modules/nf-core/coptr/extract/main.nf index 2633c3907e2..8d9db735bfc 100644 --- a/modules/nf-core/coptr/extract/main.nf +++ b/modules/nf-core/coptr/extract/main.nf @@ -41,8 +41,7 @@ process COPTR_EXTRACT { cat <<-END_VERSIONS > versions.yml "${task.process}": - "${task.process}": - coptr: \$(coptr |& sed -E '11!d ; s/CoPTR.*?\\(v(.*?)\\).*/\\1/') + coptr: \$(coptr |& sed -E '11!d ; s/CoPTR.*?\\(v(.*?)\\).*/\\1/') END_VERSIONS """ } diff --git a/modules/nf-core/coptr/extract/tests/main.nf.test.snap b/modules/nf-core/coptr/extract/tests/main.nf.test.snap index 1fb2eeb35ad..367c20798bf 100644 --- a/modules/nf-core/coptr/extract/tests/main.nf.test.snap +++ b/modules/nf-core/coptr/extract/tests/main.nf.test.snap @@ -83,7 +83,7 @@ ] ], "1": [ - "versions.yml:md5,578f185b99f7f5ba27eb2a9f44c1d6a9" + "versions.yml:md5,c6fcaf8fb6aa9c10a3192d81f9623d4f" ], "coverage": [ [ @@ -94,7 +94,7 @@ ] ], "versions": [ - "versions.yml:md5,578f185b99f7f5ba27eb2a9f44c1d6a9" + "versions.yml:md5,c6fcaf8fb6aa9c10a3192d81f9623d4f" ] } ], @@ -102,6 +102,6 @@ "nf-test": "0.9.2", "nextflow": "24.10.2" }, - "timestamp": "2024-12-02T19:26:21.856688" + "timestamp": "2024-12-03T13:50:47.572605" } } \ No newline at end of file diff --git a/modules/nf-core/coptr/merge/main.nf b/modules/nf-core/coptr/merge/main.nf index 1f3cf2d3a07..c7e6f4df51b 100644 --- a/modules/nf-core/coptr/merge/main.nf +++ b/modules/nf-core/coptr/merge/main.nf @@ -42,7 +42,6 @@ process COPTR_MERGE { cat <<-END_VERSIONS > versions.yml "${task.process}": - "${task.process}": coptr: \$(coptr |& sed -E '11!d ; s/CoPTR.*?\\(v(.*?)\\).*/\\1/') END_VERSIONS """ diff --git a/modules/nf-core/coptr/merge/tests/main.nf.test.snap b/modules/nf-core/coptr/merge/tests/main.nf.test.snap index e52e85b2df3..4fb8da14f1e 100644 --- a/modules/nf-core/coptr/merge/tests/main.nf.test.snap +++ b/modules/nf-core/coptr/merge/tests/main.nf.test.snap @@ -11,7 +11,7 @@ ] ], "1": [ - "versions.yml:md5,65562945dc1e8f43bfa9a6e244bbcdf2" + "versions.yml:md5,86e7803a1ea080ab5b7911c540dd1370" ], "bam": [ [ @@ -22,15 +22,15 @@ ] ], "versions": [ - "versions.yml:md5,65562945dc1e8f43bfa9a6e244bbcdf2" + "versions.yml:md5,86e7803a1ea080ab5b7911c540dd1370" ] } ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.1" + "nextflow": "24.10.2" }, - "timestamp": "2024-11-23T14:54:29.748785" + "timestamp": "2024-12-03T13:52:20.557882" }, "coptr merge single bam file": { "content": [ diff --git a/modules/nf-core/foldmason/easymsa/main.nf b/modules/nf-core/foldmason/easymsa/main.nf index a1e4e9106ee..bb1737f05ef 100644 --- a/modules/nf-core/foldmason/easymsa/main.nf +++ b/modules/nf-core/foldmason/easymsa/main.nf @@ -3,10 +3,11 @@ process FOLDMASON_EASYMSA { label 'process_medium' conda "${moduleDir}/environment.yml" - container "community.wave.seqera.io/library/foldmason_pigz:97b3311addb0f4a7" + container "community.wave.seqera.io/library/foldmason_pigz:54849036d93c89ed" input: - tuple val(meta), path(pdbs) + tuple val(meta) , path(pdbs) + tuple val(meta2), path(tree) val(compress) output: @@ -20,13 +21,15 @@ process FOLDMASON_EASYMSA { script: def args = task.ext.args ?: '' prefix = task.ext.prefix ?: "${meta.id}" + def options_tree = tree ? "--guide-tree $tree" : "" """ foldmason easy-msa \\ - $args \\ - --threads $task.cpus \\ ${pdbs} \\ ${prefix} \\ - tmp + tmp \\ + ${options_tree} \\ + $args \\ + --threads $task.cpus if ${compress}; then pigz -p ${task.cpus} ${prefix}_3di.fa diff --git a/modules/nf-core/foldmason/easymsa/meta.yml b/modules/nf-core/foldmason/easymsa/meta.yml index cc00f44c58b..140eb81efc0 100644 --- a/modules/nf-core/foldmason/easymsa/meta.yml +++ b/modules/nf-core/foldmason/easymsa/meta.yml @@ -26,6 +26,15 @@ input: type: file description: Input protein structures in PDB format. pattern: "*.{pdb,mmcif}" + - - meta2: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - tree: + type: file + description: Input guide tree in Newick format. + pattern: "*.{dnd,nwk}" - - compress: type: boolean description: Flag representing whether the output MSA should be compressed. diff --git a/modules/nf-core/foldmason/easymsa/tests/main.nf.test b/modules/nf-core/foldmason/easymsa/tests/main.nf.test index 663c69753c4..d6db9bca407 100644 --- a/modules/nf-core/foldmason/easymsa/tests/main.nf.test +++ b/modules/nf-core/foldmason/easymsa/tests/main.nf.test @@ -9,20 +9,35 @@ nextflow_process { tag "foldmason" tag "foldmason/easymsa" tag "untar" + tag "famsa" + tag "famsa/guidetree" + + setup { + + run("UNTAR") { + script "../../../../../modules/nf-core/untar/main.nf" + process { + """ + archive = file("https://raw.githubusercontent.com/nf-core/test-datasets/multiplesequencealign/testdata/af2_structures/seatoxin-ref.tar.gz", checkIfExists: true) + input[0] = Channel.of(tuple([id:'test'], archive)) + """ + } + } - test("Test on seatoxin dataset - uncompressed") { - setup { - - run("UNTAR") { - script "../../../../../modules/nf-core/untar/main.nf" - process { - """ - archive = file("https://raw.githubusercontent.com/nf-core/test-datasets/multiplesequencealign/testdata/structures/seatoxin-ref.tar.gz", checkIfExists: true) - input[0] = Channel.of(tuple([id:'test'], archive)) - """ - } + run("FAMSA_GUIDETREE") { + script "../../../../../modules/nf-core/famsa/guidetree/main.nf" + process { + """ + input[0] = [ [ id:'test_tree' ], // meta map + file(params.modules_testdata_base_path + "../../multiplesequencealign/testdata/setoxin-ref.fa", checkIfExists: true) + ] + """ } } + } + + + test("Test on seatoxin dataset - uncompressed") { when { params { @@ -30,7 +45,8 @@ nextflow_process { process { """ input[0] = UNTAR.out.untar.map { meta,dir -> [meta, file(dir).listFiles().collect()]} - input[1] = false + input[1] = [[:],[]] + input[2] = false """ } } @@ -44,26 +60,37 @@ nextflow_process { } test("Test on seatoxin dataset - compressed") { - setup { - - run("UNTAR") { - script "../../../../../modules/nf-core/untar/main.nf" - process { - """ - archive = file("https://raw.githubusercontent.com/nf-core/test-datasets/multiplesequencealign/testdata/structures/seatoxin-ref.tar.gz", checkIfExists: true) - input[0] = Channel.of(tuple([id:'test'], archive)) - """ - } + + when { + params { + } + process { + """ + input[0] = UNTAR.out.untar.map { meta,dir -> [[ id:'test' ], file(dir).listFiles().collect()]} + input[1] = [[:],[]] + input[2] = true + """ } } + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("Test on seatoxin dataset - guide_tree") { + when { params { } process { """ input[0] = UNTAR.out.untar.map { meta,dir -> [[ id:'test' ], file(dir).listFiles().collect()]} - input[1] = true + input[1] = FAMSA_GUIDETREE.out.tree.collect{ meta, tree -> tree }.map{ tree -> [[ id: 'test_tree'], tree]} + input[2] = false """ } } @@ -79,26 +106,14 @@ nextflow_process { test("Stub run") { options "-stub" - setup { - - run("UNTAR") { - script "../../../../../modules/nf-core/untar/main.nf" - process { - """ - archive = file("https://raw.githubusercontent.com/nf-core/test-datasets/multiplesequencealign/testdata/structures/seatoxin-ref.tar.gz", checkIfExists: true) - input[0] = Channel.of(tuple([id:'test'], archive)) - """ - } - } - } - when { params { } process { """ input[0] = UNTAR.out.untar.map { meta,dir -> [meta, file(dir).listFiles().collect()]} - input[1] = false + input[1] = [[:],[]] + input[2] = false """ } } diff --git a/modules/nf-core/foldmason/easymsa/tests/main.nf.test.snap b/modules/nf-core/foldmason/easymsa/tests/main.nf.test.snap index 50af9b7f132..384d2021284 100644 --- a/modules/nf-core/foldmason/easymsa/tests/main.nf.test.snap +++ b/modules/nf-core/foldmason/easymsa/tests/main.nf.test.snap @@ -42,7 +42,11 @@ ] } ], - "timestamp": "2024-08-28T09:10:12.591561643" + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.2" + }, + "timestamp": "2024-12-04T10:56:12.836231763" }, "Test on seatoxin dataset - uncompressed": { "content": [ @@ -52,7 +56,7 @@ { "id": "test" }, - "test_3di.fa:md5,ba1b6c8c5df11bdebfea12070bd9cb17" + "test_3di.fa:md5,e7da437c6ddb5ced60ff7c49b147a65d" ] ], "1": [ @@ -60,7 +64,7 @@ { "id": "test" }, - "test_aa.fa:md5,33e93479603115b46ef76af3f6a20cf1" + "test_aa.fa:md5,2d90cd080424db8024e6c404c1cfc0b4" ] ], "2": [ @@ -71,7 +75,7 @@ { "id": "test" }, - "test_3di.fa:md5,ba1b6c8c5df11bdebfea12070bd9cb17" + "test_3di.fa:md5,e7da437c6ddb5ced60ff7c49b147a65d" ] ], "msa_aa": [ @@ -79,7 +83,7 @@ { "id": "test" }, - "test_aa.fa:md5,33e93479603115b46ef76af3f6a20cf1" + "test_aa.fa:md5,2d90cd080424db8024e6c404c1cfc0b4" ] ], "versions": [ @@ -87,7 +91,11 @@ ] } ], - "timestamp": "2024-08-28T08:58:09.52040475" + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.2" + }, + "timestamp": "2024-12-04T10:55:41.89060384" }, "Test on seatoxin dataset - compressed": { "content": [ @@ -97,7 +105,7 @@ { "id": "test" }, - "test_3di.fa.gz:md5,ba1b6c8c5df11bdebfea12070bd9cb17" + "test_3di.fa.gz:md5,e7da437c6ddb5ced60ff7c49b147a65d" ] ], "1": [ @@ -105,7 +113,7 @@ { "id": "test" }, - "test_aa.fa.gz:md5,33e93479603115b46ef76af3f6a20cf1" + "test_aa.fa.gz:md5,2d90cd080424db8024e6c404c1cfc0b4" ] ], "2": [ @@ -116,7 +124,7 @@ { "id": "test" }, - "test_3di.fa.gz:md5,ba1b6c8c5df11bdebfea12070bd9cb17" + "test_3di.fa.gz:md5,e7da437c6ddb5ced60ff7c49b147a65d" ] ], "msa_aa": [ @@ -124,7 +132,7 @@ { "id": "test" }, - "test_aa.fa.gz:md5,33e93479603115b46ef76af3f6a20cf1" + "test_aa.fa.gz:md5,2d90cd080424db8024e6c404c1cfc0b4" ] ], "versions": [ @@ -132,6 +140,59 @@ ] } ], - "timestamp": "2024-08-29T13:44:02.750191" + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.2" + }, + "timestamp": "2024-12-04T10:55:52.135344443" + }, + "Test on seatoxin dataset - guide_tree": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test_3di.fa:md5,46fa911158bb736c054dfad0378832b4" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test_aa.fa:md5,7ada48f0152342787a46505b9e8a2fae" + ] + ], + "2": [ + "versions.yml:md5,da4694171d1b0bb9559f7049334126ed" + ], + "msa_3di": [ + [ + { + "id": "test" + }, + "test_3di.fa:md5,46fa911158bb736c054dfad0378832b4" + ] + ], + "msa_aa": [ + [ + { + "id": "test" + }, + "test_aa.fa:md5,7ada48f0152342787a46505b9e8a2fae" + ] + ], + "versions": [ + "versions.yml:md5,da4694171d1b0bb9559f7049334126ed" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.2" + }, + "timestamp": "2024-12-04T10:56:02.473496089" } } \ No newline at end of file diff --git a/modules/nf-core/glimpse2/concordance/main.nf b/modules/nf-core/glimpse2/concordance/main.nf index 06eb139b238..f96f5c3899b 100644 --- a/modules/nf-core/glimpse2/concordance/main.nf +++ b/modules/nf-core/glimpse2/concordance/main.nf @@ -9,9 +9,7 @@ process GLIMPSE2_CONCORDANCE { input: tuple val(meta), path(estimate), path(estimate_index), path(truth), path(truth_index), path(freq), path(freq_index), path(samples), val(region) - tuple val(meta2), path(groups), val(bins), val(ac_bins), val(allele_counts) - val(min_val_gl) - val(min_val_dp) + tuple val(meta2), path(groups), val(bins), val(ac_bins), val(allele_counts), val(min_val_gl), val(min_val_dp) output: tuple val(meta), path("*.error.cal.txt.gz") , emit: errors_cal @@ -26,17 +24,23 @@ process GLIMPSE2_CONCORDANCE { task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" - def samples_cmd = samples ? "--samples ${samples}" : "" - def groups_cmd = groups ? "--groups ${groups}" : "" - def bins_cmd = bins ? "--bins ${bins}" : "" - def ac_bins_cmd = ac_bins ? "--ac-bins ${ac_bins}" : "" - def ale_ct_cmd = allele_counts ? "--allele-counts ${allele_counts}" : "" - def region_str = region instanceof List ? region.join('\\n') : region + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def samples_cmd = samples ? "--samples ${samples}" : "" + def groups_cmd = groups ? "--groups ${groups}" : "" + def bins_cmd = bins ? "--bins ${bins}" : "" + def ac_bins_cmd = ac_bins ? "--ac-bins ${ac_bins}" : "" + def ale_ct_cmd = allele_counts ? "--allele-counts ${allele_counts}" : "" + def min_val_gl_cmd = min_val_gl ? "--min-val-gl ${min_val_gl}" : "" + def min_val_dp_cmd = min_val_dp ? "--min-val-dp ${min_val_dp}" : "" + def region_str = region instanceof List ? region.join('\\n') : region if (((groups ? 1:0) + (bins ? 1:0) + (ac_bins ? 1:0) + (allele_counts ? 1:0)) != 1) error "One and only one argument should be selected between groups, bins, ac_bins, allele_counts" + if (args.contains("--gt-val")) { + assert !(min_val_gl || min_val_dp) : "If --gt-val is set, --min-val-gl nor --min-val-dp must be set" + } + """ printf '$region_str' > regions.txt sed 's/\$/ $freq $truth $estimate/' regions.txt > input.txt @@ -47,8 +51,8 @@ process GLIMPSE2_CONCORDANCE { $bins_cmd \\ $ac_bins_cmd \\ $ale_ct_cmd \\ - --min-val-gl $min_val_gl \\ - --min-val-dp $min_val_dp \\ + $min_val_gl_cmd \\ + $min_val_dp_cmd \\ --input input.txt \\ --thread $task.cpus \\ --output ${prefix} diff --git a/modules/nf-core/glimpse2/concordance/meta.yml b/modules/nf-core/glimpse2/concordance/meta.yml index f286f6e929d..a9e27c907ac 100644 --- a/modules/nf-core/glimpse2/concordance/meta.yml +++ b/modules/nf-core/glimpse2/concordance/meta.yml @@ -79,12 +79,12 @@ input: description: | Default allele count bins used for rsquared computations. AN field must be defined in the frequency file. - - - min_val_gl: + - min_val_gl: type: float description: | Minimum genotype likelihood probability P(G|R) in validation data. Set to zero to have no filter of if using –gt-validation - - - min_val_dp: + - min_val_dp: type: integer description: | Minimum coverage in validation data. diff --git a/modules/nf-core/glimpse2/concordance/tests/main.nf.test b/modules/nf-core/glimpse2/concordance/tests/main.nf.test index 9c5625207ac..d1c68bc208d 100644 --- a/modules/nf-core/glimpse2/concordance/tests/main.nf.test +++ b/modules/nf-core/glimpse2/concordance/tests/main.nf.test @@ -10,78 +10,36 @@ nextflow_process { tag "modules_nfcore" tag "modules" - setup { - run("GLIMPSE2_PHASE") { - script "../../phase/main.nf" - process { - """ - input_vcf = Channel.of([ - [ id:'input'], // meta map - file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/glimpse/NA12878.chr21.s.1x.vcf.gz", checkIfExists: true), - file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/glimpse/NA12878.chr21.s.1x.vcf.gz.csi", checkIfExists: true), - [] - ]) - - samples_infos = Channel.of('NA12878 2').collectFile(name: 'sampleinfos.txt') - region = Channel.of(["chr21:16600000-16800000","chr21:16650000-16750000"]) - - ch_ref_panel = Channel.of([ - file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/glimpse/1000GP.chr21.noNA12878.s.bcf", checkIfExists: true), - file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/glimpse/1000GP.chr21.noNA12878.s.bcf.csi", checkIfExists: true) - ]) - - ch_map = Channel.of([ - file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/glimpse/chr21.b38.gmap.gz", checkIfExists: true), - ]) - - // [meta, vcf, index, sample_infos, regionin, regionout, regionindex, ref, ref_index, map] - input[0] = input_vcf - .combine(samples_infos) - .combine(region) - .combine( ch_ref_panel ) - .combine( ch_map ) - input[1]= Channel.of([[],[],[]]) - """ - } - } - - run("BCFTOOLS_INDEX") { - script "../../../bcftools/index/main.nf" - process { - """ - input[0] = GLIMPSE2_PHASE.output.phased_variants - """ - } - } - } - - - test("test_glimpse2_concordance") { + test("test glimpse2 concordance") { config "./nextflow.config" when { + params { + glimpse2_concordance_args = "--gt-val --af-tag AF" + } process { """ - allele_freq = Channel.of([ - file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/glimpse/1000GP.chr21.noNA12878.s.sites.vcf.gz",checkIfExists:true), - file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/glimpse/1000GP.chr21.noNA12878.s.sites.vcf.gz.csi",checkIfExists:true) + target = Channel.of([ + [id: "input"], + file(params.modules_testdata_base_path + "genomics/homo_sapiens/illumina/vcf/NA12878.chr22.1X.vcf.gz",checkIfExists:true), + file(params.modules_testdata_base_path + "genomics/homo_sapiens/illumina/vcf/NA12878.chr22.1X.vcf.gz.csi",checkIfExists:true) ]) - truth = Channel.of([ - file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/glimpse/NA12878.chr21.s.bcf",checkIfExists:true), - file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/glimpse/NA12878.chr21.s.bcf.csi",checkIfExists:true) + file(params.modules_testdata_base_path + "genomics/homo_sapiens/illumina/vcf/NA12878_GIAB.chr22.vcf.gz",checkIfExists:true), + file(params.modules_testdata_base_path + "genomics/homo_sapiens/illumina/vcf/NA12878_GIAB.chr22.vcf.gz.csi",checkIfExists:true) ]) - list_inputs = GLIMPSE2_PHASE.output.phased_variants - .join( BCFTOOLS_INDEX.out.csi ) + allele_freq = Channel.of([ + file(params.modules_testdata_base_path + "genomics/homo_sapiens/popgen/1000GP.chr22.sites.vcf.gz",checkIfExists:true), + file(params.modules_testdata_base_path + "genomics/homo_sapiens/popgen/1000GP.chr22.sites.vcf.gz.csi",checkIfExists:true) + ]) + list_inputs = target .combine( truth ) .combine( allele_freq ) .combine( Channel.of([[]]) ) - .combine( Channel.of(["chr21"]) ) + .combine( Channel.of(["chr22"]) ) input[0] = list_inputs - input[1] = Channel.of([[id:"params"],[],"0 0.01 0.05 0.1 0.2 0.5",[],[]]) - input[2] = 0.9999 - input[3] = 8 + input[1] = Channel.of([[id:"params"], [],"0 0.01 0.05 0.1 0.2 0.5", [], [], [], []]) """ } } @@ -102,78 +60,37 @@ nextflow_process { } - test("test_list_region") { + test("test list of region and rsquare per site") { config "./nextflow.config" when { + params { + glimpse2_concordance_args = "--gt-val --af-tag AF --out-r2-per-site" + } process { """ - allele_freq = Channel.of([ - file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/glimpse/1000GP.chr21.noNA12878.s.sites.vcf.gz",checkIfExists:true), - file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/glimpse/1000GP.chr21.noNA12878.s.sites.vcf.gz.csi",checkIfExists:true) + target = Channel.of([ + [id: "input"], + file(params.modules_testdata_base_path + "genomics/homo_sapiens/illumina/vcf/NA12878.chr22.1X.vcf.gz",checkIfExists:true), + file(params.modules_testdata_base_path + "genomics/homo_sapiens/illumina/vcf/NA12878.chr22.1X.vcf.gz.csi",checkIfExists:true) ]) - truth = Channel.of([ - file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/glimpse/NA12878.chr21.s.bcf",checkIfExists:true), - file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/glimpse/NA12878.chr21.s.bcf.csi",checkIfExists:true) + file(params.modules_testdata_base_path + "genomics/homo_sapiens/illumina/vcf/NA12878_GIAB.chr22.vcf.gz",checkIfExists:true), + file(params.modules_testdata_base_path + "genomics/homo_sapiens/illumina/vcf/NA12878_GIAB.chr22.vcf.gz.csi",checkIfExists:true) ]) - list_inputs = GLIMPSE2_PHASE.output.phased_variants - .join( BCFTOOLS_INDEX.out.csi ) - .combine( truth ) - .combine( allele_freq ) - .combine( Channel.of([[]]) ) - .combine( Channel.of(["chr21", "chr21"]) ) - - input[0] = list_inputs - input[1] = Channel.of([[id:"params"],[],"0 0.01 0.05 0.1 0.2 0.5",[],[]]) - input[2] = 0.9999 - input[3] = 8 - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert snapshot( - process.out.errors_cal.collect{ file(it[1]).name }, - process.out.errors_grp.collect{ file(it[1]).name }, - process.out.errors_spl.collect{ file(it[1]).name }, - process.out.rsquare_grp.collect{ file(it[1]).name }, - process.out.rsquare_spl.collect{ file(it[1]).name }, - process.out.versions - ).match() - } - ) - } - - } - - test("test_r2_per_site") { - config "./nextflow_R2.config" - - when { - process { - """ allele_freq = Channel.of([ - file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/glimpse/1000GP.chr21.noNA12878.s.sites.vcf.gz",checkIfExists:true), - file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/glimpse/1000GP.chr21.noNA12878.s.sites.vcf.gz.csi",checkIfExists:true) - ]) - - truth = Channel.of([ - file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/glimpse/NA12878.chr21.s.bcf",checkIfExists:true), - file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/glimpse/NA12878.chr21.s.bcf.csi",checkIfExists:true) + file(params.modules_testdata_base_path + "genomics/homo_sapiens/popgen/1000GP.chr22.sites.vcf.gz",checkIfExists:true), + file(params.modules_testdata_base_path + "genomics/homo_sapiens/popgen/1000GP.chr22.sites.vcf.gz.csi",checkIfExists:true) ]) - list_inputs = GLIMPSE2_PHASE.output.phased_variants - .join( BCFTOOLS_INDEX.out.csi ) + list_inputs = target .combine( truth ) .combine( allele_freq ) .combine( Channel.of([[]]) ) - .combine( Channel.of(["chr21"]) ) + .combine( Channel.of([["chr22", "chr22"]]) ) + .view() + input[0] = list_inputs - input[1] = Channel.of([[id:"params"],[],"0 0.01 0.05 0.1 0.2 0.5",[],[]]) - input[2] = 0.9999 - input[3] = 8 + input[1] = Channel.of([[id:"params"], [],"0 0.01 0.05 0.1 0.2 0.5", [], [], [], []]) """ } } @@ -189,11 +106,9 @@ nextflow_process { process.out.rsquare_spl.collect{ file(it[1]).name }, process.out.rsquare_per_site.collect{ file(it[1]).name }, process.out.versions - ).match() - } + ).match() } ) } } - } diff --git a/modules/nf-core/glimpse2/concordance/tests/main.nf.test.snap b/modules/nf-core/glimpse2/concordance/tests/main.nf.test.snap index 12bded93619..5e81d44e2f0 100644 --- a/modules/nf-core/glimpse2/concordance/tests/main.nf.test.snap +++ b/modules/nf-core/glimpse2/concordance/tests/main.nf.test.snap @@ -1,5 +1,5 @@ { - "test_r2_per_site": { + "test glimpse2 concordance": { "content": [ [ "input.error.cal.txt.gz" @@ -16,20 +16,17 @@ [ "input.rsquare.spl.txt.gz" ], - [ - "input_r2_sites.txt.gz" - ], [ "versions.yml:md5,ba729289bab6b9fbb8c36a620c86bb82" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.1", + "nextflow": "24.10.1" }, - "timestamp": "2024-10-22T16:23:00.623182365" + "timestamp": "2024-12-03T16:22:35.440086384" }, - "test_glimpse2_concordance": { + "test list of region and rsquare per site": { "content": [ [ "input.error.cal.txt.gz" @@ -47,40 +44,16 @@ "input.rsquare.spl.txt.gz" ], [ - "versions.yml:md5,ba729289bab6b9fbb8c36a620c86bb82" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" - }, - "timestamp": "2024-10-22T16:22:26.823581573" - }, - "test_list_region": { - "content": [ - [ - "input.error.cal.txt.gz" - ], - [ - "input.error.grp.txt.gz" - ], - [ - "input.error.spl.txt.gz" - ], - [ - "input.rsquare.grp.txt.gz" - ], - [ - "input.rsquare.spl.txt.gz" + "input_r2_sites.txt.gz" ], [ "versions.yml:md5,ba729289bab6b9fbb8c36a620c86bb82" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.1", + "nextflow": "24.10.1" }, - "timestamp": "2024-10-22T16:22:43.352729014" + "timestamp": "2024-12-03T16:26:35.009071185" } } \ No newline at end of file diff --git a/modules/nf-core/glimpse2/concordance/tests/nextflow.config b/modules/nf-core/glimpse2/concordance/tests/nextflow.config index e5721995778..f9242b4b0e7 100644 --- a/modules/nf-core/glimpse2/concordance/tests/nextflow.config +++ b/modules/nf-core/glimpse2/concordance/tests/nextflow.config @@ -1,6 +1,6 @@ process { - withName: GLIMPSE2_CHUNK { + withName: GLIMPSE2_CONCORDANCE { + ext.args = { params.glimpse2_concordance_args} ext.prefix = { "${meta.id}" } } - publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } } \ No newline at end of file diff --git a/modules/nf-core/glimpse2/concordance/tests/nextflow_R2.config b/modules/nf-core/glimpse2/concordance/tests/nextflow_R2.config deleted file mode 100644 index 88174ccd131..00000000000 --- a/modules/nf-core/glimpse2/concordance/tests/nextflow_R2.config +++ /dev/null @@ -1,7 +0,0 @@ -process { - publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } - - withName:GLIMPSE2_CONCORDANCE { - ext.args = "--out-r2-per-site" - } -} diff --git a/modules/nf-core/merfin/hist/main.nf b/modules/nf-core/merfin/hist/main.nf index 2a7a7cf2369..76fdf6e12f7 100644 --- a/modules/nf-core/merfin/hist/main.nf +++ b/modules/nf-core/merfin/hist/main.nf @@ -15,9 +15,9 @@ process MERFIN_HIST { val(peak) // Required input to hard set copy 1 and infer multiplicity to copy number. output: - tuple val(meta), path("*.hist") , emit: hist - path("*.hist.stderr.log") , emit: log_stderr - path "versions.yml" , emit: versions + tuple val(meta), path("*.hist") , emit: hist + tuple val(meta), path("*.hist.stderr.log"), emit: log_stderr + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when @@ -48,10 +48,7 @@ process MERFIN_HIST { """ stub: - def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def optional_lookup_table = lookup_table ? "-prob ${lookup_table}" : "" - def optional_seqmers = seqmers ? "-seqmers ${seqmers}" : "" """ touch ${prefix}.hist touch ${prefix}.hist.stderr.log diff --git a/modules/nf-core/merfin/hist/meta.yml b/modules/nf-core/merfin/hist/meta.yml index f9064cc106d..ac0bf8f0d6a 100644 --- a/modules/nf-core/merfin/hist/meta.yml +++ b/modules/nf-core/merfin/hist/meta.yml @@ -63,12 +63,18 @@ output: e.g. `[ id:'sample1', single_end:false ]` - "*.hist": type: file - description: The generated 0-centered k* histogram for sequences in . + description: | + The generated 0-centered k* histogram for sequences in . Positive k* values are expected collapsed copies. Negative k* values are expected expanded copies. Closer to 0 means the expected and found k-mers are well balenced, 1:1. pattern: "*.{hist}" - log_stderr: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` - "*.hist.stderr.log": type: file description: Log (stderr) of hist tool execution. The QV and QV* metrics are diff --git a/modules/nf-core/merfin/hist/tests/main.nf.test b/modules/nf-core/merfin/hist/tests/main.nf.test index 7b392f1c610..c3a0e1ac025 100644 --- a/modules/nf-core/merfin/hist/tests/main.nf.test +++ b/modules/nf-core/merfin/hist/tests/main.nf.test @@ -17,7 +17,6 @@ nextflow_process { run("SEQTK_MERGEPE") { script "../../../seqtk/mergepe/main.nf" - config "./modules.config" tag "seqtk/mergepe" process { """ @@ -34,7 +33,6 @@ nextflow_process { run("MERYL_COUNT") { script "../../../meryl/count/main.nf" - config "./modules.config" tag "meryl/count" process { """ @@ -43,8 +41,7 @@ nextflow_process { """ } } - - + } when { @@ -65,9 +62,9 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out.get(0), process.out.get(2)).match() }, + { assert snapshot(process.out.hist, process.out.versions).match() }, // The following asserts that the instable output stdout_log generated by the module is complete - { assert path(process.out.get(1).get(0)).readLines().last().contains("Bye!") } + { assert path(process.out.log_stderr.get(0).get(1)).readLines().last().contains("Bye!") } ) } @@ -81,7 +78,6 @@ nextflow_process { run("SEQTK_MERGEPE") { script "../../../seqtk/mergepe/main.nf" - config "./modules.config" tag "seqtk/mergepe" process { """ @@ -98,7 +94,6 @@ nextflow_process { run("MERYL_COUNT") { script "../../../meryl/count/main.nf" - config "./modules.config" tag "meryl/count" process { """ @@ -107,8 +102,7 @@ nextflow_process { """ } } - - + } when { @@ -135,14 +129,12 @@ nextflow_process { } - test("sarscov2 - paired-end illumina reads plus optional inputs lookup_table and seqmers") { setup { run("SEQTK_MERGEPE") { script "../../../seqtk/mergepe/main.nf" - config "./modules.config" tag "seqtk/mergepe" process { """ @@ -159,7 +151,6 @@ nextflow_process { run("MERYL_COUNT", alias: "MERYL_COUNT_READS") { script "../../../meryl/count/main.nf" - config "./modules.config" tag "meryl/count" process { """ @@ -171,7 +162,6 @@ nextflow_process { run("MERYL_COUNT", alias: "MERYL_COUNT_ASM") { script "../../../meryl/count/main.nf" - config "./modules.config" tag "meryl/count" process { """ @@ -186,7 +176,6 @@ nextflow_process { run("MERYL_HISTOGRAM") { script "../../../meryl/histogram/main.nf" - config "./modules.config" tag "meryl/histogram" process { """ @@ -198,8 +187,11 @@ nextflow_process { run("GENOMESCOPE2") { script "../../../genomescope2/main.nf" - config "./modules.config" + config "./nextflow.config" tag "genomescope2" + params { + genomescope2_args = "--ploidy 1 --kmer_length 6 --fitted_hist" + } process { """ input[0] = MERYL_HISTOGRAM.out.hist @@ -207,9 +199,6 @@ nextflow_process { } } - - - } when { @@ -230,111 +219,9 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out.get(0), process.out.get(2)).match() }, + { assert snapshot(process.out.hist, process.out.versions).match() }, // The following asserts that the instable output stdout_log generated by the module is complete - { assert path(process.out.get(1).get(0)).readLines().last().contains("Bye!") } - ) - } - - } - - test("sarscov2 - paired-end illumina reads plus inputs lookup_table and seqmers - stub") { - - options "-stub" - - setup { - - run("SEQTK_MERGEPE") { - script "../../../seqtk/mergepe/main.nf" - config "./modules.config" - tag "seqtk/mergepe" - process { - """ - input[0] = [ - [ id:'test', single_end:false ], // meta map - [ - file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), - file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) - ] - ] - """ - } - } - - run("MERYL_COUNT", alias: "MERYL_COUNT_READS") { - script "../../../meryl/count/main.nf" - config "./modules.config" - tag "meryl/count" - process { - """ - input[0] = SEQTK_MERGEPE.out.reads - input[1] = Channel.value(6) - """ - } - } - - run("MERYL_COUNT", alias: "MERYL_COUNT_ASM") { - script "../../../meryl/count/main.nf" - config "./modules.config" - tag "meryl/count" - 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] = Channel.value(6) - """ - } - } - - run("MERYL_HISTOGRAM") { - script "../../../meryl/histogram/main.nf" - config "./modules.config" - tag "meryl/histogram" - process { - """ - input[0] = MERYL_COUNT_READS.out.meryl_db - input[1] = Channel.value(6) - """ - } - } - - run("GENOMESCOPE2") { - script "../../../genomescope2/main.nf" - config "./modules.config" - tag "genomescope2" - process { - """ - input[0] = MERYL_HISTOGRAM.out.hist - """ - } - } - - - - - } - - 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] = MERYL_COUNT_READS.out.meryl_db - input[2] = GENOMESCOPE2.out.lookup_table.map{ meta, lkp -> lkp } - input[3] = MERYL_COUNT_ASM.out.meryl_db.map{ meta, meryl_db -> meryl_db } - input[4] = 10 - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert snapshot(process.out).match() }, + { assert path(process.out.log_stderr.get(0).get(1)).readLines().last().contains("Bye!") } ) } @@ -346,7 +233,6 @@ nextflow_process { run("SEQTK_MERGEPE") { script "../../../seqtk/mergepe/main.nf" - config "./modules.config" tag "seqtk/mergepe" process { """ @@ -369,7 +255,6 @@ nextflow_process { run("MERYL_COUNT", alias: "MERYL_COUNT_READS") { script "../../../meryl/count/main.nf" - config "./modules.config" tag "meryl/count" process { """ @@ -381,7 +266,6 @@ nextflow_process { run("MERYL_COUNT", alias: "MERYL_COUNT_ASM") { script "../../../meryl/count/main.nf" - config "./modules.config" tag "meryl/count" process { """ @@ -399,7 +283,6 @@ nextflow_process { run("MERYL_HISTOGRAM") { script "../../../meryl/histogram/main.nf" - config "./modules.config" tag "meryl/histogram" process { """ @@ -411,8 +294,11 @@ nextflow_process { run("GENOMESCOPE2") { script "../../../genomescope2/main.nf" - config "./modules.config" + config "./nextflow.config" tag "genomescope2" + params { + genomescope2_args = "--ploidy 1 --kmer_length 6 --fitted_hist" + } process { """ input[0] = MERYL_HISTOGRAM.out.hist @@ -420,9 +306,6 @@ nextflow_process { } } - - - } when { @@ -446,7 +329,7 @@ nextflow_process { asm_meryl_ch: [asm_meryl_db] lk_ch: [lookup_table] }.set{ multimap_inputs_ch } - + input[0] = multimap_inputs_ch.asm_ch input[1] = multimap_inputs_ch.meryl_ch input[2] = multimap_inputs_ch.lk_ch @@ -459,139 +342,12 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out.get(0), process.out.get(2)).match() }, + { assert snapshot(process.out.hist, process.out.versions).match() }, // The following asserts that the output stdout_log generated by the module is complete - { assert path(process.out.get(1).get(0)).readLines().last().contains("Bye!") } + { assert path(process.out.log_stderr.get(0).get(1)).readLines().last().contains("Bye!") } ) } } - test("Multiple samples - sarscov2 + bacteroides_fragilis - paired-end illumina reads - stub") { - - options "-stub" - - setup { - - run("SEQTK_MERGEPE") { - script "../../../seqtk/mergepe/main.nf" - config "./modules.config" - tag "seqtk/mergepe" - process { - """ - input[0] = Channel.from([ - [ id:'test_sars', single_end:false ], // meta map - [ - file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), - file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) - ] - ], [ - [ id:'test_fragilis', single_end:false ], // meta map - [ - file(params.modules_testdata_base_path + '/genomics/prokaryotes/bacteroides_fragilis/illumina/fastq/test1_1.fastq.gz', checkIfExists: true), - file(params.modules_testdata_base_path + '/genomics/prokaryotes/bacteroides_fragilis/illumina/fastq/test1_2.fastq.gz', checkIfExists: true) - ] - ]) - """ - } - } - - run("MERYL_COUNT", alias: "MERYL_COUNT_READS") { - script "../../../meryl/count/main.nf" - config "./modules.config" - tag "meryl/count" - process { - """ - input[0] = SEQTK_MERGEPE.out.reads - input[1] = Channel.value(6) - """ - } - } - - run("MERYL_COUNT", alias: "MERYL_COUNT_ASM") { - script "../../../meryl/count/main.nf" - config "./modules.config" - tag "meryl/count" - process { - """ - input[0] = Channel.from([ - [ id:'test_sars', single_end:false ], // meta map - file(params.modules_testdata_base_path + '/genomics/sarscov2/genome/genome.fasta', checkIfExists: true) - ],[ - [ id:'test_fragilis', single_end:false ], // meta map - file(params.modules_testdata_base_path + '/genomics/prokaryotes/bacteroides_fragilis/genome/genome.fna.gz', checkIfExists: true) - ]) - input[1] = Channel.value(6) - """ - } - } - - run("MERYL_HISTOGRAM") { - script "../../../meryl/histogram/main.nf" - config "./modules.config" - tag "meryl/histogram" - process { - """ - input[0] = MERYL_COUNT_READS.out.meryl_db - input[1] = Channel.value(6) - """ - } - } - - run("GENOMESCOPE2") { - script "../../../genomescope2/main.nf" - config "./modules.config" - tag "genomescope2" - process { - """ - input[0] = MERYL_HISTOGRAM.out.hist - """ - } - } - - - - - } - - when { - process { - """ - Channel.from([ - [ id:'test_sars', single_end:false ], // meta map - file(params.modules_testdata_base_path + '/genomics/sarscov2/genome/genome.fasta', checkIfExists: true) - ],[ - [ id:'test_fragilis', single_end:false ], // meta map - file(params.modules_testdata_base_path + '/genomics/prokaryotes/bacteroides_fragilis/genome/genome.fna.gz', checkIfExists: true) - ]) - .set{ input_zero_ch } - - - input_zero_ch.join( MERYL_COUNT_READS.out.meryl_db ) - .join( MERYL_COUNT_ASM.out.meryl_db ) - .join( GENOMESCOPE2.out.lookup_table ) - .multiMap{ meta, asm, meryl_db, asm_meryl_db, lookup_table -> - asm_ch: [meta, asm] - meryl_ch: [meta, meryl_db] - asm_meryl_ch: [asm_meryl_db] - lk_ch: [lookup_table] - }.set{ multimap_inputs_ch } - - input[0] = multimap_inputs_ch.asm_ch - input[1] = multimap_inputs_ch.meryl_ch - input[2] = multimap_inputs_ch.lk_ch - input[3] = MERYL_COUNT_ASM.out.meryl_db.map{ meta, meryl_db -> meryl_db } - input[4] = 10 - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert snapshot(process.out.get(0), process.out.get(2)).match() } - ) - } - - } } diff --git a/modules/nf-core/merfin/hist/tests/main.nf.test.snap b/modules/nf-core/merfin/hist/tests/main.nf.test.snap index 2d1f4e9da8f..57b62ce36f0 100644 --- a/modules/nf-core/merfin/hist/tests/main.nf.test.snap +++ b/modules/nf-core/merfin/hist/tests/main.nf.test.snap @@ -23,10 +23,10 @@ ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.2" }, - "timestamp": "2024-04-02T11:05:51.416187" + "timestamp": "2024-12-04T14:23:55.755102982" }, "sarscov2 - paired-end illumina reads - stub": { "content": [ @@ -41,38 +41,18 @@ ] ], "1": [ - "test.hist.stderr.log:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "2": [ - "versions.yml:md5,078b89694148fc55475e89987173ac4e" - ], - "hist": [ [ { "id": "test", "single_end": false }, - "test.hist:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.hist.stderr.log:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "log_stderr": [ - "test.hist.stderr.log:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "versions": [ + "2": [ "versions.yml:md5,078b89694148fc55475e89987173ac4e" - ] - } - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-04-02T11:04:28.744584" - }, - "sarscov2 - paired-end illumina reads plus inputs lookup_table and seqmers - stub": { - "content": [ - { - "0": [ + ], + "hist": [ [ { "id": "test", @@ -81,34 +61,25 @@ "test.hist:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "1": [ - "test.hist.stderr.log:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "2": [ - "versions.yml:md5,078b89694148fc55475e89987173ac4e" - ], - "hist": [ + "log_stderr": [ [ { "id": "test", "single_end": false }, - "test.hist:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.hist.stderr.log:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "log_stderr": [ - "test.hist.stderr.log:md5,d41d8cd98f00b204e9800998ecf8427e" - ], "versions": [ "versions.yml:md5,078b89694148fc55475e89987173ac4e" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.2" }, - "timestamp": "2024-04-02T11:04:51.831185" + "timestamp": "2024-12-04T14:22:22.453658086" }, "sarscov2 - paired-end illumina reads plus optional inputs lookup_table and seqmers": { "content": [ @@ -126,39 +97,10 @@ ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-04-02T11:04:41.739829" - }, - "Multiple samples - sarscov2 + bacteroides_fragilis - paired-end illumina reads - stub": { - "content": [ - [ - [ - { - "id": "test_fragilis", - "single_end": false - }, - "test_fragilis.hist:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - [ - { - "id": "test_sars", - "single_end": false - }, - "test_sars.hist:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - [ - "versions.yml:md5,078b89694148fc55475e89987173ac4e", - "versions.yml:md5,078b89694148fc55475e89987173ac4e" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.2" }, - "timestamp": "2024-04-02T11:06:03.566853" + "timestamp": "2024-12-04T14:22:53.870204134" }, "sarscov2 - paired-end illumina reads": { "content": [ @@ -176,9 +118,9 @@ ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.2" }, - "timestamp": "2024-04-02T11:04:20.733553" + "timestamp": "2024-12-04T14:22:05.632363561" } -} \ No newline at end of file +} diff --git a/modules/nf-core/merfin/hist/tests/modules.config b/modules/nf-core/merfin/hist/tests/modules.config deleted file mode 100644 index 034f147826c..00000000000 --- a/modules/nf-core/merfin/hist/tests/modules.config +++ /dev/null @@ -1,5 +0,0 @@ -process { - withName: GENOMESCOPE2 { - ext.args = { "--ploidy 1 --kmer_length 6 --fitted_hist" } - } -} \ No newline at end of file diff --git a/modules/nf-core/merfin/hist/tests/nextflow.config b/modules/nf-core/merfin/hist/tests/nextflow.config new file mode 100644 index 00000000000..aeed5689e7a --- /dev/null +++ b/modules/nf-core/merfin/hist/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: GENOMESCOPE2 { + ext.args = { params.genomescope2_args } + } +} diff --git a/modules/nf-core/merqury/merqury/tests/main.nf.test.snap b/modules/nf-core/merqury/merqury/tests/main.nf.test.snap index d96fa7efca5..4081b60f6cd 100644 --- a/modules/nf-core/merqury/merqury/tests/main.nf.test.snap +++ b/modules/nf-core/merqury/merqury/tests/main.nf.test.snap @@ -336,7 +336,7 @@ "id": "test", "single_end": false }, - "test.genome.spectra-cn.hist:md5,6140a138ba47cb2b97814c93f80b2575" + "test.genome.spectra-cn.hist:md5,f4222933758ecce1ec9ab4de7b169c94" ] ], [ @@ -345,7 +345,7 @@ "id": "test", "single_end": false }, - "test.spectra-asm.hist:md5,541c9d1f87ab5c44df5e9e0acc440f8d" + "test.spectra-asm.hist:md5,b5a4ab1485313915d2ce9ce94aa89457" ] ], [ @@ -372,7 +372,7 @@ "id": "test", "single_end": false }, - "test.unionsum.hist.ploidy:md5,16cf2fd89ed870c9cceb269e8430169a" + "test.unionsum.hist.ploidy:md5,3fe5dc377d8c9562980e1b93d01cac94" ] ], [ @@ -386,10 +386,10 @@ "test.spectra-asm.st.png" ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.1", + "nextflow": "24.10.0" }, - "timestamp": "2024-05-22T21:52:39.004978" + "timestamp": "2024-11-04T12:42:32.360126893" }, "homo_sapiens-genome-trio": { "content": [ @@ -417,7 +417,7 @@ "id": "test", "single_end": false }, - "test.completeness.stats:md5,58b3933129832d64652babd80688eec3" + "test.completeness.stats:md5,a8c7089c212e9dca2e0c47199b3002f9" ] ], [ @@ -435,7 +435,7 @@ "id": "test", "single_end": false }, - "test.genome.spectra-cn.hist:md5,6140a138ba47cb2b97814c93f80b2575" + "test.genome.spectra-cn.hist:md5,f4222933758ecce1ec9ab4de7b169c94" ] ], [ @@ -444,7 +444,7 @@ "id": "test", "single_end": false }, - "test.spectra-asm.hist:md5,541c9d1f87ab5c44df5e9e0acc440f8d" + "test.spectra-asm.hist:md5,b5a4ab1485313915d2ce9ce94aa89457" ] ], [ @@ -471,24 +471,24 @@ "id": "test", "single_end": false }, - "test.unionsum.hist.ploidy:md5,16cf2fd89ed870c9cceb269e8430169a" + "test.unionsum.hist.ploidy:md5,3fe5dc377d8c9562980e1b93d01cac94" ] ], [ "versions.yml:md5,825a4c61369638389227eee16dfb08b5" ], - "test.genome.read.test2_1.spectra-cn.fl.png,test.genome.read.test2_2.spectra-cn.fl.png,test.genome.spectra-cn.fl.png", - "test.genome.read.test2_1.spectra-cn.ln.png,test.genome.read.test2_2.spectra-cn.ln.png,test.genome.spectra-cn.ln.png", - "test.genome.read.test2_1.spectra-cn.st.png,test.genome.read.test2_2.spectra-cn.st.png,test.genome.spectra-cn.st.png", + "test.genome.spectra-cn.fl.png,test.genome.test.test2_1.spectra-cn.fl.png,test.genome.test.test2_2.spectra-cn.fl.png", + "test.genome.spectra-cn.ln.png,test.genome.test.test2_1.spectra-cn.ln.png,test.genome.test.test2_2.spectra-cn.ln.png", + "test.genome.spectra-cn.st.png,test.genome.test.test2_1.spectra-cn.st.png,test.genome.test.test2_2.spectra-cn.st.png", "test.spectra-asm.fl.png", "test.spectra-asm.ln.png", "test.spectra-asm.st.png", "test.hapmers.blob.png" ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.2" }, - "timestamp": "2024-05-23T10:37:10.601154" + "timestamp": "2024-12-04T20:06:48.980375307" } } \ No newline at end of file diff --git a/modules/nf-core/meryl/count/main.nf b/modules/nf-core/meryl/count/main.nf index c1540cc874b..c90079d6d38 100644 --- a/modules/nf-core/meryl/count/main.nf +++ b/modules/nf-core/meryl/count/main.nf @@ -4,8 +4,8 @@ process MERYL_COUNT { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/meryl:1.4.1--h4ac6f70_0': - 'biocontainers/meryl:1.4.1--h4ac6f70_0' }" + 'https://depot.galaxyproject.org/singularity/meryl:1.4.1--h4ac6f70_1': + 'biocontainers/meryl:1.4.1--h4ac6f70_1' }" input: tuple val(meta), path(reads) @@ -21,34 +21,34 @@ process MERYL_COUNT { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" + def reduced_mem = task.memory.multiply(0.9).toGiga() """ - for READ in $reads; do + for READ in ${reads}; do meryl count \\ - k=$kvalue \\ - threads=$task.cpus \\ - memory=${task.memory.toGiga()} \\ - $args \\ - $reads \\ - output read.\${READ%.f*}.meryl + k=${kvalue} \\ + threads=${task.cpus} \\ + memory=${reduced_mem} \\ + ${args} \\ + \$READ \\ + output ${prefix}.\${READ%.f*}.meryl done cat <<-END_VERSIONS > versions.yml "${task.process}": - meryl: \$( meryl --version |& sed 's/meryl //' ) + meryl: \$( meryl --version |& sed -n 's/.* \\([a-f0-9]\\{40\\}\\))/\\1/p' ) END_VERSIONS """ stub: - def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" """ - for READ in $reads; do - touch read.\${READ%.f*}.meryl + for READ in ${reads}; do + touch ${prefix}.\${READ%.f*}.meryl done cat <<-END_VERSIONS > versions.yml "${task.process}": - meryl: \$( meryl --version |& sed 's/meryl //' ) + meryl: \$( meryl --version |& sed -n 's/.* \\([a-f0-9]\\{40\\}\\))/\\1/p' ) END_VERSIONS """ } diff --git a/modules/nf-core/meryl/count/tests/main.nf.test.snap b/modules/nf-core/meryl/count/tests/main.nf.test.snap index e0a209029b3..2e94c03b7cf 100644 --- a/modules/nf-core/meryl/count/tests/main.nf.test.snap +++ b/modules/nf-core/meryl/count/tests/main.nf.test.snap @@ -142,7 +142,7 @@ ] ], "1": [ - "versions.yml:md5,a4a6baac7481f1d4595ba54622bdf33d" + "versions.yml:md5,f1c1f87947a64d681c3f0678036cafeb" ], "meryl_db": [ [ @@ -284,15 +284,15 @@ ] ], "versions": [ - "versions.yml:md5,a4a6baac7481f1d4595ba54622bdf33d" + "versions.yml:md5,f1c1f87947a64d681c3f0678036cafeb" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.2" }, - "timestamp": "2024-03-26T19:30:03.054214308" + "timestamp": "2024-12-04T12:27:45.159763589" }, "bacteroides_fragilis - fastq - stub": { "content": [ @@ -303,11 +303,11 @@ "id": "test", "single_end": true }, - "read.test1_1.meryl:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.test1_1.meryl:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "1": [ - "versions.yml:md5,a4a6baac7481f1d4595ba54622bdf33d" + "versions.yml:md5,f1c1f87947a64d681c3f0678036cafeb" ], "meryl_db": [ [ @@ -315,18 +315,18 @@ "id": "test", "single_end": true }, - "read.test1_1.meryl:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.test1_1.meryl:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "versions": [ - "versions.yml:md5,a4a6baac7481f1d4595ba54622bdf33d" + "versions.yml:md5,f1c1f87947a64d681c3f0678036cafeb" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.2" }, - "timestamp": "2024-05-22T12:27:16.300916" + "timestamp": "2024-12-04T20:07:50.042776716" } } \ No newline at end of file diff --git a/modules/nf-core/meryl/unionsum/tests/main.nf.test.snap b/modules/nf-core/meryl/unionsum/tests/main.nf.test.snap index a6ed4c73468..fd29eb18f84 100644 --- a/modules/nf-core/meryl/unionsum/tests/main.nf.test.snap +++ b/modules/nf-core/meryl/unionsum/tests/main.nf.test.snap @@ -339,135 +339,135 @@ "single_end": false }, [ - "0x000000.merylData:md5,75f3969bef1e3b030f404a5206d6b249", + "0x000000.merylData:md5,6907bd82d2e87fde85cde385f1dfb866", "0x000000.merylIndex:md5,b18113193945289fa1c20e96411e6ad2", - "0x000001.merylData:md5,8826eb52c3d06b5a092cb9a1f747e413", + "0x000001.merylData:md5,b15dfbb0dcf4d6291da45969959de51a", "0x000001.merylIndex:md5,72a68ddfd9900e2db4a38f8a0ae48356", - "0x000010.merylData:md5,b11a404bf18f87ae565d8e60b63a0f2f", + "0x000010.merylData:md5,6645155194aef3ec2003ffab421dc40f", "0x000010.merylIndex:md5,b518574321a3ab6d5eca385a4d6c4c10", - "0x000011.merylData:md5,055292edb4ea604a90a749c07528477e", + "0x000011.merylData:md5,b9bd7fae68e738de020ebd33dd8806a8", "0x000011.merylIndex:md5,d2aa5bdd749babc771d98185b9da96d1", - "0x000100.merylData:md5,a092b9ae90e5096bf819f8eaeec15873", + "0x000100.merylData:md5,858e7f81ecf600b5f2ae082970da2865", "0x000100.merylIndex:md5,1950c77b8985b4e516ceca2df12ffe24", - "0x000101.merylData:md5,1d02c628dda5eeec4f30674fffb1955c", + "0x000101.merylData:md5,730273d9b4822976ed15e8381dc54e9a", "0x000101.merylIndex:md5,f0c3dc05caae4af498e54f3263e6436f", - "0x000110.merylData:md5,62ce2f63040efa731d731abb8e76ccc0", + "0x000110.merylData:md5,99b0c99fce064e69f7996f4740f23d8c", "0x000110.merylIndex:md5,adbf5072a6b7a096b9eba54482c26572", - "0x000111.merylData:md5,37912c49ffe875b835f8f4780ee52706", + "0x000111.merylData:md5,50d39822964bb4757335be4022a10ca5", "0x000111.merylIndex:md5,16392081f93560ed66a14d28eb26cd15", - "0x001000.merylData:md5,9826f31aee64d0cc96dff5da6996f0e6", + "0x001000.merylData:md5,4f777c0573f985ab9da08841fc6e4e9e", "0x001000.merylIndex:md5,849691b9f41cbba9158b30ee19f32b9d", - "0x001001.merylData:md5,1a617074700788e78b4ffc3575980adf", + "0x001001.merylData:md5,6b90d02cd560917b3697f7b9eca8a29b", "0x001001.merylIndex:md5,cafd9628934092a38eff45d2250ac466", - "0x001010.merylData:md5,7f93e8ac5ae70ad104140d032a37a295", + "0x001010.merylData:md5,bdebd5fba44b0b4c27d1b1038792ef1c", "0x001010.merylIndex:md5,866787afefa6acd99199d0eac8ced9e8", - "0x001011.merylData:md5,b77639289243a8fb7a43745986eab590", + "0x001011.merylData:md5,1a964685f383bff57ec439158537fc76", "0x001011.merylIndex:md5,06724a52696784a94d33b2d23acc8873", - "0x001100.merylData:md5,20862f1f92786588de42140362672d38", + "0x001100.merylData:md5,a9b0a6a1e4457d13c1d2fc5c44d2ba44", "0x001100.merylIndex:md5,c5468a40dff4268c978cc1918610b7d7", - "0x001101.merylData:md5,274002b8f45eb9ca54fad4db3d3aca02", + "0x001101.merylData:md5,238998f7275823d6f144c48a867dc8a9", "0x001101.merylIndex:md5,b543aaf4d975360e23a692e44e605168", - "0x001110.merylData:md5,b55c68ee98e39ff9327f609ed2438e00", + "0x001110.merylData:md5,07d2ecd558d19ddfd5e7f92bd4bf6025", "0x001110.merylIndex:md5,4b3da649a6bc53936fa23c173cbc4f21", - "0x001111.merylData:md5,abdc96b88d2f1fbed3c99a33a1eef45a", + "0x001111.merylData:md5,fbfeebdb0e433c76928f88e4e8900c9e", "0x001111.merylIndex:md5,1758e12d5d8cf4ba9eeafe3bc01231f8", - "0x010000.merylData:md5,0c26808742826bddfeb43b7bc7d238bb", + "0x010000.merylData:md5,536c45381c4d616c4d40dd6e21a3f824", "0x010000.merylIndex:md5,0c2b47836a4584765343fdf3a96246e8", - "0x010001.merylData:md5,f1dc27b017b36dbf72852b422e83d016", + "0x010001.merylData:md5,f19ceb7051e13da000a2a9e76469e7f2", "0x010001.merylIndex:md5,0b8a6db458ba4f63c36a61f487455145", - "0x010010.merylData:md5,a57d01b52bcbdd8608999e342102c146", + "0x010010.merylData:md5,f7d346831755eacc8c8622e2f7a0f96e", "0x010010.merylIndex:md5,635007bb466089cd3e202b68b8c66d74", - "0x010011.merylData:md5,37371dd1409929adee11133b5f03d3a7", + "0x010011.merylData:md5,4fe3cd5fa1f0e8eb3ad002de56c7bc4d", "0x010011.merylIndex:md5,492653df27505b88e3acc309c02bb8c7", - "0x010100.merylData:md5,517efaeccd253932d2a53f1d8068bde3", + "0x010100.merylData:md5,9b02634ed3c70d84b572a8ccfed26a92", "0x010100.merylIndex:md5,a61da37cd8e0d8de98f8e15b868341d7", - "0x010101.merylData:md5,9279f4e25c7b4b10f0181f661f3a12d2", + "0x010101.merylData:md5,a2918a5e9d1d2b42005d88e6cf644efa", "0x010101.merylIndex:md5,c09553e7f106e4c62e2004f8c7f15ade", - "0x010110.merylData:md5,2579c222fbbd1e45fac5f44d080b5464", + "0x010110.merylData:md5,ef5c9d0927071db962a737b7abe82307", "0x010110.merylIndex:md5,b7ba0385367bcb978c737a2778c9fbd4", - "0x010111.merylData:md5,c403bc281ff88cd996aa54d16c808e23", + "0x010111.merylData:md5,6060250ce6f83c08a9d446f5fcdf2002", "0x010111.merylIndex:md5,2d4c515b1b65e2fd0da877ff5d29f80c", - "0x011000.merylData:md5,ab856ffad72bf9a55fdc5f838eb4051e", + "0x011000.merylData:md5,2f22461c7c0d149bcd6ecfa9df6b37d6", "0x011000.merylIndex:md5,86d657bc906e475cb714d704d41c7565", - "0x011001.merylData:md5,b64664fa97dab9df2e3b4e247f396f67", + "0x011001.merylData:md5,14acb4a7c67f4998abe37d54dfa7366a", "0x011001.merylIndex:md5,67ab51e1233ae97f976fdd24997bd859", - "0x011010.merylData:md5,6530932b97c9149c94174d5e229a14a9", + "0x011010.merylData:md5,94739dd230b61fc2c710098aabb44708", "0x011010.merylIndex:md5,e4a6f8cc99486fe79509be98a0c2841d", - "0x011011.merylData:md5,58357359932e814a983f0ce26acf5115", + "0x011011.merylData:md5,795ff5b3cf525ea09a9a7daf00e5633c", "0x011011.merylIndex:md5,4426d81216c7a2dae734cf70536cf6bb", - "0x011100.merylData:md5,eb75a337c0649a58727dc3292e4d25db", + "0x011100.merylData:md5,0d32a9b72c83f80cc09a7b71611659d7", "0x011100.merylIndex:md5,a94b932a0583180d3027d445755e37f8", - "0x011101.merylData:md5,c494378696f831deebad0e0fe2db1881", + "0x011101.merylData:md5,6bf0daccb779ba84637cde3f378d7256", "0x011101.merylIndex:md5,ef00cd5e7255d4b751140fd0c83400a1", - "0x011110.merylData:md5,abec95fb53891ca69dd1e7ea20189204", + "0x011110.merylData:md5,a03a000ab056bf4de3d57d5e19ddd2c1", "0x011110.merylIndex:md5,bc2b1a21e91760ad49897097071df011", - "0x011111.merylData:md5,4b858e2a28860f789e8a5dc62e062557", + "0x011111.merylData:md5,cec5db4f8628cad288a61ad5d1ba3bf7", "0x011111.merylIndex:md5,5eed11ba178f7f9559625364d96aa41c", - "0x100000.merylData:md5,768528aaafba818f8e34d4b65de5242e", + "0x100000.merylData:md5,a975e62725986aa52aca0afdd4a6b1b2", "0x100000.merylIndex:md5,6649d5940b0a60b289dce7073de4777d", - "0x100001.merylData:md5,d0ef60de56a5dc1cec3606e3f07620c2", + "0x100001.merylData:md5,f4958edb6d63d08565110797c26c1406", "0x100001.merylIndex:md5,26d0852978fc3a8972aec67cebcc0f28", - "0x100010.merylData:md5,5b5a0fd3be35a954597a1c88ed3912ab", + "0x100010.merylData:md5,11060f964c120fff504e20b738cc4e16", "0x100010.merylIndex:md5,68c7135add32c8aac3c4207a7db7d37a", - "0x100011.merylData:md5,d8c188713b5379ba7e53bd7ac26baed5", + "0x100011.merylData:md5,a75d362f109f60a2f41ace67f2afac3b", "0x100011.merylIndex:md5,4a9ed0a918945a7e9602427e23bd955c", - "0x100100.merylData:md5,68403d2ad355e2f9f9b8032616c6fbab", + "0x100100.merylData:md5,22cbafef8c45a58e02acd625e43e9f5f", "0x100100.merylIndex:md5,2fe6f882ae22d87581300c3b9b24242b", - "0x100101.merylData:md5,a6102a49c8b51870bf14b6ace728cfa1", + "0x100101.merylData:md5,0ce6aa8b317c98f2872d0947b77380d0", "0x100101.merylIndex:md5,f5b56f5edb9f55973288aab6b0c81467", - "0x100110.merylData:md5,418f44aecc5beb96d4fe9d5c22e5d8df", + "0x100110.merylData:md5,1998235165f1fa9e3297428d5bdf75fa", "0x100110.merylIndex:md5,3b93d1b48ce9314ed0946e7a4d1b6c19", - "0x100111.merylData:md5,1cce84d0d61511837a70bb48aab84a20", + "0x100111.merylData:md5,b80bc0aab16f82bb110aadc891f7d14a", "0x100111.merylIndex:md5,42d17c375dccd68da727f531cc05a9fa", - "0x101000.merylData:md5,e2f713f0fb453506b18db92609a1fdff", + "0x101000.merylData:md5,32fc5753e91839877f9c479d12fdb3fc", "0x101000.merylIndex:md5,f9fa2ccd8b89aa7147130c7dac705ce0", - "0x101001.merylData:md5,1cde5e30da7e245689c7c7a7006ebc40", + "0x101001.merylData:md5,cbb29e2676273deb69ff4687a7077ffe", "0x101001.merylIndex:md5,f3d6a5e2eeb01dffaf6ebd04793d269b", - "0x101010.merylData:md5,088d7310df61d7917f3b49cc5ca1bef5", + "0x101010.merylData:md5,887d6b1ff522dfcdbfda13ab6c791f3d", "0x101010.merylIndex:md5,5de136cfda775349c75d47e5c5bae16b", - "0x101011.merylData:md5,c37a7fd125f9563760f0a7b065fb99f5", + "0x101011.merylData:md5,595e4caddd85bd2555aebf238e108d62", "0x101011.merylIndex:md5,7374a2a00f9cf1fb4760dd6c68ce05de", - "0x101100.merylData:md5,3c76f864ab548adfb4d8f11869ab7b3a", + "0x101100.merylData:md5,db1479d5efdd5300942887943ad51651", "0x101100.merylIndex:md5,e65c609b7b05a34a75c3eb7fbef9a488", - "0x101101.merylData:md5,8faec3c432a9fcaf7d6413a9966d15e7", + "0x101101.merylData:md5,908b53b7bcfed9e8b4b5916dde1be72f", "0x101101.merylIndex:md5,c4fb9020e3b1690f5d4717be5384427d", - "0x101110.merylData:md5,92fb3c0d061a4d258bdde77c904312ab", + "0x101110.merylData:md5,64534d7ef128ddafb3e120f8296a7347", "0x101110.merylIndex:md5,0518b5e9eb8cecedd4da3a0470fbb43d", - "0x101111.merylData:md5,7f2174eee07aa116cffb77f85910efec", + "0x101111.merylData:md5,ff39ab42629db952fee582cc4fcd5c43", "0x101111.merylIndex:md5,f7ecf59ae53a3a38cc4b7c2509379b3a", - "0x110000.merylData:md5,8c5866a1e6932eb777fe6e72c1090e1e", + "0x110000.merylData:md5,76c687419cda34c25d8a373e0cef962c", "0x110000.merylIndex:md5,fdcca3797ca34cdbb3d6808847c111d5", - "0x110001.merylData:md5,02cc9f0ece95b69c6dfe3f04a0425f92", + "0x110001.merylData:md5,93a2041b6e734b33f19344736397e435", "0x110001.merylIndex:md5,d545188ef68c84c1c653e23f6fae4ef3", - "0x110010.merylData:md5,665d40c5e306952883fe2ffa641024bb", + "0x110010.merylData:md5,9dbc351f6ea21f4094c28559da47d97a", "0x110010.merylIndex:md5,445e745bd1f34502437541fafbb21943", - "0x110011.merylData:md5,e32f9db7cfb6dfa243f45258f1b55041", + "0x110011.merylData:md5,fe6a44f4d40b874ba5d828b91a7c59de", "0x110011.merylIndex:md5,6e93712a47efaf6a4656c0dbeb1e5b1a", - "0x110100.merylData:md5,af978fc2cc304f2aee3f06416a1a43aa", + "0x110100.merylData:md5,dd02c49ced41b2ca24e8219f51557ce2", "0x110100.merylIndex:md5,ed97271331d8bb4eabbd0978cd4b9d23", - "0x110101.merylData:md5,a7bdc73355bea8749db38966fb7c968d", + "0x110101.merylData:md5,9845bedc85103e2051e6382f6843aa0e", "0x110101.merylIndex:md5,b30ff36567bede03396e67e973d4fdf9", - "0x110110.merylData:md5,0ee1f4b187ce88567262d3a6302f3f2a", + "0x110110.merylData:md5,2a0e5aa913bc2ac81c46c1772a685dc1", "0x110110.merylIndex:md5,505cab345465852c8284d190e91ce7fa", - "0x110111.merylData:md5,02929a0fd245f27576d794c98443ed52", + "0x110111.merylData:md5,242d3645152d88f84795635a2f716559", "0x110111.merylIndex:md5,8b70850b1775790354ff00ffcfb9df65", - "0x111000.merylData:md5,21cb35b24f60b6c69c49c327d1fd797f", + "0x111000.merylData:md5,8f02073e8bdb8ee281d242c9b2cc5870", "0x111000.merylIndex:md5,7a54391084d2354b534bbf238631a80e", - "0x111001.merylData:md5,3c864da93bf29a8a0665cd83e1b612e7", + "0x111001.merylData:md5,fd34f0e8eb47452c8ac6639ba8f4e76e", "0x111001.merylIndex:md5,4504239cfc112fcf6e9dba44e6f9f488", - "0x111010.merylData:md5,9d08a9742799fd0ab5b29f184667cb7c", + "0x111010.merylData:md5,17077d483fc1a79768a9d1936957d9de", "0x111010.merylIndex:md5,b67161fd14e224f11a592691fe08e0e5", - "0x111011.merylData:md5,f5a09c0f5faa10aaad17efe454ff9395", + "0x111011.merylData:md5,f8ab44d101f95d283c14a20e27c0faae", "0x111011.merylIndex:md5,75306fb2397e61a0910a5034cb9309c9", - "0x111100.merylData:md5,6c1ddf20980ade712673d606c6f3dfbe", + "0x111100.merylData:md5,fc250a1981bad90056d79dd55094bfa3", "0x111100.merylIndex:md5,35642b10f80c44989de4131a4c2b9c95", - "0x111101.merylData:md5,a26af5a2348ddc4882eb06d4edb63b6f", + "0x111101.merylData:md5,f36232eb7aaf9491247326f1a299832a", "0x111101.merylIndex:md5,e6affc54363b262b10e55267192cd68b", - "0x111110.merylData:md5,7a7f81ee6339c46bffe18de12c3a7177", + "0x111110.merylData:md5,5a0e13cdadeeb2fab06deac1fdd2674f", "0x111110.merylIndex:md5,07f0179b757af0593f9120c98b7b9052", - "0x111111.merylData:md5,0e63424ed0b9b5a399058dbea354ae64", + "0x111111.merylData:md5,7ebfc7c0d265e590063adc31a33df3f3", "0x111111.merylIndex:md5,b8c6b4cc0580f55e4767f1f4529d772b", - "merylIndex:md5,72fb8181bcbb783884da1c8c2ded4eff" + "merylIndex:md5,09e1efc5b5b9e4daf6ab7f55fe1dff20" ] ] ], @@ -481,135 +481,135 @@ "single_end": false }, [ - "0x000000.merylData:md5,75f3969bef1e3b030f404a5206d6b249", + "0x000000.merylData:md5,6907bd82d2e87fde85cde385f1dfb866", "0x000000.merylIndex:md5,b18113193945289fa1c20e96411e6ad2", - "0x000001.merylData:md5,8826eb52c3d06b5a092cb9a1f747e413", + "0x000001.merylData:md5,b15dfbb0dcf4d6291da45969959de51a", "0x000001.merylIndex:md5,72a68ddfd9900e2db4a38f8a0ae48356", - "0x000010.merylData:md5,b11a404bf18f87ae565d8e60b63a0f2f", + "0x000010.merylData:md5,6645155194aef3ec2003ffab421dc40f", "0x000010.merylIndex:md5,b518574321a3ab6d5eca385a4d6c4c10", - "0x000011.merylData:md5,055292edb4ea604a90a749c07528477e", + "0x000011.merylData:md5,b9bd7fae68e738de020ebd33dd8806a8", "0x000011.merylIndex:md5,d2aa5bdd749babc771d98185b9da96d1", - "0x000100.merylData:md5,a092b9ae90e5096bf819f8eaeec15873", + "0x000100.merylData:md5,858e7f81ecf600b5f2ae082970da2865", "0x000100.merylIndex:md5,1950c77b8985b4e516ceca2df12ffe24", - "0x000101.merylData:md5,1d02c628dda5eeec4f30674fffb1955c", + "0x000101.merylData:md5,730273d9b4822976ed15e8381dc54e9a", "0x000101.merylIndex:md5,f0c3dc05caae4af498e54f3263e6436f", - "0x000110.merylData:md5,62ce2f63040efa731d731abb8e76ccc0", + "0x000110.merylData:md5,99b0c99fce064e69f7996f4740f23d8c", "0x000110.merylIndex:md5,adbf5072a6b7a096b9eba54482c26572", - "0x000111.merylData:md5,37912c49ffe875b835f8f4780ee52706", + "0x000111.merylData:md5,50d39822964bb4757335be4022a10ca5", "0x000111.merylIndex:md5,16392081f93560ed66a14d28eb26cd15", - "0x001000.merylData:md5,9826f31aee64d0cc96dff5da6996f0e6", + "0x001000.merylData:md5,4f777c0573f985ab9da08841fc6e4e9e", "0x001000.merylIndex:md5,849691b9f41cbba9158b30ee19f32b9d", - "0x001001.merylData:md5,1a617074700788e78b4ffc3575980adf", + "0x001001.merylData:md5,6b90d02cd560917b3697f7b9eca8a29b", "0x001001.merylIndex:md5,cafd9628934092a38eff45d2250ac466", - "0x001010.merylData:md5,7f93e8ac5ae70ad104140d032a37a295", + "0x001010.merylData:md5,bdebd5fba44b0b4c27d1b1038792ef1c", "0x001010.merylIndex:md5,866787afefa6acd99199d0eac8ced9e8", - "0x001011.merylData:md5,b77639289243a8fb7a43745986eab590", + "0x001011.merylData:md5,1a964685f383bff57ec439158537fc76", "0x001011.merylIndex:md5,06724a52696784a94d33b2d23acc8873", - "0x001100.merylData:md5,20862f1f92786588de42140362672d38", + "0x001100.merylData:md5,a9b0a6a1e4457d13c1d2fc5c44d2ba44", "0x001100.merylIndex:md5,c5468a40dff4268c978cc1918610b7d7", - "0x001101.merylData:md5,274002b8f45eb9ca54fad4db3d3aca02", + "0x001101.merylData:md5,238998f7275823d6f144c48a867dc8a9", "0x001101.merylIndex:md5,b543aaf4d975360e23a692e44e605168", - "0x001110.merylData:md5,b55c68ee98e39ff9327f609ed2438e00", + "0x001110.merylData:md5,07d2ecd558d19ddfd5e7f92bd4bf6025", "0x001110.merylIndex:md5,4b3da649a6bc53936fa23c173cbc4f21", - "0x001111.merylData:md5,abdc96b88d2f1fbed3c99a33a1eef45a", + "0x001111.merylData:md5,fbfeebdb0e433c76928f88e4e8900c9e", "0x001111.merylIndex:md5,1758e12d5d8cf4ba9eeafe3bc01231f8", - "0x010000.merylData:md5,0c26808742826bddfeb43b7bc7d238bb", + "0x010000.merylData:md5,536c45381c4d616c4d40dd6e21a3f824", "0x010000.merylIndex:md5,0c2b47836a4584765343fdf3a96246e8", - "0x010001.merylData:md5,f1dc27b017b36dbf72852b422e83d016", + "0x010001.merylData:md5,f19ceb7051e13da000a2a9e76469e7f2", "0x010001.merylIndex:md5,0b8a6db458ba4f63c36a61f487455145", - "0x010010.merylData:md5,a57d01b52bcbdd8608999e342102c146", + "0x010010.merylData:md5,f7d346831755eacc8c8622e2f7a0f96e", "0x010010.merylIndex:md5,635007bb466089cd3e202b68b8c66d74", - "0x010011.merylData:md5,37371dd1409929adee11133b5f03d3a7", + "0x010011.merylData:md5,4fe3cd5fa1f0e8eb3ad002de56c7bc4d", "0x010011.merylIndex:md5,492653df27505b88e3acc309c02bb8c7", - "0x010100.merylData:md5,517efaeccd253932d2a53f1d8068bde3", + "0x010100.merylData:md5,9b02634ed3c70d84b572a8ccfed26a92", "0x010100.merylIndex:md5,a61da37cd8e0d8de98f8e15b868341d7", - "0x010101.merylData:md5,9279f4e25c7b4b10f0181f661f3a12d2", + "0x010101.merylData:md5,a2918a5e9d1d2b42005d88e6cf644efa", "0x010101.merylIndex:md5,c09553e7f106e4c62e2004f8c7f15ade", - "0x010110.merylData:md5,2579c222fbbd1e45fac5f44d080b5464", + "0x010110.merylData:md5,ef5c9d0927071db962a737b7abe82307", "0x010110.merylIndex:md5,b7ba0385367bcb978c737a2778c9fbd4", - "0x010111.merylData:md5,c403bc281ff88cd996aa54d16c808e23", + "0x010111.merylData:md5,6060250ce6f83c08a9d446f5fcdf2002", "0x010111.merylIndex:md5,2d4c515b1b65e2fd0da877ff5d29f80c", - "0x011000.merylData:md5,ab856ffad72bf9a55fdc5f838eb4051e", + "0x011000.merylData:md5,2f22461c7c0d149bcd6ecfa9df6b37d6", "0x011000.merylIndex:md5,86d657bc906e475cb714d704d41c7565", - "0x011001.merylData:md5,b64664fa97dab9df2e3b4e247f396f67", + "0x011001.merylData:md5,14acb4a7c67f4998abe37d54dfa7366a", "0x011001.merylIndex:md5,67ab51e1233ae97f976fdd24997bd859", - "0x011010.merylData:md5,6530932b97c9149c94174d5e229a14a9", + "0x011010.merylData:md5,94739dd230b61fc2c710098aabb44708", "0x011010.merylIndex:md5,e4a6f8cc99486fe79509be98a0c2841d", - "0x011011.merylData:md5,58357359932e814a983f0ce26acf5115", + "0x011011.merylData:md5,795ff5b3cf525ea09a9a7daf00e5633c", "0x011011.merylIndex:md5,4426d81216c7a2dae734cf70536cf6bb", - "0x011100.merylData:md5,eb75a337c0649a58727dc3292e4d25db", + "0x011100.merylData:md5,0d32a9b72c83f80cc09a7b71611659d7", "0x011100.merylIndex:md5,a94b932a0583180d3027d445755e37f8", - "0x011101.merylData:md5,c494378696f831deebad0e0fe2db1881", + "0x011101.merylData:md5,6bf0daccb779ba84637cde3f378d7256", "0x011101.merylIndex:md5,ef00cd5e7255d4b751140fd0c83400a1", - "0x011110.merylData:md5,abec95fb53891ca69dd1e7ea20189204", + "0x011110.merylData:md5,a03a000ab056bf4de3d57d5e19ddd2c1", "0x011110.merylIndex:md5,bc2b1a21e91760ad49897097071df011", - "0x011111.merylData:md5,4b858e2a28860f789e8a5dc62e062557", + "0x011111.merylData:md5,cec5db4f8628cad288a61ad5d1ba3bf7", "0x011111.merylIndex:md5,5eed11ba178f7f9559625364d96aa41c", - "0x100000.merylData:md5,768528aaafba818f8e34d4b65de5242e", + "0x100000.merylData:md5,a975e62725986aa52aca0afdd4a6b1b2", "0x100000.merylIndex:md5,6649d5940b0a60b289dce7073de4777d", - "0x100001.merylData:md5,d0ef60de56a5dc1cec3606e3f07620c2", + "0x100001.merylData:md5,f4958edb6d63d08565110797c26c1406", "0x100001.merylIndex:md5,26d0852978fc3a8972aec67cebcc0f28", - "0x100010.merylData:md5,5b5a0fd3be35a954597a1c88ed3912ab", + "0x100010.merylData:md5,11060f964c120fff504e20b738cc4e16", "0x100010.merylIndex:md5,68c7135add32c8aac3c4207a7db7d37a", - "0x100011.merylData:md5,d8c188713b5379ba7e53bd7ac26baed5", + "0x100011.merylData:md5,a75d362f109f60a2f41ace67f2afac3b", "0x100011.merylIndex:md5,4a9ed0a918945a7e9602427e23bd955c", - "0x100100.merylData:md5,68403d2ad355e2f9f9b8032616c6fbab", + "0x100100.merylData:md5,22cbafef8c45a58e02acd625e43e9f5f", "0x100100.merylIndex:md5,2fe6f882ae22d87581300c3b9b24242b", - "0x100101.merylData:md5,a6102a49c8b51870bf14b6ace728cfa1", + "0x100101.merylData:md5,0ce6aa8b317c98f2872d0947b77380d0", "0x100101.merylIndex:md5,f5b56f5edb9f55973288aab6b0c81467", - "0x100110.merylData:md5,418f44aecc5beb96d4fe9d5c22e5d8df", + "0x100110.merylData:md5,1998235165f1fa9e3297428d5bdf75fa", "0x100110.merylIndex:md5,3b93d1b48ce9314ed0946e7a4d1b6c19", - "0x100111.merylData:md5,1cce84d0d61511837a70bb48aab84a20", + "0x100111.merylData:md5,b80bc0aab16f82bb110aadc891f7d14a", "0x100111.merylIndex:md5,42d17c375dccd68da727f531cc05a9fa", - "0x101000.merylData:md5,e2f713f0fb453506b18db92609a1fdff", + "0x101000.merylData:md5,32fc5753e91839877f9c479d12fdb3fc", "0x101000.merylIndex:md5,f9fa2ccd8b89aa7147130c7dac705ce0", - "0x101001.merylData:md5,1cde5e30da7e245689c7c7a7006ebc40", + "0x101001.merylData:md5,cbb29e2676273deb69ff4687a7077ffe", "0x101001.merylIndex:md5,f3d6a5e2eeb01dffaf6ebd04793d269b", - "0x101010.merylData:md5,088d7310df61d7917f3b49cc5ca1bef5", + "0x101010.merylData:md5,887d6b1ff522dfcdbfda13ab6c791f3d", "0x101010.merylIndex:md5,5de136cfda775349c75d47e5c5bae16b", - "0x101011.merylData:md5,c37a7fd125f9563760f0a7b065fb99f5", + "0x101011.merylData:md5,595e4caddd85bd2555aebf238e108d62", "0x101011.merylIndex:md5,7374a2a00f9cf1fb4760dd6c68ce05de", - "0x101100.merylData:md5,3c76f864ab548adfb4d8f11869ab7b3a", + "0x101100.merylData:md5,db1479d5efdd5300942887943ad51651", "0x101100.merylIndex:md5,e65c609b7b05a34a75c3eb7fbef9a488", - "0x101101.merylData:md5,8faec3c432a9fcaf7d6413a9966d15e7", + "0x101101.merylData:md5,908b53b7bcfed9e8b4b5916dde1be72f", "0x101101.merylIndex:md5,c4fb9020e3b1690f5d4717be5384427d", - "0x101110.merylData:md5,92fb3c0d061a4d258bdde77c904312ab", + "0x101110.merylData:md5,64534d7ef128ddafb3e120f8296a7347", "0x101110.merylIndex:md5,0518b5e9eb8cecedd4da3a0470fbb43d", - "0x101111.merylData:md5,7f2174eee07aa116cffb77f85910efec", + "0x101111.merylData:md5,ff39ab42629db952fee582cc4fcd5c43", "0x101111.merylIndex:md5,f7ecf59ae53a3a38cc4b7c2509379b3a", - "0x110000.merylData:md5,8c5866a1e6932eb777fe6e72c1090e1e", + "0x110000.merylData:md5,76c687419cda34c25d8a373e0cef962c", "0x110000.merylIndex:md5,fdcca3797ca34cdbb3d6808847c111d5", - "0x110001.merylData:md5,02cc9f0ece95b69c6dfe3f04a0425f92", + "0x110001.merylData:md5,93a2041b6e734b33f19344736397e435", "0x110001.merylIndex:md5,d545188ef68c84c1c653e23f6fae4ef3", - "0x110010.merylData:md5,665d40c5e306952883fe2ffa641024bb", + "0x110010.merylData:md5,9dbc351f6ea21f4094c28559da47d97a", "0x110010.merylIndex:md5,445e745bd1f34502437541fafbb21943", - "0x110011.merylData:md5,e32f9db7cfb6dfa243f45258f1b55041", + "0x110011.merylData:md5,fe6a44f4d40b874ba5d828b91a7c59de", "0x110011.merylIndex:md5,6e93712a47efaf6a4656c0dbeb1e5b1a", - "0x110100.merylData:md5,af978fc2cc304f2aee3f06416a1a43aa", + "0x110100.merylData:md5,dd02c49ced41b2ca24e8219f51557ce2", "0x110100.merylIndex:md5,ed97271331d8bb4eabbd0978cd4b9d23", - "0x110101.merylData:md5,a7bdc73355bea8749db38966fb7c968d", + "0x110101.merylData:md5,9845bedc85103e2051e6382f6843aa0e", "0x110101.merylIndex:md5,b30ff36567bede03396e67e973d4fdf9", - "0x110110.merylData:md5,0ee1f4b187ce88567262d3a6302f3f2a", + "0x110110.merylData:md5,2a0e5aa913bc2ac81c46c1772a685dc1", "0x110110.merylIndex:md5,505cab345465852c8284d190e91ce7fa", - "0x110111.merylData:md5,02929a0fd245f27576d794c98443ed52", + "0x110111.merylData:md5,242d3645152d88f84795635a2f716559", "0x110111.merylIndex:md5,8b70850b1775790354ff00ffcfb9df65", - "0x111000.merylData:md5,21cb35b24f60b6c69c49c327d1fd797f", + "0x111000.merylData:md5,8f02073e8bdb8ee281d242c9b2cc5870", "0x111000.merylIndex:md5,7a54391084d2354b534bbf238631a80e", - "0x111001.merylData:md5,3c864da93bf29a8a0665cd83e1b612e7", + "0x111001.merylData:md5,fd34f0e8eb47452c8ac6639ba8f4e76e", "0x111001.merylIndex:md5,4504239cfc112fcf6e9dba44e6f9f488", - "0x111010.merylData:md5,9d08a9742799fd0ab5b29f184667cb7c", + "0x111010.merylData:md5,17077d483fc1a79768a9d1936957d9de", "0x111010.merylIndex:md5,b67161fd14e224f11a592691fe08e0e5", - "0x111011.merylData:md5,f5a09c0f5faa10aaad17efe454ff9395", + "0x111011.merylData:md5,f8ab44d101f95d283c14a20e27c0faae", "0x111011.merylIndex:md5,75306fb2397e61a0910a5034cb9309c9", - "0x111100.merylData:md5,6c1ddf20980ade712673d606c6f3dfbe", + "0x111100.merylData:md5,fc250a1981bad90056d79dd55094bfa3", "0x111100.merylIndex:md5,35642b10f80c44989de4131a4c2b9c95", - "0x111101.merylData:md5,a26af5a2348ddc4882eb06d4edb63b6f", + "0x111101.merylData:md5,f36232eb7aaf9491247326f1a299832a", "0x111101.merylIndex:md5,e6affc54363b262b10e55267192cd68b", - "0x111110.merylData:md5,7a7f81ee6339c46bffe18de12c3a7177", + "0x111110.merylData:md5,5a0e13cdadeeb2fab06deac1fdd2674f", "0x111110.merylIndex:md5,07f0179b757af0593f9120c98b7b9052", - "0x111111.merylData:md5,0e63424ed0b9b5a399058dbea354ae64", + "0x111111.merylData:md5,7ebfc7c0d265e590063adc31a33df3f3", "0x111111.merylIndex:md5,b8c6b4cc0580f55e4767f1f4529d772b", - "merylIndex:md5,72fb8181bcbb783884da1c8c2ded4eff" + "merylIndex:md5,09e1efc5b5b9e4daf6ab7f55fe1dff20" ] ] ], @@ -619,9 +619,9 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.1", + "nextflow": "24.10.0" }, - "timestamp": "2024-03-27T10:19:40.09228319" + "timestamp": "2024-11-04T12:45:34.142906416" } } \ No newline at end of file diff --git a/modules/nf-core/mmseqs/cluster/environment.yml b/modules/nf-core/mmseqs/cluster/environment.yml index 18547591a2e..235ad03ad82 100644 --- a/modules/nf-core/mmseqs/cluster/environment.yml +++ b/modules/nf-core/mmseqs/cluster/environment.yml @@ -2,4 +2,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::mmseqs2=15.6f452 + - bioconda::mmseqs2=16.747c6 diff --git a/modules/nf-core/mmseqs/cluster/main.nf b/modules/nf-core/mmseqs/cluster/main.nf index 408e4275647..bad704cbbe2 100644 --- a/modules/nf-core/mmseqs/cluster/main.nf +++ b/modules/nf-core/mmseqs/cluster/main.nf @@ -4,8 +4,8 @@ process MMSEQS_CLUSTER { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/mmseqs2:15.6f452--pl5321h6a68c12_0': - 'biocontainers/mmseqs2:15.6f452--pl5321h6a68c12_0' }" + 'https://depot.galaxyproject.org/singularity/mmseqs2:16.747c6--pl5321h6a68c12_0': + 'biocontainers/mmseqs2:16.747c6--pl5321h6a68c12_0' }" input: tuple val(meta), path(db_input) diff --git a/modules/nf-core/mmseqs/cluster/tests/main.nf.test b/modules/nf-core/mmseqs/cluster/tests/main.nf.test new file mode 100644 index 00000000000..07882216e3b --- /dev/null +++ b/modules/nf-core/mmseqs/cluster/tests/main.nf.test @@ -0,0 +1,56 @@ +nextflow_process { + + name "Test Process MMSEQS_CLUSTER" + script "../main.nf" + process "MMSEQS_CLUSTER" + config "./nextflow.config" + tag "modules" + tag "modules_nfcore" + tag "mmseqs" + tag "mmseqs/cluster" + tag "untar" + + test("Should cluster an mmseqs database") { + + setup { + run("UNTAR") { + script "modules/nf-core/untar/main.nf" + process { + """ + input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/db/mmseqs.tar.gz', checkIfExists: true) ] + """ + } + } + } + + when { + process { + """ + input[0] = UNTAR.out.untar + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.db_cluster.size() == 1 }, + { + def all_files = file(process.out.db_cluster[0][1]).listFiles() + def all_file_names = all_files.collect { it.name }.toSorted() + def stable_file_names = [ + 'test_output_cluster.dbtype', + 'test_output_cluster.index' + ] + def stable_files = all_files.findAll { it.name in stable_file_names }.toSorted() + + assert snapshot( + all_file_names, + stable_files, + process.out.versions[0] + ).match() + } + ) + } + } +} diff --git a/modules/nf-core/mmseqs/cluster/tests/main.nf.test.snap b/modules/nf-core/mmseqs/cluster/tests/main.nf.test.snap new file mode 100644 index 00000000000..6fc98698513 --- /dev/null +++ b/modules/nf-core/mmseqs/cluster/tests/main.nf.test.snap @@ -0,0 +1,22 @@ +{ + "Should cluster an mmseqs database": { + "content": [ + [ + "test_output_cluster.0", + "test_output_cluster.1", + "test_output_cluster.dbtype", + "test_output_cluster.index" + ], + [ + "test_output_cluster.dbtype:md5,5c879eb8a8613fd4537b919e7d68d089", + "test_output_cluster.index:md5,ca7e1f0967222b06d7e05e47bcbe1e50" + ], + "versions.yml:md5,4acad55952c6d1fb41ad7f5a44468aed" + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.2" + }, + "timestamp": "2024-12-05T10:44:45.713270981" + } +} \ No newline at end of file diff --git a/tests/modules/nf-core/mmseqs/cluster/nextflow.config b/modules/nf-core/mmseqs/cluster/tests/nextflow.config similarity index 66% rename from tests/modules/nf-core/mmseqs/cluster/nextflow.config rename to modules/nf-core/mmseqs/cluster/tests/nextflow.config index 7513694f7a0..a43cb1807e3 100644 --- a/tests/modules/nf-core/mmseqs/cluster/nextflow.config +++ b/modules/nf-core/mmseqs/cluster/tests/nextflow.config @@ -1,7 +1,4 @@ process { - - publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } - withName: UNTAR { publishDir = [ enabled : false ] } @@ -10,5 +7,4 @@ process { ext.prefix = "test_output_cluster" ext.args = '--remove-tmp-files 1 -v 3 ' } - } diff --git a/modules/nf-core/mmseqs/createdb/environment.yml b/modules/nf-core/mmseqs/createdb/environment.yml index 18547591a2e..235ad03ad82 100644 --- a/modules/nf-core/mmseqs/createdb/environment.yml +++ b/modules/nf-core/mmseqs/createdb/environment.yml @@ -2,4 +2,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::mmseqs2=15.6f452 + - bioconda::mmseqs2=16.747c6 diff --git a/modules/nf-core/mmseqs/createdb/main.nf b/modules/nf-core/mmseqs/createdb/main.nf index 9487e5bcdf2..b1d6caf0b06 100644 --- a/modules/nf-core/mmseqs/createdb/main.nf +++ b/modules/nf-core/mmseqs/createdb/main.nf @@ -4,8 +4,8 @@ process MMSEQS_CREATEDB { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/mmseqs2:15.6f452--pl5321h6a68c12_0': - 'biocontainers/mmseqs2:15.6f452--pl5321h6a68c12_0' }" + 'https://depot.galaxyproject.org/singularity/mmseqs2:16.747c6--pl5321h6a68c12_0': + 'biocontainers/mmseqs2:16.747c6--pl5321h6a68c12_0' }" input: tuple val(meta), path(sequence) diff --git a/modules/nf-core/mmseqs/createdb/tests/main.nf.test.snap b/modules/nf-core/mmseqs/createdb/tests/main.nf.test.snap index a24c4118002..92f1e6d8257 100644 --- a/modules/nf-core/mmseqs/createdb/tests/main.nf.test.snap +++ b/modules/nf-core/mmseqs/createdb/tests/main.nf.test.snap @@ -20,14 +20,14 @@ ] ], [ - "versions.yml:md5,e644cbe263d4560298438a24f268eb6f" + "versions.yml:md5,d30a1af41e7f3f5b67afdec412fa693f" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.2" }, - "timestamp": "2024-08-09T10:01:44.163384" + "timestamp": "2024-12-05T10:35:27.322864475" }, "Should build an mmseqs db from a zipped amino acid sequence file": { "content": [ @@ -49,13 +49,13 @@ ] ], [ - "versions.yml:md5,e644cbe263d4560298438a24f268eb6f" + "versions.yml:md5,d30a1af41e7f3f5b67afdec412fa693f" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.2" }, - "timestamp": "2024-08-09T10:01:48.894044" + "timestamp": "2024-12-05T10:35:33.418552595" } } \ No newline at end of file diff --git a/modules/nf-core/mmseqs/createdb/tests/tags.yml b/modules/nf-core/mmseqs/createdb/tests/tags.yml deleted file mode 100644 index 1f511ab0bfe..00000000000 --- a/modules/nf-core/mmseqs/createdb/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -mmseqs/createdb: - - modules/nf-core/mmseqs/createdb/** diff --git a/modules/nf-core/mmseqs/createtsv/environment.yml b/modules/nf-core/mmseqs/createtsv/environment.yml index 18547591a2e..235ad03ad82 100644 --- a/modules/nf-core/mmseqs/createtsv/environment.yml +++ b/modules/nf-core/mmseqs/createtsv/environment.yml @@ -2,4 +2,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::mmseqs2=15.6f452 + - bioconda::mmseqs2=16.747c6 diff --git a/modules/nf-core/mmseqs/createtsv/main.nf b/modules/nf-core/mmseqs/createtsv/main.nf index dcd4c13d3cd..d5afc0694ae 100644 --- a/modules/nf-core/mmseqs/createtsv/main.nf +++ b/modules/nf-core/mmseqs/createtsv/main.nf @@ -5,8 +5,8 @@ process MMSEQS_CREATETSV { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/mmseqs2:15.6f452--pl5321h6a68c12_0': - 'biocontainers/mmseqs2:15.6f452--pl5321h6a68c12_0' }" + 'https://depot.galaxyproject.org/singularity/mmseqs2:16.747c6--pl5321h6a68c12_0': + 'biocontainers/mmseqs2:16.747c6--pl5321h6a68c12_0' }" input: tuple val(meta), path(db_result) diff --git a/modules/nf-core/mmseqs/createtsv/tests/main.nf.test.snap b/modules/nf-core/mmseqs/createtsv/tests/main.nf.test.snap index 1087de88d55..6192fa16a83 100644 --- a/modules/nf-core/mmseqs/createtsv/tests/main.nf.test.snap +++ b/modules/nf-core/mmseqs/createtsv/tests/main.nf.test.snap @@ -12,7 +12,7 @@ ] ], "1": [ - "versions.yml:md5,20a853f50c920d431e5ab7593ca79e6f" + "versions.yml:md5,34bac3809a7eaf833a944be6888f83a7" ], "tsv": [ [ @@ -24,15 +24,15 @@ ] ], "versions": [ - "versions.yml:md5,20a853f50c920d431e5ab7593ca79e6f" + "versions.yml:md5,34bac3809a7eaf833a944be6888f83a7" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.2", + "nextflow": "24.10.2" }, - "timestamp": "2024-07-12T13:55:17.642787" + "timestamp": "2024-12-05T10:50:48.386202112" }, "mmseqs/createtsv - sarscov2 - cluster - stub": { "content": [ @@ -47,7 +47,7 @@ ] ], "1": [ - "versions.yml:md5,20a853f50c920d431e5ab7593ca79e6f" + "versions.yml:md5,34bac3809a7eaf833a944be6888f83a7" ], "tsv": [ [ @@ -59,15 +59,15 @@ ] ], "versions": [ - "versions.yml:md5,20a853f50c920d431e5ab7593ca79e6f" + "versions.yml:md5,34bac3809a7eaf833a944be6888f83a7" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.2", + "nextflow": "24.10.2" }, - "timestamp": "2024-07-12T13:55:33.645454" + "timestamp": "2024-12-05T10:50:56.33475153" }, "mmseqs/createtsv - bacteroides_fragilis - taxonomy": { "content": [ @@ -82,7 +82,7 @@ ] ], "1": [ - "versions.yml:md5,20a853f50c920d431e5ab7593ca79e6f" + "versions.yml:md5,34bac3809a7eaf833a944be6888f83a7" ], "tsv": [ [ @@ -94,15 +94,15 @@ ] ], "versions": [ - "versions.yml:md5,20a853f50c920d431e5ab7593ca79e6f" + "versions.yml:md5,34bac3809a7eaf833a944be6888f83a7" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.2", + "nextflow": "24.10.2" }, - "timestamp": "2024-07-12T13:54:45.718678" + "timestamp": "2024-12-05T11:25:54.741775111" }, "mmseqs/createtsv - sarscov2 - cluster": { "content": [ @@ -117,7 +117,7 @@ ] ], "1": [ - "versions.yml:md5,20a853f50c920d431e5ab7593ca79e6f" + "versions.yml:md5,34bac3809a7eaf833a944be6888f83a7" ], "tsv": [ [ @@ -129,14 +129,14 @@ ] ], "versions": [ - "versions.yml:md5,20a853f50c920d431e5ab7593ca79e6f" + "versions.yml:md5,34bac3809a7eaf833a944be6888f83a7" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.2", + "nextflow": "24.10.2" }, - "timestamp": "2024-07-12T13:55:02.731974" + "timestamp": "2024-12-05T10:50:42.432284995" } } \ No newline at end of file diff --git a/modules/nf-core/mmseqs/createtsv/tests/tags.yml b/modules/nf-core/mmseqs/createtsv/tests/tags.yml deleted file mode 100644 index e27827f58aa..00000000000 --- a/modules/nf-core/mmseqs/createtsv/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -mmseqs/createtsv: - - "modules/nf-core/mmseqs/createtsv/**" diff --git a/modules/nf-core/mmseqs/databases/environment.yml b/modules/nf-core/mmseqs/databases/environment.yml index 18547591a2e..235ad03ad82 100644 --- a/modules/nf-core/mmseqs/databases/environment.yml +++ b/modules/nf-core/mmseqs/databases/environment.yml @@ -2,4 +2,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::mmseqs2=15.6f452 + - bioconda::mmseqs2=16.747c6 diff --git a/modules/nf-core/mmseqs/databases/main.nf b/modules/nf-core/mmseqs/databases/main.nf index d43681cea94..176d7b45d59 100644 --- a/modules/nf-core/mmseqs/databases/main.nf +++ b/modules/nf-core/mmseqs/databases/main.nf @@ -4,8 +4,8 @@ process MMSEQS_DATABASES { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/mmseqs2:15.6f452--pl5321h6a68c12_0': - 'biocontainers/mmseqs2:15.6f452--pl5321h6a68c12_0' }" + 'https://depot.galaxyproject.org/singularity/mmseqs2:16.747c6--pl5321h6a68c12_0': + 'biocontainers/mmseqs2:16.747c6--pl5321h6a68c12_0' }" input: val database diff --git a/modules/nf-core/mmseqs/databases/tests/main.nf.test.snap b/modules/nf-core/mmseqs/databases/tests/main.nf.test.snap index 00d3003ebbc..b3d0b9f7636 100644 --- a/modules/nf-core/mmseqs/databases/tests/main.nf.test.snap +++ b/modules/nf-core/mmseqs/databases/tests/main.nf.test.snap @@ -15,14 +15,14 @@ "database_taxonomy" ], [ - "versions.yml:md5,b038db45e5934b8f0f743449bbac01b4" + "versions.yml:md5,e236ec16fdc9f054d0a660d02e680255" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.2" }, - "timestamp": "2024-09-06T15:43:58.454012" + "timestamp": "2024-12-05T14:33:16.697954954" }, "test-mmseqs-databases-stub": { "content": [ diff --git a/modules/nf-core/mmseqs/linclust/environment.yml b/modules/nf-core/mmseqs/linclust/environment.yml index 18547591a2e..235ad03ad82 100644 --- a/modules/nf-core/mmseqs/linclust/environment.yml +++ b/modules/nf-core/mmseqs/linclust/environment.yml @@ -2,4 +2,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::mmseqs2=15.6f452 + - bioconda::mmseqs2=16.747c6 diff --git a/modules/nf-core/mmseqs/linclust/main.nf b/modules/nf-core/mmseqs/linclust/main.nf index 7453c263d38..c5927985897 100644 --- a/modules/nf-core/mmseqs/linclust/main.nf +++ b/modules/nf-core/mmseqs/linclust/main.nf @@ -4,8 +4,8 @@ process MMSEQS_LINCLUST { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/mmseqs2:15.6f452--pl5321h6a68c12_0': - 'biocontainers/mmseqs2:15.6f452--pl5321h6a68c12_0' }" + 'https://depot.galaxyproject.org/singularity/mmseqs2:16.747c6--pl5321h6a68c12_0': + 'biocontainers/mmseqs2:16.747c6--pl5321h6a68c12_0' }" input: tuple val(meta), path(db_input) diff --git a/modules/nf-core/mmseqs/linclust/tests/main.nf.test.snap b/modules/nf-core/mmseqs/linclust/tests/main.nf.test.snap index 4d7fb8b1050..e1622d49d12 100644 --- a/modules/nf-core/mmseqs/linclust/tests/main.nf.test.snap +++ b/modules/nf-core/mmseqs/linclust/tests/main.nf.test.snap @@ -11,12 +11,12 @@ "test_output_cluster.dbtype:md5,5c879eb8a8613fd4537b919e7d68d089", "test_output_cluster.index:md5,38908275cdd5727ae0eb9be017f9ca13" ], - "versions.yml:md5,65ce4e8b36259f881d11b0d8caaee69a" + "versions.yml:md5,969cb26241f66ac758c104f9561860b1" ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.2" }, - "timestamp": "2024-08-13T10:40:19.482219" + "timestamp": "2024-12-05T10:43:26.020522437" } } \ No newline at end of file diff --git a/modules/nf-core/mmseqs/linclust/tests/tags.yml b/modules/nf-core/mmseqs/linclust/tests/tags.yml deleted file mode 100644 index 4aa9f308abe..00000000000 --- a/modules/nf-core/mmseqs/linclust/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -mmseqs/linclust: - - modules/nf-core/mmseqs/linclust/** diff --git a/modules/nf-core/pretextmap/main.nf b/modules/nf-core/pretextmap/main.nf index b1a4a3f7396..30a2c829e54 100644 --- a/modules/nf-core/pretextmap/main.nf +++ b/modules/nf-core/pretextmap/main.nf @@ -20,10 +20,10 @@ process PRETEXTMAP { task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' + def args = task.ext.args ?: '' // PretextMap args + def args2 = task.ext.args2 ?: '' // Samtools view args def prefix = task.ext.prefix ?: "${meta.id}" def reference = fasta ? "--reference ${fasta}" : "" - """ if [[ $input == *.pairs.gz ]]; then zcat $input | PretextMap \\ @@ -32,17 +32,19 @@ process PRETEXTMAP { else samtools \\ view \\ + $args2 \\ $reference \\ -h \\ - $input | PretextMap \\ + $input | \\ + PretextMap \\ $args \\ -o ${prefix}.pretext fi cat <<-END_VERSIONS > versions.yml "${task.process}": - pretextmap: \$(PretextMap | grep "Version" | sed 's/PretextMap Version //g') - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//' ) + pretextmap: \$(PretextMap | sed '/Version/!d; s/.*Version //') + samtools: \$(samtools --version | sed '1!d; s/samtools //') END_VERSIONS """ @@ -53,8 +55,8 @@ process PRETEXTMAP { cat <<-END_VERSIONS > versions.yml "${task.process}": - pretextmap: \$(PretextMap | grep "Version" | sed 's/PretextMap Version //g') - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') + pretextmap: \$(PretextMap | sed '/Version/!d; s/.*Version //') + samtools: \$(samtools --version | sed '1!d; s/samtools //') END_VERSIONS """ } diff --git a/modules/nf-core/pretextmap/tests/main.nf.test.snap b/modules/nf-core/pretextmap/tests/main.nf.test.snap index 48697af80c3..b94050d8165 100644 --- a/modules/nf-core/pretextmap/tests/main.nf.test.snap +++ b/modules/nf-core/pretextmap/tests/main.nf.test.snap @@ -12,7 +12,7 @@ ] ], "1": [ - "versions.yml:md5,894afb81509c847f7d9a58885e086b5c" + "versions.yml:md5,098015ffd24f3479b3efbac59aa32339" ], "pretext": [ [ @@ -24,11 +24,15 @@ ] ], "versions": [ - "versions.yml:md5,894afb81509c847f7d9a58885e086b5c" + "versions.yml:md5,098015ffd24f3479b3efbac59aa32339" ] } ], - "timestamp": "2024-03-21T10:53:43.322902" + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.2" + }, + "timestamp": "2024-12-05T13:09:12.619939794" }, "homo_cram_map_stub": { "content": [ @@ -43,7 +47,7 @@ ] ], "1": [ - "versions.yml:md5,894afb81509c847f7d9a58885e086b5c" + "versions.yml:md5,098015ffd24f3479b3efbac59aa32339" ], "pretext": [ [ @@ -55,11 +59,15 @@ ] ], "versions": [ - "versions.yml:md5,894afb81509c847f7d9a58885e086b5c" + "versions.yml:md5,098015ffd24f3479b3efbac59aa32339" ] } ], - "timestamp": "2024-03-21T11:07:44.32508" + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.2" + }, + "timestamp": "2024-12-05T13:18:01.160426003" }, "homo_cram_map_nofai": { "content": [ @@ -74,7 +82,7 @@ ] ], "1": [ - "versions.yml:md5,894afb81509c847f7d9a58885e086b5c" + "versions.yml:md5,098015ffd24f3479b3efbac59aa32339" ], "pretext": [ [ @@ -86,11 +94,15 @@ ] ], "versions": [ - "versions.yml:md5,894afb81509c847f7d9a58885e086b5c" + "versions.yml:md5,098015ffd24f3479b3efbac59aa32339" ] } ], - "timestamp": "2024-03-21T10:58:16.804287" + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.2" + }, + "timestamp": "2024-12-05T13:11:46.450760408" }, "mapped_pairs_map": { "content": [ @@ -105,7 +117,7 @@ ] ], "1": [ - "versions.yml:md5,894afb81509c847f7d9a58885e086b5c" + "versions.yml:md5,098015ffd24f3479b3efbac59aa32339" ], "pretext": [ [ @@ -117,11 +129,15 @@ ] ], "versions": [ - "versions.yml:md5,894afb81509c847f7d9a58885e086b5c" + "versions.yml:md5,098015ffd24f3479b3efbac59aa32339" ] } ], - "timestamp": "2024-03-21T11:07:32.047007" + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.2" + }, + "timestamp": "2024-12-05T13:17:41.668366392" }, "homo_bam_map": { "content": [ @@ -136,7 +152,7 @@ ] ], "1": [ - "versions.yml:md5,894afb81509c847f7d9a58885e086b5c" + "versions.yml:md5,098015ffd24f3479b3efbac59aa32339" ], "pretext": [ [ @@ -148,10 +164,14 @@ ] ], "versions": [ - "versions.yml:md5,894afb81509c847f7d9a58885e086b5c" + "versions.yml:md5,098015ffd24f3479b3efbac59aa32339" ] } ], - "timestamp": "2024-03-21T11:02:50.120033" + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.2" + }, + "timestamp": "2024-12-05T13:14:38.730900443" } } \ No newline at end of file diff --git a/modules/nf-core/pyrodigal/environment.yml b/modules/nf-core/pyrodigal/environment.yml index b0bbc515886..26be9f32df1 100644 --- a/modules/nf-core/pyrodigal/environment.yml +++ b/modules/nf-core/pyrodigal/environment.yml @@ -4,5 +4,5 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::pyrodigal=3.3.0 + - bioconda::pyrodigal=3.6.3 - conda-forge::pigz=2.8 diff --git a/modules/nf-core/pyrodigal/main.nf b/modules/nf-core/pyrodigal/main.nf index 7cb97594b29..9cbe8fcc941 100644 --- a/modules/nf-core/pyrodigal/main.nf +++ b/modules/nf-core/pyrodigal/main.nf @@ -1,11 +1,11 @@ process PYRODIGAL { tag "$meta.id" - label 'process_single' + 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:47e7d40834619419f202394563267d74cef857be-0': - 'biocontainers/mulled-v2-2fe9a8ce513c91df34b43a6610df94c3a2eb3bd0:47e7d40834619419f202394563267d74cef857be-0' }" + 'https://depot.galaxyproject.org/singularity/mulled-v2-2fe9a8ce513c91df34b43a6610df94c3a2eb3bd0:da1134ad604a59a6f439bdcc3f6df690eba47e9a-0': + 'biocontainers/mulled-v2-2fe9a8ce513c91df34b43a6610df94c3a2eb3bd0:da1134ad604a59a6f439bdcc3f6df690eba47e9a-0' }" input: tuple val(meta), path(fasta) @@ -28,6 +28,7 @@ process PYRODIGAL { pigz -cdf ${fasta} > pigz_fasta.fna pyrodigal \\ + -j ${task.cpus} \\ $args \\ -i pigz_fasta.fna \\ -f $output_format \\ diff --git a/modules/nf-core/pyrodigal/tests/main.nf.test.snap b/modules/nf-core/pyrodigal/tests/main.nf.test.snap index 827fdaaa357..3d56b9f1f88 100644 --- a/modules/nf-core/pyrodigal/tests/main.nf.test.snap +++ b/modules/nf-core/pyrodigal/tests/main.nf.test.snap @@ -5,21 +5,21 @@ "test.fna.gz", "test.faa.gz", "test.score.gz", - "versions.yml:md5,4aab54554829148e01cc0dc7bf6cb5d3" + "versions.yml:md5,296cc4ed71c8eb16bbc6978fe6299b77" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.2" }, - "timestamp": "2024-03-18T15:42:12.012112014" + "timestamp": "2024-12-02T15:17:12.218638993" }, "pyrodigal - sarscov2 - gbk": { "content": [ [ " CDS 310..13476", " /codon_start=1", - " /inference=\"ab initio prediction:pyrodigal:3.3.0\"", + " /inference=\"ab initio prediction:pyrodigal:3.6.3\"", " /locus_tag=\"MT192765.1_1\"", " /transl_table=11", " /translation=\"MPVLQVRDVLVRGFGDSVEEVLSEARQHLKDGTCGLVEVEKGVLP", @@ -51,18 +51,18 @@ "id": "test", "single_end": false }, - "test.score.gz:md5,c0703a9e662ae0b21c7bbb082ef3fb5f" + "test.score.gz:md5,63e6975e705be1fe749eb54bd4ea478e" ] ], [ - "versions.yml:md5,4aab54554829148e01cc0dc7bf6cb5d3" + "versions.yml:md5,296cc4ed71c8eb16bbc6978fe6299b77" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.2", + "nextflow": "24.10.2" }, - "timestamp": "2024-07-30T06:09:40.289778252" + "timestamp": "2024-12-02T15:17:01.228814939" }, "pyrodigal - sarscov2 - gff": { "content": [ @@ -73,7 +73,7 @@ "id": "test", "single_end": false }, - "test.gff.gz:md5,8fcd2d93131cf9fb0c82b81db059ad27" + "test.gff.gz:md5,898c1e24e71fa108981597b8bb32110f" ] ], "1": [ @@ -100,11 +100,11 @@ "id": "test", "single_end": false }, - "test.score.gz:md5,c0703a9e662ae0b21c7bbb082ef3fb5f" + "test.score.gz:md5,63e6975e705be1fe749eb54bd4ea478e" ] ], "4": [ - "versions.yml:md5,4aab54554829148e01cc0dc7bf6cb5d3" + "versions.yml:md5,296cc4ed71c8eb16bbc6978fe6299b77" ], "annotations": [ [ @@ -112,7 +112,7 @@ "id": "test", "single_end": false }, - "test.gff.gz:md5,8fcd2d93131cf9fb0c82b81db059ad27" + "test.gff.gz:md5,898c1e24e71fa108981597b8bb32110f" ] ], "faa": [ @@ -139,19 +139,19 @@ "id": "test", "single_end": false }, - "test.score.gz:md5,c0703a9e662ae0b21c7bbb082ef3fb5f" + "test.score.gz:md5,63e6975e705be1fe749eb54bd4ea478e" ] ], "versions": [ - "versions.yml:md5,4aab54554829148e01cc0dc7bf6cb5d3" + "versions.yml:md5,296cc4ed71c8eb16bbc6978fe6299b77" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.2" }, - "timestamp": "2024-03-18T15:41:55.822235843" + "timestamp": "2024-12-02T15:16:49.907998584" }, "pyrodigal - sarscov2 - gbk - stub": { "content": [ @@ -159,13 +159,13 @@ "test.fna.gz", "test.faa.gz", "test.score.gz", - "versions.yml:md5,4aab54554829148e01cc0dc7bf6cb5d3" + "versions.yml:md5,296cc4ed71c8eb16bbc6978fe6299b77" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.2" }, - "timestamp": "2024-03-18T15:42:19.81157751" + "timestamp": "2024-12-02T15:17:22.681680508" } } \ No newline at end of file diff --git a/modules/nf-core/ribotricer/prepareorfs/main.nf b/modules/nf-core/ribotricer/prepareorfs/main.nf index 1b0edd1c372..c981fd1f952 100644 --- a/modules/nf-core/ribotricer/prepareorfs/main.nf +++ b/modules/nf-core/ribotricer/prepareorfs/main.nf @@ -1,6 +1,6 @@ process RIBOTRICER_PREPAREORFS { tag "$meta.id" - label 'process_single' + label 'process_low' conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? diff --git a/modules/nf-core/shapeit5/ligate/environment.yml b/modules/nf-core/shapeit5/ligate/environment.yml index 7b8e63bba47..91b87fd02eb 100644 --- a/modules/nf-core/shapeit5/ligate/environment.yml +++ b/modules/nf-core/shapeit5/ligate/environment.yml @@ -2,4 +2,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::shapeit5=1.0.0 + - bioconda::shapeit5=5.1.1 diff --git a/modules/nf-core/shapeit5/ligate/main.nf b/modules/nf-core/shapeit5/ligate/main.nf index 5624d7d9870..a45179493fd 100644 --- a/modules/nf-core/shapeit5/ligate/main.nf +++ b/modules/nf-core/shapeit5/ligate/main.nf @@ -4,11 +4,11 @@ process SHAPEIT5_LIGATE { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/shapeit5:1.0.0--h0c8ee15_0': - 'biocontainers/shapeit5:1.0.0--h0c8ee15_0'}" + 'https://depot.galaxyproject.org/singularity/shapeit5:5.1.1--hb60d31d_0': + 'biocontainers/shapeit5:5.1.1--hb60d31d_0'}" input: - tuple val(meta), path(input_list), path (input_list_index) + tuple val(meta), path(input_list), path(input_list_index) output: tuple val(meta), path("*.{vcf,bcf,vcf.gz,bcf.gz}"), emit: merged_variants @@ -37,11 +37,11 @@ process SHAPEIT5_LIGATE { """ stub: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" - def suffix = task.ext.suffix ?: "vcf.gz" + def prefix = task.ext.prefix ?: "${meta.id}" + def suffix = task.ext.suffix ?: "vcf.gz" + def create_cmd = suffix.endsWith(".gz") ? "echo '' | gzip >" : "touch" """ - touch ${prefix}.${suffix} + ${create_cmd} ${prefix}.${suffix} cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/shapeit5/ligate/tests/main.nf.test b/modules/nf-core/shapeit5/ligate/tests/main.nf.test new file mode 100644 index 00000000000..4e3391c5631 --- /dev/null +++ b/modules/nf-core/shapeit5/ligate/tests/main.nf.test @@ -0,0 +1,99 @@ +nextflow_process { + + name "Test Process SHAPEIT5_LIGATE" + script "../main.nf" + process "SHAPEIT5_LIGATE" + + tag "modules" + tag "modules_nfcore" + tag "shapeit5" + tag "shapeit5/ligate" + tag "bcftools/view" + + test("homo sapiens - map, [vcf], [tbi]") { + config "./nextflow.config" + setup { + run("BCFTOOLS_VIEW", alias: "BCFTOOLS_VIEW_1") { + script "../../../bcftools/view" + params { + bcftools_args = "--regions chr22:16570000-16600000 -Ob --write-index=csi -e 'GT=\"./.\"||GT=\".\"'" + } + process { + """ + input[0] = [ + [ id:'NA12878_1' ], // meta map + file(params.modules_testdata_base_path + "genomics/homo_sapiens/illumina/vcf/NA12878_GIAB.chr22.vcf.gz", checkIfExists: true), + file(params.modules_testdata_base_path + "genomics/homo_sapiens/illumina/vcf/NA12878_GIAB.chr22.vcf.gz.csi", checkIfExists: true), + ] + input[1] = [] + input[2] = [] + input[3] = [] + """ + } + } + run("BCFTOOLS_VIEW", alias: "BCFTOOLS_VIEW_2") { + script "../../../bcftools/view" + params { + bcftools_args = "--regions chr22:16580000-16610000 -Ob --write-index=csi -e 'GT=\"./.\"||GT=\".\"'" + } + process { + """ + input[0] = [ + [ id:'NA12878_2' ], // meta map + file(params.modules_testdata_base_path + "genomics/homo_sapiens/illumina/vcf/NA12878_GIAB.chr22.vcf.gz", checkIfExists: true), + file(params.modules_testdata_base_path + "genomics/homo_sapiens/illumina/vcf/NA12878_GIAB.chr22.vcf.gz.csi", checkIfExists: true), + ] + input[1] = [] + input[2] = [] + input[3] = [] + """ + } + } + } + + when { + process { + """ + input[0] = BCFTOOLS_VIEW_1.out.vcf.join(BCFTOOLS_VIEW_1.out.csi) + .mix(BCFTOOLS_VIEW_2.out.vcf.join(BCFTOOLS_VIEW_2.out.csi)) + .map { meta, vcf, csi -> [ [id : "NA12878"], vcf, csi ] } + .groupTuple() + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.merged_variants.collect {meta, vcf -> [ meta, path(vcf).vcf.summary ]}, + process.out.versions + ).match() } + ) + } + } + + test("homo sapiens - map, [vcf], [tbi] - stub") { + options '-stub' + + when { + process { + """ + input[0] = [ + [id: 'NA12878'], + [file(params.modules_testdata_base_path + "genomics/homo_sapiens/illumina/vcf/NA12878_GIAB.chr22.vcf.gz", checkIfExists: true)], + [file(params.modules_testdata_base_path + "genomics/homo_sapiens/illumina/vcf/NA12878_GIAB.chr22.vcf.gz.csi", checkIfExists: true)] + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/shapeit5/ligate/tests/main.nf.test.snap b/modules/nf-core/shapeit5/ligate/tests/main.nf.test.snap new file mode 100644 index 00000000000..3caae978dd6 --- /dev/null +++ b/modules/nf-core/shapeit5/ligate/tests/main.nf.test.snap @@ -0,0 +1,55 @@ +{ + "homo sapiens - map, [vcf], [tbi] - stub": { + "content": [ + { + "0": [ + [ + { + "id": "NA12878" + }, + "NA12878.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + "versions.yml:md5,4b66c655a4fd210ca7bc47b6fe35230b" + ], + "merged_variants": [ + [ + { + "id": "NA12878" + }, + "NA12878.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,4b66c655a4fd210ca7bc47b6fe35230b" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.1" + }, + "timestamp": "2024-11-22T17:22:34.235879155" + }, + "homo sapiens - map, [vcf], [tbi]": { + "content": [ + [ + [ + { + "id": "NA12878" + }, + "VcfFile [chromosomes=[chr22], sampleCount=1, variantCount=60, phased=false, phasedAutodetect=false]" + ] + ], + [ + "versions.yml:md5,4b66c655a4fd210ca7bc47b6fe35230b" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.1" + }, + "timestamp": "2024-12-04T10:07:53.185018802" + } +} \ No newline at end of file diff --git a/modules/nf-core/shapeit5/ligate/tests/nextflow.config b/modules/nf-core/shapeit5/ligate/tests/nextflow.config new file mode 100644 index 00000000000..0dee91a2a0c --- /dev/null +++ b/modules/nf-core/shapeit5/ligate/tests/nextflow.config @@ -0,0 +1,6 @@ +process { + withName: "BCFTOOLS_VIEW_*" { + ext.args = params.bcftools_args + ext.prefix = { "${meta.id}" } + } +} diff --git a/modules/nf-core/shapeit5/phasecommon/environment.yml b/modules/nf-core/shapeit5/phasecommon/environment.yml index 7b8e63bba47..91b87fd02eb 100644 --- a/modules/nf-core/shapeit5/phasecommon/environment.yml +++ b/modules/nf-core/shapeit5/phasecommon/environment.yml @@ -2,4 +2,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::shapeit5=1.0.0 + - bioconda::shapeit5=5.1.1 diff --git a/modules/nf-core/shapeit5/phasecommon/main.nf b/modules/nf-core/shapeit5/phasecommon/main.nf index c1fb4e79111..89239aeffeb 100644 --- a/modules/nf-core/shapeit5/phasecommon/main.nf +++ b/modules/nf-core/shapeit5/phasecommon/main.nf @@ -4,8 +4,8 @@ process SHAPEIT5_PHASECOMMON { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/shapeit5:1.0.0--h0c8ee15_0': - 'biocontainers/shapeit5:1.0.0--h0c8ee15_0'}" + 'https://depot.galaxyproject.org/singularity/shapeit5:5.1.1--hb60d31d_0': + 'biocontainers/shapeit5:5.1.1--hb60d31d_0'}" input: tuple val(meta) , path(input), path(input_index), path(pedigree), val(region) @@ -23,7 +23,7 @@ process SHAPEIT5_PHASECOMMON { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def suffix = task.ext.suffix ?: "vcf.gz" + def suffix = task.ext.suffix ?: "bcf" if ("$input" == "${prefix}.${suffix}") error "Input and output names are the same, set prefix in module configuration to disambiguate!" @@ -51,11 +51,11 @@ process SHAPEIT5_PHASECOMMON { """ stub: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" - def suffix = task.ext.suffix ?: "vcf.gz" + def prefix = task.ext.prefix ?: "${meta.id}" + def suffix = task.ext.suffix ?: "bcf" + def create_cmd = suffix.endsWith(".gz") ? "echo '' | gzip >" : "touch" """ - touch ${prefix}.${suffix} + ${create_cmd} ${prefix}.${suffix} cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/shapeit5/phasecommon/tests/main.nf.test b/modules/nf-core/shapeit5/phasecommon/tests/main.nf.test new file mode 100644 index 00000000000..b73fb5aa130 --- /dev/null +++ b/modules/nf-core/shapeit5/phasecommon/tests/main.nf.test @@ -0,0 +1,69 @@ +nextflow_process { + + name "Test Process SHAPEIT5_PHASECOMMON" + script "../main.nf" + process "SHAPEIT5_PHASECOMMON" + + tag "modules" + tag "modules_nfcore" + tag "shapeit5" + tag "shapeit5/phasecommon" + + test("homo sapiens - vcf, [], [], []") { + when { + process { + """ + input[0] = Channel.of([ + [ id:'input', single_end:false ], // meta map + file(params.modules_testdata_base_path + "genomics/homo_sapiens/popgen/1000GP.chr22.vcf.gz", checkIfExists: true), + file(params.modules_testdata_base_path + "genomics/homo_sapiens/popgen/1000GP.chr22.vcf.gz.csi", checkIfExists: true), + [], + "chr22" + ]) + input[1] = Channel.of([[],[],[]]) + input[2] = Channel.of([[],[],[]]) + input[3] = Channel.of([[],[]]) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.phased_variant.collect{ meta, vcf -> [meta, file(vcf).name]}, + process.out.versions + ).match() } + ) + } + + } + + test("homo sapiens - vcf, [], [], [] - stub") { + options '-stub' + when { + process { + """ + input[0] = Channel.of([ + [ id:'input', single_end:false ], // meta map + file(params.modules_testdata_base_path + "genomics/homo_sapiens/popgen/1000GP.chr22.vcf.gz", checkIfExists: true), + file(params.modules_testdata_base_path + "genomics/homo_sapiens/popgen/1000GP.chr22.vcf.gz.csi", checkIfExists: true), + [], + "chr22" + ]) + + input[1] = Channel.of([[],[],[]]) + input[2] = Channel.of([[],[],[]]) + input[3] = Channel.of([[],[]]) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } +} diff --git a/modules/nf-core/shapeit5/phasecommon/tests/main.nf.test.snap b/modules/nf-core/shapeit5/phasecommon/tests/main.nf.test.snap new file mode 100644 index 00000000000..a339a8796d5 --- /dev/null +++ b/modules/nf-core/shapeit5/phasecommon/tests/main.nf.test.snap @@ -0,0 +1,58 @@ +{ + "homo sapiens - vcf, [], [], [] - stub": { + "content": [ + { + "0": [ + [ + { + "id": "input", + "single_end": false + }, + "input.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,135745eaa06583f1c0402134626f9082" + ], + "phased_variant": [ + [ + { + "id": "input", + "single_end": false + }, + "input.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,135745eaa06583f1c0402134626f9082" + ] + } + ], + "meta": { + "nf-test": "0.9.1", + "nextflow": "24.10.1" + }, + "timestamp": "2024-12-03T17:01:18.387684498" + }, + "homo sapiens - vcf, [], [], []": { + "content": [ + [ + [ + { + "id": "input", + "single_end": false + }, + "input.bcf" + ] + ], + [ + "versions.yml:md5,135745eaa06583f1c0402134626f9082" + ] + ], + "meta": { + "nf-test": "0.9.1", + "nextflow": "24.10.1" + }, + "timestamp": "2024-12-03T16:56:47.720234317" + } +} \ No newline at end of file diff --git a/modules/nf-core/shapeit5/phaserare/environment.yml b/modules/nf-core/shapeit5/phaserare/environment.yml index 7b8e63bba47..91b87fd02eb 100644 --- a/modules/nf-core/shapeit5/phaserare/environment.yml +++ b/modules/nf-core/shapeit5/phaserare/environment.yml @@ -2,4 +2,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::shapeit5=1.0.0 + - bioconda::shapeit5=5.1.1 diff --git a/modules/nf-core/shapeit5/phaserare/main.nf b/modules/nf-core/shapeit5/phaserare/main.nf index 3d8128764b6..01254f925c1 100644 --- a/modules/nf-core/shapeit5/phaserare/main.nf +++ b/modules/nf-core/shapeit5/phaserare/main.nf @@ -14,12 +14,12 @@ process SHAPEIT5_PHASERARE { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/shapeit5:1.0.0--h0c8ee15_0': - 'biocontainers/shapeit5:1.0.0--h0c8ee15_0' }" + 'https://depot.galaxyproject.org/singularity/shapeit5:5.1.1--hb60d31d_0': + 'biocontainers/shapeit5:5.1.1--hb60d31d_0' }" input: - tuple val(meta) , path(input_plain), path(input_plain_index), path(pedigree), val(input_region) - tuple val(meta2), path(scaffold) , path(scaffold_index) , val(scaffold_region) + tuple val(meta) , path(input) , path(input_index) , path(pedigree), val(input_region) + tuple val(meta2), path(scaffold) , path(scaffold_index) , val(scaffold_region) tuple val(meta3), path(map) output: @@ -34,7 +34,8 @@ process SHAPEIT5_PHASERARE { def prefix = task.ext.prefix ?: "${meta.id}" def suffix = task.ext.suffix ?: "vcf.gz" - if ("$input_plain" == "${prefix}.${suffix}") error "Input and output names are the same, set prefix in module configuration to disambiguate!" + if ("$input" == "${prefix}.${suffix}") error "Input and output names are the same, set prefix in module configuration to disambiguate!" + if ("$scaffold" == "${prefix}.${suffix}") error "Scaffold and output names are the same, set prefix in module configuration to disambiguate!" def map_command = map ? "--map $map" : "" def pedigree_command = pedigree ? "--pedigree $pedigree" : "" @@ -42,7 +43,7 @@ process SHAPEIT5_PHASERARE { """ SHAPEIT5_phase_rare \\ $args \\ - --input-plain $input_plain \\ + --input $input \\ --scaffold $scaffold \\ $map_command \\ $pedigree_command \\ @@ -58,11 +59,11 @@ process SHAPEIT5_PHASERARE { """ stub: - def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" def suffix = task.ext.suffix ?: "vcf.gz" + def create_cmd = suffix.endsWith(".gz") ? "echo '' | gzip >" : "touch" """ - touch ${prefix}.${suffix} + ${create_cmd} ${prefix}.${suffix} cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/shapeit5/phaserare/meta.yml b/modules/nf-core/shapeit5/phaserare/meta.yml index aaf379c87bd..ce056c8b358 100644 --- a/modules/nf-core/shapeit5/phaserare/meta.yml +++ b/modules/nf-core/shapeit5/phaserare/meta.yml @@ -23,12 +23,12 @@ input: description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - - input_plain: + - input: type: file description: | Genotypes to be phased in plain VCF/BCF format. pattern: "*.{vcf,bcf,vcf.gz,bcf.gz}" - - input_plain_index: + - input_index: type: file description: Index file of the input_plain VCF/BCF file containing genotype likelihoods. diff --git a/modules/nf-core/shapeit5/phaserare/tests/main.nf.test b/modules/nf-core/shapeit5/phaserare/tests/main.nf.test new file mode 100644 index 00000000000..337699e1b1f --- /dev/null +++ b/modules/nf-core/shapeit5/phaserare/tests/main.nf.test @@ -0,0 +1,105 @@ +nextflow_process { + + name "Test Process SHAPEIT5_PHASERARE" + script "../main.nf" + process "SHAPEIT5_PHASERARE" + + tag "modules" + tag "modules_nfcore" + tag "shapeit5" + tag "shapeit5/phaserare" + tag "shapeit5/phasecommon" + tag "bcftools/index" + + test("homo sapiens - vcf, scaffold, []") { + config "./nextflow.config" + setup { + run("SHAPEIT5_PHASECOMMON") { + script "../../../shapeit5/phasecommon" + params { + shapeit5_phasecommon_args = "--filter-maf 0.001" + } + process { + """ + input[0] = Channel.of([ + [ id:'scaffold', single_end:false ], // meta map + file(params.modules_testdata_base_path + "genomics/homo_sapiens/popgen/1000GP.chr22.vcf.gz", checkIfExists: true), + file(params.modules_testdata_base_path + "genomics/homo_sapiens/popgen/1000GP.chr22.vcf.gz.csi", checkIfExists: true), + [], + "chr22", + ]) + input[1] = Channel.of([[],[],[]]) + input[2] = Channel.of([[],[],[]]) + input[3] = Channel.of([[],[]]) + """ + } + } + run("BCFTOOLS_INDEX") { + script "../../../bcftools/index" + process { + """ + input[0] = SHAPEIT5_PHASECOMMON.out.phased_variant + """ + } + } + } + + when { + process { + """ + input[0] = Channel.of([ + [ id:'input', single_end:false ], // meta map + file(params.modules_testdata_base_path + "genomics/homo_sapiens/popgen/1000GP.chr22.vcf.gz", checkIfExists: true), + file(params.modules_testdata_base_path + "genomics/homo_sapiens/popgen/1000GP.chr22.vcf.gz.csi", checkIfExists: true), + [], + "chr22:16580000-16600000", + ]) + input[1] = SHAPEIT5_PHASECOMMON.out.phased_variant + .join(BCFTOOLS_INDEX.out.csi) + .combine(Channel.of("chr22:16570000-16610000")) + input[2] = Channel.of([[],[]]) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.phased_variant.collect { meta, vcf -> [ meta, file(vcf).name ] }, + process.out.versions + ).match() } + ) + } + + } + + test("homo sapiens - vcf, scaffold, [] - stub") { + options "-stub" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'input', single_end:false ], // meta map + file(params.modules_testdata_base_path + "genomics/homo_sapiens/popgen/1000GP.chr22.vcf.gz", checkIfExists: true), + file(params.modules_testdata_base_path + "genomics/homo_sapiens/popgen/1000GP.chr22.vcf.gz.csi", checkIfExists: true), + [], + "chr22:16580000-16600000", + ]) + input[1] = Channel.of([[],[],[],[]]) + input[2] = Channel.of([[],[]]) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/shapeit5/phaserare/tests/main.nf.test.snap b/modules/nf-core/shapeit5/phaserare/tests/main.nf.test.snap new file mode 100644 index 00000000000..9c797738da5 --- /dev/null +++ b/modules/nf-core/shapeit5/phaserare/tests/main.nf.test.snap @@ -0,0 +1,58 @@ +{ + "homo sapiens - vcf, scaffold, [] - stub": { + "content": [ + { + "0": [ + [ + { + "id": "input", + "single_end": false + }, + "input.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + "versions.yml:md5,c8092f58dd64199400ee9b9bfd96032e" + ], + "phased_variant": [ + [ + { + "id": "input", + "single_end": false + }, + "input.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,c8092f58dd64199400ee9b9bfd96032e" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.1" + }, + "timestamp": "2024-11-22T18:11:56.868657182" + }, + "homo sapiens - vcf, scaffold, []": { + "content": [ + [ + [ + { + "id": "input", + "single_end": false + }, + "input.vcf.gz" + ] + ], + [ + "versions.yml:md5,c8092f58dd64199400ee9b9bfd96032e" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.1" + }, + "timestamp": "2024-11-22T18:35:35.056441054" + } +} \ No newline at end of file diff --git a/modules/nf-core/shapeit5/phaserare/tests/nextflow.config b/modules/nf-core/shapeit5/phaserare/tests/nextflow.config new file mode 100644 index 00000000000..5f84c07d3bd --- /dev/null +++ b/modules/nf-core/shapeit5/phaserare/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: SHAPEIT5_PHASECOMMON { + ext.args = params.shapeit5_phasecommon_args + } +} diff --git a/modules/nf-core/shapeit5/switch/environment.yml b/modules/nf-core/shapeit5/switch/environment.yml index 7b8e63bba47..91b87fd02eb 100644 --- a/modules/nf-core/shapeit5/switch/environment.yml +++ b/modules/nf-core/shapeit5/switch/environment.yml @@ -2,4 +2,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::shapeit5=1.0.0 + - bioconda::shapeit5=5.1.1 diff --git a/modules/nf-core/shapeit5/switch/main.nf b/modules/nf-core/shapeit5/switch/main.nf index 92e881252f2..a34fed1c805 100644 --- a/modules/nf-core/shapeit5/switch/main.nf +++ b/modules/nf-core/shapeit5/switch/main.nf @@ -4,8 +4,8 @@ process SHAPEIT5_SWITCH { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/shapeit5:1.0.0--h0c8ee15_0': - 'biocontainers/shapeit5:1.0.0--h0c8ee15_0'}" + 'https://depot.galaxyproject.org/singularity/shapeit5:5.1.1--hb60d31d_0': + 'biocontainers/shapeit5:5.1.1--hb60d31d_0'}" input: tuple val(meta) , path(estimate), path(estimate_index), val(region), path(pedigree) @@ -43,18 +43,18 @@ process SHAPEIT5_SWITCH { """ stub: - def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" + def create_cmd = "echo '' | gzip >" """ - touch ${prefix}.block.switch.txt.gz - touch ${prefix}.calibration.switch.txt.gz - touch ${prefix}.flipsAndSwitches.txt.gz - touch ${prefix}.frequency.switch.txt.gz - touch ${prefix}.sample.switch.txt.gz - touch ${prefix}.sample.typing.txt.gz - touch ${prefix}.type.switch.txt.gz - touch ${prefix}.variant.switch.txt.gz - touch ${prefix}.variant.typing.txt.gz + ${create_cmd} ${prefix}.block.switch.txt.gz + ${create_cmd} ${prefix}.calibration.switch.txt.gz + ${create_cmd} ${prefix}.flipsAndSwitches.txt.gz + ${create_cmd} ${prefix}.frequency.switch.txt.gz + ${create_cmd} ${prefix}.sample.switch.txt.gz + ${create_cmd} ${prefix}.sample.typing.txt.gz + ${create_cmd} ${prefix}.type.switch.txt.gz + ${create_cmd} ${prefix}.variant.switch.txt.gz + ${create_cmd} ${prefix}.variant.typing.txt.gz cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/shapeit5/switch/tests/main.nf.test b/modules/nf-core/shapeit5/switch/tests/main.nf.test new file mode 100644 index 00000000000..8ebad3eaa90 --- /dev/null +++ b/modules/nf-core/shapeit5/switch/tests/main.nf.test @@ -0,0 +1,105 @@ +nextflow_process { + + name "Test Process SHAPEIT5_SWITCH" + script "../main.nf" + process "SHAPEIT5_SWITCH" + + tag "modules" + tag "modules_nfcore" + tag "shapeit5" + tag "shapeit5/switch" + tag "shapeit5/phasecommon" + tag "bcftools/index" + + test("homo sapiens - vcf, scaffold, []") { + config "./nextflow.config" + setup { + run("SHAPEIT5_PHASECOMMON") { + script "../../../shapeit5/phasecommon" + params { + shapeit5_phasecommon_args = "--filter-maf 0.001" + } + process { + """ + input[0] = Channel.of([ + [ id:'scaffold', single_end:false ], // meta map + file(params.modules_testdata_base_path + "genomics/homo_sapiens/popgen/1000GP.chr22.vcf.gz", checkIfExists: true), + file(params.modules_testdata_base_path + "genomics/homo_sapiens/popgen/1000GP.chr22.vcf.gz.csi", checkIfExists: true), + [], + "chr22", + ]) + input[1] = Channel.of([[],[],[]]) + input[2] = Channel.of([[],[],[]]) + input[3] = Channel.of([[],[]]) + """ + } + } + run("BCFTOOLS_INDEX") { + script "../../../bcftools/index" + process { + """ + input[0] = SHAPEIT5_PHASECOMMON.out.phased_variant + """ + } + } + } + + when { + process { + """ + input[0] = SHAPEIT5_PHASECOMMON.out.phased_variant + .join(BCFTOOLS_INDEX.out.csi) + .combine(Channel.of("chr22")) + .combine(Channel.of([[]])) + input[1] = Channel.of([[ id:'truth_panel'], + file(params.modules_testdata_base_path + "genomics/homo_sapiens/popgen/1000GP.chr22.vcf.gz",checkIfExists:true), + file(params.modules_testdata_base_path + "genomics/homo_sapiens/popgen/1000GP.chr22.vcf.gz.csi",checkIfExists:true) + ]) + input[2] = Channel.of([[ id:'freq_file'], + file(params.modules_testdata_base_path + "genomics/homo_sapiens/popgen/1000GP.chr22.sites.vcf.gz",checkIfExists:true), + file(params.modules_testdata_base_path + "genomics/homo_sapiens/popgen/1000GP.chr22.sites.vcf.gz.csi",checkIfExists:true) + ]) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.errors.collect { meta, txt -> [ meta, txt.collect{ file(it).name } ] }, + process.out.versions + ).match() } + ) + } + + } + + test("homo sapiens - vcf, scaffold, [] - stub") { + options "-stub" + when { + process { + """ + input[0] = Channel.of([ + [id:'truth_panel'], + file(params.modules_testdata_base_path + "genomics/homo_sapiens/popgen/1000GP.chr22.vcf.gz",checkIfExists:true), + file(params.modules_testdata_base_path + "genomics/homo_sapiens/popgen/1000GP.chr22.vcf.gz.csi",checkIfExists:true), + "chr21", + [] + ]) + input[1] = [[], [], []] + input[2] = [[], [], []] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/shapeit5/switch/tests/main.nf.test.snap b/modules/nf-core/shapeit5/switch/tests/main.nf.test.snap new file mode 100644 index 00000000000..a568047c355 --- /dev/null +++ b/modules/nf-core/shapeit5/switch/tests/main.nf.test.snap @@ -0,0 +1,86 @@ +{ + "homo sapiens - vcf, scaffold, [] - stub": { + "content": [ + { + "0": [ + [ + { + "id": "truth_panel" + }, + [ + "truth_panel.block.switch.txt.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "truth_panel.calibration.switch.txt.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "truth_panel.flipsAndSwitches.txt.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "truth_panel.frequency.switch.txt.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "truth_panel.sample.switch.txt.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "truth_panel.sample.typing.txt.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "truth_panel.type.switch.txt.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "truth_panel.variant.switch.txt.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "truth_panel.variant.typing.txt.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "1": [ + "versions.yml:md5,95238962a141557f464b8e22c8057211" + ], + "errors": [ + [ + { + "id": "truth_panel" + }, + [ + "truth_panel.block.switch.txt.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "truth_panel.calibration.switch.txt.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "truth_panel.flipsAndSwitches.txt.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "truth_panel.frequency.switch.txt.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "truth_panel.sample.switch.txt.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "truth_panel.sample.typing.txt.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "truth_panel.type.switch.txt.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "truth_panel.variant.switch.txt.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "truth_panel.variant.typing.txt.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "versions": [ + "versions.yml:md5,95238962a141557f464b8e22c8057211" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.1" + }, + "timestamp": "2024-11-22T19:04:42.303883153" + }, + "homo sapiens - vcf, scaffold, []": { + "content": [ + [ + [ + { + "id": "scaffold", + "single_end": false + }, + [ + "scaffold.block.switch.txt.gz", + "scaffold.calibration.switch.txt.gz", + "scaffold.flipsAndSwitches.txt.gz", + "scaffold.frequency.switch.txt.gz", + "scaffold.sample.switch.txt.gz", + "scaffold.sample.typing.txt.gz", + "scaffold.type.switch.txt.gz", + "scaffold.variant.switch.txt.gz", + "scaffold.variant.typing.txt.gz" + ] + ] + ], + [ + "versions.yml:md5,95238962a141557f464b8e22c8057211" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.1" + }, + "timestamp": "2024-11-22T19:13:32.038870261" + } +} \ No newline at end of file diff --git a/modules/nf-core/shapeit5/switch/tests/nextflow.config b/modules/nf-core/shapeit5/switch/tests/nextflow.config new file mode 100644 index 00000000000..5f84c07d3bd --- /dev/null +++ b/modules/nf-core/shapeit5/switch/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: SHAPEIT5_PHASECOMMON { + ext.args = params.shapeit5_phasecommon_args + } +} diff --git a/modules/nf-core/tcoffee/extractfrompdb/environment.yml b/modules/nf-core/tcoffee/extractfrompdb/environment.yml new file mode 100644 index 00000000000..7cc504fcaa0 --- /dev/null +++ b/modules/nf-core/tcoffee/extractfrompdb/environment.yml @@ -0,0 +1,5 @@ +channels: + - conda-forge + - bioconda +dependencies: + - bioconda::t-coffee=13.46.0.919e8c6b diff --git a/modules/nf-core/tcoffee/extractfrompdb/main.nf b/modules/nf-core/tcoffee/extractfrompdb/main.nf new file mode 100644 index 00000000000..70b14bd958b --- /dev/null +++ b/modules/nf-core/tcoffee/extractfrompdb/main.nf @@ -0,0 +1,50 @@ +process TCOFFEE_EXTRACTFROMPDB { + tag "$meta.id" + label 'process_low' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/t-coffee:13.46.0.919e8c6b--hfc96bf3_0': + 'biocontainers/t-coffee:13.46.0.919e8c6b--hfc96bf3_0' }" + + input: + tuple val(meta), path(pdb) + + output: + tuple val(meta), path("${prefix}.pdb"), emit: formatted_pdb + path "versions.yml" , emit: versions + + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + prefix = task.ext.prefix ?: "${meta.id}" + """ + export TEMP='./' + t_coffee -other_pg extract_from_pdb \ + -infile ${pdb} \ + $args \ + > "${prefix}.pdb" + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + tcoffee: \$( t_coffee -version | awk '{gsub("Version_", ""); print \$3}') + END_VERSIONS + """ + + stub: + def args = task.ext.args ?: '' + prefix = task.ext.prefix ?: "${meta.id}" + """ + # Otherwise, tcoffee will crash when calling its version + export TEMP='./' + touch "${prefix}.pdb" + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + tcoffee: \$( t_coffee -version | awk '{gsub("Version_", ""); print \$3}') + END_VERSIONS + """ +} diff --git a/modules/nf-core/tcoffee/extractfrompdb/meta.yml b/modules/nf-core/tcoffee/extractfrompdb/meta.yml new file mode 100644 index 00000000000..107eabe15b8 --- /dev/null +++ b/modules/nf-core/tcoffee/extractfrompdb/meta.yml @@ -0,0 +1,43 @@ +name: "tcoffee_extractfrompdb" +description: Reformats the header of PDB files with t-coffee +keywords: + - reformatting + - pdb + - genomics +tools: + - "tcoffee": + description: "A collection of tools for Computing, Evaluating and Manipulating + Multiple Alignments of DNA, RNA, Protein Sequences and Structures." + homepage: "http://www.tcoffee.org/Projects/tcoffee/" + documentation: "https://tcoffee.readthedocs.io/en/latest/tcoffee_main_documentation.html" + tool_dev_url: "https://github.com/cbcrg/tcoffee" + doi: "10.1006/jmbi.2000.4042" + licence: ["GPL v3"] + identifier: "" +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'test' ]` + - pdb: + type: file + description: Input pdb to be reformatted +output: + - formatted_pdb: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'test' ]` + - ${prefix}.pdb: + type: file + description: Formatted pdb file + pattern: "*" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@luisas" diff --git a/modules/nf-core/tcoffee/extractfrompdb/tests/main.nf.test b/modules/nf-core/tcoffee/extractfrompdb/tests/main.nf.test new file mode 100644 index 00000000000..939ff19a48e --- /dev/null +++ b/modules/nf-core/tcoffee/extractfrompdb/tests/main.nf.test @@ -0,0 +1,69 @@ +nextflow_process { + + name "Test Process TCOFFEE_EXTRACTFROMPDB" + script "../main.nf" + process "TCOFFEE_EXTRACTFROMPDB" + + tag "modules" + tag "modules_nfcore" + tag "tcoffee" + tag "tcoffee/extractfrompdb" + tag "untar" + + setup { + + run("UNTAR") { + script "../../../untar/main.nf" + process { + """ + input[0] = [ [ id:'test' ], + file(params.modules_testdata_base_path + "../../multiplesequencealign/testdata/structures/seatoxin-ref.tar.gz", checkIfExists: true) + ] + + """ + } + } + } + + test("seatoxin ") { + + when { + process { + """ + input[0] = UNTAR.out.untar.collect{ meta, dir -> file(dir).listFiles().collect().first() }.map{ pdb -> [[ id: 'test'], pdb]} + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("seatoxin -stub ") { + + options "-stub" + + when { + process { + """ + input[0] = Channel.fromPath('empty_file.pdb').map{ pdb -> [[ id: 'test'], pdb]} + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + +} diff --git a/modules/nf-core/tcoffee/extractfrompdb/tests/main.nf.test.snap b/modules/nf-core/tcoffee/extractfrompdb/tests/main.nf.test.snap new file mode 100644 index 00000000000..5c6ae6dcdd4 --- /dev/null +++ b/modules/nf-core/tcoffee/extractfrompdb/tests/main.nf.test.snap @@ -0,0 +1,68 @@ +{ + "seatoxin -stub ": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.pdb:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,3ee943561db268aeeb8ebae110debd83" + ], + "formatted_pdb": [ + [ + { + "id": "test" + }, + "test.pdb:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,3ee943561db268aeeb8ebae110debd83" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.2" + }, + "timestamp": "2024-12-09T09:23:26.228225523" + }, + "seatoxin ": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.pdb:md5,f4d68827f3a77d8439a6f82036a0bda2" + ] + ], + "1": [ + "versions.yml:md5,3ee943561db268aeeb8ebae110debd83" + ], + "formatted_pdb": [ + [ + { + "id": "test" + }, + "test.pdb:md5,f4d68827f3a77d8439a6f82036a0bda2" + ] + ], + "versions": [ + "versions.yml:md5,3ee943561db268aeeb8ebae110debd83" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.2" + }, + "timestamp": "2024-12-09T09:23:07.991961475" + } +} \ No newline at end of file diff --git a/modules/nf-core/trimgalore/environment.yml b/modules/nf-core/trimgalore/environment.yml index 622407edadf..b1efd94c4a0 100644 --- a/modules/nf-core/trimgalore/environment.yml +++ b/modules/nf-core/trimgalore/environment.yml @@ -1,7 +1,7 @@ channels: - conda-forge - bioconda - dependencies: - bioconda::cutadapt=4.9 - bioconda::trim-galore=0.6.10 + - conda-forge::pigz=2.8 diff --git a/modules/nf-core/trimgalore/main.nf b/modules/nf-core/trimgalore/main.nf index 8a2fc54b33d..e55683ca549 100644 --- a/modules/nf-core/trimgalore/main.nf +++ b/modules/nf-core/trimgalore/main.nf @@ -1,22 +1,22 @@ process TRIMGALORE { - tag "$meta.id" + tag "${meta.id}" label 'process_high' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/trim-galore%3A0.6.10--hdfd78af_1' : - 'biocontainers/trim-galore:0.6.10--hdfd78af_1' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/9b/9becad054093ad4083a961d12733f2a742e11728fe9aa815d678b882b3ede520/data' + : 'community.wave.seqera.io/library/cutadapt_trim-galore_pigz:a98edd405b34582d'}" input: tuple val(meta), path(reads) output: tuple val(meta), path("*{3prime,5prime,trimmed,val}*.fq.gz"), emit: reads - tuple val(meta), path("*report.txt") , emit: log , optional: true - tuple val(meta), path("*unpaired*.fq.gz") , emit: unpaired, optional: true - tuple val(meta), path("*.html") , emit: html , optional: true - tuple val(meta), path("*.zip") , emit: zip , optional: true - path "versions.yml" , emit: versions + tuple val(meta), path("*report.txt") , emit: log , optional: true + tuple val(meta), path("*unpaired*.fq.gz"), emit: unpaired, optional: true + tuple val(meta), path("*.html") , emit: html , optional: true + tuple val(meta), path("*.zip") , emit: zip , optional: true + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when @@ -24,14 +24,20 @@ process TRIMGALORE { script: def args = task.ext.args ?: '' // Calculate number of --cores for TrimGalore based on value of task.cpus - // See: https://github.com/FelixKrueger/TrimGalore/blob/master/Changelog.md#version-060-release-on-1-mar-2019 + // See: https://github.com/FelixKrueger/TrimGalore/blob/master/CHANGELOG.md#version-060-release-on-1-mar-2019 // See: https://github.com/nf-core/atacseq/pull/65 def cores = 1 if (task.cpus) { cores = (task.cpus as int) - 4 - if (meta.single_end) cores = (task.cpus as int) - 3 - if (cores < 1) cores = 1 - if (cores > 8) cores = 8 + if (meta.single_end) { + cores = (task.cpus as int) - 3 + } + if (cores < 1) { + cores = 1 + } + if (cores > 8) { + cores = 8 + } } // Added soft-links to original fastqs for consistent naming in MultiQC @@ -40,10 +46,10 @@ process TRIMGALORE { def args_list = args.split("\\s(?=--)").toList() args_list.removeAll { it.toLowerCase().contains('_r2 ') } """ - [ ! -f ${prefix}.fastq.gz ] && ln -s $reads ${prefix}.fastq.gz + [ ! -f ${prefix}.fastq.gz ] && ln -s ${reads} ${prefix}.fastq.gz trim_galore \\ ${args_list.join(' ')} \\ - --cores $cores \\ + --cores ${cores} \\ --gzip \\ ${prefix}.fastq.gz @@ -51,15 +57,17 @@ process TRIMGALORE { "${task.process}": trimgalore: \$(echo \$(trim_galore --version 2>&1) | sed 's/^.*version //; s/Last.*\$//') cutadapt: \$(cutadapt --version) + pigz: \$( pigz --version 2>&1 | sed 's/pigz //g' ) END_VERSIONS """ - } else { + } + else { """ [ ! -f ${prefix}_1.fastq.gz ] && ln -s ${reads[0]} ${prefix}_1.fastq.gz [ ! -f ${prefix}_2.fastq.gz ] && ln -s ${reads[1]} ${prefix}_2.fastq.gz trim_galore \\ - $args \\ - --cores $cores \\ + ${args} \\ + --cores ${cores} \\ --paired \\ --gzip \\ ${prefix}_1.fastq.gz \\ @@ -69,6 +77,7 @@ process TRIMGALORE { "${task.process}": trimgalore: \$(echo \$(trim_galore --version 2>&1) | sed 's/^.*version //; s/Last.*\$//') cutadapt: \$(cutadapt --version) + pigz: \$( pigz --version 2>&1 | sed 's/pigz //g' ) END_VERSIONS """ } @@ -78,7 +87,8 @@ process TRIMGALORE { if (meta.single_end) { output_command = "echo '' | gzip > ${prefix}_trimmed.fq.gz ;" output_command += "touch ${prefix}.fastq.gz_trimming_report.txt" - } else { + } + else { output_command = "echo '' | gzip > ${prefix}_1_trimmed.fq.gz ;" output_command += "touch ${prefix}_1.fastq.gz_trimming_report.txt ;" output_command += "echo '' | gzip > ${prefix}_2_trimmed.fq.gz ;" @@ -91,6 +101,7 @@ process TRIMGALORE { "${task.process}": trimgalore: \$(echo \$(trim_galore --version 2>&1) | sed 's/^.*version //; s/Last.*\$//') cutadapt: \$(cutadapt --version) + pigz: \$( pigz --version 2>&1 | sed 's/pigz //g' ) END_VERSIONS """ } diff --git a/modules/nf-core/trimgalore/tests/main.nf.test b/modules/nf-core/trimgalore/tests/main.nf.test index 2a3dbbb0307..37b054fc020 100644 --- a/modules/nf-core/trimgalore/tests/main.nf.test +++ b/modules/nf-core/trimgalore/tests/main.nf.test @@ -39,7 +39,7 @@ nextflow_process { { assert path(process.out.log.get(0).get(1)).getText().contains(report1_line) } } }, - { assert snapshot(process.out.versions).match() } + { assert snapshot(path(process.out.versions.get(0)).yaml).match() }, ) } } @@ -61,7 +61,10 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot( + process.out, + path(process.out.versions.get(0)).yaml + ).match() }, ) } } @@ -118,7 +121,7 @@ nextflow_process { { assert path(process.out.log.get(0).get(1).get(1)).getText().contains(report2_line) } } }, - { assert snapshot(process.out.versions).match() } + { assert snapshot(path(process.out.versions.get(0)).yaml).match() }, ) } } @@ -143,8 +146,9 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot(process.out).match() }, + { assert snapshot(path(process.out.versions.get(0)).yaml).match("versions") }, ) } } -} +} \ No newline at end of file diff --git a/modules/nf-core/trimgalore/tests/main.nf.test.snap b/modules/nf-core/trimgalore/tests/main.nf.test.snap index 21da84933fc..4c7318061cc 100644 --- a/modules/nf-core/trimgalore/tests/main.nf.test.snap +++ b/modules/nf-core/trimgalore/tests/main.nf.test.snap @@ -1,15 +1,19 @@ { "test_trimgalore_single_end": { "content": [ - [ - "versions.yml:md5,81a0b49f3a9e1315fe564f9946eb8c50" - ] + { + "TRIMGALORE": { + "trimgalore": "0.6.10", + "cutadapt": 4.9, + "pigz": 2.8 + } + } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.2" }, - "timestamp": "2024-10-22T19:23:17.969056957" + "timestamp": "2024-12-05T22:56:18.454197" }, "test_trimgalore_single_end - stub": { "content": [ @@ -42,7 +46,7 @@ ], "5": [ - "versions.yml:md5,81a0b49f3a9e1315fe564f9946eb8c50" + "versions.yml:md5,5928323d579768de37e83c56c821757f" ], "html": [ @@ -69,18 +73,25 @@ ], "versions": [ - "versions.yml:md5,81a0b49f3a9e1315fe564f9946eb8c50" + "versions.yml:md5,5928323d579768de37e83c56c821757f" ], "zip": [ ] + }, + { + "TRIMGALORE": { + "trimgalore": "0.6.10", + "cutadapt": 4.9, + "pigz": 2.8 + } } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.2" }, - "timestamp": "2024-10-22T19:23:28.617831159" + "timestamp": "2024-12-05T22:56:22.085472" }, "test_trimgalore_paired_end - stub": { "content": [ @@ -119,7 +130,7 @@ ], "5": [ - "versions.yml:md5,81a0b49f3a9e1315fe564f9946eb8c50" + "versions.yml:md5,5928323d579768de37e83c56c821757f" ], "html": [ @@ -152,7 +163,7 @@ ], "versions": [ - "versions.yml:md5,81a0b49f3a9e1315fe564f9946eb8c50" + "versions.yml:md5,5928323d579768de37e83c56c821757f" ], "zip": [ @@ -160,21 +171,41 @@ } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.2" + }, + "timestamp": "2024-12-05T22:44:33.751013" + }, + "versions": { + "content": [ + { + "TRIMGALORE": { + "trimgalore": "0.6.10", + "cutadapt": 4.9, + "pigz": 2.8 + } + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.2" }, - "timestamp": "2024-10-22T19:23:51.539787731" + "timestamp": "2024-12-05T22:57:28.77107" }, "test_trimgalore_paired_end": { "content": [ - [ - "versions.yml:md5,81a0b49f3a9e1315fe564f9946eb8c50" - ] + { + "TRIMGALORE": { + "trimgalore": "0.6.10", + "cutadapt": 4.9, + "pigz": 2.8 + } + } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.2" }, - "timestamp": "2024-10-22T19:23:41.16485915" + "timestamp": "2024-12-05T22:56:27.019872" } } \ No newline at end of file diff --git a/modules/nf-core/vt/decomposeblocksub/environment.yml b/modules/nf-core/vt/decomposeblocksub/environment.yml new file mode 100644 index 00000000000..3f2cbb9b9e1 --- /dev/null +++ b/modules/nf-core/vt/decomposeblocksub/environment.yml @@ -0,0 +1,7 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + - "bioconda::vt=2015.11.10" diff --git a/modules/nf-core/vt/decomposeblocksub/main.nf b/modules/nf-core/vt/decomposeblocksub/main.nf new file mode 100644 index 00000000000..8bd77bcfe16 --- /dev/null +++ b/modules/nf-core/vt/decomposeblocksub/main.nf @@ -0,0 +1,59 @@ +process VT_DECOMPOSEBLOCKSUB { + tag "$meta.id" + label 'process_low' + + // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/vt:2015.11.10--h5ef6573_4': + 'biocontainers/vt:2015.11.10--h5ef6573_4' }" + + input: + tuple val(meta), path(vcf), path(index), path(intervals) + + output: + tuple val(meta), path("*.vcf.gz") , emit: vcf + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def args2 = task.ext.args2 ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + + if ("$vcf" == "${prefix}.vcf.gz") { + error "Input and output names are the same, set prefix in module configuration to disambiguate!" + } + + def bed = intervals ? "-i ${intervals}" : "" + """ + vt decompose_blocksub \\ + -o ${prefix}.vcf.gz \\ + ${bed} \\ + ${args} \\ + ${vcf} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + vt: \$(echo \$(vt decompose_blocksub 2>&1 | grep 'decompose_blocksub v' | sed -n 's/.*decompose_blocksub v\\([0-9]\\+\\.[0-9]\\+\\).*/\\1/p' )) + END_VERSIONS + """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + + if ("$vcf" == "${prefix}.vcf.gz") { + error "Input and output names are the same, set prefix in module configuration to disambiguate!" + } + + """ + touch ${prefix}.vcf.gz + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + vt: \$(echo \$(vt decompose_blocksub 2>&1 | grep 'decompose_blocksub v' | sed -n 's/.*decompose_blocksub v\\([0-9]\\+\\.[0-9]\\+\\).*/\\1/p' )) + END_VERSIONS + """ +} diff --git a/modules/nf-core/vt/decomposeblocksub/meta.yml b/modules/nf-core/vt/decomposeblocksub/meta.yml new file mode 100644 index 00000000000..39d67b84ebb --- /dev/null +++ b/modules/nf-core/vt/decomposeblocksub/meta.yml @@ -0,0 +1,63 @@ +name: "vt_decomposeblocksub" +description: Decomposes biallelic block substitutions into its constituent SNPs. +keywords: + - decomposeblocksub + - multiallelic + - small variants + - snps + - indels + - block substitutions +tools: + - "vt": + description: "A tool set for short variant discovery in genetic sequence data" + homepage: "https://genome.sph.umich.edu/wiki/Vt" + documentation: "https://genome.sph.umich.edu/wiki/Vt" + tool_dev_url: "https://github.com/atks/vt" + licence: ["MIT"] + identifier: "" +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'test', single_end:false ]` + - vcf: + type: file + description: The VCF file to decompose + pattern: "*.vcf(.gz)?" + ontologies: + - edam: "http://edamontology.org/format_3016" + - index: + type: file + description: The VCF file to decompose + pattern: "*.tbi" + ontologies: + - edam: "http://edamontology.org/format_3616" + - intervals: + type: file + description: The intervals of the variants of decompose + pattern: "*.bed" + ontologies: + - edam: "http://edamontology.org/format_3003" +output: + - vcf: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'test', single_end:false ]` + - "*.vcf.gz": + type: file + description: The decomposed VCF file + pattern: "*.vcf.gz" + ontologies: + - edam: "http://edamontology.org/format_3016" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@kubranarci" +maintainers: + - "@kubranarci" diff --git a/modules/nf-core/vt/decomposeblocksub/tests/main.nf.test b/modules/nf-core/vt/decomposeblocksub/tests/main.nf.test new file mode 100644 index 00000000000..67b61ee3377 --- /dev/null +++ b/modules/nf-core/vt/decomposeblocksub/tests/main.nf.test @@ -0,0 +1,62 @@ + +nextflow_process { + + name "Test Process VT_DECOMPOSEBLOCKSUB" + script "../main.nf" + process "VT_DECOMPOSEBLOCKSUB" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "vt" + tag "vt/decomposeblocksub" + + test("test-vt-decomposeblocksub") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true), + [] + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test-vt-decomposeblocksub-intervals") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true), + [], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true) + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/vt/decomposeblocksub/tests/main.nf.test.snap b/modules/nf-core/vt/decomposeblocksub/tests/main.nf.test.snap new file mode 100644 index 00000000000..a5de36ab4d6 --- /dev/null +++ b/modules/nf-core/vt/decomposeblocksub/tests/main.nf.test.snap @@ -0,0 +1,72 @@ +{ + "test-vt-decomposeblocksub-intervals": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "decomposeblocksub.vcf.gz:md5,6dd85c7989b945dccb0a834c2c05407a" + ] + ], + "1": [ + "versions.yml:md5,2e541ec639f0458804a6cd3a58211f66" + ], + "vcf": [ + [ + { + "id": "test", + "single_end": false + }, + "decomposeblocksub.vcf.gz:md5,6dd85c7989b945dccb0a834c2c05407a" + ] + ], + "versions": [ + "versions.yml:md5,2e541ec639f0458804a6cd3a58211f66" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.2" + }, + "timestamp": "2024-12-03T09:38:47.060601884" + }, + "test-vt-decomposeblocksub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "decomposeblocksub.vcf.gz:md5,6dd85c7989b945dccb0a834c2c05407a" + ] + ], + "1": [ + "versions.yml:md5,2e541ec639f0458804a6cd3a58211f66" + ], + "vcf": [ + [ + { + "id": "test", + "single_end": false + }, + "decomposeblocksub.vcf.gz:md5,6dd85c7989b945dccb0a834c2c05407a" + ] + ], + "versions": [ + "versions.yml:md5,2e541ec639f0458804a6cd3a58211f66" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.2" + }, + "timestamp": "2024-12-03T09:38:24.537448596" + } +} \ No newline at end of file diff --git a/modules/nf-core/vt/decomposeblocksub/tests/nextflow.config b/modules/nf-core/vt/decomposeblocksub/tests/nextflow.config new file mode 100644 index 00000000000..c9c00888849 --- /dev/null +++ b/modules/nf-core/vt/decomposeblocksub/tests/nextflow.config @@ -0,0 +1,6 @@ +process { + withName: VT_DECOMPOSEBLOCKSUB { + ext.prefix = "decomposeblocksub" + ext.args = "-a" + } +} diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test.snap b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test.snap index 834aaa931a3..f4e3f408cce 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test.snap +++ b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/tests/main.nf.test.snap @@ -61,8 +61,8 @@ ], "9": [ "versions.yml:md5,3e4b7f058c0aa96ba41c3e4d6df6e839", - "versions.yml:md5,7e740129a23c5ac21c27476e30f8a6d2", - "versions.yml:md5,c1bbaea7bd77a49018d36e859e297118" + "versions.yml:md5,6bcfe4e08308ca239c09bbd6cbcef429", + "versions.yml:md5,7e740129a23c5ac21c27476e30f8a6d2" ], "fastqc_html": [ [ @@ -123,16 +123,16 @@ ], "versions": [ "versions.yml:md5,3e4b7f058c0aa96ba41c3e4d6df6e839", - "versions.yml:md5,7e740129a23c5ac21c27476e30f8a6d2", - "versions.yml:md5,c1bbaea7bd77a49018d36e859e297118" + "versions.yml:md5,6bcfe4e08308ca239c09bbd6cbcef429", + "versions.yml:md5,7e740129a23c5ac21c27476e30f8a6d2" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.2" }, - "timestamp": "2024-10-22T19:25:19.153139356" + "timestamp": "2024-12-05T22:45:22.365353" }, "test paired end read without UMI - stub": { "content": [ @@ -192,8 +192,8 @@ ] ], "9": [ - "versions.yml:md5,7e740129a23c5ac21c27476e30f8a6d2", - "versions.yml:md5,c1bbaea7bd77a49018d36e859e297118" + "versions.yml:md5,6bcfe4e08308ca239c09bbd6cbcef429", + "versions.yml:md5,7e740129a23c5ac21c27476e30f8a6d2" ], "fastqc_html": [ [ @@ -250,16 +250,16 @@ ], "versions": [ - "versions.yml:md5,7e740129a23c5ac21c27476e30f8a6d2", - "versions.yml:md5,c1bbaea7bd77a49018d36e859e297118" + "versions.yml:md5,6bcfe4e08308ca239c09bbd6cbcef429", + "versions.yml:md5,7e740129a23c5ac21c27476e30f8a6d2" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.2" }, - "timestamp": "2024-10-22T19:25:30.433084765" + "timestamp": "2024-12-05T22:45:26.514305" }, "test paired end read without UMI": { "content": [ @@ -288,15 +288,15 @@ ], [ - "versions.yml:md5,7e740129a23c5ac21c27476e30f8a6d2", - "versions.yml:md5,c1bbaea7bd77a49018d36e859e297118" + "versions.yml:md5,6bcfe4e08308ca239c09bbd6cbcef429", + "versions.yml:md5,7e740129a23c5ac21c27476e30f8a6d2" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.2" }, - "timestamp": "2024-10-22T19:24:40.341840093" + "timestamp": "2024-12-05T22:45:06.899923" }, "test single end read with UMI": { "content": [ @@ -323,15 +323,15 @@ ], [ "versions.yml:md5,3e4b7f058c0aa96ba41c3e4d6df6e839", - "versions.yml:md5,7e740129a23c5ac21c27476e30f8a6d2", - "versions.yml:md5,c1bbaea7bd77a49018d36e859e297118" + "versions.yml:md5,6bcfe4e08308ca239c09bbd6cbcef429", + "versions.yml:md5,7e740129a23c5ac21c27476e30f8a6d2" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.2" }, - "timestamp": "2024-10-22T19:24:09.307037853" + "timestamp": "2024-12-05T22:44:50.05749" }, "test paired end read with UMI": { "content": [ @@ -358,15 +358,15 @@ ], [ "versions.yml:md5,3e4b7f058c0aa96ba41c3e4d6df6e839", - "versions.yml:md5,7e740129a23c5ac21c27476e30f8a6d2", - "versions.yml:md5,c1bbaea7bd77a49018d36e859e297118" + "versions.yml:md5,6bcfe4e08308ca239c09bbd6cbcef429", + "versions.yml:md5,7e740129a23c5ac21c27476e30f8a6d2" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.2" }, - "timestamp": "2024-10-22T19:24:26.93011239" + "timestamp": "2024-12-05T22:45:00.015694" }, "test skip all steps": { "content": [ @@ -448,8 +448,8 @@ ], "9": [ "versions.yml:md5,3e4b7f058c0aa96ba41c3e4d6df6e839", - "versions.yml:md5,7e740129a23c5ac21c27476e30f8a6d2", - "versions.yml:md5,c1bbaea7bd77a49018d36e859e297118" + "versions.yml:md5,6bcfe4e08308ca239c09bbd6cbcef429", + "versions.yml:md5,7e740129a23c5ac21c27476e30f8a6d2" ], "fastqc_html": [ [ @@ -510,15 +510,15 @@ ], "versions": [ "versions.yml:md5,3e4b7f058c0aa96ba41c3e4d6df6e839", - "versions.yml:md5,7e740129a23c5ac21c27476e30f8a6d2", - "versions.yml:md5,c1bbaea7bd77a49018d36e859e297118" + "versions.yml:md5,6bcfe4e08308ca239c09bbd6cbcef429", + "versions.yml:md5,7e740129a23c5ac21c27476e30f8a6d2" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.2" }, - "timestamp": "2024-10-22T19:25:05.585472049" + "timestamp": "2024-12-05T22:45:15.763472" } } \ No newline at end of file diff --git a/subworkflows/nf-core/h5ad_removebackground_barcodes_cellbender_anndata/main.nf b/subworkflows/nf-core/h5ad_removebackground_barcodes_cellbender_anndata/main.nf new file mode 100644 index 00000000000..9539f1c1d33 --- /dev/null +++ b/subworkflows/nf-core/h5ad_removebackground_barcodes_cellbender_anndata/main.nf @@ -0,0 +1,28 @@ +// +// Apply cellbender and anndata to h5ad for background and empty droplet removal +// +include { CELLBENDER_REMOVEBACKGROUND } from '../../../modules/nf-core/cellbender/removebackground' +include { ANNDATA_BARCODES } from '../../../modules/nf-core/anndata/barcodes' + +workflow H5AD_REMOVEBACKGROUND_BARCODES_CELLBENDER_ANNDATA { + + take: + ch_unfiltered // channel: [mandatory] meta, h5ad + + main: + ch_versions = Channel.empty() + + CELLBENDER_REMOVEBACKGROUND(ch_unfiltered) + ch_versions = ch_versions.mix(CELLBENDER_REMOVEBACKGROUND.out.versions) + + ch_combined = ch_unfiltered.join(CELLBENDER_REMOVEBACKGROUND.out.barcodes) + + ANNDATA_BARCODES(ch_combined) + ch_versions = ch_versions.mix(ANNDATA_BARCODES.out.versions) + + emit: + h5ad = ANNDATA_BARCODES.out.h5ad // channel: [ val(meta), path(h5ad) ] + + versions = ch_versions // channel: [ path(versions.yml) ] +} + diff --git a/subworkflows/nf-core/h5ad_removebackground_barcodes_cellbender_anndata/meta.yml b/subworkflows/nf-core/h5ad_removebackground_barcodes_cellbender_anndata/meta.yml new file mode 100644 index 00000000000..c4c4b4cfe21 --- /dev/null +++ b/subworkflows/nf-core/h5ad_removebackground_barcodes_cellbender_anndata/meta.yml @@ -0,0 +1,35 @@ +name: "h5ad_removebackground_barcodes_cellbender_anndata" +description: Use features of Cellbender to remove background noise and empty droplet +keywords: + - scdownstream + - cellbender + - anndata +components: + - cellbender/removebackground + - anndata/barcodes +input: + - ch_unfiltered: + type: file + description: | + The input channel containing the unfiltered AnnData file to process + and remove background noise and empty droplets + Structure: [ val(meta), path(h5ad) ] + pattern: "*.h5ad" +output: + - h5ad: + description: | + Background and empty droplet removed AnnData file containing cells with + barcodes exceeding 0.5 posterior cell probability determined by the + cellbender's remove-background + Structure: [ val(meta), path(h5ad) ] + pattern: "*.h5ad" + - versions: + type: file + description: | + File containing software versions + pattern: "versions.yml" +authors: + - "@nictru" + - "@chaochaowong" +maintainers: + - "@nictru" diff --git a/subworkflows/nf-core/h5ad_removebackground_barcodes_cellbender_anndata/tests/epochs.config b/subworkflows/nf-core/h5ad_removebackground_barcodes_cellbender_anndata/tests/epochs.config new file mode 100644 index 00000000000..96282b074b2 --- /dev/null +++ b/subworkflows/nf-core/h5ad_removebackground_barcodes_cellbender_anndata/tests/epochs.config @@ -0,0 +1,6 @@ + +process { + withName: CELLBENDER_REMOVEBACKGROUND { + ext.args = '--epochs 20' + } +} diff --git a/subworkflows/nf-core/h5ad_removebackground_barcodes_cellbender_anndata/tests/main.nf.test b/subworkflows/nf-core/h5ad_removebackground_barcodes_cellbender_anndata/tests/main.nf.test new file mode 100644 index 00000000000..92ea058a649 --- /dev/null +++ b/subworkflows/nf-core/h5ad_removebackground_barcodes_cellbender_anndata/tests/main.nf.test @@ -0,0 +1,32 @@ +nextflow_workflow { + + name "Test Subworkflow H5AD_REMOVEBACKGROUND_BARCODES_CELLBENDER_ANNDATA" + script "../main.nf" + workflow "H5AD_REMOVEBACKGROUND_BARCODES_CELLBENDER_ANNDATA" + + tag "subworkflows" + tag "subworkflows_nfcore" + tag "subworkflows/h5ad_removebackground_barcodes_cellbender_anndata" + tag "cellbender/removebackground" + tag "anndata/barcodes" + + test("h5ad - h5ad_removebackground_barcodes_cellbender_anndata") { + config './epochs.config' + when { + workflow { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + file("https://raw.githubusercontent.com/nf-core/test-datasets/scdownstream/samples/SAMN14430799_raw_matrix_5k.h5ad", checkIfExists: true) + ]) + """ + } + } + then { + assertAll( + { assert workflow.success}, + { assert snapshot(workflow.out).match()} + ) + } + } +} \ No newline at end of file diff --git a/subworkflows/nf-core/h5ad_removebackground_barcodes_cellbender_anndata/tests/main.nf.test.snap b/subworkflows/nf-core/h5ad_removebackground_barcodes_cellbender_anndata/tests/main.nf.test.snap new file mode 100644 index 00000000000..50f6d7c6973 --- /dev/null +++ b/subworkflows/nf-core/h5ad_removebackground_barcodes_cellbender_anndata/tests/main.nf.test.snap @@ -0,0 +1,37 @@ +{ + "h5ad - h5ad_removebackground_barcodes_cellbender_anndata": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.h5ad:md5,6c94663b900a495d3492cd0b216c9b67" + ] + ], + "1": [ + "versions.yml:md5,3b268371ecd09ac624398c004f5e279d", + "versions.yml:md5,fc7f5fec60cfd2b10b91177571ee63e8" + ], + "h5ad": [ + [ + { + "id": "test" + }, + "test.h5ad:md5,6c94663b900a495d3492cd0b216c9b67" + ] + ], + "versions": [ + "versions.yml:md5,3b268371ecd09ac624398c004f5e279d", + "versions.yml:md5,fc7f5fec60cfd2b10b91177571ee63e8" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.10.1" + }, + "timestamp": "2024-11-26T15:17:04.577770824" + } +} \ No newline at end of file diff --git a/subworkflows/nf-core/mmseqs_contig_taxonomy/tests/main.nf.test.snap b/subworkflows/nf-core/mmseqs_contig_taxonomy/tests/main.nf.test.snap index 72cef79dcf3..139b7abcd54 100644 --- a/subworkflows/nf-core/mmseqs_contig_taxonomy/tests/main.nf.test.snap +++ b/subworkflows/nf-core/mmseqs_contig_taxonomy/tests/main.nf.test.snap @@ -2,10 +2,10 @@ "mmseqs_contig_taxonomy - bacteroides_fragilis - contig": { "content": [ [ - "versions.yml:md5,394dfc0a2af83eb4c8ec9e180cb44b37", - "versions.yml:md5,49890601bcc79306ea202d0901d0578e", - "versions.yml:md5,50d8f191f53c3da260e67aa3ca64fd77", - "versions.yml:md5,b74ec13e6b0d418f76a233963be3c61c" + "versions.yml:md5,5d88d2bec706c621fc1708057d96ba4b", + "versions.yml:md5,b74ec13e6b0d418f76a233963be3c61c", + "versions.yml:md5,cb8267097608050e1f9a1d18aca1637a", + "versions.yml:md5,e23563c111847451013d166d17b8a0b4" ], true, [ @@ -18,9 +18,9 @@ "mmseqs_database" ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.2" }, - "timestamp": "2024-05-17T11:25:44.10208454" + "timestamp": "2024-12-05T14:55:07.144815554" } -} +} \ No newline at end of file diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/main.nf b/subworkflows/nf-core/utils_nfcore_pipeline/main.nf index 228dbff8979..bfd258760d2 100644 --- a/subworkflows/nf-core/utils_nfcore_pipeline/main.nf +++ b/subworkflows/nf-core/utils_nfcore_pipeline/main.nf @@ -203,29 +203,24 @@ def logColours(monochrome_logs=true) { return colorcodes } +// Return a single report from an object that may be a Path or List // -// Attach the multiqc report to email -// -def attachMultiqcReport(multiqc_report) { - def mqc_report = null - try { - if (workflow.success) { - mqc_report = multiqc_report.getVal() - if (mqc_report.getClass() == ArrayList && mqc_report.size() >= 1) { - if (mqc_report.size() > 1) { - log.warn("[${workflow.manifest.name}] Found multiple reports from process 'MULTIQC', will use only one") - } - mqc_report = mqc_report[0] - } +def getSingleReport(multiqc_reports) { + if (multiqc_reports instanceof Path) { + return multiqc_reports + } else if (multiqc_reports instanceof List) { + if (multiqc_reports.size() == 0) { + log.warn("[${workflow.manifest.name}] No reports found from process 'MULTIQC'") + return null + } else if (multiqc_reports.size() == 1) { + return multiqc_reports.first() + } else { + log.warn("[${workflow.manifest.name}] Found multiple reports from process 'MULTIQC', will use only one") + return multiqc_reports.first() } + } else { + return null } - catch (Exception msg) { - log.debug(msg) - if (multiqc_report) { - log.warn("[${workflow.manifest.name}] Could not attach MultiQC report to summary email") - } - } - return mqc_report } // @@ -279,7 +274,7 @@ def completionEmail(summary_params, email, email_on_fail, plaintext_email, outdi email_fields['summary'] = summary << misc_fields // On success try attach the multiqc report - def mqc_report = attachMultiqcReport(multiqc_report) + def mqc_report = getSingleReport(multiqc_report) // Check if we are only sending emails on failure def email_address = email @@ -310,7 +305,8 @@ def completionEmail(summary_params, email, email_on_fail, plaintext_email, outdi if (email_address) { try { if (plaintext_email) { -new org.codehaus.groovy.GroovyException('Send plaintext e-mail, not HTML') } + new org.codehaus.groovy.GroovyException('Send plaintext e-mail, not HTML') + } // Try to send HTML e-mail using sendmail def sendmail_tf = new File(workflow.launchDir.toString(), ".sendmail_tmp.html") sendmail_tf.withWriter { w -> w << sendmail_html } @@ -318,7 +314,7 @@ new org.codehaus.groovy.GroovyException('Send plaintext e-mail, not HTML') log.info("-${colors.purple}[${workflow.manifest.name}]${colors.green} Sent summary e-mail to ${email_address} (sendmail)-") } catch (Exception msg) { - log.debug(msg) + log.debug(msg.toString()) log.debug("Trying with mail instead of sendmail") // Catch failures and try with plaintext def mail_cmd = ['mail', '-s', subject, '--content-type=text/html', email_address] diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test index e43d208b1b0..f117040cbd6 100644 --- a/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test +++ b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test @@ -79,4 +79,48 @@ nextflow_function { ) } } + + test("Test Function getSingleReport with a single file") { + function "getSingleReport" + + when { + function { + """ + input[0] = file(params.modules_testdata_base_path + '/generic/tsv/test.tsv', checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert function.success }, + { assert function.result.contains("test.tsv") } + ) + } + } + + test("Test Function getSingleReport with multiple files") { + function "getSingleReport" + + when { + function { + """ + input[0] = [ + file(params.modules_testdata_base_path + '/generic/tsv/test.tsv', checkIfExists: true), + file(params.modules_testdata_base_path + '/generic/tsv/network.tsv', checkIfExists: true), + file(params.modules_testdata_base_path + '/generic/tsv/expression.tsv', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert function.success }, + { assert function.result.contains("test.tsv") }, + { assert !function.result.contains("network.tsv") }, + { assert !function.result.contains("expression.tsv") } + ) + } + } } diff --git a/tests/config/pytest_modules.yml b/tests/config/pytest_modules.yml index 2d1e8bea1fc..01df2f69185 100644 --- a/tests/config/pytest_modules.yml +++ b/tests/config/pytest_modules.yml @@ -359,9 +359,6 @@ mitohifi/findmitoreference: mitohifi/mitohifi: - modules/nf-core/mitohifi/mitohifi/** - tests/modules/nf-core/mitohifi/mitohifi/** -mmseqs/cluster: - - modules/nf-core/mmseqs/cluster/** - - tests/modules/nf-core/mmseqs/cluster/** mmseqs/easysearch: - modules/nf-core/mmseqs/easysearch/** - tests/modules/nf-core/mmseqs/easysearch/** @@ -504,18 +501,6 @@ sgdemux: - modules/nf-core/sgdemux/** - modules/nf-core/untar/** - tests/modules/nf-core/sgdemux/** -shapeit5/ligate: - - modules/nf-core/shapeit5/ligate/** - - tests/modules/nf-core/shapeit5/ligate/** -shapeit5/phasecommon: - - modules/nf-core/shapeit5/phasecommon/** - - tests/modules/nf-core/shapeit5/phasecommon/** -shapeit5/phaserare: - - modules/nf-core/shapeit5/phaserare/** - - tests/modules/nf-core/shapeit5/phaserare/** -shapeit5/switch: - - modules/nf-core/shapeit5/switch/** - - tests/modules/nf-core/shapeit5/switch/** shigeifinder: - modules/nf-core/shigeifinder/** - tests/modules/nf-core/shigeifinder/** diff --git a/tests/modules/nf-core/mmseqs/cluster/main.nf b/tests/modules/nf-core/mmseqs/cluster/main.nf deleted file mode 100644 index 5adb4da806a..00000000000 --- a/tests/modules/nf-core/mmseqs/cluster/main.nf +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/env nextflow - -nextflow.enable.dsl = 2 - -include { UNTAR } from '../../../../../modules/nf-core/untar/main.nf' -include { MMSEQS_CLUSTER } from '../../../../../modules/nf-core/mmseqs/cluster/main.nf' - -workflow test_mmseqs_cluster { - - input = [ - [ id:'test', single_end:true ], // meta map - file(params.test_data['sarscov2']['genome']['mmseqs_tar_gz'], checkIfExists: true) - ] - - ch_db = UNTAR ( input ).untar - - MMSEQS_CLUSTER ( ch_db ) - -} diff --git a/tests/modules/nf-core/mmseqs/cluster/test.yml b/tests/modules/nf-core/mmseqs/cluster/test.yml deleted file mode 100644 index 88eb64c4cf6..00000000000 --- a/tests/modules/nf-core/mmseqs/cluster/test.yml +++ /dev/null @@ -1,11 +0,0 @@ -- name: mmseqs cluster test_mmseqs_cluster - command: nextflow run ./tests/modules/nf-core/mmseqs/cluster -entry test_mmseqs_cluster -c ./tests/config/nextflow.config -c ./tests/modules/nf-core/mmseqs/cluster/nextflow.config - tags: - - mmseqs/cluster - - mmseqs - files: - - path: output/mmseqs/test_output_cluster/test_output_cluster.0 - - path: output/mmseqs/test_output_cluster/test_output_cluster.1 - - path: output/mmseqs/test_output_cluster/test_output_cluster.dbtype - - path: output/mmseqs/test_output_cluster/test_output_cluster.index - - path: output/mmseqs/versions.yml diff --git a/tests/modules/nf-core/shapeit5/ligate/main.nf b/tests/modules/nf-core/shapeit5/ligate/main.nf deleted file mode 100644 index 1213f7bd3a8..00000000000 --- a/tests/modules/nf-core/shapeit5/ligate/main.nf +++ /dev/null @@ -1,58 +0,0 @@ -#!/usr/bin/env nextflow -nextflow.enable.dsl = 2 - -include { SHAPEIT5_LIGATE } from '../../../../../modules/nf-core/shapeit5/ligate/main.nf' -include { SHAPEIT5_PHASECOMMON } from '../../../../../modules/nf-core/shapeit5/phasecommon/main.nf' -include { BCFTOOLS_VIEW } from '../../../../../modules/nf-core/bcftools/view/main.nf' -include { BCFTOOLS_INDEX } from '../../../../../modules/nf-core/bcftools/index/main.nf' -include { BCFTOOLS_INDEX as BCFTOOLS_INDEX2 } from '../../../../../modules/nf-core/bcftools/index/main.nf' - -workflow test_shapeit5_ligate { - input_vcf = [ - [ id:'NA12878_1X', single_end:false ], // meta map - file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/glimpse/NA12878.chr21.s.1x.vcf.gz", checkIfExists: true), - file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/glimpse/NA12878.chr21.s.1x.vcf.gz.csi", checkIfExists: true), - ] - - ref_panel = Channel.of([ - [ id:'REF_1000GP', single_end:false ], // meta map - file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/glimpse/1000GP.chr21.noNA12878.s.bcf", checkIfExists: true), - file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/glimpse/1000GP.chr21.noNA12878.s.bcf.csi", checkIfExists: true) - ]).collect() - - scaffold = Channel.of([[],[],[]]).collect() - map = Channel.of([[],[]]).collect() - - BCFTOOLS_VIEW ( input_vcf, [], [], [] ) - BCFTOOLS_INDEX ( BCFTOOLS_VIEW.out.vcf ) - - region = Channel.of("chr21:16600000-16750000", "chr21:16650000-16800000") - sample = Channel.of([[]]) - - phase_input = Channel.of([[ id:'NA12878_1X']]) - .combine(BCFTOOLS_VIEW.out.vcf.collect().map{it[1]}) - .combine(BCFTOOLS_INDEX.out.csi.collect().map{it[1]}) - .combine(sample) - .combine(region) - .map{ meta, vcf, csi, sample, region -> - [meta + [region: region.replace(":","_")], - vcf, csi, sample, region]} - - - SHAPEIT5_PHASECOMMON ( phase_input, ref_panel, scaffold, map ) - - phased_variant = SHAPEIT5_PHASECOMMON.output.phased_variant - .map{ meta, vcf -> [meta.subMap(["id"]), vcf]} - - BCFTOOLS_INDEX2 ( phased_variant ) - - ligate_input = phased_variant.groupTuple() - .join(BCFTOOLS_INDEX2.out.csi.groupTuple()) - .map { meta, vcf, csi -> - [meta, - vcf.sort{ a, b -> - a.getName() <=> b.getName()}, - csi]} - - SHAPEIT5_LIGATE ( ligate_input ) -} diff --git a/tests/modules/nf-core/shapeit5/ligate/nextflow.config b/tests/modules/nf-core/shapeit5/ligate/nextflow.config deleted file mode 100644 index f96da6737f4..00000000000 --- a/tests/modules/nf-core/shapeit5/ligate/nextflow.config +++ /dev/null @@ -1,17 +0,0 @@ -process { - withName: BCFTOOLS_VIEW { - ext.args = [ - "-Oz", - "-e 'GT=\"./.\"||GT=\".\"'" - ].join(' ') - ext.prefix = { "${meta.id}" } - } - withName: SHAPEIT5_PHASECOMMON { - ext.args = [ - ].join(' ') - ext.suffix = "bcf" - ext.prefix = { "${meta.id}_${meta.region}" } - } - publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } - -} \ No newline at end of file diff --git a/tests/modules/nf-core/shapeit5/ligate/test.yml b/tests/modules/nf-core/shapeit5/ligate/test.yml deleted file mode 100644 index d60fb8e47f0..00000000000 --- a/tests/modules/nf-core/shapeit5/ligate/test.yml +++ /dev/null @@ -1,15 +0,0 @@ -- name: shapeit5 ligate test_shapeit5_ligate - command: nextflow run ./tests/modules/nf-core/shapeit5/ligate -entry test_shapeit5_ligate -c ./tests/config/nextflow.config -c ./tests/modules/nf-core/shapeit5/ligate/nextflow.config - tags: - - shapeit5 - - shapeit5/ligate - files: - - path: output/bcftools/NA12878_1X.vcf.gz - - path: output/bcftools/NA12878_1X.vcf.gz.csi - - path: output/bcftools/NA12878_1X_chr21_16600000-16750000.bcf.csi - - path: output/bcftools/NA12878_1X_chr21_16650000-16800000.bcf.csi - - path: output/bcftools/versions.yml - - path: output/shapeit5/NA12878_1X.vcf.gz - - path: output/shapeit5/NA12878_1X_chr21_16600000-16750000.bcf - - path: output/shapeit5/NA12878_1X_chr21_16650000-16800000.bcf - - path: output/shapeit5/versions.yml diff --git a/tests/modules/nf-core/shapeit5/phasecommon/main.nf b/tests/modules/nf-core/shapeit5/phasecommon/main.nf deleted file mode 100644 index 42a64dac8c3..00000000000 --- a/tests/modules/nf-core/shapeit5/phasecommon/main.nf +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/env nextflow - -nextflow.enable.dsl = 2 - -include { SHAPEIT5_PHASECOMMON } from '../../../../../modules/nf-core/shapeit5/phasecommon/main.nf' - -workflow test_shapeit5_phasecommon_without_map { - - input_vcf = Channel.of([ - [ id:'input', single_end:false ], // meta map - file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/glimpse/1000GP.chr21.noNA12878.s.bcf", checkIfExists: true), - file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/glimpse/1000GP.chr21.noNA12878.s.bcf.csi", checkIfExists: true), - [], - "chr21" - ]) - - ref_panel = Channel.of([[],[],[]]) - scaffold = Channel.of([[],[],[]]) - map = Channel.of([[],[]]) - - SHAPEIT5_PHASECOMMON ( input_vcf, ref_panel, scaffold, map ) -} - -workflow test_shapeit5_phasecommon_with_map { - - input_vcf = Channel.of([ - [ id:'input', single_end:false ], // meta map - file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/glimpse/1000GP.chr21.noNA12878.s.bcf", checkIfExists: true), - file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/glimpse/1000GP.chr21.noNA12878.s.bcf.csi", checkIfExists: true), - [], - "chr21", - ]) - - ref_panel = Channel.of([[],[],[]]) - scaffold = Channel.of([[],[],[]]) - map = Channel.of([[ id:'map', single_end:false ], - [file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/glimpse/chr21.b38.gmap.gz", checkIfExists: true)]]) - - SHAPEIT5_PHASECOMMON ( input_vcf, ref_panel, scaffold, map) -} diff --git a/tests/modules/nf-core/shapeit5/phasecommon/nextflow.config b/tests/modules/nf-core/shapeit5/phasecommon/nextflow.config deleted file mode 100644 index 50f50a7a357..00000000000 --- a/tests/modules/nf-core/shapeit5/phasecommon/nextflow.config +++ /dev/null @@ -1,5 +0,0 @@ -process { - - publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } - -} \ No newline at end of file diff --git a/tests/modules/nf-core/shapeit5/phasecommon/test.yml b/tests/modules/nf-core/shapeit5/phasecommon/test.yml deleted file mode 100644 index 29e2286051d..00000000000 --- a/tests/modules/nf-core/shapeit5/phasecommon/test.yml +++ /dev/null @@ -1,17 +0,0 @@ -- name: shapeit5 phasecommon test_shapeit5_phasecommon_without_map - command: nextflow run ./tests/modules/nf-core/shapeit5/phasecommon -entry test_shapeit5_phasecommon_without_map -c ./tests/config/nextflow.config -c ./tests/modules/nf-core/shapeit5/phasecommon/nextflow.config - tags: - - shapeit5 - - shapeit5/phasecommon - files: - - path: output/shapeit5/input.vcf.gz - - path: output/shapeit5/versions.yml - -- name: shapeit5 phasecommon test_shapeit5_phasecommon_with_map - command: nextflow run ./tests/modules/nf-core/shapeit5/phasecommon -entry test_shapeit5_phasecommon_with_map -c ./tests/config/nextflow.config -c ./tests/modules/nf-core/shapeit5/phasecommon/nextflow.config - tags: - - shapeit5 - - shapeit5/phasecommon - files: - - path: output/shapeit5/input.vcf.gz - - path: output/shapeit5/versions.yml diff --git a/tests/modules/nf-core/shapeit5/phaserare/main.nf b/tests/modules/nf-core/shapeit5/phaserare/main.nf deleted file mode 100644 index d307d2be07c..00000000000 --- a/tests/modules/nf-core/shapeit5/phaserare/main.nf +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/env nextflow - -nextflow.enable.dsl = 2 - -include { SHAPEIT5_PHASECOMMON } from '../../../../../modules/nf-core/shapeit5/phasecommon/main.nf' -include { SHAPEIT5_PHASERARE } from '../../../../../modules/nf-core/shapeit5/phaserare/main.nf' -include { BCFTOOLS_INDEX } from '../../../../../modules/nf-core/bcftools/index/main.nf' - -workflow test_shapeit5_phaserare { - - input_vcf = Channel.of([ - [ id:'panel', single_end:false ], // meta map - file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/glimpse/1000GP.chr21.noNA12878.s.bcf", checkIfExists: true), - file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/glimpse/1000GP.chr21.noNA12878.s.bcf.csi", checkIfExists: true), - [], - "chr21", - ]) - - ref_panel = Channel.of([[],[],[]]) - scaffold = Channel.of([[],[],[]]) - map = Channel.of([[],[]]) - - SHAPEIT5_PHASECOMMON ( input_vcf, ref_panel, scaffold, map ) - - BCFTOOLS_INDEX(SHAPEIT5_PHASECOMMON.out.phased_variant.collect()) - - scaffold = SHAPEIT5_PHASECOMMON.out.phased_variant - .join(BCFTOOLS_INDEX.out.csi) - .combine(Channel.of("chr21:16600000-16800000")) - - input_vcf = Channel.of([ - [ id:'input', single_end:false ], // meta map - file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/glimpse/1000GP.chr21.noNA12878.s.bcf", checkIfExists: true), - file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/glimpse/1000GP.chr21.noNA12878.s.bcf.csi", checkIfExists: true), - [], - "chr21:16600000-16800000", - ]) - SHAPEIT5_PHASERARE ( input_vcf, scaffold, map ) - -} diff --git a/tests/modules/nf-core/shapeit5/phaserare/nextflow.config b/tests/modules/nf-core/shapeit5/phaserare/nextflow.config deleted file mode 100644 index c03786f297b..00000000000 --- a/tests/modules/nf-core/shapeit5/phaserare/nextflow.config +++ /dev/null @@ -1,12 +0,0 @@ -process { - withName: SHAPEIT5_PHASECOMMON{ - ext.args = [ - "--filter-maf 0.001" - ].join(' ') - } - withName: SHAPEIT5_PHASERARE{ - ext.suffix="bcf" - } - publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } - -} \ No newline at end of file diff --git a/tests/modules/nf-core/shapeit5/phaserare/test.yml b/tests/modules/nf-core/shapeit5/phaserare/test.yml deleted file mode 100644 index 3f3642fe3f6..00000000000 --- a/tests/modules/nf-core/shapeit5/phaserare/test.yml +++ /dev/null @@ -1,11 +0,0 @@ -- name: shapeit5 phaserare test_shapeit5_phaserare - command: nextflow run ./tests/modules/nf-core/shapeit5/phaserare -entry test_shapeit5_phaserare -c ./tests/config/nextflow.config -c ./tests/modules/nf-core/shapeit5/phaserare/nextflow.config - tags: - - shapeit5 - - shapeit5/phaserare - files: - - path: output/bcftools/panel.vcf.gz.csi - - path: output/bcftools/versions.yml - - path: output/shapeit5/input.bcf - - path: output/shapeit5/panel.vcf.gz - - path: output/shapeit5/versions.yml diff --git a/tests/modules/nf-core/shapeit5/switch/main.nf b/tests/modules/nf-core/shapeit5/switch/main.nf deleted file mode 100644 index 525c789f2a1..00000000000 --- a/tests/modules/nf-core/shapeit5/switch/main.nf +++ /dev/null @@ -1,41 +0,0 @@ -#!/usr/bin/env nextflow - -nextflow.enable.dsl = 2 - -include { SHAPEIT5_PHASECOMMON } from '../../../../../modules/nf-core/shapeit5/phasecommon/main.nf' -include { SHAPEIT5_SWITCH } from '../../../../../modules/nf-core/shapeit5/switch/main.nf' -include { BCFTOOLS_INDEX } from '../../../../../modules/nf-core/bcftools/index/main.nf' - -workflow test_shapeit5_switch { - input_vcf = Channel.of([ - [ id:'input', single_end:false ], // meta map - file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/glimpse/1000GP.chr21.noNA12878.s.bcf", checkIfExists: true), - file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/glimpse/1000GP.chr21.noNA12878.s.bcf.csi", checkIfExists: true), - [], - "chr21" - ]) - - ref_panel = Channel.of([[],[],[]]) - scaffold = Channel.of([[],[],[]]) - map = Channel.of([[ id:'map'], - [file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/glimpse/chr21.b38.gmap.gz", checkIfExists: true)]]) - - SHAPEIT5_PHASECOMMON ( input_vcf, ref_panel, scaffold, map) - - allele_freq = Channel.of([[ id:'freq_file'], - file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/glimpse/1000GP.chr21.noNA12878.s.sites.vcf.gz",checkIfExists:true), - file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/glimpse/1000GP.chr21.noNA12878.s.sites.vcf.gz.csi",checkIfExists:true)]) - - truth = Channel.of([[ id:'truth_panel'], - file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/glimpse/1000GP.chr21.noNA12878.s.bcf",checkIfExists:true), - file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/glimpse/1000GP.chr21.noNA12878.s.bcf.csi",checkIfExists:true)]) - - BCFTOOLS_INDEX ( SHAPEIT5_PHASECOMMON.output.phased_variant ) - - concordance_input=SHAPEIT5_PHASECOMMON.output.phased_variant.groupTuple() - .join(BCFTOOLS_INDEX.out.csi.groupTuple()) - .combine(Channel.of("chr21")) - .combine(Channel.of([[]])) - - SHAPEIT5_SWITCH ( concordance_input, truth, allele_freq) // meta, Region, Frequencies, Truth, Estimate, minPROB, minDP, bins -} diff --git a/tests/modules/nf-core/shapeit5/switch/nextflow.config b/tests/modules/nf-core/shapeit5/switch/nextflow.config deleted file mode 100644 index 50f50a7a357..00000000000 --- a/tests/modules/nf-core/shapeit5/switch/nextflow.config +++ /dev/null @@ -1,5 +0,0 @@ -process { - - publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } - -} \ No newline at end of file diff --git a/tests/modules/nf-core/shapeit5/switch/test.yml b/tests/modules/nf-core/shapeit5/switch/test.yml deleted file mode 100644 index 25314edeb46..00000000000 --- a/tests/modules/nf-core/shapeit5/switch/test.yml +++ /dev/null @@ -1,22 +0,0 @@ -- name: shapeit5 switch test_shapeit5_switch - command: nextflow run ./tests/modules/nf-core/shapeit5/switch -entry test_shapeit5_switch -c ./tests/config/nextflow.config -c ./tests/modules/nf-core/shapeit5/switch/nextflow.config - tags: - - shapeit5/switch - - shapeit5 - files: - - path: output/bcftools/input.vcf.gz.csi - - path: output/bcftools/versions.yml - - path: output/shapeit5/input.block.switch.txt.gz - - path: output/shapeit5/input.calibration.switch.txt.gz - md5sum: e1aee9059a0824cedc8111f39d13107c - - path: output/shapeit5/input.flipsAndSwitches.txt.gz - - path: output/shapeit5/input.frequency.switch.txt.gz - - path: output/shapeit5/input.sample.switch.txt.gz - - path: output/shapeit5/input.sample.typing.txt.gz - md5sum: dfc1d46178e018991c71e13d5fa16dcd - - path: output/shapeit5/input.type.switch.txt.gz - - path: output/shapeit5/input.variant.switch.txt.gz - - path: output/shapeit5/input.variant.typing.txt.gz - md5sum: 2d224ffc41ae40263b7c2d3b35fe5eeb - - path: output/shapeit5/input.vcf.gz - - path: output/shapeit5/versions.yml