From 53aa47ca090fe6b7113d93431f36846cc29c8340 Mon Sep 17 00:00:00 2001 From: Eric Wei Date: Wed, 26 Mar 2025 19:08:42 +0000 Subject: [PATCH 01/59] Install diamond/blastp --- modules.json | 5 + .../nf-core/diamond/blastp/environment.yml | 7 + modules/nf-core/diamond/blastp/main.nf | 109 +++++++ modules/nf-core/diamond/blastp/meta.yml | 154 ++++++++++ .../nf-core/diamond/blastp/tests/main.nf.test | 141 +++++++++ .../diamond/blastp/tests/main.nf.test.snap | 290 ++++++++++++++++++ .../diamond/blastp/tests/nextflow.config | 7 + 7 files changed, 713 insertions(+) create mode 100644 modules/nf-core/diamond/blastp/environment.yml create mode 100644 modules/nf-core/diamond/blastp/main.nf create mode 100644 modules/nf-core/diamond/blastp/meta.yml create mode 100644 modules/nf-core/diamond/blastp/tests/main.nf.test create mode 100644 modules/nf-core/diamond/blastp/tests/main.nf.test.snap create mode 100644 modules/nf-core/diamond/blastp/tests/nextflow.config diff --git a/modules.json b/modules.json index 1bfd609..3b1f9f4 100644 --- a/modules.json +++ b/modules.json @@ -5,6 +5,11 @@ "https://github.com/nf-core/modules.git": { "modules": { "nf-core": { + "diamond/blastp": { + "branch": "master", + "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "installed_by": ["modules"] + }, "multiqc": { "branch": "master", "git_sha": "f0719ae309075ae4a291533883847c3f7c441dad", diff --git a/modules/nf-core/diamond/blastp/environment.yml b/modules/nf-core/diamond/blastp/environment.yml new file mode 100644 index 0000000..6a9b16a --- /dev/null +++ b/modules/nf-core/diamond/blastp/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::diamond=2.1.11 diff --git a/modules/nf-core/diamond/blastp/main.nf b/modules/nf-core/diamond/blastp/main.nf new file mode 100644 index 0000000..6dd8d39 --- /dev/null +++ b/modules/nf-core/diamond/blastp/main.nf @@ -0,0 +1,109 @@ +process DIAMOND_BLASTP { + 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/diamond:2.1.11--h5ca1c30_0' : + 'biocontainers/diamond:2.1.11--h5ca1c30_0' }" + + input: + tuple val(meta) , path(fasta) + tuple val(meta2), path(db) + val outfmt + val blast_columns + + output: + tuple val(meta), path('*.{blast,blast.gz}'), optional: true, emit: blast + tuple val(meta), path('*.{xml,xml.gz}') , optional: true, emit: xml + tuple val(meta), path('*.{txt,txt.gz}') , optional: true, emit: txt + tuple val(meta), path('*.{daa,daa.gz}') , optional: true, emit: daa + tuple val(meta), path('*.{sam,sam.gz}') , optional: true, emit: sam + tuple val(meta), path('*.{tsv,tsv.gz}') , optional: true, emit: tsv + tuple val(meta), path('*.{paf,paf.gz}') , optional: true, emit: paf + 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}" + + def columns = blast_columns ? "${blast_columns}" : '' + def out_ext = "" + + if (outfmt == 0) { + out_ext = "blast" + } else if (outfmt == 5) { + out_ext = "xml" + } else if (outfmt == 6) { + out_ext = "txt" + } else if (outfmt == 100) { + out_ext = "daa" + } else if (outfmt == 101) { + out_ext = "sam" + } else if (outfmt == 102) { + out_ext = "tsv" + } else if (outfmt == 103) { + out_ext = "paf" + } else { + log.warn("Unknown output file format provided (${outfmt}): selecting DIAMOND default of tabular BLAST output (txt)") + outfmt = 6 + out_ext = 'txt' + } + + if ( args =~ /--compress\s+1/ ) out_ext += '.gz' + + """ + diamond \\ + blastp \\ + --threads ${task.cpus} \\ + --db ${db} \\ + --query ${fasta} \\ + --outfmt ${outfmt} ${columns} \\ + ${args} \\ + --out ${prefix}.${out_ext} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + diamond: \$(diamond --version 2>&1 | tail -n 1 | sed 's/^diamond version //') + END_VERSIONS + """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + + def out_ext = "" + + if (outfmt == 0) { + out_ext = "blast" + } else if (outfmt == 5) { + out_ext = "xml" + } else if (outfmt == 6) { + out_ext = "txt" + } else if (outfmt == 100) { + out_ext = "daa" + } else if (outfmt == 101) { + out_ext = "sam" + } else if (outfmt == 102) { + out_ext = "tsv" + } else if (outfmt == 103) { + out_ext = "paf" + } else { + log.warn("Unknown output file format provided (${outfmt}): selecting DIAMOND default of tabular BLAST output (txt)") + outfmt = 6 + out_ext = 'txt' + } + + if ( args =~ /--compress\s+1/ ) out_ext += '.gz' + + """ + touch ${prefix}.${out_ext} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + diamond: \$(diamond --version 2>&1 | tail -n 1 | sed 's/^diamond version //') + END_VERSIONS + """ +} diff --git a/modules/nf-core/diamond/blastp/meta.yml b/modules/nf-core/diamond/blastp/meta.yml new file mode 100644 index 0000000..239e252 --- /dev/null +++ b/modules/nf-core/diamond/blastp/meta.yml @@ -0,0 +1,154 @@ +name: diamond_blastp +description: Queries a DIAMOND database using blastp mode +keywords: + - fasta + - diamond + - blastp + - DNA sequence +tools: + - diamond: + description: Accelerated BLAST compatible local sequence aligner + homepage: https://github.com/bbuchfink/diamond + documentation: https://github.com/bbuchfink/diamond/wiki + tool_dev_url: https://github.com/bbuchfink/diamond + doi: "10.1038/s41592-021-01101-x" + licence: ["GPL v3.0"] + identifier: biotools:diamond +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - fasta: + type: file + description: Input fasta file containing query sequences + pattern: "*.{fa,fasta,fa.gz,fasta.gz}" + ontologies: + - edam: http://edamontology.org/format_1929 # FASTA + - - meta2: + type: map + description: | + Groovy Map containing db information + e.g. [ id:'test2', single_end:false ] + - db: + type: file + description: File of the indexed DIAMOND database + pattern: "*.dmnd" + ontologies: [] + - - outfmt: + type: integer + description: | + Specify the type of output file to be generated. + 0, .blast, BLAST pairwise format. + 5, .xml, BLAST XML format. + 6, .txt, BLAST tabular format (default). This format can be customized, the 6 may be followed by a space-separated list of the blast_columns keywords, each specifying a field of the output. + 100, .daa, DIAMOND alignment archive (DAA). The DAA format is a proprietary binary format that can subsequently be used to generate other output formats using the view command. It is also supported by MEGAN and allows a quick import of results. + 101, .sam, SAM format. + 102, .tsv, Taxonomic classification. This format will not print alignments but only a taxonomic classification for each query using the LCA algorithm. + 103, .paf, PAF format. The custom fields in the format are AS (bit score), ZR (raw score) and ZE (e-value). + pattern: "0|5|6|100|101|102|103" + - - blast_columns: + type: string + description: | + Optional space separated list of DIAMOND tabular BLAST output keywords + used in conjunction with the --outfmt 6 option (txt). + Options: + qseqid sseqid pident length mismatch gapopen qstart qend sstart send evalue bitscore +output: + - blast: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.{blast,blast.gz}": + type: file + description: File containing blastp hits + pattern: "*.{blast,blast.gz}" + ontologies: + - edam: http://edamontology.org/format_3836 # BLAST XML v2 results format + - xml: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.{xml,xml.gz}": + type: file + description: File containing blastp hits + pattern: "*.{xml,xml.gz}" + ontologies: + - edam: http://edamontology.org/format_2332 # XML + - txt: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.{txt,txt.gz}": + type: file + description: File containing hits in tabular BLAST format. + pattern: "*.{txt,txt.gz}" + ontologies: + - edam: http://edamontology.org/format_1333 # BLAST results + - daa: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.{daa,daa.gz}": + type: file + description: File containing hits DAA format + pattern: "*.{daa,daa.gz}" + ontologies: [] + - sam: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.{sam,sam.gz}": + type: file + description: File containing aligned reads in SAM format + pattern: "*.{sam,sam.gz}" + ontologies: + - edam: http://edamontology.org/format_2573 # SAM + - tsv: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.{tsv,tsv.gz}": + type: file + description: Tab separated file containing taxonomic classification of hits + pattern: "*.{tsv,tsv.gz}" + ontologies: + - edam: http://edamontology.org/format_3475 # TSV + - paf: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.{paf,paf.gz}": + type: file + description: File containing aligned reads in pairwise mapping format format + pattern: "*.{paf,paf.gz}" + ontologies: [] + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML +authors: + - "@spficklin" + - "@jfy133" +maintainers: + - "@spficklin" + - "@jfy133" + - "@vagkaratzas" diff --git a/modules/nf-core/diamond/blastp/tests/main.nf.test b/modules/nf-core/diamond/blastp/tests/main.nf.test new file mode 100644 index 0000000..9211915 --- /dev/null +++ b/modules/nf-core/diamond/blastp/tests/main.nf.test @@ -0,0 +1,141 @@ +nextflow_process { + + name "Test Process DIAMOND_BLASTP" + script "../main.nf" + process "DIAMOND_BLASTP" + tag "modules" + tag "modules_nfcore" + tag "diamond" + tag "diamond/makedb" + tag "diamond/blastp" + + setup { + run("DIAMOND_MAKEDB") { + script "../../makedb/main.nf" + process { + """ + input[0] = [ [id:'test2'], [ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] ] + input[1] = [] + input[2] = [] + input[3] = [] + """ + } + } + } + + test("sarscov2 - proteome - txt") { + + when { + process { + """ + input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] + input[1] = DIAMOND_MAKEDB.out.db + input[2] = 6 + input[3] = 'qseqid qlen' + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - proteome - gz - txt") { + + when { + process { + """ + input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta.gz', checkIfExists: true) ] + input[1] = DIAMOND_MAKEDB.out.db + input[2] = 6 + input[3] = 'qseqid qlen' + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match("gz_txt")} + ) + } + + } + + test("sarscov2 - proteome - daa") { + + when { + process { + """ + input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] + input[1] = DIAMOND_MAKEDB.out.db + input[2] = 100 + input[3] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.daa }, + { assert snapshot(process.out.versions).match("daa") } + ) + } + + } + + test("sarscov2 - proteome - txt - gz") { + + config "./nextflow.config" + + when { + process { + """ + input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] + input[1] = DIAMOND_MAKEDB.out.db + input[2] = 6 + input[3] = 'qseqid qlen' + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match("txt_gz") } + ) + } + + } + + test("sarscov2 - proteome - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] + input[1] = DIAMOND_MAKEDB.out.db + input[2] = 6 + input[3] = 'qseqid qlen' + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match("stub") } + ) + } + + } + +} diff --git a/modules/nf-core/diamond/blastp/tests/main.nf.test.snap b/modules/nf-core/diamond/blastp/tests/main.nf.test.snap new file mode 100644 index 0000000..44d5043 --- /dev/null +++ b/modules/nf-core/diamond/blastp/tests/main.nf.test.snap @@ -0,0 +1,290 @@ +{ + "sarscov2 - proteome - txt": { + "content": [ + { + "0": [ + + ], + "1": [ + + ], + "2": [ + [ + { + "id": "test" + }, + "test.txt:md5,8131b1afd717f3d5f2f2417c5b562e6e" + ] + ], + "3": [ + + ], + "4": [ + + ], + "5": [ + + ], + "6": [ + + ], + "7": [ + "versions.yml:md5,5f638327037bee3c00e17521c04a652f" + ], + "blast": [ + + ], + "daa": [ + + ], + "paf": [ + + ], + "sam": [ + + ], + "tsv": [ + + ], + "txt": [ + [ + { + "id": "test" + }, + "test.txt:md5,8131b1afd717f3d5f2f2417c5b562e6e" + ] + ], + "versions": [ + "versions.yml:md5,5f638327037bee3c00e17521c04a652f" + ], + "xml": [ + + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.2" + }, + "timestamp": "2025-01-28T10:25:13.48912978" + }, + "txt_gz": { + "content": [ + { + "0": [ + + ], + "1": [ + + ], + "2": [ + [ + { + "id": "test" + }, + "test.txt.gz:md5,8131b1afd717f3d5f2f2417c5b562e6e" + ] + ], + "3": [ + + ], + "4": [ + + ], + "5": [ + + ], + "6": [ + + ], + "7": [ + "versions.yml:md5,5f638327037bee3c00e17521c04a652f" + ], + "blast": [ + + ], + "daa": [ + + ], + "paf": [ + + ], + "sam": [ + + ], + "tsv": [ + + ], + "txt": [ + [ + { + "id": "test" + }, + "test.txt.gz:md5,8131b1afd717f3d5f2f2417c5b562e6e" + ] + ], + "versions": [ + "versions.yml:md5,5f638327037bee3c00e17521c04a652f" + ], + "xml": [ + + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.2" + }, + "timestamp": "2025-01-28T10:36:04.361504205" + }, + "gz_txt": { + "content": [ + { + "0": [ + + ], + "1": [ + + ], + "2": [ + [ + { + "id": "test" + }, + "test.txt:md5,8131b1afd717f3d5f2f2417c5b562e6e" + ] + ], + "3": [ + + ], + "4": [ + + ], + "5": [ + + ], + "6": [ + + ], + "7": [ + "versions.yml:md5,5f638327037bee3c00e17521c04a652f" + ], + "blast": [ + + ], + "daa": [ + + ], + "paf": [ + + ], + "sam": [ + + ], + "tsv": [ + + ], + "txt": [ + [ + { + "id": "test" + }, + "test.txt:md5,8131b1afd717f3d5f2f2417c5b562e6e" + ] + ], + "versions": [ + "versions.yml:md5,5f638327037bee3c00e17521c04a652f" + ], + "xml": [ + + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.2" + }, + "timestamp": "2025-01-28T10:25:20.993203497" + }, + "daa": { + "content": [ + [ + "versions.yml:md5,5f638327037bee3c00e17521c04a652f" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.2" + }, + "timestamp": "2025-01-28T10:25:28.126992812" + }, + "stub": { + "content": [ + { + "0": [ + + ], + "1": [ + + ], + "2": [ + [ + { + "id": "test" + }, + "test.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + + ], + "4": [ + + ], + "5": [ + + ], + "6": [ + + ], + "7": [ + "versions.yml:md5,5f638327037bee3c00e17521c04a652f" + ], + "blast": [ + + ], + "daa": [ + + ], + "paf": [ + + ], + "sam": [ + + ], + "tsv": [ + + ], + "txt": [ + [ + { + "id": "test" + }, + "test.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,5f638327037bee3c00e17521c04a652f" + ], + "xml": [ + + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.2" + }, + "timestamp": "2025-01-28T10:25:34.911633513" + } +} \ No newline at end of file diff --git a/modules/nf-core/diamond/blastp/tests/nextflow.config b/modules/nf-core/diamond/blastp/tests/nextflow.config new file mode 100644 index 0000000..bd28cb1 --- /dev/null +++ b/modules/nf-core/diamond/blastp/tests/nextflow.config @@ -0,0 +1,7 @@ +process { + + withName: DIAMOND_BLASTP { + ext.args = '--compress 1' + } + +} From 55b7632701fd53ce428bf0be6cbfa9270f4b6e2d Mon Sep 17 00:00:00 2001 From: Eric Wei Date: Wed, 26 Mar 2025 23:31:11 +0000 Subject: [PATCH 02/59] Unfinished diamond/blastp integraton --- nextflow.config | 5 +++++ subworkflows/local/functional_annotation/main.nf | 13 +++++++++++++ subworkflows/local/functional_annotation/meta.yml | 13 +++++++++++++ 3 files changed, 31 insertions(+) diff --git a/nextflow.config b/nextflow.config index 1dcfdb8..80172df 100644 --- a/nextflow.config +++ b/nextflow.config @@ -18,6 +18,11 @@ params { igenomes_base = 's3://ngi-igenomes/igenomes/' igenomes_ignore = false + // DIAMOND options + diamond_db = null + diamond_outfmt = 102 + diamond_blast_columns = '' + // MultiQC options multiqc_config = null multiqc_title = null diff --git a/subworkflows/local/functional_annotation/main.nf b/subworkflows/local/functional_annotation/main.nf index af1134b..36bf2d3 100644 --- a/subworkflows/local/functional_annotation/main.nf +++ b/subworkflows/local/functional_annotation/main.nf @@ -1,3 +1,5 @@ +include { DIAMOND_BLASTP } from '../../../modules/nf-core/diamond/blastp/main' + workflow FUNCTIONAL_ANNOTATION { take: @@ -9,8 +11,19 @@ workflow FUNCTIONAL_ANNOTATION { // TODO nf-core: substitute modules here for the modules of your subworkflow + ch_diamond_db = Channel.of( [ [id:"diamond_db"], file(params.diamond_db, checkIfExists: true) ] ) + + DIAMOND_BLASTP ( + ch_fasta, + ch_diamond_db, + params.diamond_outfmt, + params.diamond_blast_columns, + ) + ch_versions = ch_versions.mix(DIAMOND_BLASTP.out.versions.first()) + emit: // TODO nf-core: edit emitted channels + ch_diamond_tsv = DIAMOND_BLASTP.out.tsv // channel: [ val(meta)] versions = ch_versions // channel: [ versions.yml ] } diff --git a/subworkflows/local/functional_annotation/meta.yml b/subworkflows/local/functional_annotation/meta.yml index cf6ee7a..9fce546 100644 --- a/subworkflows/local/functional_annotation/meta.yml +++ b/subworkflows/local/functional_annotation/meta.yml @@ -4,6 +4,7 @@ description: Functional annotation of proteins keywords: - fasta components: + - diamond/blastp input: - ch_fasta: type: file @@ -12,6 +13,18 @@ input: Structure: [ val(meta), path(fasta) ] pattern: "*.{fa,fasta,fa.gz,fasta.gz}" output: + - tsv: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.{tsv,tsv.gz}": + type: file + description: Tab separated file containing taxonomic classification of hits + pattern: "*.{tsv,tsv.gz}" + ontologies: + - edam: http://edamontology.org/format_3475 # TSV - versions: type: file description: | From 3c5b661d4ba01a4a5b294e86a43eccfeba2dff24 Mon Sep 17 00:00:00 2001 From: Eric Wei Date: Wed, 26 Mar 2025 23:45:37 +0000 Subject: [PATCH 03/59] Add diamond --- CITATIONS.md | 4 ++++ README.md | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CITATIONS.md b/CITATIONS.md index 843f5d3..31893a3 100644 --- a/CITATIONS.md +++ b/CITATIONS.md @@ -14,6 +14,10 @@ > Andrews, S. (2010). FastQC: A Quality Control Tool for High Throughput Sequence Data [Online]. +- [DIAMOND](https://github.com/bbuchfink/diamond) + +> Buchfink B, Xie C, Huson DH, "Fast and sensitive protein alignment using DIAMOND", Nature Methods 12, 59-60 (2015). doi:10.1038/nmeth.3176 + - [MultiQC](https://pubmed.ncbi.nlm.nih.gov/27312411/) > Ewels P, Magnusson M, Lundin S, Käller M. MultiQC: summarize analysis results for multiple tools and samples in a single report. Bioinformatics. 2016 Oct 1;32(19):3047-8. doi: 10.1093/bioinformatics/btw354. Epub 2016 Jun 16. PubMed PMID: 27312411; PubMed Central PMCID: PMC5039924. diff --git a/README.md b/README.md index 7405207..490f461 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,10 @@ -1. Present QC for raw reads ([`MultiQC`](http://multiqc.info/)) + + +1. Present QC for raw reads ([`MultiQC`](http://multiqc.info/)) +2. Functional Annotation ([`DIAMOND`](https://github.com/bbuchfink/diamond)) ## Usage From b1fdc74f0feb0333ad85750fc237d9c13ea36134 Mon Sep 17 00:00:00 2001 From: tracelail Date: Wed, 21 May 2025 14:09:00 -0400 Subject: [PATCH 04/59] reinstalled diamond/blastp module. Installed blast/makeblastdb --- .nf-test.log | 50 +++++++++++ .vscode/settings.json | 5 +- modules.json | 5 ++ .../nf-core/blast/makeblastdb/environment.yml | 7 ++ modules/nf-core/blast/makeblastdb/main.nf | 64 +++++++++++++ modules/nf-core/blast/makeblastdb/meta.yml | 49 ++++++++++ .../blast/makeblastdb/tests/main.nf.test | 90 +++++++++++++++++++ .../blast/makeblastdb/tests/main.nf.test.snap | 58 ++++++++++++ .../blast/makeblastdb/tests/nextflow.config | 5 ++ modules/nf-core/diamond/blastp/meta.yml | 8 +- .../local/functional_annotation/main.nf | 8 ++ 11 files changed, 344 insertions(+), 5 deletions(-) create mode 100644 .nf-test.log create mode 100644 modules/nf-core/blast/makeblastdb/environment.yml create mode 100644 modules/nf-core/blast/makeblastdb/main.nf create mode 100644 modules/nf-core/blast/makeblastdb/meta.yml create mode 100644 modules/nf-core/blast/makeblastdb/tests/main.nf.test create mode 100644 modules/nf-core/blast/makeblastdb/tests/main.nf.test.snap create mode 100644 modules/nf-core/blast/makeblastdb/tests/nextflow.config diff --git a/.nf-test.log b/.nf-test.log new file mode 100644 index 0000000..360f5ad --- /dev/null +++ b/.nf-test.log @@ -0,0 +1,50 @@ +May-14 22:22:03.375 [main] INFO com.askimed.nf.test.App - nf-test 0.9.2 +May-14 22:22:03.394 [main] INFO com.askimed.nf.test.App - Arguments: [test, subworkflows/local/download_refseq/tests/main.nf.test] +May-14 22:22:04.217 [main] INFO com.askimed.nf.test.App - Nextflow Version: 24.10.6 +May-14 22:22:04.221 [main] WARN com.askimed.nf.test.commands.RunTestsCommand - No nf-test config file found. +May-14 22:22:04.255 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Loaded 24 files from directory /home/trace/projects/proteinannotator in 0.032 sec +May-14 22:22:04.258 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Found 1 files containing tests. +May-14 22:22:04.259 [main] DEBUG com.askimed.nf.test.lang.dependencies.DependencyResolver - Found files: [/home/trace/projects/proteinannotator/subworkflows/local/download_refseq/tests/main.nf.test] +May-14 22:22:04.748 [main] ERROR com.askimed.nf.test.commands.RunTestsCommand - Running tests failed. +groovy.lang.MissingMethodException: No signature of method: main_nf$_run_closure1.process() is applicable for argument types: (String) values: [download_refseq] + at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:380) + at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1030) + at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:73) + at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:51) + at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:171) + at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:185) + at main_nf$_run_closure1.doCall(main.nf.test:5) + at main_nf$_run_closure1.doCall(main.nf.test) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:569) + at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107) + at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) + at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:274) + at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1030) + at groovy.lang.Closure.call(Closure.java:427) + at groovy.lang.Closure.call(Closure.java:406) + at com.askimed.nf.test.lang.TestSuiteBuilder.executeClosure(TestSuiteBuilder.java:74) + at com.askimed.nf.test.lang.TestSuiteBuilder.nextflow_workflow(TestSuiteBuilder.java:41) + at com.askimed.nf.test.lang.TestSuiteBuilder$nextflow_workflow.callStatic(Unknown Source) + at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:55) + at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:217) + at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:231) + at main_nf.run(main.nf.test:1) + at groovy.lang.GroovyShell.evaluate(GroovyShell.java:427) + at groovy.lang.GroovyShell.evaluate(GroovyShell.java:470) + at com.askimed.nf.test.lang.TestSuiteBuilder.parse(TestSuiteBuilder.java:105) + at com.askimed.nf.test.core.TestSuiteResolver.parse(TestSuiteResolver.java:35) + at com.askimed.nf.test.commands.RunTestsCommand.execute(RunTestsCommand.java:257) + at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:43) + at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:18) + at picocli.CommandLine.executeUserObject(CommandLine.java:1953) + at picocli.CommandLine.access$1300(CommandLine.java:145) + at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2346) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2311) + at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179) + at picocli.CommandLine.execute(CommandLine.java:2078) + at com.askimed.nf.test.App.run(App.java:39) + at com.askimed.nf.test.App.main(App.java:46) diff --git a/.vscode/settings.json b/.vscode/settings.json index a33b527..6810c4e 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,6 @@ { - "markdown.styles": ["public/vscode_markdown.css"] + "markdown.styles": [ + "public/vscode_markdown.css" + ], + "nextflow.telemetry.enabled": true } diff --git a/modules.json b/modules.json index 3b1f9f4..c88d38e 100644 --- a/modules.json +++ b/modules.json @@ -5,6 +5,11 @@ "https://github.com/nf-core/modules.git": { "modules": { "nf-core": { + "blast/makeblastdb": { + "branch": "master", + "git_sha": "c7a7f06819adcf6f922e11b47f308b7c74484d67", + "installed_by": ["modules"] + }, "diamond/blastp": { "branch": "master", "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", diff --git a/modules/nf-core/blast/makeblastdb/environment.yml b/modules/nf-core/blast/makeblastdb/environment.yml new file mode 100644 index 0000000..8fb1f8a --- /dev/null +++ b/modules/nf-core/blast/makeblastdb/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::blast=2.16.0 diff --git a/modules/nf-core/blast/makeblastdb/main.nf b/modules/nf-core/blast/makeblastdb/main.nf new file mode 100644 index 0000000..796c7be --- /dev/null +++ b/modules/nf-core/blast/makeblastdb/main.nf @@ -0,0 +1,64 @@ +process BLAST_MAKEBLASTDB { + tag "$meta.id" + label 'process_medium' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/blast:2.16.0--h66d330f_5': + 'biocontainers/blast:2.16.0--h66d330f_5' }" + + input: + tuple val(meta), path(fasta) + + output: + tuple val(meta), path("${prefix}"), emit: db + 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}" + def is_compressed = fasta.getExtension() == "gz" ? true : false + def fasta_name = is_compressed ? fasta.getBaseName() : fasta + """ + if [ "${is_compressed}" == "true" ]; then + gzip -c -d ${fasta} > ${fasta_name} + fi + + makeblastdb \\ + -in ${fasta_name} \\ + -out ${prefix}/${fasta_name} \\ + ${args} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + blast: \$(makeblastdb -version 2>&1 | sed 's/^.*makeblastdb: //; s/ .*\$//') + END_VERSIONS + """ + + stub: + def args = task.ext.args ?: '' + prefix = task.ext.prefix ?: "${meta.id}" + def is_compressed = fasta.getExtension() == "gz" ? true : false + def fasta_name = is_compressed ? fasta.getBaseName() : fasta + """ + touch ${fasta_name}.fasta + touch ${fasta_name}.fasta.ndb + touch ${fasta_name}.fasta.nhr + touch ${fasta_name}.fasta.nin + touch ${fasta_name}.fasta.njs + touch ${fasta_name}.fasta.not + touch ${fasta_name}.fasta.nsq + touch ${fasta_name}.fasta.ntf + touch ${fasta_name}.fasta.nto + mkdir ${prefix} + mv ${fasta_name}* ${prefix} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + blast: \$(makeblastdb -version 2>&1 | sed 's/^.*makeblastdb: //; s/ .*\$//') + END_VERSIONS + """ +} diff --git a/modules/nf-core/blast/makeblastdb/meta.yml b/modules/nf-core/blast/makeblastdb/meta.yml new file mode 100644 index 0000000..3b50654 --- /dev/null +++ b/modules/nf-core/blast/makeblastdb/meta.yml @@ -0,0 +1,49 @@ +name: blast_makeblastdb +description: Builds a BLAST database +keywords: + - fasta + - blast + - database +tools: + - blast: + description: | + BLAST finds regions of similarity between biological sequences. + homepage: https://blast.ncbi.nlm.nih.gov/Blast.cgi + documentation: https://blast.ncbi.nlm.nih.gov/Blast.cgi?CMD=Web&PAGE_TYPE=Blastdocs + doi: 10.1016/S0022-2836(05)80360-2 + licence: ["US-Government-Work"] + identifier: "" +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - fasta: + type: file + description: Input fasta file + pattern: "*.{fa,fasta,fa.gz,fasta.gz}" +output: + - db: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${prefix}: + type: directory + description: Output directory containing blast database files + pattern: "*" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@joseespinosa" + - "@drpatelh" +maintainers: + - "@joseespinosa" + - "@drpatelh" + - "@vagkaratzas" + - "@DLBPointon" diff --git a/modules/nf-core/blast/makeblastdb/tests/main.nf.test b/modules/nf-core/blast/makeblastdb/tests/main.nf.test new file mode 100644 index 0000000..b822689 --- /dev/null +++ b/modules/nf-core/blast/makeblastdb/tests/main.nf.test @@ -0,0 +1,90 @@ +nextflow_process { + + name "Test Process BLAST_MAKEBLASTDB" + script "../main.nf" + process "BLAST_MAKEBLASTDB" + config "./nextflow.config" + tag "modules" + tag "modules_nfcore" + tag "blast" + tag "blast/makeblastdb" + + test("Should build a blast db folder from a fasta file") { + + when { + process { + """ + input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { + assert process.out.db.size() == 1 + + def all_files = ( new File(process.out.db[0][1]) ).listFiles() + def stable_file_names = [ + 'genome.fasta.ndb', + 'genome.fasta.nhr', + 'genome.fasta.not', + 'genome.fasta.nsq', + 'genome.fasta.ntf', + 'genome.fasta.nto' + ] + + def stable_files = all_files.findAll { it.name in stable_file_names }.toSorted() + + assert snapshot( + all_files.collect { it.name }.toSorted(), + stable_files, + process.out.versions[0] + ).match() + } + ) + } + + } + + test("Should build a blast db folder from a zipped fasta file") { + + when { + process { + """ + input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.gz', checkIfExists: true) ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { + assert process.out.db.size() == 1 + + def all_files = ( new File(process.out.db[0][1]) ).listFiles() + def stable_file_names = [ + 'genome.fasta.ndb', + 'genome.fasta.nhr', + 'genome.fasta.not', + 'genome.fasta.nsq', + 'genome.fasta.ntf', + 'genome.fasta.nto' + ] + + def stable_files = all_files.findAll { it.name in stable_file_names }.toSorted() + + assert snapshot( + all_files.collect { it.name }.toSorted(), + stable_files, + process.out.versions[0] + ).match() + } + ) + } + + } + +} diff --git a/modules/nf-core/blast/makeblastdb/tests/main.nf.test.snap b/modules/nf-core/blast/makeblastdb/tests/main.nf.test.snap new file mode 100644 index 0000000..8154acb --- /dev/null +++ b/modules/nf-core/blast/makeblastdb/tests/main.nf.test.snap @@ -0,0 +1,58 @@ +{ + "Should build a blast db folder from a fasta file": { + "content": [ + [ + "genome.fasta.ndb", + "genome.fasta.nhr", + "genome.fasta.nin", + "genome.fasta.njs", + "genome.fasta.not", + "genome.fasta.nsq", + "genome.fasta.ntf", + "genome.fasta.nto" + ], + [ + "genome.fasta.ndb:md5,0d553c830656469211de113c5022f06d", + "genome.fasta.nhr:md5,f4b4ddb034fd3dd7b25c89e9d50c004e", + "genome.fasta.not:md5,1e53e9d08f1d23af0299cfa87478a7bb", + "genome.fasta.nsq:md5,982cbc7d9e38743b9b1037588862b9da", + "genome.fasta.ntf:md5,de1250813f0c7affc6d12dac9d0fb6bb", + "genome.fasta.nto:md5,33cdeccccebe80329f1fdbee7f5874cb" + ], + "versions.yml:md5,91a8afa89354bef8a3c127cafaf1f46d" + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-12T09:03:14.830721389" + }, + "Should build a blast db folder from a zipped fasta file": { + "content": [ + [ + "genome.fasta.ndb", + "genome.fasta.nhr", + "genome.fasta.nin", + "genome.fasta.njs", + "genome.fasta.not", + "genome.fasta.nsq", + "genome.fasta.ntf", + "genome.fasta.nto" + ], + [ + "genome.fasta.ndb:md5,0d553c830656469211de113c5022f06d", + "genome.fasta.nhr:md5,f4b4ddb034fd3dd7b25c89e9d50c004e", + "genome.fasta.not:md5,1e53e9d08f1d23af0299cfa87478a7bb", + "genome.fasta.nsq:md5,982cbc7d9e38743b9b1037588862b9da", + "genome.fasta.ntf:md5,de1250813f0c7affc6d12dac9d0fb6bb", + "genome.fasta.nto:md5,33cdeccccebe80329f1fdbee7f5874cb" + ], + "versions.yml:md5,91a8afa89354bef8a3c127cafaf1f46d" + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-12T09:03:23.653118873" + } +} \ No newline at end of file diff --git a/modules/nf-core/blast/makeblastdb/tests/nextflow.config b/modules/nf-core/blast/makeblastdb/tests/nextflow.config new file mode 100644 index 0000000..0899289 --- /dev/null +++ b/modules/nf-core/blast/makeblastdb/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: BLAST_MAKEBLASTDB { + ext.args = '-dbtype nucl' + } +} diff --git a/modules/nf-core/diamond/blastp/meta.yml b/modules/nf-core/diamond/blastp/meta.yml index 239e252..69c0da4 100644 --- a/modules/nf-core/diamond/blastp/meta.yml +++ b/modules/nf-core/diamond/blastp/meta.yml @@ -90,8 +90,8 @@ output: type: file description: File containing hits in tabular BLAST format. pattern: "*.{txt,txt.gz}" - ontologies: - - edam: http://edamontology.org/format_1333 # BLAST results + ontologies: + - edam: http://edamontology.org/format_1333 # BLAST results - daa: - meta: type: map @@ -143,8 +143,8 @@ output: type: file description: File containing software versions pattern: "versions.yml" - ontologies: - - edam: http://edamontology.org/format_3750 # YAML + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@spficklin" - "@jfy133" diff --git a/subworkflows/local/functional_annotation/main.nf b/subworkflows/local/functional_annotation/main.nf index 36bf2d3..1d02587 100644 --- a/subworkflows/local/functional_annotation/main.nf +++ b/subworkflows/local/functional_annotation/main.nf @@ -1,4 +1,5 @@ include { DIAMOND_BLASTP } from '../../../modules/nf-core/diamond/blastp/main' +include { BLAST_MAKEBLASTDB } from '../../../modules/nf-core/blast/makeblastdb/main' workflow FUNCTIONAL_ANNOTATION { @@ -10,6 +11,13 @@ workflow FUNCTIONAL_ANNOTATION { ch_versions = Channel.empty() // TODO nf-core: substitute modules here for the modules of your subworkflow + BLAST_MAKEBLASTDB ( + ch_fasta, + ) + + ch_diamond_db = BLAST_MAKEBLASTDB.out.db + ch_versions = ch_versions.mix(BLAST_MAKEBLASTDB.out.versions.first()) + ch_diamond_db = Channel.of( [ [id:"diamond_db"], file(params.diamond_db, checkIfExists: true) ] ) From 9f1ea674d169622eb498b1e877281db9d2e59721 Mon Sep 17 00:00:00 2001 From: tracelail Date: Mon, 2 Jun 2025 13:28:13 -0400 Subject: [PATCH 05/59] wrote draft integration of BLAST_MAKEBLASTDB and NCBIREFSEQDOWNLOAD into functional_annotation subworkflow. --- .nf-test.log | 101 +++++++--- .../meta/mock.nf | 99 ++++++++++ .../meta/nextflow.log | 169 ++++++++++++++++ .../meta/params.json | 1 + .../meta/std.err | 1 + .../meta/std.out | 3 + .../meta/trace.csv | 1 + .../meta/mock.nf | 83 ++++++++ .../meta/nextflow.log | 186 ++++++++++++++++++ .../meta/params.json | 1 + .../meta/std.err | 1 + .../meta/std.out | 3 + .../meta/trace.csv | 1 + .../meta/mock.nf | 99 ++++++++++ .../meta/nextflow.log | 172 ++++++++++++++++ .../meta/params.json | 1 + .../meta/std.err | 1 + .../meta/std.out | 3 + .../meta/trace.csv | 1 + .../meta/mock.nf | 83 ++++++++ .../meta/nextflow.log | 186 ++++++++++++++++++ .../meta/params.json | 1 + .../meta/std.err | 1 + .../meta/std.out | 3 + .../meta/trace.csv | 1 + .../meta/mock.nf | 99 ++++++++++ .../meta/nextflow.log | 169 ++++++++++++++++ .../meta/params.json | 1 + .../meta/std.err | 1 + .../meta/std.out | 3 + .../meta/trace.csv | 1 + .../meta/mock.nf | 99 ++++++++++ .../meta/nextflow.log | 169 ++++++++++++++++ .../meta/params.json | 1 + .../meta/std.err | 1 + .../meta/std.out | 3 + .../meta/trace.csv | 1 + .../meta/mock.nf | 99 ++++++++++ .../meta/nextflow.log | 169 ++++++++++++++++ .../meta/params.json | 1 + .../meta/std.err | 1 + .../meta/std.out | 3 + .../meta/trace.csv | 1 + .../local/ncbirefseqdownload/environment.yml | 7 + .../modules/local/ncbirefseqdownload/main.nf | 104 ++++++++++ .../modules/local/ncbirefseqdownload/meta.yml | 69 +++++++ .../ncbirefseqdownload/tests/main.nf.test | 73 +++++++ .../local/functional_annotation/main.nf | 9 +- 48 files changed, 2253 insertions(+), 33 deletions(-) create mode 100644 .nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/mock.nf create mode 100644 .nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/nextflow.log create mode 100644 .nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/params.json create mode 100644 .nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/std.err create mode 100644 .nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/std.out create mode 100644 .nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/trace.csv create mode 100644 .nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/mock.nf create mode 100644 .nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/nextflow.log create mode 100644 .nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/params.json create mode 100644 .nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/std.err create mode 100644 .nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/std.out create mode 100644 .nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/trace.csv create mode 100644 .nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/mock.nf create mode 100644 .nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/nextflow.log create mode 100644 .nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/params.json create mode 100644 .nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/std.err create mode 100644 .nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/std.out create mode 100644 .nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/trace.csv create mode 100644 .nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/mock.nf create mode 100644 .nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/nextflow.log create mode 100644 .nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/params.json create mode 100644 .nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/std.err create mode 100644 .nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/std.out create mode 100644 .nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/trace.csv create mode 100644 .nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/mock.nf create mode 100644 .nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/nextflow.log create mode 100644 .nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/params.json create mode 100644 .nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/std.err create mode 100644 .nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/std.out create mode 100644 .nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/trace.csv create mode 100644 .nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/mock.nf create mode 100644 .nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/nextflow.log create mode 100644 .nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/params.json create mode 100644 .nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/std.err create mode 100644 .nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/std.out create mode 100644 .nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/trace.csv create mode 100644 .nf-test/tests/d5aff37838516a475af3455639858b2/meta/mock.nf create mode 100644 .nf-test/tests/d5aff37838516a475af3455639858b2/meta/nextflow.log create mode 100644 .nf-test/tests/d5aff37838516a475af3455639858b2/meta/params.json create mode 100644 .nf-test/tests/d5aff37838516a475af3455639858b2/meta/std.err create mode 100644 .nf-test/tests/d5aff37838516a475af3455639858b2/meta/std.out create mode 100644 .nf-test/tests/d5aff37838516a475af3455639858b2/meta/trace.csv create mode 100644 modules/local/modules/local/ncbirefseqdownload/environment.yml create mode 100644 modules/local/modules/local/ncbirefseqdownload/main.nf create mode 100644 modules/local/modules/local/ncbirefseqdownload/meta.yml create mode 100644 modules/local/modules/local/ncbirefseqdownload/tests/main.nf.test diff --git a/.nf-test.log b/.nf-test.log index 360f5ad..26160de 100644 --- a/.nf-test.log +++ b/.nf-test.log @@ -1,42 +1,79 @@ -May-14 22:22:03.375 [main] INFO com.askimed.nf.test.App - nf-test 0.9.2 -May-14 22:22:03.394 [main] INFO com.askimed.nf.test.App - Arguments: [test, subworkflows/local/download_refseq/tests/main.nf.test] -May-14 22:22:04.217 [main] INFO com.askimed.nf.test.App - Nextflow Version: 24.10.6 -May-14 22:22:04.221 [main] WARN com.askimed.nf.test.commands.RunTestsCommand - No nf-test config file found. -May-14 22:22:04.255 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Loaded 24 files from directory /home/trace/projects/proteinannotator in 0.032 sec -May-14 22:22:04.258 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Found 1 files containing tests. -May-14 22:22:04.259 [main] DEBUG com.askimed.nf.test.lang.dependencies.DependencyResolver - Found files: [/home/trace/projects/proteinannotator/subworkflows/local/download_refseq/tests/main.nf.test] -May-14 22:22:04.748 [main] ERROR com.askimed.nf.test.commands.RunTestsCommand - Running tests failed. -groovy.lang.MissingMethodException: No signature of method: main_nf$_run_closure1.process() is applicable for argument types: (String) values: [download_refseq] - at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:380) - at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1030) - at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:73) - at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:51) - at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:171) - at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:185) - at main_nf$_run_closure1.doCall(main.nf.test:5) - at main_nf$_run_closure1.doCall(main.nf.test) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:569) +May-27 13:28:58.075 [main] INFO com.askimed.nf.test.App - nf-test 0.9.2 +May-27 13:28:58.093 [main] INFO com.askimed.nf.test.App - Arguments: [test, modules/nf-core/blast/makeblastdb] +May-27 13:28:58.930 [main] INFO com.askimed.nf.test.App - Nextflow Version: 24.10.6 +May-27 13:28:58.935 [main] WARN com.askimed.nf.test.commands.RunTestsCommand - No nf-test config file found. +May-27 13:28:58.955 [main] WARN com.askimed.nf.test.nextflow.NextflowScript - Module /home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/main.nf: Dependency '/home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/../../../modules/local/ncbirefseqdownload/main.nf' not found. +May-27 13:28:58.982 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Loaded 27 files from directory /home/trace/projects/proteinannotator in 0.045 sec +May-27 13:28:58.985 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Found 1 files containing tests. +May-27 13:28:58.986 [main] DEBUG com.askimed.nf.test.lang.dependencies.DependencyResolver - Found files: [/home/trace/projects/proteinannotator/modules/nf-core/blast/makeblastdb/tests/main.nf.test] +May-27 13:28:59.630 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Found 2 tests to execute. +May-27 13:28:59.631 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Started test plan +May-27 13:28:59.631 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Running testsuite 'Test Process BLAST_MAKEBLASTDB' from file '/home/trace/projects/proteinannotator/modules/nf-core/blast/makeblastdb/tests/main.nf.test'. +May-27 13:28:59.631 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test '5c90a8e6: Should build a blast db folder from a fasta file'. type: com.askimed.nf.test.lang.process.ProcessTest +May-27 13:29:05.722 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test '5c90a8e6: Should build a blast db folder from a fasta file' finished. status: FAILED +org.codehaus.groovy.runtime.powerassert.PowerAssertionError: 2 of 2 assertions failed + at com.askimed.nf.test.lang.extensions.GlobalMethods.assertAll(GlobalMethods.java:48) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107) + at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) + at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.invoke(StaticMetaMethodSite.java:44) + at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.callStatic(StaticMetaMethodSite.java:100) + at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:55) + at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:217) + at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:240) + at main_nf$_run_closure1$_closure2$_closure5.doCall(main.nf.test:23) + at main_nf$_run_closure1$_closure2$_closure5.doCall(main.nf.test) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:274) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1030) at groovy.lang.Closure.call(Closure.java:427) at groovy.lang.Closure.call(Closure.java:406) - at com.askimed.nf.test.lang.TestSuiteBuilder.executeClosure(TestSuiteBuilder.java:74) - at com.askimed.nf.test.lang.TestSuiteBuilder.nextflow_workflow(TestSuiteBuilder.java:41) - at com.askimed.nf.test.lang.TestSuiteBuilder$nextflow_workflow.callStatic(Unknown Source) + at com.askimed.nf.test.lang.TestCode.execute(TestCode.java:16) + at com.askimed.nf.test.lang.process.ProcessTest.execute(ProcessTest.java:171) + at com.askimed.nf.test.core.TestExecutionEngine.execute(TestExecutionEngine.java:165) + at com.askimed.nf.test.commands.RunTestsCommand.execute(RunTestsCommand.java:298) + at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:43) + at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:18) + at picocli.CommandLine.executeUserObject(CommandLine.java:1953) + at picocli.CommandLine.access$1300(CommandLine.java:145) + at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2346) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2311) + at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179) + at picocli.CommandLine.execute(CommandLine.java:2078) + at com.askimed.nf.test.App.run(App.java:39) + at com.askimed.nf.test.App.main(App.java:46) +May-27 13:29:05.726 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test '99276840: Should build a blast db folder from a zipped fasta file'. type: com.askimed.nf.test.lang.process.ProcessTest +May-27 13:29:11.726 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test '99276840: Should build a blast db folder from a zipped fasta file' finished. status: FAILED +org.codehaus.groovy.runtime.powerassert.PowerAssertionError: 2 of 2 assertions failed + at com.askimed.nf.test.lang.extensions.GlobalMethods.assertAll(GlobalMethods.java:48) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107) + at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) + at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.invoke(StaticMetaMethodSite.java:44) + at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.callStatic(StaticMetaMethodSite.java:100) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:55) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:217) - at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:231) - at main_nf.run(main.nf.test:1) - at groovy.lang.GroovyShell.evaluate(GroovyShell.java:427) - at groovy.lang.GroovyShell.evaluate(GroovyShell.java:470) - at com.askimed.nf.test.lang.TestSuiteBuilder.parse(TestSuiteBuilder.java:105) - at com.askimed.nf.test.core.TestSuiteResolver.parse(TestSuiteResolver.java:35) - at com.askimed.nf.test.commands.RunTestsCommand.execute(RunTestsCommand.java:257) + at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:240) + at main_nf$_run_closure1$_closure3$_closure12.doCall(main.nf.test:62) + at main_nf$_run_closure1$_closure3$_closure12.doCall(main.nf.test) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107) + at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) + at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:274) + at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1030) + at groovy.lang.Closure.call(Closure.java:427) + at groovy.lang.Closure.call(Closure.java:406) + at com.askimed.nf.test.lang.TestCode.execute(TestCode.java:16) + at com.askimed.nf.test.lang.process.ProcessTest.execute(ProcessTest.java:171) + at com.askimed.nf.test.core.TestExecutionEngine.execute(TestExecutionEngine.java:165) + at com.askimed.nf.test.commands.RunTestsCommand.execute(RunTestsCommand.java:298) at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:43) at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:18) at picocli.CommandLine.executeUserObject(CommandLine.java:1953) @@ -48,3 +85,5 @@ groovy.lang.MissingMethodException: No signature of method: main_nf$_run_closure at picocli.CommandLine.execute(CommandLine.java:2078) at com.askimed.nf.test.App.run(App.java:39) at com.askimed.nf.test.App.main(App.java:46) +May-27 13:29:11.727 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Testsuite 'Test Process BLAST_MAKEBLASTDB' finished. snapshot file: false, skipped tests: false, failed tests: true +May-27 13:29:11.727 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Executed 2 tests. 2 tests failed. Done! diff --git a/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/mock.nf b/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/mock.nf new file mode 100644 index 0000000..7e407de --- /dev/null +++ b/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/mock.nf @@ -0,0 +1,99 @@ +import groovy.json.JsonGenerator +import groovy.json.JsonGenerator.Converter + +nextflow.enable.dsl=2 + +// comes from nf-test to store json files +params.nf_test_output = "" + +// include dependencies + +include { DIAMOND_MAKEDB } from '/home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf' + + +// include test process +include { DIAMOND_BLASTP } from '/home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../main.nf' + +// define custom rules for JSON that will be generated. +def jsonOutput = + new JsonGenerator.Options() + .addConverter(Path) { value -> value.toAbsolutePath().toString() } // Custom converter for Path. Only filename + .build() + +def jsonWorkflowOutput = new JsonGenerator.Options().excludeNulls().build() + + +workflow { + + // run dependencies + + { + def input = [] + + input[0] = [ [id:'test2'], [ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] ] + input[1] = [] + input[2] = [] + input[3] = [] + + DIAMOND_MAKEDB(*input) + } + + + // process mapping + def input = [] + + input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] + input[1] = DIAMOND_MAKEDB.out.db + input[2] = 6 + input[3] = 'qseqid qlen' + + //---- + + //run process + DIAMOND_BLASTP(*input) + + if (DIAMOND_BLASTP.output){ + + // consumes all named output channels and stores items in a json file + for (def name in DIAMOND_BLASTP.out.getNames()) { + serializeChannel(name, DIAMOND_BLASTP.out.getProperty(name), jsonOutput) + } + + // consumes all unnamed output channels and stores items in a json file + def array = DIAMOND_BLASTP.out as Object[] + for (def i = 0; i < array.length ; i++) { + serializeChannel(i, array[i], jsonOutput) + } + + } + +} + +def serializeChannel(name, channel, jsonOutput) { + def _name = name + def list = [ ] + channel.subscribe( + onNext: { + list.add(it) + }, + onComplete: { + def map = new HashMap() + map[_name] = list + def filename = "${params.nf_test_output}/output_${_name}.json" + new File(filename).text = jsonOutput.toJson(map) + } + ) +} + + +workflow.onComplete { + + def result = [ + success: workflow.success, + exitStatus: workflow.exitStatus, + errorMessage: workflow.errorMessage, + errorReport: workflow.errorReport + ] + new File("${params.nf_test_output}/workflow.json").text = jsonWorkflowOutput.toJson(result) + +} diff --git a/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/nextflow.log b/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/nextflow.log new file mode 100644 index 0000000..4383c75 --- /dev/null +++ b/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/nextflow.log @@ -0,0 +1,169 @@ +May-27 13:22:53.596 [main] DEBUG nextflow.cli.Launcher - $> nextflow -quiet -log /home/trace/projects/proteinannotator/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/nextflow.log run /home/trace/projects/proteinannotator/.nf-test-1bdc1f2ecae38147b8549068f7156372.nf -c /home/trace/projects/proteinannotator/nextflow.config -params-file /home/trace/projects/proteinannotator/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/params.json -ansi-log false -with-trace /home/trace/projects/proteinannotator/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/trace.csv -w /home/trace/projects/proteinannotator/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/work -stub +May-27 13:22:53.730 [main] INFO nextflow.cli.CmdRun - N E X T F L O W ~ version 24.10.6 +May-27 13:22:53.773 [main] DEBUG nextflow.plugin.PluginsFacade - Setting up plugin manager > mode=prod; embedded=false; plugins-dir=/home/trace/.nextflow/plugins; core-plugins: nf-amazon@2.9.3,nf-azure@1.10.2,nf-cloudcache@0.4.2,nf-codecommit@0.2.2,nf-console@1.1.4,nf-google@1.15.4,nf-tower@1.9.3,nf-wave@1.7.5 +May-27 13:22:53.816 [main] INFO o.pf4j.DefaultPluginStatusProvider - Enabled plugins: [] +May-27 13:22:53.818 [main] INFO o.pf4j.DefaultPluginStatusProvider - Disabled plugins: [] +May-27 13:22:53.824 [main] INFO org.pf4j.DefaultPluginManager - PF4J version 3.12.0 in 'deployment' mode +May-27 13:22:53.846 [main] INFO org.pf4j.AbstractPluginManager - No plugins +May-27 13:22:53.891 [main] DEBUG nextflow.config.ConfigBuilder - Found config base: /home/trace/projects/proteinannotator/nextflow.config +May-27 13:22:53.900 [main] DEBUG nextflow.config.ConfigBuilder - User config file: /home/trace/projects/proteinannotator/nextflow.config +May-27 13:22:53.904 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config +May-27 13:22:53.905 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config +May-27 13:22:53.960 [main] DEBUG n.secret.LocalSecretsProvider - Secrets store: /home/trace/.nextflow/secrets/store.json +May-27 13:22:53.966 [main] DEBUG nextflow.secret.SecretsLoader - Discovered secrets providers: [nextflow.secret.LocalSecretsProvider@456be73c] - activable => nextflow.secret.LocalSecretsProvider@456be73c +May-27 13:22:54.002 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` +May-27 13:22:56.626 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` +May-27 13:22:57.328 [main] DEBUG nextflow.cli.CmdRun - Applied DSL=2 from script declaration +May-27 13:22:57.344 [main] INFO nextflow.cli.CmdRun - Launching `/home/trace/projects/proteinannotator/.nf-test-1bdc1f2ecae38147b8549068f7156372.nf` [jolly_gautier] DSL2 - revision: a1ca7e6f26 +May-27 13:22:57.345 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins declared=[nf-schema@2.3.0] +May-27 13:22:57.346 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins default=[] +May-27 13:22:57.347 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins resolved requirement=[nf-schema@2.3.0] +May-27 13:22:57.347 [main] DEBUG nextflow.plugin.PluginUpdater - Installing plugin nf-schema version: 2.3.0 +May-27 13:22:57.355 [main] INFO org.pf4j.AbstractPluginManager - Plugin 'nf-schema@2.3.0' resolved +May-27 13:22:57.355 [main] INFO org.pf4j.AbstractPluginManager - Start plugin 'nf-schema@2.3.0' +May-27 13:22:57.365 [main] DEBUG nextflow.plugin.BasePlugin - Plugin started nf-schema@2.3.0 +May-27 13:22:57.425 [main] DEBUG nextflow.Session - Session UUID: b52de093-80ff-467b-bcee-890974ca1c9f +May-27 13:22:57.425 [main] DEBUG nextflow.Session - Run name: jolly_gautier +May-27 13:22:57.426 [main] DEBUG nextflow.Session - Executor pool size: 8 +May-27 13:22:57.435 [main] DEBUG nextflow.file.FilePorter - File porter settings maxRetries=3; maxTransfers=50; pollTimeout=null +May-27 13:22:57.443 [main] DEBUG nextflow.util.ThreadPoolBuilder - Creating thread pool 'FileTransfer' minSize=10; maxSize=24; workQueue=LinkedBlockingQueue[-1]; allowCoreThreadTimeout=false +May-27 13:22:57.465 [main] DEBUG nextflow.cli.CmdRun - + Version: 24.10.6 build 5937 + Created: 23-04-2025 16:53 UTC (12:53 EDT) + System: Linux 6.1.0-33-amd64 + Runtime: Groovy 4.0.23 on OpenJDK 64-Bit Server VM 21.0.6-internal-adhoc.conda.src + Encoding: UTF-8 (UTF-8) + Process: 62528@lail-laptop [127.0.1.1] + CPUs: 8 - Mem: 7 GB (389.4 MB) - Swap: 977 MB (2.2 MB) +May-27 13:22:57.497 [main] DEBUG nextflow.Session - Work-dir: /home/trace/projects/proteinannotator/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/work [ext2/ext3] +May-27 13:22:57.497 [main] DEBUG nextflow.Session - Script base path does not exist or is not a directory: /home/trace/projects/proteinannotator/bin +May-27 13:22:57.510 [main] DEBUG nextflow.executor.ExecutorFactory - Extension executors providers=[] +May-27 13:22:57.522 [main] DEBUG nextflow.Session - Observer factory: DefaultObserverFactory +May-27 13:22:57.551 [main] DEBUG nextflow.Session - Observer factory: ValidationObserverFactory +May-27 13:22:57.643 [main] DEBUG nextflow.cache.CacheFactory - Using Nextflow cache factory: nextflow.cache.DefaultCacheFactory +May-27 13:22:57.659 [main] DEBUG nextflow.util.CustomThreadPool - Creating default thread pool > poolSize: 9; maxThreads: 1000 +May-27 13:22:57.746 [main] DEBUG nextflow.Session - Session start +May-27 13:22:57.749 [main] DEBUG nextflow.trace.TraceFileObserver - Workflow started -- trace file: /home/trace/projects/proteinannotator/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/trace.csv +May-27 13:22:58.026 [main] DEBUG nextflow.script.ScriptRunner - > Launching execution +May-27 13:22:58.042 [main] DEBUG nextflow.script.ScriptRunner - Parsed script files: + Script_e3c35e79f690a4ec: /home/trace/projects/proteinannotator/.nf-test-1bdc1f2ecae38147b8549068f7156372.nf +May-27 13:22:58.043 [main] DEBUG nextflow.Session - Session aborted -- Cause: Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf +May-27 13:22:58.047 [main] DEBUG nextflow.Session - +Thread[#32,process reaper,10,InnocuousThreadGroup] + java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:410) + java.base@21.0.6-internal/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:338) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1069) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) + +Thread[#10,Finalizer,8,system] + java.base@21.0.6-internal/java.lang.Object.wait0(Native Method) + java.base@21.0.6-internal/java.lang.Object.wait(Object.java:366) + java.base@21.0.6-internal/java.lang.Object.wait(Object.java:339) + java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.await(NativeReferenceQueue.java:48) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:158) + java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.remove(NativeReferenceQueue.java:89) + java.base@21.0.6-internal/java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:173) + +Thread[#11,Signal Dispatcher,9,system] + +Thread[#31,Keep-Alive-Timer,8,InnocuousThreadGroup] + java.base@21.0.6-internal/java.lang.Thread.sleep0(Native Method) + java.base@21.0.6-internal/java.lang.Thread.sleep(Thread.java:509) + java.base@21.0.6-internal/sun.net.www.http.KeepAliveCache.run(KeepAliveCache.java:238) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) + +Thread[#33,Thread-1,5,main] + java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) + java.base@21.0.6-internal/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1763) + java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.pollFirst(LinkedBlockingDeque.java:515) + java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.poll(LinkedBlockingDeque.java:677) + app//nextflow.util.SimpleAgent.run(SimpleAgent.groovy:89) + java.base@21.0.6-internal/java.lang.invoke.LambdaForm$DMH/0x00007fab4419bc00.invokeVirtual(LambdaForm$DMH) + java.base@21.0.6-internal/java.lang.invoke.LambdaForm$MH/0x00007fab4448c000.invoke(LambdaForm$MH) + java.base@21.0.6-internal/java.lang.invoke.Invokers$Holder.invokeExact_MT(Invokers$Holder) + java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(DirectMethodHandleAccessor.java:153) + java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + java.base@21.0.6-internal/java.lang.reflect.Method.invoke(Method.java:580) + app//org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343) + app//groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:328) + app//groovy.lang.MetaClassImpl.doInvokeMethod(MetaClassImpl.java:1333) + app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1088) + app//groovy.lang.MetaClassImpl.invokeMethodClosure(MetaClassImpl.java:1017) + app//groovy.lang.MetaClassImpl.doInvokeMethod(MetaClassImpl.java:1207) + app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1088) + app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1007) + app//groovy.lang.Closure.call(Closure.java:433) + app//groovy.lang.Closure.call(Closure.java:412) + app//groovy.lang.Closure.run(Closure.java:505) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + +Thread[#34,Actor Thread 1,5,main] + java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.6-internal/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:458) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.take(SynchronousQueue.java:318) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + +Thread[#9,Reference Handler,10,system] + java.base@21.0.6-internal/java.lang.ref.Reference.waitForReferencePendingList(Native Method) + java.base@21.0.6-internal/java.lang.ref.Reference.processPendingReferences(Reference.java:246) + java.base@21.0.6-internal/java.lang.ref.Reference$ReferenceHandler.run(Reference.java:208) + +Thread[#18,Common-Cleaner,8,InnocuousThreadGroup] + java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) + java.base@21.0.6-internal/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1852) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.await(ReferenceQueue.java:71) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:143) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:218) + java.base@21.0.6-internal/jdk.internal.ref.CleanerImpl.run(CleanerImpl.java:140) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) + +Thread[#19,Notification Thread,9,system] + +Thread[#1,main,5,main] + java.base@21.0.6-internal/java.lang.Thread.dumpThreads(Native Method) + java.base@21.0.6-internal/java.lang.Thread.getAllStackTraces(Thread.java:2522) + app//nextflow.util.SysHelper.dumpThreads(SysHelper.groovy:188) + app//nextflow.Session.abort(Session.groovy:800) + app//nextflow.script.ScriptRunner.execute(ScriptRunner.groovy:149) + app//nextflow.cli.CmdRun.run(CmdRun.groovy:376) + app//nextflow.cli.Launcher.run(Launcher.groovy:503) + app//nextflow.cli.Launcher.main(Launcher.groovy:658) + +May-27 13:22:58.056 [main] ERROR nextflow.cli.Launcher - Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf +java.nio.file.NoSuchFileException: Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf + at nextflow.script.IncludeDef.realModulePath(IncludeDef.groovy:184) + at nextflow.script.IncludeDef.load0(IncludeDef.groovy:112) + at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) + at Script_e3c35e79f690a4ec.runScript(Script_e3c35e79f690a4ec:11) + at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) + at nextflow.script.BaseScript.run0(BaseScript.groovy:159) + at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) + at nextflow.script.BaseScript.run(BaseScript.groovy:209) + at nextflow.script.ScriptParser.runScript(ScriptParser.groovy:236) + at nextflow.script.ScriptRunner.run(ScriptRunner.groovy:243) + at nextflow.script.ScriptRunner.execute(ScriptRunner.groovy:138) + at nextflow.cli.CmdRun.run(CmdRun.groovy:376) + at nextflow.cli.Launcher.run(Launcher.groovy:503) + at nextflow.cli.Launcher.main(Launcher.groovy:658) diff --git a/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/params.json b/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/params.json new file mode 100644 index 0000000..1b8d9da --- /dev/null +++ b/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/params.json @@ -0,0 +1 @@ +{"nf_test_output":"/home/trace/projects/proteinannotator/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta"} \ No newline at end of file diff --git a/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/std.err b/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/std.err new file mode 100644 index 0000000..5890cc1 --- /dev/null +++ b/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/std.err @@ -0,0 +1 @@ +Nextflow 25.04.2 is available - Please consider updating your version to it(B diff --git a/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/std.out b/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/std.out new file mode 100644 index 0000000..369701e --- /dev/null +++ b/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/std.out @@ -0,0 +1,3 @@ +ERROR ~ No such file or directory: Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf + + -- Check script '/home/trace/projects/proteinannotator/.nf-test-1bdc1f2ecae38147b8549068f7156372.nf' at line: 11 or see '/home/trace/projects/proteinannotator/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/nextflow.log' file for more details diff --git a/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/trace.csv b/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/trace.csv new file mode 100644 index 0000000..6b739ac --- /dev/null +++ b/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/trace.csv @@ -0,0 +1 @@ +task_id hash native_id name status exit submit duration realtime %cpu peak_rss peak_vmem rchar wchar diff --git a/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/mock.nf b/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/mock.nf new file mode 100644 index 0000000..034e3ba --- /dev/null +++ b/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/mock.nf @@ -0,0 +1,83 @@ +import groovy.json.JsonGenerator +import groovy.json.JsonGenerator.Converter + +nextflow.enable.dsl=2 + +// comes from nf-test to store json files +params.nf_test_output = "" + +// include dependencies + + +// include test process +include { BLAST_MAKEBLASTDB } from '/home/trace/projects/proteinannotator/modules/nf-core/blast/makeblastdb/tests/../main.nf' + +// define custom rules for JSON that will be generated. +def jsonOutput = + new JsonGenerator.Options() + .addConverter(Path) { value -> value.toAbsolutePath().toString() } // Custom converter for Path. Only filename + .build() + +def jsonWorkflowOutput = new JsonGenerator.Options().excludeNulls().build() + + +workflow { + + // run dependencies + + + // process mapping + def input = [] + + input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] + + //---- + + //run process + BLAST_MAKEBLASTDB(*input) + + if (BLAST_MAKEBLASTDB.output){ + + // consumes all named output channels and stores items in a json file + for (def name in BLAST_MAKEBLASTDB.out.getNames()) { + serializeChannel(name, BLAST_MAKEBLASTDB.out.getProperty(name), jsonOutput) + } + + // consumes all unnamed output channels and stores items in a json file + def array = BLAST_MAKEBLASTDB.out as Object[] + for (def i = 0; i < array.length ; i++) { + serializeChannel(i, array[i], jsonOutput) + } + + } + +} + +def serializeChannel(name, channel, jsonOutput) { + def _name = name + def list = [ ] + channel.subscribe( + onNext: { + list.add(it) + }, + onComplete: { + def map = new HashMap() + map[_name] = list + def filename = "${params.nf_test_output}/output_${_name}.json" + new File(filename).text = jsonOutput.toJson(map) + } + ) +} + + +workflow.onComplete { + + def result = [ + success: workflow.success, + exitStatus: workflow.exitStatus, + errorMessage: workflow.errorMessage, + errorReport: workflow.errorReport + ] + new File("${params.nf_test_output}/workflow.json").text = jsonWorkflowOutput.toJson(result) + +} diff --git a/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/nextflow.log b/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/nextflow.log new file mode 100644 index 0000000..ec95535 --- /dev/null +++ b/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/nextflow.log @@ -0,0 +1,186 @@ +May-27 13:29:01.342 [main] DEBUG nextflow.cli.Launcher - $> nextflow -quiet -log /home/trace/projects/proteinannotator/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/nextflow.log run /home/trace/projects/proteinannotator/.nf-test-5c90a8e619d75fd40c2c8fc548260e22.nf -c /home/trace/projects/proteinannotator/nextflow.config -c /home/trace/projects/proteinannotator/modules/nf-core/blast/makeblastdb/tests/./nextflow.config -params-file /home/trace/projects/proteinannotator/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/params.json -ansi-log false -with-trace /home/trace/projects/proteinannotator/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/trace.csv -w /home/trace/projects/proteinannotator/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/work +May-27 13:29:01.455 [main] INFO nextflow.cli.CmdRun - N E X T F L O W ~ version 24.10.6 +May-27 13:29:01.489 [main] DEBUG nextflow.plugin.PluginsFacade - Setting up plugin manager > mode=prod; embedded=false; plugins-dir=/home/trace/.nextflow/plugins; core-plugins: nf-amazon@2.9.3,nf-azure@1.10.2,nf-cloudcache@0.4.2,nf-codecommit@0.2.2,nf-console@1.1.4,nf-google@1.15.4,nf-tower@1.9.3,nf-wave@1.7.5 +May-27 13:29:01.524 [main] INFO o.pf4j.DefaultPluginStatusProvider - Enabled plugins: [] +May-27 13:29:01.526 [main] INFO o.pf4j.DefaultPluginStatusProvider - Disabled plugins: [] +May-27 13:29:01.531 [main] INFO org.pf4j.DefaultPluginManager - PF4J version 3.12.0 in 'deployment' mode +May-27 13:29:01.551 [main] INFO org.pf4j.AbstractPluginManager - No plugins +May-27 13:29:01.595 [main] DEBUG nextflow.config.ConfigBuilder - Found config base: /home/trace/projects/proteinannotator/nextflow.config +May-27 13:29:01.603 [main] DEBUG nextflow.config.ConfigBuilder - User config file: /home/trace/projects/proteinannotator/nextflow.config +May-27 13:29:01.603 [main] DEBUG nextflow.config.ConfigBuilder - User config file: /home/trace/projects/proteinannotator/modules/nf-core/blast/makeblastdb/tests/./nextflow.config +May-27 13:29:01.605 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config +May-27 13:29:01.607 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config +May-27 13:29:01.607 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/modules/nf-core/blast/makeblastdb/tests/nextflow.config +May-27 13:29:01.647 [main] DEBUG n.secret.LocalSecretsProvider - Secrets store: /home/trace/.nextflow/secrets/store.json +May-27 13:29:01.653 [main] DEBUG nextflow.secret.SecretsLoader - Discovered secrets providers: [nextflow.secret.LocalSecretsProvider@2fb5fe30] - activable => nextflow.secret.LocalSecretsProvider@2fb5fe30 +May-27 13:29:01.682 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` +May-27 13:29:04.042 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` +May-27 13:29:04.690 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` +May-27 13:29:04.750 [main] DEBUG nextflow.cli.CmdRun - Applied DSL=2 from script declaration +May-27 13:29:04.767 [main] INFO nextflow.cli.CmdRun - Launching `/home/trace/projects/proteinannotator/.nf-test-5c90a8e619d75fd40c2c8fc548260e22.nf` [chaotic_engelbart] DSL2 - revision: 04640d9817 +May-27 13:29:04.768 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins declared=[nf-schema@2.3.0] +May-27 13:29:04.769 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins default=[] +May-27 13:29:04.769 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins resolved requirement=[nf-schema@2.3.0] +May-27 13:29:04.770 [main] DEBUG nextflow.plugin.PluginUpdater - Installing plugin nf-schema version: 2.3.0 +May-27 13:29:04.777 [main] INFO org.pf4j.AbstractPluginManager - Plugin 'nf-schema@2.3.0' resolved +May-27 13:29:04.777 [main] INFO org.pf4j.AbstractPluginManager - Start plugin 'nf-schema@2.3.0' +May-27 13:29:04.785 [main] DEBUG nextflow.plugin.BasePlugin - Plugin started nf-schema@2.3.0 +May-27 13:29:04.841 [main] DEBUG nextflow.Session - Session UUID: 0a76014c-cf67-45bd-a49c-957772e8baee +May-27 13:29:04.841 [main] DEBUG nextflow.Session - Run name: chaotic_engelbart +May-27 13:29:04.842 [main] DEBUG nextflow.Session - Executor pool size: 8 +May-27 13:29:04.851 [main] DEBUG nextflow.file.FilePorter - File porter settings maxRetries=3; maxTransfers=50; pollTimeout=null +May-27 13:29:04.858 [main] DEBUG nextflow.util.ThreadPoolBuilder - Creating thread pool 'FileTransfer' minSize=10; maxSize=24; workQueue=LinkedBlockingQueue[-1]; allowCoreThreadTimeout=false +May-27 13:29:04.881 [main] DEBUG nextflow.cli.CmdRun - + Version: 24.10.6 build 5937 + Created: 23-04-2025 16:53 UTC (12:53 EDT) + System: Linux 6.1.0-33-amd64 + Runtime: Groovy 4.0.23 on OpenJDK 64-Bit Server VM 21.0.6-internal-adhoc.conda.src + Encoding: UTF-8 (UTF-8) + Process: 64606@lail-laptop [127.0.1.1] + CPUs: 8 - Mem: 7 GB (218.3 MB) - Swap: 977 MB (296 KB) +May-27 13:29:04.913 [main] DEBUG nextflow.Session - Work-dir: /home/trace/projects/proteinannotator/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/work [ext2/ext3] +May-27 13:29:04.914 [main] DEBUG nextflow.Session - Script base path does not exist or is not a directory: /home/trace/projects/proteinannotator/bin +May-27 13:29:04.930 [main] DEBUG nextflow.executor.ExecutorFactory - Extension executors providers=[] +May-27 13:29:04.945 [main] DEBUG nextflow.Session - Observer factory: DefaultObserverFactory +May-27 13:29:04.973 [main] DEBUG nextflow.Session - Observer factory: ValidationObserverFactory +May-27 13:29:05.060 [main] DEBUG nextflow.cache.CacheFactory - Using Nextflow cache factory: nextflow.cache.DefaultCacheFactory +May-27 13:29:05.072 [main] DEBUG nextflow.util.CustomThreadPool - Creating default thread pool > poolSize: 9; maxThreads: 1000 +May-27 13:29:05.144 [main] DEBUG nextflow.Session - Session start +May-27 13:29:05.149 [main] DEBUG nextflow.trace.TraceFileObserver - Workflow started -- trace file: /home/trace/projects/proteinannotator/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/trace.csv +May-27 13:29:05.391 [main] DEBUG nextflow.script.ScriptRunner - > Launching execution +May-27 13:29:05.572 [main] WARN nextflow.script.ScriptBinding - Access to undefined parameter `modules_testdata_base_path` -- Initialise it to a default value eg. `params.modules_testdata_base_path = some_value` +May-27 13:29:05.584 [main] DEBUG nextflow.script.ScriptRunner - Parsed script files: + Script_661b920493a93545: /home/trace/projects/proteinannotator/.nf-test-5c90a8e619d75fd40c2c8fc548260e22.nf + Script_fba48771bc5efb6e: /home/trace/projects/proteinannotator/modules/nf-core/blast/makeblastdb/tests/../main.nf +May-27 13:29:05.585 [main] DEBUG nextflow.Session - Session aborted -- Cause: /home/trace/projects/proteinannotator/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/nullgenomics/sarscov2/genome/genome.fasta +May-27 13:29:05.589 [main] DEBUG nextflow.Session - +Thread[#9,Reference Handler,10,system] + java.base@21.0.6-internal/java.lang.ref.Reference.waitForReferencePendingList(Native Method) + java.base@21.0.6-internal/java.lang.ref.Reference.processPendingReferences(Reference.java:246) + java.base@21.0.6-internal/java.lang.ref.Reference$ReferenceHandler.run(Reference.java:208) + +Thread[#18,Common-Cleaner,8,InnocuousThreadGroup] + java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) + java.base@21.0.6-internal/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1852) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.await(ReferenceQueue.java:71) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:143) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:218) + java.base@21.0.6-internal/jdk.internal.ref.CleanerImpl.run(CleanerImpl.java:140) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) + +Thread[#11,Signal Dispatcher,9,system] + +Thread[#32,process reaper,10,InnocuousThreadGroup] + java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:410) + java.base@21.0.6-internal/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:338) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1069) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) + +Thread[#33,Thread-1,5,main] + java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) + java.base@21.0.6-internal/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1763) + java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.pollFirst(LinkedBlockingDeque.java:515) + java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.poll(LinkedBlockingDeque.java:677) + app//nextflow.util.SimpleAgent.run(SimpleAgent.groovy:89) + java.base@21.0.6-internal/java.lang.invoke.LambdaForm$DMH/0x00007faa4c19bc00.invokeVirtual(LambdaForm$DMH) + java.base@21.0.6-internal/java.lang.invoke.LambdaForm$MH/0x00007faa4c490000.invoke(LambdaForm$MH) + java.base@21.0.6-internal/java.lang.invoke.Invokers$Holder.invokeExact_MT(Invokers$Holder) + java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(DirectMethodHandleAccessor.java:153) + java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + java.base@21.0.6-internal/java.lang.reflect.Method.invoke(Method.java:580) + app//org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343) + app//groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:328) + app//groovy.lang.MetaClassImpl.doInvokeMethod(MetaClassImpl.java:1333) + app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1088) + app//groovy.lang.MetaClassImpl.invokeMethodClosure(MetaClassImpl.java:1017) + app//groovy.lang.MetaClassImpl.doInvokeMethod(MetaClassImpl.java:1207) + app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1088) + app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1007) + app//groovy.lang.Closure.call(Closure.java:433) + app//groovy.lang.Closure.call(Closure.java:412) + app//groovy.lang.Closure.run(Closure.java:505) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + +Thread[#1,main,5,main] + java.base@21.0.6-internal/java.lang.Thread.dumpThreads(Native Method) + java.base@21.0.6-internal/java.lang.Thread.getAllStackTraces(Thread.java:2522) + app//nextflow.util.SysHelper.dumpThreads(SysHelper.groovy:188) + app//nextflow.Session.abort(Session.groovy:800) + app//nextflow.script.ScriptRunner.execute(ScriptRunner.groovy:149) + app//nextflow.cli.CmdRun.run(CmdRun.groovy:376) + app//nextflow.cli.Launcher.run(Launcher.groovy:503) + app//nextflow.cli.Launcher.main(Launcher.groovy:658) + +Thread[#10,Finalizer,8,system] + java.base@21.0.6-internal/java.lang.Object.wait0(Native Method) + java.base@21.0.6-internal/java.lang.Object.wait(Object.java:366) + java.base@21.0.6-internal/java.lang.Object.wait(Object.java:339) + java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.await(NativeReferenceQueue.java:48) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:158) + java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.remove(NativeReferenceQueue.java:89) + java.base@21.0.6-internal/java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:173) + +Thread[#34,Actor Thread 1,5,main] + java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.6-internal/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:458) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.take(SynchronousQueue.java:318) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + +Thread[#19,Notification Thread,9,system] + +Thread[#31,Keep-Alive-Timer,8,InnocuousThreadGroup] + java.base@21.0.6-internal/java.lang.Thread.sleep0(Native Method) + java.base@21.0.6-internal/java.lang.Thread.sleep(Thread.java:509) + java.base@21.0.6-internal/sun.net.www.http.KeepAliveCache.run(KeepAliveCache.java:238) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) + +May-27 13:29:05.600 [main] ERROR nextflow.cli.Launcher - /home/trace/projects/proteinannotator/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/nullgenomics/sarscov2/genome/genome.fasta +java.nio.file.NoSuchFileException: /home/trace/projects/proteinannotator/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/nullgenomics/sarscov2/genome/genome.fasta + at nextflow.file.FileHelper.checkIfExists(FileHelper.groovy:1099) + at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) + at nextflow.Nextflow.file(Nextflow.groovy:123) + at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) + at Script_661b920493a93545$_runScript_closure4$_closure6.doCall(Script_661b920493a93545:32) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343) + at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:328) + at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:279) + at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1007) + at groovy.lang.Closure.call(Closure.java:433) + at groovy.lang.Closure.call(Closure.java:412) + at nextflow.script.WorkflowDef.run0(WorkflowDef.groovy:204) + at nextflow.script.WorkflowDef.run(WorkflowDef.groovy:188) + at nextflow.script.BindableDef.invoke_a(BindableDef.groovy:51) + at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) + at nextflow.script.BaseScript.run0(BaseScript.groovy:198) + at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) + at nextflow.script.BaseScript.run(BaseScript.groovy:209) + at nextflow.script.ScriptParser.runScript(ScriptParser.groovy:236) + at nextflow.script.ScriptRunner.run(ScriptRunner.groovy:243) + at nextflow.script.ScriptRunner.execute(ScriptRunner.groovy:138) + at nextflow.cli.CmdRun.run(CmdRun.groovy:376) + at nextflow.cli.Launcher.run(Launcher.groovy:503) + at nextflow.cli.Launcher.main(Launcher.groovy:658) diff --git a/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/params.json b/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/params.json new file mode 100644 index 0000000..7dd2655 --- /dev/null +++ b/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/params.json @@ -0,0 +1 @@ +{"nf_test_output":"/home/trace/projects/proteinannotator/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta"} \ No newline at end of file diff --git a/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/std.err b/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/std.err new file mode 100644 index 0000000..5890cc1 --- /dev/null +++ b/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/std.err @@ -0,0 +1 @@ +Nextflow 25.04.2 is available - Please consider updating your version to it(B diff --git a/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/std.out b/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/std.out new file mode 100644 index 0000000..d0fe8e2 --- /dev/null +++ b/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/std.out @@ -0,0 +1,3 @@ +ERROR ~ No such file or directory: /home/trace/projects/proteinannotator/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/nullgenomics/sarscov2/genome/genome.fasta + + -- Check script '/home/trace/projects/proteinannotator/.nf-test-5c90a8e619d75fd40c2c8fc548260e22.nf' at line: 32 or see '/home/trace/projects/proteinannotator/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/nextflow.log' file for more details diff --git a/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/trace.csv b/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/trace.csv new file mode 100644 index 0000000..6b739ac --- /dev/null +++ b/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/trace.csv @@ -0,0 +1 @@ +task_id hash native_id name status exit submit duration realtime %cpu peak_rss peak_vmem rchar wchar diff --git a/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/mock.nf b/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/mock.nf new file mode 100644 index 0000000..7e407de --- /dev/null +++ b/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/mock.nf @@ -0,0 +1,99 @@ +import groovy.json.JsonGenerator +import groovy.json.JsonGenerator.Converter + +nextflow.enable.dsl=2 + +// comes from nf-test to store json files +params.nf_test_output = "" + +// include dependencies + +include { DIAMOND_MAKEDB } from '/home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf' + + +// include test process +include { DIAMOND_BLASTP } from '/home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../main.nf' + +// define custom rules for JSON that will be generated. +def jsonOutput = + new JsonGenerator.Options() + .addConverter(Path) { value -> value.toAbsolutePath().toString() } // Custom converter for Path. Only filename + .build() + +def jsonWorkflowOutput = new JsonGenerator.Options().excludeNulls().build() + + +workflow { + + // run dependencies + + { + def input = [] + + input[0] = [ [id:'test2'], [ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] ] + input[1] = [] + input[2] = [] + input[3] = [] + + DIAMOND_MAKEDB(*input) + } + + + // process mapping + def input = [] + + input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] + input[1] = DIAMOND_MAKEDB.out.db + input[2] = 6 + input[3] = 'qseqid qlen' + + //---- + + //run process + DIAMOND_BLASTP(*input) + + if (DIAMOND_BLASTP.output){ + + // consumes all named output channels and stores items in a json file + for (def name in DIAMOND_BLASTP.out.getNames()) { + serializeChannel(name, DIAMOND_BLASTP.out.getProperty(name), jsonOutput) + } + + // consumes all unnamed output channels and stores items in a json file + def array = DIAMOND_BLASTP.out as Object[] + for (def i = 0; i < array.length ; i++) { + serializeChannel(i, array[i], jsonOutput) + } + + } + +} + +def serializeChannel(name, channel, jsonOutput) { + def _name = name + def list = [ ] + channel.subscribe( + onNext: { + list.add(it) + }, + onComplete: { + def map = new HashMap() + map[_name] = list + def filename = "${params.nf_test_output}/output_${_name}.json" + new File(filename).text = jsonOutput.toJson(map) + } + ) +} + + +workflow.onComplete { + + def result = [ + success: workflow.success, + exitStatus: workflow.exitStatus, + errorMessage: workflow.errorMessage, + errorReport: workflow.errorReport + ] + new File("${params.nf_test_output}/workflow.json").text = jsonWorkflowOutput.toJson(result) + +} diff --git a/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/nextflow.log b/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/nextflow.log new file mode 100644 index 0000000..f6b0b39 --- /dev/null +++ b/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/nextflow.log @@ -0,0 +1,172 @@ +May-27 13:22:47.452 [main] DEBUG nextflow.cli.Launcher - $> nextflow -quiet -log /home/trace/projects/proteinannotator/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/nextflow.log run /home/trace/projects/proteinannotator/.nf-test-5fe1b68b1633d10fa11759d4fe6e77d1.nf -c /home/trace/projects/proteinannotator/nextflow.config -c /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/./nextflow.config -params-file /home/trace/projects/proteinannotator/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/params.json -ansi-log false -with-trace /home/trace/projects/proteinannotator/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/trace.csv -w /home/trace/projects/proteinannotator/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/work +May-27 13:22:47.572 [main] INFO nextflow.cli.CmdRun - N E X T F L O W ~ version 24.10.6 +May-27 13:22:47.605 [main] DEBUG nextflow.plugin.PluginsFacade - Setting up plugin manager > mode=prod; embedded=false; plugins-dir=/home/trace/.nextflow/plugins; core-plugins: nf-amazon@2.9.3,nf-azure@1.10.2,nf-cloudcache@0.4.2,nf-codecommit@0.2.2,nf-console@1.1.4,nf-google@1.15.4,nf-tower@1.9.3,nf-wave@1.7.5 +May-27 13:22:47.642 [main] INFO o.pf4j.DefaultPluginStatusProvider - Enabled plugins: [] +May-27 13:22:47.643 [main] INFO o.pf4j.DefaultPluginStatusProvider - Disabled plugins: [] +May-27 13:22:47.648 [main] INFO org.pf4j.DefaultPluginManager - PF4J version 3.12.0 in 'deployment' mode +May-27 13:22:47.670 [main] INFO org.pf4j.AbstractPluginManager - No plugins +May-27 13:22:47.711 [main] DEBUG nextflow.config.ConfigBuilder - Found config base: /home/trace/projects/proteinannotator/nextflow.config +May-27 13:22:47.722 [main] DEBUG nextflow.config.ConfigBuilder - User config file: /home/trace/projects/proteinannotator/nextflow.config +May-27 13:22:47.723 [main] DEBUG nextflow.config.ConfigBuilder - User config file: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/./nextflow.config +May-27 13:22:47.726 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config +May-27 13:22:47.727 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config +May-27 13:22:47.727 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/nextflow.config +May-27 13:22:47.776 [main] DEBUG n.secret.LocalSecretsProvider - Secrets store: /home/trace/.nextflow/secrets/store.json +May-27 13:22:47.782 [main] DEBUG nextflow.secret.SecretsLoader - Discovered secrets providers: [nextflow.secret.LocalSecretsProvider@2fb5fe30] - activable => nextflow.secret.LocalSecretsProvider@2fb5fe30 +May-27 13:22:47.815 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` +May-27 13:22:50.423 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` +May-27 13:22:51.090 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` +May-27 13:22:51.157 [main] DEBUG nextflow.cli.CmdRun - Applied DSL=2 from script declaration +May-27 13:22:51.176 [main] INFO nextflow.cli.CmdRun - Launching `/home/trace/projects/proteinannotator/.nf-test-5fe1b68b1633d10fa11759d4fe6e77d1.nf` [loving_albattani] DSL2 - revision: a1ca7e6f26 +May-27 13:22:51.178 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins declared=[nf-schema@2.3.0] +May-27 13:22:51.179 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins default=[] +May-27 13:22:51.179 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins resolved requirement=[nf-schema@2.3.0] +May-27 13:22:51.180 [main] DEBUG nextflow.plugin.PluginUpdater - Installing plugin nf-schema version: 2.3.0 +May-27 13:22:51.187 [main] INFO org.pf4j.AbstractPluginManager - Plugin 'nf-schema@2.3.0' resolved +May-27 13:22:51.188 [main] INFO org.pf4j.AbstractPluginManager - Start plugin 'nf-schema@2.3.0' +May-27 13:22:51.197 [main] DEBUG nextflow.plugin.BasePlugin - Plugin started nf-schema@2.3.0 +May-27 13:22:51.264 [main] DEBUG nextflow.Session - Session UUID: 6f48591d-548d-49dc-a6e6-bf3a0ab76f2a +May-27 13:22:51.265 [main] DEBUG nextflow.Session - Run name: loving_albattani +May-27 13:22:51.265 [main] DEBUG nextflow.Session - Executor pool size: 8 +May-27 13:22:51.276 [main] DEBUG nextflow.file.FilePorter - File porter settings maxRetries=3; maxTransfers=50; pollTimeout=null +May-27 13:22:51.284 [main] DEBUG nextflow.util.ThreadPoolBuilder - Creating thread pool 'FileTransfer' minSize=10; maxSize=24; workQueue=LinkedBlockingQueue[-1]; allowCoreThreadTimeout=false +May-27 13:22:51.311 [main] DEBUG nextflow.cli.CmdRun - + Version: 24.10.6 build 5937 + Created: 23-04-2025 16:53 UTC (12:53 EDT) + System: Linux 6.1.0-33-amd64 + Runtime: Groovy 4.0.23 on OpenJDK 64-Bit Server VM 21.0.6-internal-adhoc.conda.src + Encoding: UTF-8 (UTF-8) + Process: 62415@lail-laptop [127.0.1.1] + CPUs: 8 - Mem: 7 GB (408.9 MB) - Swap: 977 MB (2.2 MB) +May-27 13:22:51.343 [main] DEBUG nextflow.Session - Work-dir: /home/trace/projects/proteinannotator/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/work [ext2/ext3] +May-27 13:22:51.343 [main] DEBUG nextflow.Session - Script base path does not exist or is not a directory: /home/trace/projects/proteinannotator/bin +May-27 13:22:51.358 [main] DEBUG nextflow.executor.ExecutorFactory - Extension executors providers=[] +May-27 13:22:51.373 [main] DEBUG nextflow.Session - Observer factory: DefaultObserverFactory +May-27 13:22:51.406 [main] DEBUG nextflow.Session - Observer factory: ValidationObserverFactory +May-27 13:22:51.498 [main] DEBUG nextflow.cache.CacheFactory - Using Nextflow cache factory: nextflow.cache.DefaultCacheFactory +May-27 13:22:51.511 [main] DEBUG nextflow.util.CustomThreadPool - Creating default thread pool > poolSize: 9; maxThreads: 1000 +May-27 13:22:51.587 [main] DEBUG nextflow.Session - Session start +May-27 13:22:51.590 [main] DEBUG nextflow.trace.TraceFileObserver - Workflow started -- trace file: /home/trace/projects/proteinannotator/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/trace.csv +May-27 13:22:51.927 [main] DEBUG nextflow.script.ScriptRunner - > Launching execution +May-27 13:22:51.947 [main] DEBUG nextflow.script.ScriptRunner - Parsed script files: + Script_e3c35e79f690a4ec: /home/trace/projects/proteinannotator/.nf-test-5fe1b68b1633d10fa11759d4fe6e77d1.nf +May-27 13:22:51.948 [main] DEBUG nextflow.Session - Session aborted -- Cause: Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf +May-27 13:22:51.953 [main] DEBUG nextflow.Session - +Thread[#34,Actor Thread 1,5,main] + java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.6-internal/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:458) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.take(SynchronousQueue.java:318) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + +Thread[#18,Common-Cleaner,8,InnocuousThreadGroup] + java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) + java.base@21.0.6-internal/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1852) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.await(ReferenceQueue.java:71) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:143) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:218) + java.base@21.0.6-internal/jdk.internal.ref.CleanerImpl.run(CleanerImpl.java:140) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) + +Thread[#19,Notification Thread,9,system] + +Thread[#33,Thread-1,5,main] + java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) + java.base@21.0.6-internal/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1763) + java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.pollFirst(LinkedBlockingDeque.java:515) + java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.poll(LinkedBlockingDeque.java:677) + app//nextflow.util.SimpleAgent.run(SimpleAgent.groovy:89) + java.base@21.0.6-internal/java.lang.invoke.LambdaForm$DMH/0x00007fe6fc19bc00.invokeVirtual(LambdaForm$DMH) + java.base@21.0.6-internal/java.lang.invoke.LambdaForm$MH/0x00007fe6fc490000.invoke(LambdaForm$MH) + java.base@21.0.6-internal/java.lang.invoke.Invokers$Holder.invokeExact_MT(Invokers$Holder) + java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(DirectMethodHandleAccessor.java:153) + java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + java.base@21.0.6-internal/java.lang.reflect.Method.invoke(Method.java:580) + app//org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343) + app//groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:328) + app//groovy.lang.MetaClassImpl.doInvokeMethod(MetaClassImpl.java:1333) + app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1088) + app//groovy.lang.MetaClassImpl.invokeMethodClosure(MetaClassImpl.java:1017) + app//groovy.lang.MetaClassImpl.doInvokeMethod(MetaClassImpl.java:1207) + app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1088) + app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1007) + app//groovy.lang.Closure.call(Closure.java:433) + app//groovy.lang.Closure.call(Closure.java:412) + app//groovy.lang.Closure.run(Closure.java:505) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + +Thread[#31,Keep-Alive-Timer,8,InnocuousThreadGroup] + java.base@21.0.6-internal/java.lang.Thread.sleep0(Native Method) + java.base@21.0.6-internal/java.lang.Thread.sleep(Thread.java:509) + java.base@21.0.6-internal/sun.net.www.http.KeepAliveCache.run(KeepAliveCache.java:238) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) + +Thread[#32,process reaper,10,InnocuousThreadGroup] + java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:410) + java.base@21.0.6-internal/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:338) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1069) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) + +Thread[#9,Reference Handler,10,system] + java.base@21.0.6-internal/java.lang.ref.Reference.waitForReferencePendingList(Native Method) + java.base@21.0.6-internal/java.lang.ref.Reference.processPendingReferences(Reference.java:246) + java.base@21.0.6-internal/java.lang.ref.Reference$ReferenceHandler.run(Reference.java:208) + +Thread[#11,Signal Dispatcher,9,system] + +Thread[#1,main,5,main] + java.base@21.0.6-internal/java.lang.Thread.dumpThreads(Native Method) + java.base@21.0.6-internal/java.lang.Thread.getAllStackTraces(Thread.java:2522) + app//nextflow.util.SysHelper.dumpThreads(SysHelper.groovy:188) + app//nextflow.Session.abort(Session.groovy:800) + app//nextflow.script.ScriptRunner.execute(ScriptRunner.groovy:149) + app//nextflow.cli.CmdRun.run(CmdRun.groovy:376) + app//nextflow.cli.Launcher.run(Launcher.groovy:503) + app//nextflow.cli.Launcher.main(Launcher.groovy:658) + +Thread[#10,Finalizer,8,system] + java.base@21.0.6-internal/java.lang.Object.wait0(Native Method) + java.base@21.0.6-internal/java.lang.Object.wait(Object.java:366) + java.base@21.0.6-internal/java.lang.Object.wait(Object.java:339) + java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.await(NativeReferenceQueue.java:48) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:158) + java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.remove(NativeReferenceQueue.java:89) + java.base@21.0.6-internal/java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:173) + +May-27 13:22:51.963 [main] ERROR nextflow.cli.Launcher - Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf +java.nio.file.NoSuchFileException: Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf + at nextflow.script.IncludeDef.realModulePath(IncludeDef.groovy:184) + at nextflow.script.IncludeDef.load0(IncludeDef.groovy:112) + at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) + at Script_e3c35e79f690a4ec.runScript(Script_e3c35e79f690a4ec:11) + at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) + at nextflow.script.BaseScript.run0(BaseScript.groovy:159) + at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) + at nextflow.script.BaseScript.run(BaseScript.groovy:209) + at nextflow.script.ScriptParser.runScript(ScriptParser.groovy:236) + at nextflow.script.ScriptRunner.run(ScriptRunner.groovy:243) + at nextflow.script.ScriptRunner.execute(ScriptRunner.groovy:138) + at nextflow.cli.CmdRun.run(CmdRun.groovy:376) + at nextflow.cli.Launcher.run(Launcher.groovy:503) + at nextflow.cli.Launcher.main(Launcher.groovy:658) diff --git a/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/params.json b/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/params.json new file mode 100644 index 0000000..6f9a019 --- /dev/null +++ b/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/params.json @@ -0,0 +1 @@ +{"nf_test_output":"/home/trace/projects/proteinannotator/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta"} \ No newline at end of file diff --git a/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/std.err b/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/std.err new file mode 100644 index 0000000..5890cc1 --- /dev/null +++ b/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/std.err @@ -0,0 +1 @@ +Nextflow 25.04.2 is available - Please consider updating your version to it(B diff --git a/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/std.out b/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/std.out new file mode 100644 index 0000000..01213aa --- /dev/null +++ b/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/std.out @@ -0,0 +1,3 @@ +ERROR ~ No such file or directory: Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf + + -- Check script '/home/trace/projects/proteinannotator/.nf-test-5fe1b68b1633d10fa11759d4fe6e77d1.nf' at line: 11 or see '/home/trace/projects/proteinannotator/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/nextflow.log' file for more details diff --git a/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/trace.csv b/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/trace.csv new file mode 100644 index 0000000..6b739ac --- /dev/null +++ b/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/trace.csv @@ -0,0 +1 @@ +task_id hash native_id name status exit submit duration realtime %cpu peak_rss peak_vmem rchar wchar diff --git a/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/mock.nf b/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/mock.nf new file mode 100644 index 0000000..a2e1dfb --- /dev/null +++ b/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/mock.nf @@ -0,0 +1,83 @@ +import groovy.json.JsonGenerator +import groovy.json.JsonGenerator.Converter + +nextflow.enable.dsl=2 + +// comes from nf-test to store json files +params.nf_test_output = "" + +// include dependencies + + +// include test process +include { BLAST_MAKEBLASTDB } from '/home/trace/projects/proteinannotator/modules/nf-core/blast/makeblastdb/tests/../main.nf' + +// define custom rules for JSON that will be generated. +def jsonOutput = + new JsonGenerator.Options() + .addConverter(Path) { value -> value.toAbsolutePath().toString() } // Custom converter for Path. Only filename + .build() + +def jsonWorkflowOutput = new JsonGenerator.Options().excludeNulls().build() + + +workflow { + + // run dependencies + + + // process mapping + def input = [] + + input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.gz', checkIfExists: true) ] + + //---- + + //run process + BLAST_MAKEBLASTDB(*input) + + if (BLAST_MAKEBLASTDB.output){ + + // consumes all named output channels and stores items in a json file + for (def name in BLAST_MAKEBLASTDB.out.getNames()) { + serializeChannel(name, BLAST_MAKEBLASTDB.out.getProperty(name), jsonOutput) + } + + // consumes all unnamed output channels and stores items in a json file + def array = BLAST_MAKEBLASTDB.out as Object[] + for (def i = 0; i < array.length ; i++) { + serializeChannel(i, array[i], jsonOutput) + } + + } + +} + +def serializeChannel(name, channel, jsonOutput) { + def _name = name + def list = [ ] + channel.subscribe( + onNext: { + list.add(it) + }, + onComplete: { + def map = new HashMap() + map[_name] = list + def filename = "${params.nf_test_output}/output_${_name}.json" + new File(filename).text = jsonOutput.toJson(map) + } + ) +} + + +workflow.onComplete { + + def result = [ + success: workflow.success, + exitStatus: workflow.exitStatus, + errorMessage: workflow.errorMessage, + errorReport: workflow.errorReport + ] + new File("${params.nf_test_output}/workflow.json").text = jsonWorkflowOutput.toJson(result) + +} diff --git a/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/nextflow.log b/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/nextflow.log new file mode 100644 index 0000000..8ebaa89 --- /dev/null +++ b/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/nextflow.log @@ -0,0 +1,186 @@ +May-27 13:29:07.468 [main] DEBUG nextflow.cli.Launcher - $> nextflow -quiet -log /home/trace/projects/proteinannotator/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/nextflow.log run /home/trace/projects/proteinannotator/.nf-test-992768407bf21c36a1b8c45efb0d022f.nf -c /home/trace/projects/proteinannotator/nextflow.config -c /home/trace/projects/proteinannotator/modules/nf-core/blast/makeblastdb/tests/./nextflow.config -params-file /home/trace/projects/proteinannotator/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/params.json -ansi-log false -with-trace /home/trace/projects/proteinannotator/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/trace.csv -w /home/trace/projects/proteinannotator/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/work +May-27 13:29:07.572 [main] INFO nextflow.cli.CmdRun - N E X T F L O W ~ version 24.10.6 +May-27 13:29:07.605 [main] DEBUG nextflow.plugin.PluginsFacade - Setting up plugin manager > mode=prod; embedded=false; plugins-dir=/home/trace/.nextflow/plugins; core-plugins: nf-amazon@2.9.3,nf-azure@1.10.2,nf-cloudcache@0.4.2,nf-codecommit@0.2.2,nf-console@1.1.4,nf-google@1.15.4,nf-tower@1.9.3,nf-wave@1.7.5 +May-27 13:29:07.641 [main] INFO o.pf4j.DefaultPluginStatusProvider - Enabled plugins: [] +May-27 13:29:07.642 [main] INFO o.pf4j.DefaultPluginStatusProvider - Disabled plugins: [] +May-27 13:29:07.646 [main] INFO org.pf4j.DefaultPluginManager - PF4J version 3.12.0 in 'deployment' mode +May-27 13:29:07.662 [main] INFO org.pf4j.AbstractPluginManager - No plugins +May-27 13:29:07.694 [main] DEBUG nextflow.config.ConfigBuilder - Found config base: /home/trace/projects/proteinannotator/nextflow.config +May-27 13:29:07.700 [main] DEBUG nextflow.config.ConfigBuilder - User config file: /home/trace/projects/proteinannotator/nextflow.config +May-27 13:29:07.701 [main] DEBUG nextflow.config.ConfigBuilder - User config file: /home/trace/projects/proteinannotator/modules/nf-core/blast/makeblastdb/tests/./nextflow.config +May-27 13:29:07.703 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config +May-27 13:29:07.704 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config +May-27 13:29:07.704 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/modules/nf-core/blast/makeblastdb/tests/nextflow.config +May-27 13:29:07.743 [main] DEBUG n.secret.LocalSecretsProvider - Secrets store: /home/trace/.nextflow/secrets/store.json +May-27 13:29:07.749 [main] DEBUG nextflow.secret.SecretsLoader - Discovered secrets providers: [nextflow.secret.LocalSecretsProvider@2fb5fe30] - activable => nextflow.secret.LocalSecretsProvider@2fb5fe30 +May-27 13:29:07.777 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` +May-27 13:29:10.034 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` +May-27 13:29:10.664 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` +May-27 13:29:10.722 [main] DEBUG nextflow.cli.CmdRun - Applied DSL=2 from script declaration +May-27 13:29:10.738 [main] INFO nextflow.cli.CmdRun - Launching `/home/trace/projects/proteinannotator/.nf-test-992768407bf21c36a1b8c45efb0d022f.nf` [loving_kay] DSL2 - revision: 2d587e0a25 +May-27 13:29:10.739 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins declared=[nf-schema@2.3.0] +May-27 13:29:10.740 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins default=[] +May-27 13:29:10.740 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins resolved requirement=[nf-schema@2.3.0] +May-27 13:29:10.741 [main] DEBUG nextflow.plugin.PluginUpdater - Installing plugin nf-schema version: 2.3.0 +May-27 13:29:10.747 [main] INFO org.pf4j.AbstractPluginManager - Plugin 'nf-schema@2.3.0' resolved +May-27 13:29:10.748 [main] INFO org.pf4j.AbstractPluginManager - Start plugin 'nf-schema@2.3.0' +May-27 13:29:10.756 [main] DEBUG nextflow.plugin.BasePlugin - Plugin started nf-schema@2.3.0 +May-27 13:29:10.817 [main] DEBUG nextflow.Session - Session UUID: 18c37713-0a0c-4892-b134-9cacdaa1714e +May-27 13:29:10.817 [main] DEBUG nextflow.Session - Run name: loving_kay +May-27 13:29:10.818 [main] DEBUG nextflow.Session - Executor pool size: 8 +May-27 13:29:10.827 [main] DEBUG nextflow.file.FilePorter - File porter settings maxRetries=3; maxTransfers=50; pollTimeout=null +May-27 13:29:10.834 [main] DEBUG nextflow.util.ThreadPoolBuilder - Creating thread pool 'FileTransfer' minSize=10; maxSize=24; workQueue=LinkedBlockingQueue[-1]; allowCoreThreadTimeout=false +May-27 13:29:10.856 [main] DEBUG nextflow.cli.CmdRun - + Version: 24.10.6 build 5937 + Created: 23-04-2025 16:53 UTC (12:53 EDT) + System: Linux 6.1.0-33-amd64 + Runtime: Groovy 4.0.23 on OpenJDK 64-Bit Server VM 21.0.6-internal-adhoc.conda.src + Encoding: UTF-8 (UTF-8) + Process: 64717@lail-laptop [127.0.1.1] + CPUs: 8 - Mem: 7 GB (224 MB) - Swap: 977 MB (492 KB) +May-27 13:29:10.886 [main] DEBUG nextflow.Session - Work-dir: /home/trace/projects/proteinannotator/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/work [ext2/ext3] +May-27 13:29:10.886 [main] DEBUG nextflow.Session - Script base path does not exist or is not a directory: /home/trace/projects/proteinannotator/bin +May-27 13:29:10.900 [main] DEBUG nextflow.executor.ExecutorFactory - Extension executors providers=[] +May-27 13:29:10.914 [main] DEBUG nextflow.Session - Observer factory: DefaultObserverFactory +May-27 13:29:10.945 [main] DEBUG nextflow.Session - Observer factory: ValidationObserverFactory +May-27 13:29:11.032 [main] DEBUG nextflow.cache.CacheFactory - Using Nextflow cache factory: nextflow.cache.DefaultCacheFactory +May-27 13:29:11.043 [main] DEBUG nextflow.util.CustomThreadPool - Creating default thread pool > poolSize: 9; maxThreads: 1000 +May-27 13:29:11.108 [main] DEBUG nextflow.Session - Session start +May-27 13:29:11.111 [main] DEBUG nextflow.trace.TraceFileObserver - Workflow started -- trace file: /home/trace/projects/proteinannotator/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/trace.csv +May-27 13:29:11.418 [main] DEBUG nextflow.script.ScriptRunner - > Launching execution +May-27 13:29:11.639 [main] WARN nextflow.script.ScriptBinding - Access to undefined parameter `modules_testdata_base_path` -- Initialise it to a default value eg. `params.modules_testdata_base_path = some_value` +May-27 13:29:11.652 [main] DEBUG nextflow.script.ScriptRunner - Parsed script files: + Script_96efd502c24bd7ef: /home/trace/projects/proteinannotator/.nf-test-992768407bf21c36a1b8c45efb0d022f.nf + Script_fba48771bc5efb6e: /home/trace/projects/proteinannotator/modules/nf-core/blast/makeblastdb/tests/../main.nf +May-27 13:29:11.652 [main] DEBUG nextflow.Session - Session aborted -- Cause: /home/trace/projects/proteinannotator/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/nullgenomics/sarscov2/genome/genome.fasta.gz +May-27 13:29:11.656 [main] DEBUG nextflow.Session - +Thread[#9,Reference Handler,10,system] + java.base@21.0.6-internal/java.lang.ref.Reference.waitForReferencePendingList(Native Method) + java.base@21.0.6-internal/java.lang.ref.Reference.processPendingReferences(Reference.java:246) + java.base@21.0.6-internal/java.lang.ref.Reference$ReferenceHandler.run(Reference.java:208) + +Thread[#18,Common-Cleaner,8,InnocuousThreadGroup] + java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) + java.base@21.0.6-internal/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1852) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.await(ReferenceQueue.java:71) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:143) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:218) + java.base@21.0.6-internal/jdk.internal.ref.CleanerImpl.run(CleanerImpl.java:140) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) + +Thread[#11,Signal Dispatcher,9,system] + +Thread[#32,process reaper,10,InnocuousThreadGroup] + java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:410) + java.base@21.0.6-internal/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:338) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1069) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) + +Thread[#33,Thread-1,5,main] + java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) + java.base@21.0.6-internal/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1763) + java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.pollFirst(LinkedBlockingDeque.java:515) + java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.poll(LinkedBlockingDeque.java:677) + app//nextflow.util.SimpleAgent.run(SimpleAgent.groovy:89) + java.base@21.0.6-internal/java.lang.invoke.LambdaForm$DMH/0x00007fea6c19bc00.invokeVirtual(LambdaForm$DMH) + java.base@21.0.6-internal/java.lang.invoke.LambdaForm$MH/0x00007fea6c490000.invoke(LambdaForm$MH) + java.base@21.0.6-internal/java.lang.invoke.Invokers$Holder.invokeExact_MT(Invokers$Holder) + java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(DirectMethodHandleAccessor.java:153) + java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + java.base@21.0.6-internal/java.lang.reflect.Method.invoke(Method.java:580) + app//org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343) + app//groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:328) + app//groovy.lang.MetaClassImpl.doInvokeMethod(MetaClassImpl.java:1333) + app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1088) + app//groovy.lang.MetaClassImpl.invokeMethodClosure(MetaClassImpl.java:1017) + app//groovy.lang.MetaClassImpl.doInvokeMethod(MetaClassImpl.java:1207) + app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1088) + app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1007) + app//groovy.lang.Closure.call(Closure.java:433) + app//groovy.lang.Closure.call(Closure.java:412) + app//groovy.lang.Closure.run(Closure.java:505) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + +Thread[#1,main,5,main] + java.base@21.0.6-internal/java.lang.Thread.dumpThreads(Native Method) + java.base@21.0.6-internal/java.lang.Thread.getAllStackTraces(Thread.java:2522) + app//nextflow.util.SysHelper.dumpThreads(SysHelper.groovy:188) + app//nextflow.Session.abort(Session.groovy:800) + app//nextflow.script.ScriptRunner.execute(ScriptRunner.groovy:149) + app//nextflow.cli.CmdRun.run(CmdRun.groovy:376) + app//nextflow.cli.Launcher.run(Launcher.groovy:503) + app//nextflow.cli.Launcher.main(Launcher.groovy:658) + +Thread[#10,Finalizer,8,system] + java.base@21.0.6-internal/java.lang.Object.wait0(Native Method) + java.base@21.0.6-internal/java.lang.Object.wait(Object.java:366) + java.base@21.0.6-internal/java.lang.Object.wait(Object.java:339) + java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.await(NativeReferenceQueue.java:48) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:158) + java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.remove(NativeReferenceQueue.java:89) + java.base@21.0.6-internal/java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:173) + +Thread[#34,Actor Thread 1,5,main] + java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.6-internal/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:458) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.take(SynchronousQueue.java:318) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + +Thread[#19,Notification Thread,9,system] + +Thread[#31,Keep-Alive-Timer,8,InnocuousThreadGroup] + java.base@21.0.6-internal/java.lang.Thread.sleep0(Native Method) + java.base@21.0.6-internal/java.lang.Thread.sleep(Thread.java:509) + java.base@21.0.6-internal/sun.net.www.http.KeepAliveCache.run(KeepAliveCache.java:238) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) + +May-27 13:29:11.669 [main] ERROR nextflow.cli.Launcher - /home/trace/projects/proteinannotator/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/nullgenomics/sarscov2/genome/genome.fasta.gz +java.nio.file.NoSuchFileException: /home/trace/projects/proteinannotator/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/nullgenomics/sarscov2/genome/genome.fasta.gz + at nextflow.file.FileHelper.checkIfExists(FileHelper.groovy:1099) + at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) + at nextflow.Nextflow.file(Nextflow.groovy:123) + at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) + at Script_96efd502c24bd7ef$_runScript_closure4$_closure6.doCall(Script_96efd502c24bd7ef:32) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343) + at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:328) + at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:279) + at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1007) + at groovy.lang.Closure.call(Closure.java:433) + at groovy.lang.Closure.call(Closure.java:412) + at nextflow.script.WorkflowDef.run0(WorkflowDef.groovy:204) + at nextflow.script.WorkflowDef.run(WorkflowDef.groovy:188) + at nextflow.script.BindableDef.invoke_a(BindableDef.groovy:51) + at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) + at nextflow.script.BaseScript.run0(BaseScript.groovy:198) + at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) + at nextflow.script.BaseScript.run(BaseScript.groovy:209) + at nextflow.script.ScriptParser.runScript(ScriptParser.groovy:236) + at nextflow.script.ScriptRunner.run(ScriptRunner.groovy:243) + at nextflow.script.ScriptRunner.execute(ScriptRunner.groovy:138) + at nextflow.cli.CmdRun.run(CmdRun.groovy:376) + at nextflow.cli.Launcher.run(Launcher.groovy:503) + at nextflow.cli.Launcher.main(Launcher.groovy:658) diff --git a/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/params.json b/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/params.json new file mode 100644 index 0000000..b9005cf --- /dev/null +++ b/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/params.json @@ -0,0 +1 @@ +{"nf_test_output":"/home/trace/projects/proteinannotator/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta"} \ No newline at end of file diff --git a/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/std.err b/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/std.err new file mode 100644 index 0000000..5890cc1 --- /dev/null +++ b/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/std.err @@ -0,0 +1 @@ +Nextflow 25.04.2 is available - Please consider updating your version to it(B diff --git a/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/std.out b/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/std.out new file mode 100644 index 0000000..c15048a --- /dev/null +++ b/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/std.out @@ -0,0 +1,3 @@ +ERROR ~ No such file or directory: /home/trace/projects/proteinannotator/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/nullgenomics/sarscov2/genome/genome.fasta.gz + + -- Check script '/home/trace/projects/proteinannotator/.nf-test-992768407bf21c36a1b8c45efb0d022f.nf' at line: 32 or see '/home/trace/projects/proteinannotator/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/nextflow.log' file for more details diff --git a/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/trace.csv b/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/trace.csv new file mode 100644 index 0000000..6b739ac --- /dev/null +++ b/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/trace.csv @@ -0,0 +1 @@ +task_id hash native_id name status exit submit duration realtime %cpu peak_rss peak_vmem rchar wchar diff --git a/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/mock.nf b/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/mock.nf new file mode 100644 index 0000000..47873f5 --- /dev/null +++ b/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/mock.nf @@ -0,0 +1,99 @@ +import groovy.json.JsonGenerator +import groovy.json.JsonGenerator.Converter + +nextflow.enable.dsl=2 + +// comes from nf-test to store json files +params.nf_test_output = "" + +// include dependencies + +include { DIAMOND_MAKEDB } from '/home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf' + + +// include test process +include { DIAMOND_BLASTP } from '/home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../main.nf' + +// define custom rules for JSON that will be generated. +def jsonOutput = + new JsonGenerator.Options() + .addConverter(Path) { value -> value.toAbsolutePath().toString() } // Custom converter for Path. Only filename + .build() + +def jsonWorkflowOutput = new JsonGenerator.Options().excludeNulls().build() + + +workflow { + + // run dependencies + + { + def input = [] + + input[0] = [ [id:'test2'], [ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] ] + input[1] = [] + input[2] = [] + input[3] = [] + + DIAMOND_MAKEDB(*input) + } + + + // process mapping + def input = [] + + input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta.gz', checkIfExists: true) ] + input[1] = DIAMOND_MAKEDB.out.db + input[2] = 6 + input[3] = 'qseqid qlen' + + //---- + + //run process + DIAMOND_BLASTP(*input) + + if (DIAMOND_BLASTP.output){ + + // consumes all named output channels and stores items in a json file + for (def name in DIAMOND_BLASTP.out.getNames()) { + serializeChannel(name, DIAMOND_BLASTP.out.getProperty(name), jsonOutput) + } + + // consumes all unnamed output channels and stores items in a json file + def array = DIAMOND_BLASTP.out as Object[] + for (def i = 0; i < array.length ; i++) { + serializeChannel(i, array[i], jsonOutput) + } + + } + +} + +def serializeChannel(name, channel, jsonOutput) { + def _name = name + def list = [ ] + channel.subscribe( + onNext: { + list.add(it) + }, + onComplete: { + def map = new HashMap() + map[_name] = list + def filename = "${params.nf_test_output}/output_${_name}.json" + new File(filename).text = jsonOutput.toJson(map) + } + ) +} + + +workflow.onComplete { + + def result = [ + success: workflow.success, + exitStatus: workflow.exitStatus, + errorMessage: workflow.errorMessage, + errorReport: workflow.errorReport + ] + new File("${params.nf_test_output}/workflow.json").text = jsonWorkflowOutput.toJson(result) + +} diff --git a/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/nextflow.log b/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/nextflow.log new file mode 100644 index 0000000..fed441e --- /dev/null +++ b/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/nextflow.log @@ -0,0 +1,169 @@ +May-27 13:22:35.640 [main] DEBUG nextflow.cli.Launcher - $> nextflow -quiet -log /home/trace/projects/proteinannotator/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/nextflow.log run /home/trace/projects/proteinannotator/.nf-test-a260ceea709dc0bf58d9c19bcab59e27.nf -c /home/trace/projects/proteinannotator/nextflow.config -params-file /home/trace/projects/proteinannotator/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/params.json -ansi-log false -with-trace /home/trace/projects/proteinannotator/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/trace.csv -w /home/trace/projects/proteinannotator/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/work +May-27 13:22:35.755 [main] INFO nextflow.cli.CmdRun - N E X T F L O W ~ version 24.10.6 +May-27 13:22:35.790 [main] DEBUG nextflow.plugin.PluginsFacade - Setting up plugin manager > mode=prod; embedded=false; plugins-dir=/home/trace/.nextflow/plugins; core-plugins: nf-amazon@2.9.3,nf-azure@1.10.2,nf-cloudcache@0.4.2,nf-codecommit@0.2.2,nf-console@1.1.4,nf-google@1.15.4,nf-tower@1.9.3,nf-wave@1.7.5 +May-27 13:22:35.826 [main] INFO o.pf4j.DefaultPluginStatusProvider - Enabled plugins: [] +May-27 13:22:35.827 [main] INFO o.pf4j.DefaultPluginStatusProvider - Disabled plugins: [] +May-27 13:22:35.832 [main] INFO org.pf4j.DefaultPluginManager - PF4J version 3.12.0 in 'deployment' mode +May-27 13:22:35.852 [main] INFO org.pf4j.AbstractPluginManager - No plugins +May-27 13:22:35.888 [main] DEBUG nextflow.config.ConfigBuilder - Found config base: /home/trace/projects/proteinannotator/nextflow.config +May-27 13:22:35.896 [main] DEBUG nextflow.config.ConfigBuilder - User config file: /home/trace/projects/proteinannotator/nextflow.config +May-27 13:22:35.899 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config +May-27 13:22:35.901 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config +May-27 13:22:35.951 [main] DEBUG n.secret.LocalSecretsProvider - Secrets store: /home/trace/.nextflow/secrets/store.json +May-27 13:22:35.959 [main] DEBUG nextflow.secret.SecretsLoader - Discovered secrets providers: [nextflow.secret.LocalSecretsProvider@2fb5fe30] - activable => nextflow.secret.LocalSecretsProvider@2fb5fe30 +May-27 13:22:35.997 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` +May-27 13:22:38.503 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` +May-27 13:22:39.196 [main] DEBUG nextflow.cli.CmdRun - Applied DSL=2 from script declaration +May-27 13:22:39.213 [main] INFO nextflow.cli.CmdRun - Launching `/home/trace/projects/proteinannotator/.nf-test-a260ceea709dc0bf58d9c19bcab59e27.nf` [admiring_knuth] DSL2 - revision: 011cf4f3fc +May-27 13:22:39.214 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins declared=[nf-schema@2.3.0] +May-27 13:22:39.215 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins default=[] +May-27 13:22:39.215 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins resolved requirement=[nf-schema@2.3.0] +May-27 13:22:39.215 [main] DEBUG nextflow.plugin.PluginUpdater - Installing plugin nf-schema version: 2.3.0 +May-27 13:22:39.222 [main] INFO org.pf4j.AbstractPluginManager - Plugin 'nf-schema@2.3.0' resolved +May-27 13:22:39.223 [main] INFO org.pf4j.AbstractPluginManager - Start plugin 'nf-schema@2.3.0' +May-27 13:22:39.231 [main] DEBUG nextflow.plugin.BasePlugin - Plugin started nf-schema@2.3.0 +May-27 13:22:39.293 [main] DEBUG nextflow.Session - Session UUID: 50b84080-fa16-4e51-8245-27c728f1480d +May-27 13:22:39.294 [main] DEBUG nextflow.Session - Run name: admiring_knuth +May-27 13:22:39.295 [main] DEBUG nextflow.Session - Executor pool size: 8 +May-27 13:22:39.304 [main] DEBUG nextflow.file.FilePorter - File porter settings maxRetries=3; maxTransfers=50; pollTimeout=null +May-27 13:22:39.312 [main] DEBUG nextflow.util.ThreadPoolBuilder - Creating thread pool 'FileTransfer' minSize=10; maxSize=24; workQueue=LinkedBlockingQueue[-1]; allowCoreThreadTimeout=false +May-27 13:22:39.336 [main] DEBUG nextflow.cli.CmdRun - + Version: 24.10.6 build 5937 + Created: 23-04-2025 16:53 UTC (12:53 EDT) + System: Linux 6.1.0-33-amd64 + Runtime: Groovy 4.0.23 on OpenJDK 64-Bit Server VM 21.0.6-internal-adhoc.conda.src + Encoding: UTF-8 (UTF-8) + Process: 62189@lail-laptop [127.0.1.1] + CPUs: 8 - Mem: 7 GB (432.5 MB) - Swap: 977 MB (2.2 MB) +May-27 13:22:39.368 [main] DEBUG nextflow.Session - Work-dir: /home/trace/projects/proteinannotator/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/work [ext2/ext3] +May-27 13:22:39.369 [main] DEBUG nextflow.Session - Script base path does not exist or is not a directory: /home/trace/projects/proteinannotator/bin +May-27 13:22:39.381 [main] DEBUG nextflow.executor.ExecutorFactory - Extension executors providers=[] +May-27 13:22:39.392 [main] DEBUG nextflow.Session - Observer factory: DefaultObserverFactory +May-27 13:22:39.419 [main] DEBUG nextflow.Session - Observer factory: ValidationObserverFactory +May-27 13:22:39.514 [main] DEBUG nextflow.cache.CacheFactory - Using Nextflow cache factory: nextflow.cache.DefaultCacheFactory +May-27 13:22:39.526 [main] DEBUG nextflow.util.CustomThreadPool - Creating default thread pool > poolSize: 9; maxThreads: 1000 +May-27 13:22:39.607 [main] DEBUG nextflow.Session - Session start +May-27 13:22:39.610 [main] DEBUG nextflow.trace.TraceFileObserver - Workflow started -- trace file: /home/trace/projects/proteinannotator/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/trace.csv +May-27 13:22:39.915 [main] DEBUG nextflow.script.ScriptRunner - > Launching execution +May-27 13:22:39.934 [main] DEBUG nextflow.script.ScriptRunner - Parsed script files: + Script_226fa0985fbc84f4: /home/trace/projects/proteinannotator/.nf-test-a260ceea709dc0bf58d9c19bcab59e27.nf +May-27 13:22:39.935 [main] DEBUG nextflow.Session - Session aborted -- Cause: Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf +May-27 13:22:39.940 [main] DEBUG nextflow.Session - +Thread[#18,Common-Cleaner,8,InnocuousThreadGroup] + java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) + java.base@21.0.6-internal/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1852) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.await(ReferenceQueue.java:71) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:143) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:218) + java.base@21.0.6-internal/jdk.internal.ref.CleanerImpl.run(CleanerImpl.java:140) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) + +Thread[#31,Keep-Alive-Timer,8,InnocuousThreadGroup] + java.base@21.0.6-internal/java.lang.Thread.sleep0(Native Method) + java.base@21.0.6-internal/java.lang.Thread.sleep(Thread.java:509) + java.base@21.0.6-internal/sun.net.www.http.KeepAliveCache.run(KeepAliveCache.java:238) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) + +Thread[#32,process reaper,10,InnocuousThreadGroup] + java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:410) + java.base@21.0.6-internal/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:338) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1069) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) + +Thread[#10,Finalizer,8,system] + java.base@21.0.6-internal/java.lang.Object.wait0(Native Method) + java.base@21.0.6-internal/java.lang.Object.wait(Object.java:366) + java.base@21.0.6-internal/java.lang.Object.wait(Object.java:339) + java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.await(NativeReferenceQueue.java:48) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:158) + java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.remove(NativeReferenceQueue.java:89) + java.base@21.0.6-internal/java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:173) + +Thread[#19,Notification Thread,9,system] + +Thread[#33,Thread-1,5,main] + java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) + java.base@21.0.6-internal/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1763) + java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.pollFirst(LinkedBlockingDeque.java:515) + java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.poll(LinkedBlockingDeque.java:677) + app//nextflow.util.SimpleAgent.run(SimpleAgent.groovy:89) + java.base@21.0.6-internal/java.lang.invoke.LambdaForm$DMH/0x00007f358819bc00.invokeVirtual(LambdaForm$DMH) + java.base@21.0.6-internal/java.lang.invoke.LambdaForm$MH/0x00007f3588490000.invoke(LambdaForm$MH) + java.base@21.0.6-internal/java.lang.invoke.Invokers$Holder.invokeExact_MT(Invokers$Holder) + java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(DirectMethodHandleAccessor.java:153) + java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + java.base@21.0.6-internal/java.lang.reflect.Method.invoke(Method.java:580) + app//org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343) + app//groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:328) + app//groovy.lang.MetaClassImpl.doInvokeMethod(MetaClassImpl.java:1333) + app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1088) + app//groovy.lang.MetaClassImpl.invokeMethodClosure(MetaClassImpl.java:1017) + app//groovy.lang.MetaClassImpl.doInvokeMethod(MetaClassImpl.java:1207) + app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1088) + app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1007) + app//groovy.lang.Closure.call(Closure.java:433) + app//groovy.lang.Closure.call(Closure.java:412) + app//groovy.lang.Closure.run(Closure.java:505) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + +Thread[#9,Reference Handler,10,system] + java.base@21.0.6-internal/java.lang.ref.Reference.waitForReferencePendingList(Native Method) + java.base@21.0.6-internal/java.lang.ref.Reference.processPendingReferences(Reference.java:246) + java.base@21.0.6-internal/java.lang.ref.Reference$ReferenceHandler.run(Reference.java:208) + +Thread[#34,Actor Thread 1,5,main] + java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.6-internal/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:458) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.take(SynchronousQueue.java:318) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + +Thread[#11,Signal Dispatcher,9,system] + +Thread[#1,main,5,main] + java.base@21.0.6-internal/java.lang.Thread.dumpThreads(Native Method) + java.base@21.0.6-internal/java.lang.Thread.getAllStackTraces(Thread.java:2522) + app//nextflow.util.SysHelper.dumpThreads(SysHelper.groovy:188) + app//nextflow.Session.abort(Session.groovy:800) + app//nextflow.script.ScriptRunner.execute(ScriptRunner.groovy:149) + app//nextflow.cli.CmdRun.run(CmdRun.groovy:376) + app//nextflow.cli.Launcher.run(Launcher.groovy:503) + app//nextflow.cli.Launcher.main(Launcher.groovy:658) + +May-27 13:22:39.950 [main] ERROR nextflow.cli.Launcher - Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf +java.nio.file.NoSuchFileException: Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf + at nextflow.script.IncludeDef.realModulePath(IncludeDef.groovy:184) + at nextflow.script.IncludeDef.load0(IncludeDef.groovy:112) + at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) + at Script_226fa0985fbc84f4.runScript(Script_226fa0985fbc84f4:11) + at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) + at nextflow.script.BaseScript.run0(BaseScript.groovy:159) + at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) + at nextflow.script.BaseScript.run(BaseScript.groovy:209) + at nextflow.script.ScriptParser.runScript(ScriptParser.groovy:236) + at nextflow.script.ScriptRunner.run(ScriptRunner.groovy:243) + at nextflow.script.ScriptRunner.execute(ScriptRunner.groovy:138) + at nextflow.cli.CmdRun.run(CmdRun.groovy:376) + at nextflow.cli.Launcher.run(Launcher.groovy:503) + at nextflow.cli.Launcher.main(Launcher.groovy:658) diff --git a/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/params.json b/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/params.json new file mode 100644 index 0000000..bee6d71 --- /dev/null +++ b/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/params.json @@ -0,0 +1 @@ +{"nf_test_output":"/home/trace/projects/proteinannotator/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta"} \ No newline at end of file diff --git a/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/std.err b/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/std.err new file mode 100644 index 0000000..5890cc1 --- /dev/null +++ b/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/std.err @@ -0,0 +1 @@ +Nextflow 25.04.2 is available - Please consider updating your version to it(B diff --git a/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/std.out b/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/std.out new file mode 100644 index 0000000..8955dc4 --- /dev/null +++ b/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/std.out @@ -0,0 +1,3 @@ +ERROR ~ No such file or directory: Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf + + -- Check script '/home/trace/projects/proteinannotator/.nf-test-a260ceea709dc0bf58d9c19bcab59e27.nf' at line: 11 or see '/home/trace/projects/proteinannotator/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/nextflow.log' file for more details diff --git a/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/trace.csv b/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/trace.csv new file mode 100644 index 0000000..6b739ac --- /dev/null +++ b/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/trace.csv @@ -0,0 +1 @@ +task_id hash native_id name status exit submit duration realtime %cpu peak_rss peak_vmem rchar wchar diff --git a/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/mock.nf b/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/mock.nf new file mode 100644 index 0000000..7e407de --- /dev/null +++ b/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/mock.nf @@ -0,0 +1,99 @@ +import groovy.json.JsonGenerator +import groovy.json.JsonGenerator.Converter + +nextflow.enable.dsl=2 + +// comes from nf-test to store json files +params.nf_test_output = "" + +// include dependencies + +include { DIAMOND_MAKEDB } from '/home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf' + + +// include test process +include { DIAMOND_BLASTP } from '/home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../main.nf' + +// define custom rules for JSON that will be generated. +def jsonOutput = + new JsonGenerator.Options() + .addConverter(Path) { value -> value.toAbsolutePath().toString() } // Custom converter for Path. Only filename + .build() + +def jsonWorkflowOutput = new JsonGenerator.Options().excludeNulls().build() + + +workflow { + + // run dependencies + + { + def input = [] + + input[0] = [ [id:'test2'], [ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] ] + input[1] = [] + input[2] = [] + input[3] = [] + + DIAMOND_MAKEDB(*input) + } + + + // process mapping + def input = [] + + input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] + input[1] = DIAMOND_MAKEDB.out.db + input[2] = 6 + input[3] = 'qseqid qlen' + + //---- + + //run process + DIAMOND_BLASTP(*input) + + if (DIAMOND_BLASTP.output){ + + // consumes all named output channels and stores items in a json file + for (def name in DIAMOND_BLASTP.out.getNames()) { + serializeChannel(name, DIAMOND_BLASTP.out.getProperty(name), jsonOutput) + } + + // consumes all unnamed output channels and stores items in a json file + def array = DIAMOND_BLASTP.out as Object[] + for (def i = 0; i < array.length ; i++) { + serializeChannel(i, array[i], jsonOutput) + } + + } + +} + +def serializeChannel(name, channel, jsonOutput) { + def _name = name + def list = [ ] + channel.subscribe( + onNext: { + list.add(it) + }, + onComplete: { + def map = new HashMap() + map[_name] = list + def filename = "${params.nf_test_output}/output_${_name}.json" + new File(filename).text = jsonOutput.toJson(map) + } + ) +} + + +workflow.onComplete { + + def result = [ + success: workflow.success, + exitStatus: workflow.exitStatus, + errorMessage: workflow.errorMessage, + errorReport: workflow.errorReport + ] + new File("${params.nf_test_output}/workflow.json").text = jsonWorkflowOutput.toJson(result) + +} diff --git a/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/nextflow.log b/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/nextflow.log new file mode 100644 index 0000000..b8e680c --- /dev/null +++ b/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/nextflow.log @@ -0,0 +1,169 @@ +May-27 13:22:29.684 [main] DEBUG nextflow.cli.Launcher - $> nextflow -quiet -log /home/trace/projects/proteinannotator/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/nextflow.log run /home/trace/projects/proteinannotator/.nf-test-d44daec0656fd514e1f90b15d37109eb.nf -c /home/trace/projects/proteinannotator/nextflow.config -params-file /home/trace/projects/proteinannotator/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/params.json -ansi-log false -with-trace /home/trace/projects/proteinannotator/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/trace.csv -w /home/trace/projects/proteinannotator/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/work +May-27 13:22:29.818 [main] INFO nextflow.cli.CmdRun - N E X T F L O W ~ version 24.10.6 +May-27 13:22:29.857 [main] DEBUG nextflow.plugin.PluginsFacade - Setting up plugin manager > mode=prod; embedded=false; plugins-dir=/home/trace/.nextflow/plugins; core-plugins: nf-amazon@2.9.3,nf-azure@1.10.2,nf-cloudcache@0.4.2,nf-codecommit@0.2.2,nf-console@1.1.4,nf-google@1.15.4,nf-tower@1.9.3,nf-wave@1.7.5 +May-27 13:22:29.897 [main] INFO o.pf4j.DefaultPluginStatusProvider - Enabled plugins: [] +May-27 13:22:29.898 [main] INFO o.pf4j.DefaultPluginStatusProvider - Disabled plugins: [] +May-27 13:22:29.904 [main] INFO org.pf4j.DefaultPluginManager - PF4J version 3.12.0 in 'deployment' mode +May-27 13:22:29.926 [main] INFO org.pf4j.AbstractPluginManager - No plugins +May-27 13:22:29.960 [main] DEBUG nextflow.config.ConfigBuilder - Found config base: /home/trace/projects/proteinannotator/nextflow.config +May-27 13:22:29.968 [main] DEBUG nextflow.config.ConfigBuilder - User config file: /home/trace/projects/proteinannotator/nextflow.config +May-27 13:22:29.970 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config +May-27 13:22:29.971 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config +May-27 13:22:30.023 [main] DEBUG n.secret.LocalSecretsProvider - Secrets store: /home/trace/.nextflow/secrets/store.json +May-27 13:22:30.030 [main] DEBUG nextflow.secret.SecretsLoader - Discovered secrets providers: [nextflow.secret.LocalSecretsProvider@2fb5fe30] - activable => nextflow.secret.LocalSecretsProvider@2fb5fe30 +May-27 13:22:30.063 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` +May-27 13:22:32.615 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` +May-27 13:22:33.257 [main] DEBUG nextflow.cli.CmdRun - Applied DSL=2 from script declaration +May-27 13:22:33.279 [main] INFO nextflow.cli.CmdRun - Launching `/home/trace/projects/proteinannotator/.nf-test-d44daec0656fd514e1f90b15d37109eb.nf` [hungry_linnaeus] DSL2 - revision: a1ca7e6f26 +May-27 13:22:33.280 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins declared=[nf-schema@2.3.0] +May-27 13:22:33.281 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins default=[] +May-27 13:22:33.281 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins resolved requirement=[nf-schema@2.3.0] +May-27 13:22:33.281 [main] DEBUG nextflow.plugin.PluginUpdater - Installing plugin nf-schema version: 2.3.0 +May-27 13:22:33.289 [main] INFO org.pf4j.AbstractPluginManager - Plugin 'nf-schema@2.3.0' resolved +May-27 13:22:33.290 [main] INFO org.pf4j.AbstractPluginManager - Start plugin 'nf-schema@2.3.0' +May-27 13:22:33.301 [main] DEBUG nextflow.plugin.BasePlugin - Plugin started nf-schema@2.3.0 +May-27 13:22:33.366 [main] DEBUG nextflow.Session - Session UUID: 94dab4df-58c6-43ff-b277-669e1cf2e43b +May-27 13:22:33.366 [main] DEBUG nextflow.Session - Run name: hungry_linnaeus +May-27 13:22:33.367 [main] DEBUG nextflow.Session - Executor pool size: 8 +May-27 13:22:33.376 [main] DEBUG nextflow.file.FilePorter - File porter settings maxRetries=3; maxTransfers=50; pollTimeout=null +May-27 13:22:33.383 [main] DEBUG nextflow.util.ThreadPoolBuilder - Creating thread pool 'FileTransfer' minSize=10; maxSize=24; workQueue=LinkedBlockingQueue[-1]; allowCoreThreadTimeout=false +May-27 13:22:33.411 [main] DEBUG nextflow.cli.CmdRun - + Version: 24.10.6 build 5937 + Created: 23-04-2025 16:53 UTC (12:53 EDT) + System: Linux 6.1.0-33-amd64 + Runtime: Groovy 4.0.23 on OpenJDK 64-Bit Server VM 21.0.6-internal-adhoc.conda.src + Encoding: UTF-8 (UTF-8) + Process: 62075@lail-laptop [127.0.1.1] + CPUs: 8 - Mem: 7 GB (431.8 MB) - Swap: 977 MB (2.2 MB) +May-27 13:22:33.443 [main] DEBUG nextflow.Session - Work-dir: /home/trace/projects/proteinannotator/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/work [ext2/ext3] +May-27 13:22:33.443 [main] DEBUG nextflow.Session - Script base path does not exist or is not a directory: /home/trace/projects/proteinannotator/bin +May-27 13:22:33.457 [main] DEBUG nextflow.executor.ExecutorFactory - Extension executors providers=[] +May-27 13:22:33.470 [main] DEBUG nextflow.Session - Observer factory: DefaultObserverFactory +May-27 13:22:33.499 [main] DEBUG nextflow.Session - Observer factory: ValidationObserverFactory +May-27 13:22:33.590 [main] DEBUG nextflow.cache.CacheFactory - Using Nextflow cache factory: nextflow.cache.DefaultCacheFactory +May-27 13:22:33.603 [main] DEBUG nextflow.util.CustomThreadPool - Creating default thread pool > poolSize: 9; maxThreads: 1000 +May-27 13:22:33.682 [main] DEBUG nextflow.Session - Session start +May-27 13:22:33.685 [main] DEBUG nextflow.trace.TraceFileObserver - Workflow started -- trace file: /home/trace/projects/proteinannotator/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/trace.csv +May-27 13:22:33.961 [main] DEBUG nextflow.script.ScriptRunner - > Launching execution +May-27 13:22:33.976 [main] DEBUG nextflow.script.ScriptRunner - Parsed script files: + Script_e3c35e79f690a4ec: /home/trace/projects/proteinannotator/.nf-test-d44daec0656fd514e1f90b15d37109eb.nf +May-27 13:22:33.976 [main] DEBUG nextflow.Session - Session aborted -- Cause: Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf +May-27 13:22:33.980 [main] DEBUG nextflow.Session - +Thread[#11,Signal Dispatcher,9,system] + +Thread[#19,Notification Thread,9,system] + +Thread[#31,Keep-Alive-Timer,8,InnocuousThreadGroup] + java.base@21.0.6-internal/java.lang.Thread.sleep0(Native Method) + java.base@21.0.6-internal/java.lang.Thread.sleep(Thread.java:509) + java.base@21.0.6-internal/sun.net.www.http.KeepAliveCache.run(KeepAliveCache.java:238) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) + +Thread[#9,Reference Handler,10,system] + java.base@21.0.6-internal/java.lang.ref.Reference.waitForReferencePendingList(Native Method) + java.base@21.0.6-internal/java.lang.ref.Reference.processPendingReferences(Reference.java:246) + java.base@21.0.6-internal/java.lang.ref.Reference$ReferenceHandler.run(Reference.java:208) + +Thread[#34,Actor Thread 1,5,main] + java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.6-internal/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:458) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.take(SynchronousQueue.java:318) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + +Thread[#18,Common-Cleaner,8,InnocuousThreadGroup] + java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) + java.base@21.0.6-internal/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1852) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.await(ReferenceQueue.java:71) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:143) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:218) + java.base@21.0.6-internal/jdk.internal.ref.CleanerImpl.run(CleanerImpl.java:140) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) + +Thread[#32,process reaper,10,InnocuousThreadGroup] + java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:410) + java.base@21.0.6-internal/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:338) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1069) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) + +Thread[#33,Thread-1,5,main] + java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) + java.base@21.0.6-internal/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1763) + java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.pollFirst(LinkedBlockingDeque.java:515) + java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.poll(LinkedBlockingDeque.java:677) + app//nextflow.util.SimpleAgent.run(SimpleAgent.groovy:89) + java.base@21.0.6-internal/java.lang.invoke.LambdaForm$DMH/0x00007f2ed019bc00.invokeVirtual(LambdaForm$DMH) + java.base@21.0.6-internal/java.lang.invoke.LambdaForm$MH/0x00007f2ed048c800.invoke(LambdaForm$MH) + java.base@21.0.6-internal/java.lang.invoke.Invokers$Holder.invokeExact_MT(Invokers$Holder) + java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(DirectMethodHandleAccessor.java:153) + java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + java.base@21.0.6-internal/java.lang.reflect.Method.invoke(Method.java:580) + app//org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343) + app//groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:328) + app//groovy.lang.MetaClassImpl.doInvokeMethod(MetaClassImpl.java:1333) + app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1088) + app//groovy.lang.MetaClassImpl.invokeMethodClosure(MetaClassImpl.java:1017) + app//groovy.lang.MetaClassImpl.doInvokeMethod(MetaClassImpl.java:1207) + app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1088) + app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1007) + app//groovy.lang.Closure.call(Closure.java:433) + app//groovy.lang.Closure.call(Closure.java:412) + app//groovy.lang.Closure.run(Closure.java:505) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + +Thread[#10,Finalizer,8,system] + java.base@21.0.6-internal/java.lang.Object.wait0(Native Method) + java.base@21.0.6-internal/java.lang.Object.wait(Object.java:366) + java.base@21.0.6-internal/java.lang.Object.wait(Object.java:339) + java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.await(NativeReferenceQueue.java:48) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:158) + java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.remove(NativeReferenceQueue.java:89) + java.base@21.0.6-internal/java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:173) + +Thread[#1,main,5,main] + java.base@21.0.6-internal/java.lang.Thread.dumpThreads(Native Method) + java.base@21.0.6-internal/java.lang.Thread.getAllStackTraces(Thread.java:2522) + app//nextflow.util.SysHelper.dumpThreads(SysHelper.groovy:188) + app//nextflow.Session.abort(Session.groovy:800) + app//nextflow.script.ScriptRunner.execute(ScriptRunner.groovy:149) + app//nextflow.cli.CmdRun.run(CmdRun.groovy:376) + app//nextflow.cli.Launcher.run(Launcher.groovy:503) + app//nextflow.cli.Launcher.main(Launcher.groovy:658) + +May-27 13:22:33.989 [main] ERROR nextflow.cli.Launcher - Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf +java.nio.file.NoSuchFileException: Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf + at nextflow.script.IncludeDef.realModulePath(IncludeDef.groovy:184) + at nextflow.script.IncludeDef.load0(IncludeDef.groovy:112) + at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) + at Script_e3c35e79f690a4ec.runScript(Script_e3c35e79f690a4ec:11) + at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) + at nextflow.script.BaseScript.run0(BaseScript.groovy:159) + at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) + at nextflow.script.BaseScript.run(BaseScript.groovy:209) + at nextflow.script.ScriptParser.runScript(ScriptParser.groovy:236) + at nextflow.script.ScriptRunner.run(ScriptRunner.groovy:243) + at nextflow.script.ScriptRunner.execute(ScriptRunner.groovy:138) + at nextflow.cli.CmdRun.run(CmdRun.groovy:376) + at nextflow.cli.Launcher.run(Launcher.groovy:503) + at nextflow.cli.Launcher.main(Launcher.groovy:658) diff --git a/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/params.json b/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/params.json new file mode 100644 index 0000000..b523f71 --- /dev/null +++ b/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/params.json @@ -0,0 +1 @@ +{"nf_test_output":"/home/trace/projects/proteinannotator/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta"} \ No newline at end of file diff --git a/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/std.err b/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/std.err new file mode 100644 index 0000000..5890cc1 --- /dev/null +++ b/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/std.err @@ -0,0 +1 @@ +Nextflow 25.04.2 is available - Please consider updating your version to it(B diff --git a/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/std.out b/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/std.out new file mode 100644 index 0000000..f90b6b5 --- /dev/null +++ b/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/std.out @@ -0,0 +1,3 @@ +ERROR ~ No such file or directory: Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf + + -- Check script '/home/trace/projects/proteinannotator/.nf-test-d44daec0656fd514e1f90b15d37109eb.nf' at line: 11 or see '/home/trace/projects/proteinannotator/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/nextflow.log' file for more details diff --git a/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/trace.csv b/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/trace.csv new file mode 100644 index 0000000..6b739ac --- /dev/null +++ b/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/trace.csv @@ -0,0 +1 @@ +task_id hash native_id name status exit submit duration realtime %cpu peak_rss peak_vmem rchar wchar diff --git a/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/mock.nf b/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/mock.nf new file mode 100644 index 0000000..bc07c5e --- /dev/null +++ b/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/mock.nf @@ -0,0 +1,99 @@ +import groovy.json.JsonGenerator +import groovy.json.JsonGenerator.Converter + +nextflow.enable.dsl=2 + +// comes from nf-test to store json files +params.nf_test_output = "" + +// include dependencies + +include { DIAMOND_MAKEDB } from '/home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf' + + +// include test process +include { DIAMOND_BLASTP } from '/home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../main.nf' + +// define custom rules for JSON that will be generated. +def jsonOutput = + new JsonGenerator.Options() + .addConverter(Path) { value -> value.toAbsolutePath().toString() } // Custom converter for Path. Only filename + .build() + +def jsonWorkflowOutput = new JsonGenerator.Options().excludeNulls().build() + + +workflow { + + // run dependencies + + { + def input = [] + + input[0] = [ [id:'test2'], [ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] ] + input[1] = [] + input[2] = [] + input[3] = [] + + DIAMOND_MAKEDB(*input) + } + + + // process mapping + def input = [] + + input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] + input[1] = DIAMOND_MAKEDB.out.db + input[2] = 100 + input[3] = [] + + //---- + + //run process + DIAMOND_BLASTP(*input) + + if (DIAMOND_BLASTP.output){ + + // consumes all named output channels and stores items in a json file + for (def name in DIAMOND_BLASTP.out.getNames()) { + serializeChannel(name, DIAMOND_BLASTP.out.getProperty(name), jsonOutput) + } + + // consumes all unnamed output channels and stores items in a json file + def array = DIAMOND_BLASTP.out as Object[] + for (def i = 0; i < array.length ; i++) { + serializeChannel(i, array[i], jsonOutput) + } + + } + +} + +def serializeChannel(name, channel, jsonOutput) { + def _name = name + def list = [ ] + channel.subscribe( + onNext: { + list.add(it) + }, + onComplete: { + def map = new HashMap() + map[_name] = list + def filename = "${params.nf_test_output}/output_${_name}.json" + new File(filename).text = jsonOutput.toJson(map) + } + ) +} + + +workflow.onComplete { + + def result = [ + success: workflow.success, + exitStatus: workflow.exitStatus, + errorMessage: workflow.errorMessage, + errorReport: workflow.errorReport + ] + new File("${params.nf_test_output}/workflow.json").text = jsonWorkflowOutput.toJson(result) + +} diff --git a/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/nextflow.log b/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/nextflow.log new file mode 100644 index 0000000..f7eb7af --- /dev/null +++ b/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/nextflow.log @@ -0,0 +1,169 @@ +May-27 13:22:41.471 [main] DEBUG nextflow.cli.Launcher - $> nextflow -quiet -log /home/trace/projects/proteinannotator/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/nextflow.log run /home/trace/projects/proteinannotator/.nf-test-d5aff37838516a475af3455639858b2.nf -c /home/trace/projects/proteinannotator/nextflow.config -params-file /home/trace/projects/proteinannotator/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/params.json -ansi-log false -with-trace /home/trace/projects/proteinannotator/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/trace.csv -w /home/trace/projects/proteinannotator/.nf-test/tests/d5aff37838516a475af3455639858b2/work +May-27 13:22:41.592 [main] INFO nextflow.cli.CmdRun - N E X T F L O W ~ version 24.10.6 +May-27 13:22:41.627 [main] DEBUG nextflow.plugin.PluginsFacade - Setting up plugin manager > mode=prod; embedded=false; plugins-dir=/home/trace/.nextflow/plugins; core-plugins: nf-amazon@2.9.3,nf-azure@1.10.2,nf-cloudcache@0.4.2,nf-codecommit@0.2.2,nf-console@1.1.4,nf-google@1.15.4,nf-tower@1.9.3,nf-wave@1.7.5 +May-27 13:22:41.665 [main] INFO o.pf4j.DefaultPluginStatusProvider - Enabled plugins: [] +May-27 13:22:41.667 [main] INFO o.pf4j.DefaultPluginStatusProvider - Disabled plugins: [] +May-27 13:22:41.672 [main] INFO org.pf4j.DefaultPluginManager - PF4J version 3.12.0 in 'deployment' mode +May-27 13:22:41.694 [main] INFO org.pf4j.AbstractPluginManager - No plugins +May-27 13:22:41.737 [main] DEBUG nextflow.config.ConfigBuilder - Found config base: /home/trace/projects/proteinannotator/nextflow.config +May-27 13:22:41.745 [main] DEBUG nextflow.config.ConfigBuilder - User config file: /home/trace/projects/proteinannotator/nextflow.config +May-27 13:22:41.748 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config +May-27 13:22:41.750 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config +May-27 13:22:41.808 [main] DEBUG n.secret.LocalSecretsProvider - Secrets store: /home/trace/.nextflow/secrets/store.json +May-27 13:22:41.815 [main] DEBUG nextflow.secret.SecretsLoader - Discovered secrets providers: [nextflow.secret.LocalSecretsProvider@2fb5fe30] - activable => nextflow.secret.LocalSecretsProvider@2fb5fe30 +May-27 13:22:41.854 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` +May-27 13:22:44.449 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` +May-27 13:22:45.134 [main] DEBUG nextflow.cli.CmdRun - Applied DSL=2 from script declaration +May-27 13:22:45.151 [main] INFO nextflow.cli.CmdRun - Launching `/home/trace/projects/proteinannotator/.nf-test-d5aff37838516a475af3455639858b2.nf` [awesome_solvay] DSL2 - revision: 4d6eef58aa +May-27 13:22:45.152 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins declared=[nf-schema@2.3.0] +May-27 13:22:45.153 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins default=[] +May-27 13:22:45.153 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins resolved requirement=[nf-schema@2.3.0] +May-27 13:22:45.153 [main] DEBUG nextflow.plugin.PluginUpdater - Installing plugin nf-schema version: 2.3.0 +May-27 13:22:45.160 [main] INFO org.pf4j.AbstractPluginManager - Plugin 'nf-schema@2.3.0' resolved +May-27 13:22:45.160 [main] INFO org.pf4j.AbstractPluginManager - Start plugin 'nf-schema@2.3.0' +May-27 13:22:45.169 [main] DEBUG nextflow.plugin.BasePlugin - Plugin started nf-schema@2.3.0 +May-27 13:22:45.237 [main] DEBUG nextflow.Session - Session UUID: 5c213b1b-b681-4a73-b8a0-5ac513986092 +May-27 13:22:45.238 [main] DEBUG nextflow.Session - Run name: awesome_solvay +May-27 13:22:45.238 [main] DEBUG nextflow.Session - Executor pool size: 8 +May-27 13:22:45.249 [main] DEBUG nextflow.file.FilePorter - File porter settings maxRetries=3; maxTransfers=50; pollTimeout=null +May-27 13:22:45.256 [main] DEBUG nextflow.util.ThreadPoolBuilder - Creating thread pool 'FileTransfer' minSize=10; maxSize=24; workQueue=LinkedBlockingQueue[-1]; allowCoreThreadTimeout=false +May-27 13:22:45.281 [main] DEBUG nextflow.cli.CmdRun - + Version: 24.10.6 build 5937 + Created: 23-04-2025 16:53 UTC (12:53 EDT) + System: Linux 6.1.0-33-amd64 + Runtime: Groovy 4.0.23 on OpenJDK 64-Bit Server VM 21.0.6-internal-adhoc.conda.src + Encoding: UTF-8 (UTF-8) + Process: 62302@lail-laptop [127.0.1.1] + CPUs: 8 - Mem: 7 GB (402.9 MB) - Swap: 977 MB (2.2 MB) +May-27 13:22:45.312 [main] DEBUG nextflow.Session - Work-dir: /home/trace/projects/proteinannotator/.nf-test/tests/d5aff37838516a475af3455639858b2/work [ext2/ext3] +May-27 13:22:45.313 [main] DEBUG nextflow.Session - Script base path does not exist or is not a directory: /home/trace/projects/proteinannotator/bin +May-27 13:22:45.327 [main] DEBUG nextflow.executor.ExecutorFactory - Extension executors providers=[] +May-27 13:22:45.342 [main] DEBUG nextflow.Session - Observer factory: DefaultObserverFactory +May-27 13:22:45.376 [main] DEBUG nextflow.Session - Observer factory: ValidationObserverFactory +May-27 13:22:45.468 [main] DEBUG nextflow.cache.CacheFactory - Using Nextflow cache factory: nextflow.cache.DefaultCacheFactory +May-27 13:22:45.479 [main] DEBUG nextflow.util.CustomThreadPool - Creating default thread pool > poolSize: 9; maxThreads: 1000 +May-27 13:22:45.554 [main] DEBUG nextflow.Session - Session start +May-27 13:22:45.558 [main] DEBUG nextflow.trace.TraceFileObserver - Workflow started -- trace file: /home/trace/projects/proteinannotator/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/trace.csv +May-27 13:22:45.850 [main] DEBUG nextflow.script.ScriptRunner - > Launching execution +May-27 13:22:45.869 [main] DEBUG nextflow.script.ScriptRunner - Parsed script files: + Script_8a784aaaa98e4d65: /home/trace/projects/proteinannotator/.nf-test-d5aff37838516a475af3455639858b2.nf +May-27 13:22:45.869 [main] DEBUG nextflow.Session - Session aborted -- Cause: Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf +May-27 13:22:45.874 [main] DEBUG nextflow.Session - +Thread[#18,Common-Cleaner,8,InnocuousThreadGroup] + java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) + java.base@21.0.6-internal/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1852) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.await(ReferenceQueue.java:71) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:143) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:218) + java.base@21.0.6-internal/jdk.internal.ref.CleanerImpl.run(CleanerImpl.java:140) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) + +Thread[#31,Keep-Alive-Timer,8,InnocuousThreadGroup] + java.base@21.0.6-internal/java.lang.Thread.sleep0(Native Method) + java.base@21.0.6-internal/java.lang.Thread.sleep(Thread.java:509) + java.base@21.0.6-internal/sun.net.www.http.KeepAliveCache.run(KeepAliveCache.java:238) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) + +Thread[#32,process reaper,10,InnocuousThreadGroup] + java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:410) + java.base@21.0.6-internal/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:338) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1069) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) + +Thread[#10,Finalizer,8,system] + java.base@21.0.6-internal/java.lang.Object.wait0(Native Method) + java.base@21.0.6-internal/java.lang.Object.wait(Object.java:366) + java.base@21.0.6-internal/java.lang.Object.wait(Object.java:339) + java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.await(NativeReferenceQueue.java:48) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:158) + java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.remove(NativeReferenceQueue.java:89) + java.base@21.0.6-internal/java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:173) + +Thread[#19,Notification Thread,9,system] + +Thread[#33,Thread-1,5,main] + java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) + java.base@21.0.6-internal/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1763) + java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.pollFirst(LinkedBlockingDeque.java:515) + java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.poll(LinkedBlockingDeque.java:677) + app//nextflow.util.SimpleAgent.run(SimpleAgent.groovy:89) + java.base@21.0.6-internal/java.lang.invoke.LambdaForm$DMH/0x00007f428c19bc00.invokeVirtual(LambdaForm$DMH) + java.base@21.0.6-internal/java.lang.invoke.LambdaForm$MH/0x00007f428c490000.invoke(LambdaForm$MH) + java.base@21.0.6-internal/java.lang.invoke.Invokers$Holder.invokeExact_MT(Invokers$Holder) + java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(DirectMethodHandleAccessor.java:153) + java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + java.base@21.0.6-internal/java.lang.reflect.Method.invoke(Method.java:580) + app//org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343) + app//groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:328) + app//groovy.lang.MetaClassImpl.doInvokeMethod(MetaClassImpl.java:1333) + app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1088) + app//groovy.lang.MetaClassImpl.invokeMethodClosure(MetaClassImpl.java:1017) + app//groovy.lang.MetaClassImpl.doInvokeMethod(MetaClassImpl.java:1207) + app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1088) + app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1007) + app//groovy.lang.Closure.call(Closure.java:433) + app//groovy.lang.Closure.call(Closure.java:412) + app//groovy.lang.Closure.run(Closure.java:505) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + +Thread[#9,Reference Handler,10,system] + java.base@21.0.6-internal/java.lang.ref.Reference.waitForReferencePendingList(Native Method) + java.base@21.0.6-internal/java.lang.ref.Reference.processPendingReferences(Reference.java:246) + java.base@21.0.6-internal/java.lang.ref.Reference$ReferenceHandler.run(Reference.java:208) + +Thread[#34,Actor Thread 1,5,main] + java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.6-internal/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:458) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.take(SynchronousQueue.java:318) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + +Thread[#11,Signal Dispatcher,9,system] + +Thread[#1,main,5,main] + java.base@21.0.6-internal/java.lang.Thread.dumpThreads(Native Method) + java.base@21.0.6-internal/java.lang.Thread.getAllStackTraces(Thread.java:2522) + app//nextflow.util.SysHelper.dumpThreads(SysHelper.groovy:188) + app//nextflow.Session.abort(Session.groovy:800) + app//nextflow.script.ScriptRunner.execute(ScriptRunner.groovy:149) + app//nextflow.cli.CmdRun.run(CmdRun.groovy:376) + app//nextflow.cli.Launcher.run(Launcher.groovy:503) + app//nextflow.cli.Launcher.main(Launcher.groovy:658) + +May-27 13:22:45.884 [main] ERROR nextflow.cli.Launcher - Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf +java.nio.file.NoSuchFileException: Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf + at nextflow.script.IncludeDef.realModulePath(IncludeDef.groovy:184) + at nextflow.script.IncludeDef.load0(IncludeDef.groovy:112) + at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) + at Script_8a784aaaa98e4d65.runScript(Script_8a784aaaa98e4d65:11) + at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) + at nextflow.script.BaseScript.run0(BaseScript.groovy:159) + at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) + at nextflow.script.BaseScript.run(BaseScript.groovy:209) + at nextflow.script.ScriptParser.runScript(ScriptParser.groovy:236) + at nextflow.script.ScriptRunner.run(ScriptRunner.groovy:243) + at nextflow.script.ScriptRunner.execute(ScriptRunner.groovy:138) + at nextflow.cli.CmdRun.run(CmdRun.groovy:376) + at nextflow.cli.Launcher.run(Launcher.groovy:503) + at nextflow.cli.Launcher.main(Launcher.groovy:658) diff --git a/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/params.json b/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/params.json new file mode 100644 index 0000000..7047556 --- /dev/null +++ b/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/params.json @@ -0,0 +1 @@ +{"nf_test_output":"/home/trace/projects/proteinannotator/.nf-test/tests/d5aff37838516a475af3455639858b2/meta"} \ No newline at end of file diff --git a/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/std.err b/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/std.err new file mode 100644 index 0000000..5890cc1 --- /dev/null +++ b/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/std.err @@ -0,0 +1 @@ +Nextflow 25.04.2 is available - Please consider updating your version to it(B diff --git a/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/std.out b/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/std.out new file mode 100644 index 0000000..50d252a --- /dev/null +++ b/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/std.out @@ -0,0 +1,3 @@ +ERROR ~ No such file or directory: Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf + + -- Check script '/home/trace/projects/proteinannotator/.nf-test-d5aff37838516a475af3455639858b2.nf' at line: 11 or see '/home/trace/projects/proteinannotator/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/nextflow.log' file for more details diff --git a/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/trace.csv b/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/trace.csv new file mode 100644 index 0000000..6b739ac --- /dev/null +++ b/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/trace.csv @@ -0,0 +1 @@ +task_id hash native_id name status exit submit duration realtime %cpu peak_rss peak_vmem rchar wchar diff --git a/modules/local/modules/local/ncbirefseqdownload/environment.yml b/modules/local/modules/local/ncbirefseqdownload/environment.yml new file mode 100644 index 0000000..4b3c9d3 --- /dev/null +++ b/modules/local/modules/local/ncbirefseqdownload/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: + - "YOUR-TOOL-HERE" diff --git a/modules/local/modules/local/ncbirefseqdownload/main.nf b/modules/local/modules/local/ncbirefseqdownload/main.nf new file mode 100644 index 0000000..7b657b3 --- /dev/null +++ b/modules/local/modules/local/ncbirefseqdownload/main.nf @@ -0,0 +1,104 @@ +// TODO nf-core: If in doubt look at other nf-core/modules to see how we are doing things! :) +// https://github.com/nf-core/modules/tree/master/modules/nf-core/ +// You can also ask for help via your pull request or on the #modules channel on the nf-core Slack workspace: +// https://nf-co.re/join +// TODO nf-core: A module file SHOULD only define input and output files as command-line parameters. +// All other parameters MUST be provided using the "task.ext" directive, see here: +// https://www.nextflow.io/docs/latest/process.html#ext +// where "task.ext" is a string. +// Any parameters that need to be evaluated in the context of a particular sample +// e.g. single-end/paired-end data MUST also be defined and evaluated appropriately. +// TODO nf-core: Software that can be piped together SHOULD be added to separate module files +// unless there is a run-time, storage advantage in implementing in this way +// e.g. it's ok to have a single module for bwa to output BAM instead of SAM: +// bwa mem | samtools view -B -T ref.fasta +// TODO nf-core: Optional inputs are not currently supported by Nextflow. However, using an empty +// list (`[]`) instead of a file can be used to work around this issue. + +process NCBIREFSEQDOWNLOAD { + label 'process_low' + tag "downloand_refseq" + + // TODO nf-core: List required Conda package(s). + // Software MUST be pinned to channel (i.e. "bioconda"), version (i.e. "1.10"). + // For Conda, the build (i.e. "h9402c20_2") must be EXCLUDED to support installation on different operating systems. + // TODO nf-core: See section in main README for further information regarding finding and adding container addresses to the section below. + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/YOUR-TOOL-HERE': + 'biocontainers/YOUR-TOOL-HERE' }" + + publishDir "${params.outdir}/ncbi_refseq/", mode: 'copy' + + input: + // TODO nf-core: Where applicable all sample-specific information e.g. "id", "single_end", "read_group" + // MUST be provided as an input via a Groovy Map called "meta". + // This information may not be required in some instances e.g. indexing reference genome files: + // https://github.com/nf-core/modules/blob/master/modules/nf-core/bwa/index/main.nf + // TODO nf-core: Where applicable please provide/convert compressed files as input/output + // e.g. "*.fastq.gz" and NOT "*.fastq", "*.bam" and NOT "*.sam" etc. + val(meta) + + output: + // TODO nf-core: Named file extensions MUST be emitted for ALL output channels + file("refseq_fastas.fa.gz"), emit: ch_diamond_reference_fasta + // TODO nf-core: List additional required output channels/values here + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + // TODO nf-core: Where possible, a command MUST be provided to obtain the version number of the software e.g. 1.10 + // If the software is unable to output a version number on the command-line then it can be manually specified + // e.g. https://github.com/nf-core/modules/blob/master/modules/nf-core/homer/annotatepeaks/main.nf + // Each software used MUST provide the software name and version number in the YAML version file (versions.yml) + // TODO nf-core: It MUST be possible to pass additional parameters to the tool as a command-line string via the "task.ext.args" directive + // TODO nf-core: If the tool supports multi-threading then you MUST provide the appropriate parameter + // using the Nextflow "task" variable e.g. "--threads $task.cpus" + // TODO nf-core: Please replace the example samtools command below with your module's command + // TODO nf-core: Please indent the command appropriately (4 spaces!!) to help with readability ;) + + def categories = task.ext.categories ?: ['vertebrate_mammalian', 'vertebrate_other', 'invertebrate'] + def fetch_commands = categories.collect { cat -> + """ + mkdir -p refseq/${cat} + rsync -av --include '*protein.faa.gz' --exclude '*' \\ + rsync://ftp.ncbi.nlm.nih.gov/refseq/release/${cat}/ \\ + refseq/${cat}/ + """ + }.join("\n") + + """ + set -e + + ${fetch_commands} + + zcat refseq/*/*.faa.gz | gzip -c > refseq_fastas.fa.gz + + echo "All animal RefSeq protein FASTAs aggregated into refseq_fastas.fa.gz" + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + rsync: \$(rsync --version | head -n1 | sed 's/rsync version //') + END_VERSIONS + """ + + """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + // TODO nf-core: A stub section should mimic the execution of the original module as best as possible + // Have a look at the following examples: + // Simple example: https://github.com/nf-core/modules/blob/818474a292b4860ae8ff88e149fbcda68814114d/modules/nf-core/bcftools/annotate/main.nf#L47-L63 + // Complex example: https://github.com/nf-core/modules/blob/818474a292b4860ae8ff88e149fbcda68814114d/modules/nf-core/bedtools/split/main.nf#L38-L54 + """ + touch refseq_fastas.fa.gz + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + rsync: "stub" + END_VERSIONS + """ +} diff --git a/modules/local/modules/local/ncbirefseqdownload/meta.yml b/modules/local/modules/local/ncbirefseqdownload/meta.yml new file mode 100644 index 0000000..6848e32 --- /dev/null +++ b/modules/local/modules/local/ncbirefseqdownload/meta.yml @@ -0,0 +1,69 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json +name: "downloadfastas" +## TODO nf-core: Add a description of the module and list keywords +description: write your description here +keywords: + - sort + - example + - genomics +tools: + - "downloadfastas": + ## TODO nf-core: Add a description and other details for the software below + description: "" + homepage: "" + documentation: "" + tool_dev_url: "" + doi: "" + licence: + identifier: + +## TODO nf-core: Add a description of all of the variables used as input +input: + # Only when we have meta + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + + ## TODO nf-core: Delete / customise this example input + - bam: + type: file + description: Sorted BAM/CRAM/SAM file + pattern: "*.{bam,cram,sam}" + ontologies: + - edam: "http://edamontology.org/format_25722" + - edam: "http://edamontology.org/format_2573" + - edam: "http://edamontology.org/format_3462" + + +## TODO nf-core: Add a description of all of the variables used as output +output: + - bam: + #Only when we have meta + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + ## TODO nf-core: Delete / customise this example output + - "*.bam": + type: file + description: Sorted BAM/CRAM/SAM file + pattern: "*.{bam,cram,sam}" + ontologies: + - edam: "http://edamontology.org/format_25722" + - edam: "http://edamontology.org/format_2573" + - edam: "http://edamontology.org/format_3462" + + - versions: + - "versions.yml": + type: file + description: File containing software versions + pattern: "versions.yml" + +authors: + - "@tracelail" +maintainers: + - "@tracelail" diff --git a/modules/local/modules/local/ncbirefseqdownload/tests/main.nf.test b/modules/local/modules/local/ncbirefseqdownload/tests/main.nf.test new file mode 100644 index 0000000..4b361cb --- /dev/null +++ b/modules/local/modules/local/ncbirefseqdownload/tests/main.nf.test @@ -0,0 +1,73 @@ +// TODO nf-core: Once you have added the required tests, please run the following command to build this file: +// nf-core modules test downloadfastas +nextflow_process { + + name "Test Process DOWNLOADFASTAS" + script "../main.nf" + process "DOWNLOADFASTAS" + + tag "modules" + tag "modules_" + tag "downloadfastas" + + // TODO nf-core: Change the test name preferably indicating the test-data and file-format used + test("sarscov2 - bam") { + + // TODO nf-core: If you are created a test for a chained module + // (the module requires running more than one process to generate the required output) + // add the 'setup' method here. + // You can find more information about how to use a 'setup' method in the docs (https://nf-co.re/docs/contributing/modules#steps-for-creating-nf-test-for-chained-modules). + + when { + process { + """ + // TODO nf-core: define inputs of the process here. Example: + + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + //TODO nf-core: Add all required assertions to verify the test output. + // See https://nf-co.re/docs/contributing/tutorials/nf-test_assertions for more information and examples. + ) + } + + } + + // TODO nf-core: Change the test name preferably indicating the test-data and file-format used but keep the " - stub" suffix. + test("sarscov2 - bam - stub") { + + options "-stub" + + when { + process { + """ + // TODO nf-core: define inputs of the process here. Example: + + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + //TODO nf-core: Add all required assertions to verify the test output. + ) + } + + } + +} diff --git a/subworkflows/local/functional_annotation/main.nf b/subworkflows/local/functional_annotation/main.nf index 1d02587..d262309 100644 --- a/subworkflows/local/functional_annotation/main.nf +++ b/subworkflows/local/functional_annotation/main.nf @@ -1,5 +1,6 @@ include { DIAMOND_BLASTP } from '../../../modules/nf-core/diamond/blastp/main' include { BLAST_MAKEBLASTDB } from '../../../modules/nf-core/blast/makeblastdb/main' +include { NCBIREFSEQDOWNLOAD } from '../../../modules/local/ncbirefseqdownload/main' workflow FUNCTIONAL_ANNOTATION { @@ -11,15 +12,19 @@ workflow FUNCTIONAL_ANNOTATION { ch_versions = Channel.empty() // TODO nf-core: substitute modules here for the modules of your subworkflow + NCBIREFSEQDOWNLOAD() // may need to include an input, currently uses default categories def categories = task.ext.categories ?: ['vertebrate_mammalian', 'vertebrate_other', 'invertebrate'] + ch_diamond_reference_fasta = NCBIREFSEQDOWNLOAD.out.fasta + ch_versions = ch_versions.mix(NCBIREFSEQDOWNLOAD.out.versions.first()) + BLAST_MAKEBLASTDB ( - ch_fasta, + ch_diamond_reference_fasta, ) ch_diamond_db = BLAST_MAKEBLASTDB.out.db ch_versions = ch_versions.mix(BLAST_MAKEBLASTDB.out.versions.first()) - ch_diamond_db = Channel.of( [ [id:"diamond_db"], file(params.diamond_db, checkIfExists: true) ] ) + //ch_diamond_db = Channel.of( [ [id:"diamond_db"], file(params.diamond_db, checkIfExists: true) ] ) DIAMOND_BLASTP ( ch_fasta, From 52506f766c0763ac0e2d08c4844117b80d42c343 Mon Sep 17 00:00:00 2001 From: tracelail Date: Tue, 3 Jun 2025 14:47:10 -0400 Subject: [PATCH 06/59] installed diamond makedb --- .nf-test.log | 78 ++++++-- .../meta/nextflow.log | 96 ++++----- .../meta/mock.nf | 86 ++++++++ .../meta/nextflow.log | 183 ++++++++++++++++++ .../meta/params.json | 1 + .../meta/std.err | 1 + .../meta/std.out | 3 + .../meta/trace.csv | 1 + .../meta/mock.nf | 86 ++++++++ .../meta/nextflow.log | 183 ++++++++++++++++++ .../meta/params.json | 1 + .../meta/std.err | 1 + .../meta/std.out | 3 + .../meta/trace.csv | 1 + .../meta/nextflow.log | 102 +++++----- .../meta/nextflow.log | 178 ++++++++--------- .../meta/mock.nf | 86 ++++++++ .../meta/nextflow.log | 183 ++++++++++++++++++ .../meta/params.json | 1 + .../meta/std.err | 1 + .../meta/std.out | 3 + .../meta/trace.csv | 1 + .../meta/nextflow.log | 172 ++++++++-------- .../meta/nextflow.log | 178 ++++++++--------- modules.json | 5 + .../local/ncbirefseqdownload/environment.yml | 0 .../local/ncbirefseqdownload/main.nf | 0 .../local/ncbirefseqdownload/meta.yml | 0 .../ncbirefseqdownload/tests/main.nf.test | 0 .../nf-core/diamond/makedb/environment.yml | 7 + modules/nf-core/diamond/makedb/main.nf | 65 +++++++ modules/nf-core/diamond/makedb/meta.yml | 69 +++++++ .../nf-core/diamond/makedb/tests/main.nf.test | 86 ++++++++ .../diamond/makedb/tests/main.nf.test.snap | 101 ++++++++++ .../local/functional_annotation/main.nf | 9 +- 35 files changed, 1584 insertions(+), 387 deletions(-) create mode 100644 .nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/mock.nf create mode 100644 .nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/nextflow.log create mode 100644 .nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/params.json create mode 100644 .nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/std.err create mode 100644 .nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/std.out create mode 100644 .nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/trace.csv create mode 100644 .nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/mock.nf create mode 100644 .nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/nextflow.log create mode 100644 .nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/params.json create mode 100644 .nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/std.err create mode 100644 .nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/std.out create mode 100644 .nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/trace.csv create mode 100644 .nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/mock.nf create mode 100644 .nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/nextflow.log create mode 100644 .nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/params.json create mode 100644 .nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/std.err create mode 100644 .nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/std.out create mode 100644 .nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/trace.csv rename modules/local/{modules => }/local/ncbirefseqdownload/environment.yml (100%) rename modules/local/{modules => }/local/ncbirefseqdownload/main.nf (100%) rename modules/local/{modules => }/local/ncbirefseqdownload/meta.yml (100%) rename modules/local/{modules => }/local/ncbirefseqdownload/tests/main.nf.test (100%) create mode 100644 modules/nf-core/diamond/makedb/environment.yml create mode 100644 modules/nf-core/diamond/makedb/main.nf create mode 100644 modules/nf-core/diamond/makedb/meta.yml create mode 100644 modules/nf-core/diamond/makedb/tests/main.nf.test create mode 100644 modules/nf-core/diamond/makedb/tests/main.nf.test.snap diff --git a/.nf-test.log b/.nf-test.log index 26160de..5007dd4 100644 --- a/.nf-test.log +++ b/.nf-test.log @@ -1,16 +1,16 @@ -May-27 13:28:58.075 [main] INFO com.askimed.nf.test.App - nf-test 0.9.2 -May-27 13:28:58.093 [main] INFO com.askimed.nf.test.App - Arguments: [test, modules/nf-core/blast/makeblastdb] -May-27 13:28:58.930 [main] INFO com.askimed.nf.test.App - Nextflow Version: 24.10.6 -May-27 13:28:58.935 [main] WARN com.askimed.nf.test.commands.RunTestsCommand - No nf-test config file found. -May-27 13:28:58.955 [main] WARN com.askimed.nf.test.nextflow.NextflowScript - Module /home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/main.nf: Dependency '/home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/../../../modules/local/ncbirefseqdownload/main.nf' not found. -May-27 13:28:58.982 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Loaded 27 files from directory /home/trace/projects/proteinannotator in 0.045 sec -May-27 13:28:58.985 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Found 1 files containing tests. -May-27 13:28:58.986 [main] DEBUG com.askimed.nf.test.lang.dependencies.DependencyResolver - Found files: [/home/trace/projects/proteinannotator/modules/nf-core/blast/makeblastdb/tests/main.nf.test] -May-27 13:28:59.630 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Found 2 tests to execute. -May-27 13:28:59.631 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Started test plan -May-27 13:28:59.631 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Running testsuite 'Test Process BLAST_MAKEBLASTDB' from file '/home/trace/projects/proteinannotator/modules/nf-core/blast/makeblastdb/tests/main.nf.test'. -May-27 13:28:59.631 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test '5c90a8e6: Should build a blast db folder from a fasta file'. type: com.askimed.nf.test.lang.process.ProcessTest -May-27 13:29:05.722 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test '5c90a8e6: Should build a blast db folder from a fasta file' finished. status: FAILED +Jun-03 14:37:08.369 [main] INFO com.askimed.nf.test.App - nf-test 0.9.2 +Jun-03 14:37:08.386 [main] INFO com.askimed.nf.test.App - Arguments: [test, modules/nf-core/diamond/makedb] +Jun-03 14:37:09.324 [main] INFO com.askimed.nf.test.App - Nextflow Version: 24.10.6 +Jun-03 14:37:09.329 [main] WARN com.askimed.nf.test.commands.RunTestsCommand - No nf-test config file found. +Jun-03 14:37:09.357 [main] WARN com.askimed.nf.test.nextflow.NextflowScript - Module /home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/main.nf: Dependency '/home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/../../../modules/local/ncbirefseqdownload/main.nf' not found. +Jun-03 14:37:09.391 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Loaded 30 files from directory /home/trace/projects/proteinannotator in 0.058 sec +Jun-03 14:37:09.393 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Found 1 files containing tests. +Jun-03 14:37:09.394 [main] DEBUG com.askimed.nf.test.lang.dependencies.DependencyResolver - Found files: [/home/trace/projects/proteinannotator/modules/nf-core/diamond/makedb/tests/main.nf.test] +Jun-03 14:37:10.076 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Found 3 tests to execute. +Jun-03 14:37:10.077 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Started test plan +Jun-03 14:37:10.077 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Running testsuite 'Test Process DIAMOND_MAKEDB' from file '/home/trace/projects/proteinannotator/modules/nf-core/diamond/makedb/tests/main.nf.test'. +Jun-03 14:37:10.077 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test 'b2b060aa: Should build a DIAMOND db file from a fasta file without taxonomic information'. type: com.askimed.nf.test.lang.process.ProcessTest +Jun-03 14:37:16.752 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test 'b2b060aa: Should build a DIAMOND db file from a fasta file without taxonomic information' finished. status: FAILED org.codehaus.groovy.runtime.powerassert.PowerAssertionError: 2 of 2 assertions failed at com.askimed.nf.test.lang.extensions.GlobalMethods.assertAll(GlobalMethods.java:48) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) @@ -22,8 +22,8 @@ org.codehaus.groovy.runtime.powerassert.PowerAssertionError: 2 of 2 assertions f at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:55) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:217) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:240) - at main_nf$_run_closure1$_closure2$_closure5.doCall(main.nf.test:23) - at main_nf$_run_closure1$_closure2$_closure5.doCall(main.nf.test) + at main_nf$_run_closure1$_closure2$_closure6.doCall(main.nf.test:28) + at main_nf$_run_closure1$_closure2$_closure6.doCall(main.nf.test) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107) @@ -47,8 +47,8 @@ org.codehaus.groovy.runtime.powerassert.PowerAssertionError: 2 of 2 assertions f at picocli.CommandLine.execute(CommandLine.java:2078) at com.askimed.nf.test.App.run(App.java:39) at com.askimed.nf.test.App.main(App.java:46) -May-27 13:29:05.726 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test '99276840: Should build a blast db folder from a zipped fasta file'. type: com.askimed.nf.test.lang.process.ProcessTest -May-27 13:29:11.726 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test '99276840: Should build a blast db folder from a zipped fasta file' finished. status: FAILED +Jun-03 14:37:16.757 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test '1d5885bf: Should build a DIAMOND db file from a zipped fasta file without taxonomic information'. type: com.askimed.nf.test.lang.process.ProcessTest +Jun-03 14:37:23.252 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test '1d5885bf: Should build a DIAMOND db file from a zipped fasta file without taxonomic information' finished. status: FAILED org.codehaus.groovy.runtime.powerassert.PowerAssertionError: 2 of 2 assertions failed at com.askimed.nf.test.lang.extensions.GlobalMethods.assertAll(GlobalMethods.java:48) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) @@ -60,7 +60,7 @@ org.codehaus.groovy.runtime.powerassert.PowerAssertionError: 2 of 2 assertions f at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:55) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:217) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:240) - at main_nf$_run_closure1$_closure3$_closure12.doCall(main.nf.test:62) + at main_nf$_run_closure1$_closure3$_closure12.doCall(main.nf.test:53) at main_nf$_run_closure1$_closure3$_closure12.doCall(main.nf.test) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) @@ -85,5 +85,43 @@ org.codehaus.groovy.runtime.powerassert.PowerAssertionError: 2 of 2 assertions f at picocli.CommandLine.execute(CommandLine.java:2078) at com.askimed.nf.test.App.run(App.java:39) at com.askimed.nf.test.App.main(App.java:46) -May-27 13:29:11.727 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Testsuite 'Test Process BLAST_MAKEBLASTDB' finished. snapshot file: false, skipped tests: false, failed tests: true -May-27 13:29:11.727 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Executed 2 tests. 2 tests failed. Done! +Jun-03 14:37:23.253 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test '38117492: Should build a DIAMOND db file from a fasta file with taxonomic information'. type: com.askimed.nf.test.lang.process.ProcessTest +Jun-03 14:37:30.603 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test '38117492: Should build a DIAMOND db file from a fasta file with taxonomic information' finished. status: FAILED +org.codehaus.groovy.runtime.powerassert.PowerAssertionError: 2 of 2 assertions failed + at com.askimed.nf.test.lang.extensions.GlobalMethods.assertAll(GlobalMethods.java:48) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107) + at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) + at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.invoke(StaticMetaMethodSite.java:44) + at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.callStatic(StaticMetaMethodSite.java:100) + at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:55) + at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:217) + at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:240) + at main_nf$_run_closure1$_closure4$_closure18.doCall(main.nf.test:78) + at main_nf$_run_closure1$_closure4$_closure18.doCall(main.nf.test) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107) + at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) + at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:274) + at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1030) + at groovy.lang.Closure.call(Closure.java:427) + at groovy.lang.Closure.call(Closure.java:406) + at com.askimed.nf.test.lang.TestCode.execute(TestCode.java:16) + at com.askimed.nf.test.lang.process.ProcessTest.execute(ProcessTest.java:171) + at com.askimed.nf.test.core.TestExecutionEngine.execute(TestExecutionEngine.java:165) + at com.askimed.nf.test.commands.RunTestsCommand.execute(RunTestsCommand.java:298) + at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:43) + at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:18) + at picocli.CommandLine.executeUserObject(CommandLine.java:1953) + at picocli.CommandLine.access$1300(CommandLine.java:145) + at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2346) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2311) + at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179) + at picocli.CommandLine.execute(CommandLine.java:2078) + at com.askimed.nf.test.App.run(App.java:39) + at com.askimed.nf.test.App.main(App.java:46) +Jun-03 14:37:30.604 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Testsuite 'Test Process DIAMOND_MAKEDB' finished. snapshot file: false, skipped tests: false, failed tests: true +Jun-03 14:37:30.604 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Executed 3 tests. 3 tests failed. Done! diff --git a/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/nextflow.log b/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/nextflow.log index 4383c75..5319d7a 100644 --- a/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/nextflow.log +++ b/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/nextflow.log @@ -1,54 +1,54 @@ -May-27 13:22:53.596 [main] DEBUG nextflow.cli.Launcher - $> nextflow -quiet -log /home/trace/projects/proteinannotator/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/nextflow.log run /home/trace/projects/proteinannotator/.nf-test-1bdc1f2ecae38147b8549068f7156372.nf -c /home/trace/projects/proteinannotator/nextflow.config -params-file /home/trace/projects/proteinannotator/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/params.json -ansi-log false -with-trace /home/trace/projects/proteinannotator/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/trace.csv -w /home/trace/projects/proteinannotator/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/work -stub -May-27 13:22:53.730 [main] INFO nextflow.cli.CmdRun - N E X T F L O W ~ version 24.10.6 -May-27 13:22:53.773 [main] DEBUG nextflow.plugin.PluginsFacade - Setting up plugin manager > mode=prod; embedded=false; plugins-dir=/home/trace/.nextflow/plugins; core-plugins: nf-amazon@2.9.3,nf-azure@1.10.2,nf-cloudcache@0.4.2,nf-codecommit@0.2.2,nf-console@1.1.4,nf-google@1.15.4,nf-tower@1.9.3,nf-wave@1.7.5 -May-27 13:22:53.816 [main] INFO o.pf4j.DefaultPluginStatusProvider - Enabled plugins: [] -May-27 13:22:53.818 [main] INFO o.pf4j.DefaultPluginStatusProvider - Disabled plugins: [] -May-27 13:22:53.824 [main] INFO org.pf4j.DefaultPluginManager - PF4J version 3.12.0 in 'deployment' mode -May-27 13:22:53.846 [main] INFO org.pf4j.AbstractPluginManager - No plugins -May-27 13:22:53.891 [main] DEBUG nextflow.config.ConfigBuilder - Found config base: /home/trace/projects/proteinannotator/nextflow.config -May-27 13:22:53.900 [main] DEBUG nextflow.config.ConfigBuilder - User config file: /home/trace/projects/proteinannotator/nextflow.config -May-27 13:22:53.904 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config -May-27 13:22:53.905 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config -May-27 13:22:53.960 [main] DEBUG n.secret.LocalSecretsProvider - Secrets store: /home/trace/.nextflow/secrets/store.json -May-27 13:22:53.966 [main] DEBUG nextflow.secret.SecretsLoader - Discovered secrets providers: [nextflow.secret.LocalSecretsProvider@456be73c] - activable => nextflow.secret.LocalSecretsProvider@456be73c -May-27 13:22:54.002 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` -May-27 13:22:56.626 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` -May-27 13:22:57.328 [main] DEBUG nextflow.cli.CmdRun - Applied DSL=2 from script declaration -May-27 13:22:57.344 [main] INFO nextflow.cli.CmdRun - Launching `/home/trace/projects/proteinannotator/.nf-test-1bdc1f2ecae38147b8549068f7156372.nf` [jolly_gautier] DSL2 - revision: a1ca7e6f26 -May-27 13:22:57.345 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins declared=[nf-schema@2.3.0] -May-27 13:22:57.346 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins default=[] -May-27 13:22:57.347 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins resolved requirement=[nf-schema@2.3.0] -May-27 13:22:57.347 [main] DEBUG nextflow.plugin.PluginUpdater - Installing plugin nf-schema version: 2.3.0 -May-27 13:22:57.355 [main] INFO org.pf4j.AbstractPluginManager - Plugin 'nf-schema@2.3.0' resolved -May-27 13:22:57.355 [main] INFO org.pf4j.AbstractPluginManager - Start plugin 'nf-schema@2.3.0' -May-27 13:22:57.365 [main] DEBUG nextflow.plugin.BasePlugin - Plugin started nf-schema@2.3.0 -May-27 13:22:57.425 [main] DEBUG nextflow.Session - Session UUID: b52de093-80ff-467b-bcee-890974ca1c9f -May-27 13:22:57.425 [main] DEBUG nextflow.Session - Run name: jolly_gautier -May-27 13:22:57.426 [main] DEBUG nextflow.Session - Executor pool size: 8 -May-27 13:22:57.435 [main] DEBUG nextflow.file.FilePorter - File porter settings maxRetries=3; maxTransfers=50; pollTimeout=null -May-27 13:22:57.443 [main] DEBUG nextflow.util.ThreadPoolBuilder - Creating thread pool 'FileTransfer' minSize=10; maxSize=24; workQueue=LinkedBlockingQueue[-1]; allowCoreThreadTimeout=false -May-27 13:22:57.465 [main] DEBUG nextflow.cli.CmdRun - +Jun-02 15:12:39.597 [main] DEBUG nextflow.cli.Launcher - $> nextflow -quiet -log /home/trace/projects/proteinannotator/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/nextflow.log run /home/trace/projects/proteinannotator/.nf-test-1bdc1f2ecae38147b8549068f7156372.nf -c /home/trace/projects/proteinannotator/nextflow.config -params-file /home/trace/projects/proteinannotator/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/params.json -ansi-log false -with-trace /home/trace/projects/proteinannotator/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/trace.csv -w /home/trace/projects/proteinannotator/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/work -stub +Jun-02 15:12:39.740 [main] INFO nextflow.cli.CmdRun - N E X T F L O W ~ version 24.10.6 +Jun-02 15:12:39.780 [main] DEBUG nextflow.plugin.PluginsFacade - Setting up plugin manager > mode=prod; embedded=false; plugins-dir=/home/trace/.nextflow/plugins; core-plugins: nf-amazon@2.9.3,nf-azure@1.10.2,nf-cloudcache@0.4.2,nf-codecommit@0.2.2,nf-console@1.1.4,nf-google@1.15.4,nf-tower@1.9.3,nf-wave@1.7.5 +Jun-02 15:12:39.826 [main] INFO o.pf4j.DefaultPluginStatusProvider - Enabled plugins: [] +Jun-02 15:12:39.827 [main] INFO o.pf4j.DefaultPluginStatusProvider - Disabled plugins: [] +Jun-02 15:12:39.832 [main] INFO org.pf4j.DefaultPluginManager - PF4J version 3.12.0 in 'deployment' mode +Jun-02 15:12:39.859 [main] INFO org.pf4j.AbstractPluginManager - No plugins +Jun-02 15:12:39.910 [main] DEBUG nextflow.config.ConfigBuilder - Found config base: /home/trace/projects/proteinannotator/nextflow.config +Jun-02 15:12:39.920 [main] DEBUG nextflow.config.ConfigBuilder - User config file: /home/trace/projects/proteinannotator/nextflow.config +Jun-02 15:12:39.928 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config +Jun-02 15:12:39.929 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config +Jun-02 15:12:39.982 [main] DEBUG n.secret.LocalSecretsProvider - Secrets store: /home/trace/.nextflow/secrets/store.json +Jun-02 15:12:39.993 [main] DEBUG nextflow.secret.SecretsLoader - Discovered secrets providers: [nextflow.secret.LocalSecretsProvider@456be73c] - activable => nextflow.secret.LocalSecretsProvider@456be73c +Jun-02 15:12:40.039 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` +Jun-02 15:12:44.122 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` +Jun-02 15:12:45.189 [main] DEBUG nextflow.cli.CmdRun - Applied DSL=2 from script declaration +Jun-02 15:12:45.215 [main] INFO nextflow.cli.CmdRun - Launching `/home/trace/projects/proteinannotator/.nf-test-1bdc1f2ecae38147b8549068f7156372.nf` [sharp_shirley] DSL2 - revision: a1ca7e6f26 +Jun-02 15:12:45.218 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins declared=[nf-schema@2.3.0] +Jun-02 15:12:45.219 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins default=[] +Jun-02 15:12:45.220 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins resolved requirement=[nf-schema@2.3.0] +Jun-02 15:12:45.220 [main] DEBUG nextflow.plugin.PluginUpdater - Installing plugin nf-schema version: 2.3.0 +Jun-02 15:12:45.229 [main] INFO org.pf4j.AbstractPluginManager - Plugin 'nf-schema@2.3.0' resolved +Jun-02 15:12:45.230 [main] INFO org.pf4j.AbstractPluginManager - Start plugin 'nf-schema@2.3.0' +Jun-02 15:12:45.240 [main] DEBUG nextflow.plugin.BasePlugin - Plugin started nf-schema@2.3.0 +Jun-02 15:12:45.336 [main] DEBUG nextflow.Session - Session UUID: 90e88996-39d9-4db9-9c8d-6ae2d472235e +Jun-02 15:12:45.336 [main] DEBUG nextflow.Session - Run name: sharp_shirley +Jun-02 15:12:45.337 [main] DEBUG nextflow.Session - Executor pool size: 8 +Jun-02 15:12:45.351 [main] DEBUG nextflow.file.FilePorter - File porter settings maxRetries=3; maxTransfers=50; pollTimeout=null +Jun-02 15:12:45.361 [main] DEBUG nextflow.util.ThreadPoolBuilder - Creating thread pool 'FileTransfer' minSize=10; maxSize=24; workQueue=LinkedBlockingQueue[-1]; allowCoreThreadTimeout=false +Jun-02 15:12:45.394 [main] DEBUG nextflow.cli.CmdRun - Version: 24.10.6 build 5937 Created: 23-04-2025 16:53 UTC (12:53 EDT) System: Linux 6.1.0-33-amd64 Runtime: Groovy 4.0.23 on OpenJDK 64-Bit Server VM 21.0.6-internal-adhoc.conda.src Encoding: UTF-8 (UTF-8) - Process: 62528@lail-laptop [127.0.1.1] - CPUs: 8 - Mem: 7 GB (389.4 MB) - Swap: 977 MB (2.2 MB) -May-27 13:22:57.497 [main] DEBUG nextflow.Session - Work-dir: /home/trace/projects/proteinannotator/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/work [ext2/ext3] -May-27 13:22:57.497 [main] DEBUG nextflow.Session - Script base path does not exist or is not a directory: /home/trace/projects/proteinannotator/bin -May-27 13:22:57.510 [main] DEBUG nextflow.executor.ExecutorFactory - Extension executors providers=[] -May-27 13:22:57.522 [main] DEBUG nextflow.Session - Observer factory: DefaultObserverFactory -May-27 13:22:57.551 [main] DEBUG nextflow.Session - Observer factory: ValidationObserverFactory -May-27 13:22:57.643 [main] DEBUG nextflow.cache.CacheFactory - Using Nextflow cache factory: nextflow.cache.DefaultCacheFactory -May-27 13:22:57.659 [main] DEBUG nextflow.util.CustomThreadPool - Creating default thread pool > poolSize: 9; maxThreads: 1000 -May-27 13:22:57.746 [main] DEBUG nextflow.Session - Session start -May-27 13:22:57.749 [main] DEBUG nextflow.trace.TraceFileObserver - Workflow started -- trace file: /home/trace/projects/proteinannotator/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/trace.csv -May-27 13:22:58.026 [main] DEBUG nextflow.script.ScriptRunner - > Launching execution -May-27 13:22:58.042 [main] DEBUG nextflow.script.ScriptRunner - Parsed script files: + Process: 6071@lail-laptop [127.0.1.1] + CPUs: 8 - Mem: 7 GB (205.8 MB) - Swap: 977 MB (954 MB) +Jun-02 15:12:45.443 [main] DEBUG nextflow.Session - Work-dir: /home/trace/projects/proteinannotator/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/work [ext2/ext3] +Jun-02 15:12:45.443 [main] DEBUG nextflow.Session - Script base path does not exist or is not a directory: /home/trace/projects/proteinannotator/bin +Jun-02 15:12:45.465 [main] DEBUG nextflow.executor.ExecutorFactory - Extension executors providers=[] +Jun-02 15:12:45.483 [main] DEBUG nextflow.Session - Observer factory: DefaultObserverFactory +Jun-02 15:12:45.529 [main] DEBUG nextflow.Session - Observer factory: ValidationObserverFactory +Jun-02 15:12:45.644 [main] DEBUG nextflow.cache.CacheFactory - Using Nextflow cache factory: nextflow.cache.DefaultCacheFactory +Jun-02 15:12:45.666 [main] DEBUG nextflow.util.CustomThreadPool - Creating default thread pool > poolSize: 9; maxThreads: 1000 +Jun-02 15:12:45.768 [main] DEBUG nextflow.Session - Session start +Jun-02 15:12:45.772 [main] DEBUG nextflow.trace.TraceFileObserver - Workflow started -- trace file: /home/trace/projects/proteinannotator/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/trace.csv +Jun-02 15:12:46.230 [main] DEBUG nextflow.script.ScriptRunner - > Launching execution +Jun-02 15:12:46.252 [main] DEBUG nextflow.script.ScriptRunner - Parsed script files: Script_e3c35e79f690a4ec: /home/trace/projects/proteinannotator/.nf-test-1bdc1f2ecae38147b8549068f7156372.nf -May-27 13:22:58.043 [main] DEBUG nextflow.Session - Session aborted -- Cause: Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf -May-27 13:22:58.047 [main] DEBUG nextflow.Session - +Jun-02 15:12:46.253 [main] DEBUG nextflow.Session - Session aborted -- Cause: Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf +Jun-02 15:12:46.261 [main] DEBUG nextflow.Session - Thread[#32,process reaper,10,InnocuousThreadGroup] java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:410) @@ -89,8 +89,8 @@ Thread[#33,Thread-1,5,main] java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.pollFirst(LinkedBlockingDeque.java:515) java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.poll(LinkedBlockingDeque.java:677) app//nextflow.util.SimpleAgent.run(SimpleAgent.groovy:89) - java.base@21.0.6-internal/java.lang.invoke.LambdaForm$DMH/0x00007fab4419bc00.invokeVirtual(LambdaForm$DMH) - java.base@21.0.6-internal/java.lang.invoke.LambdaForm$MH/0x00007fab4448c000.invoke(LambdaForm$MH) + java.base@21.0.6-internal/java.lang.invoke.LambdaForm$DMH/0x00007f0bbc19bc00.invokeVirtual(LambdaForm$DMH) + java.base@21.0.6-internal/java.lang.invoke.LambdaForm$MH/0x00007f0bbc48c000.invoke(LambdaForm$MH) java.base@21.0.6-internal/java.lang.invoke.Invokers$Holder.invokeExact_MT(Invokers$Holder) java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(DirectMethodHandleAccessor.java:153) java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) @@ -151,7 +151,7 @@ Thread[#1,main,5,main] app//nextflow.cli.Launcher.run(Launcher.groovy:503) app//nextflow.cli.Launcher.main(Launcher.groovy:658) -May-27 13:22:58.056 [main] ERROR nextflow.cli.Launcher - Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf +Jun-02 15:12:46.272 [main] ERROR nextflow.cli.Launcher - Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf java.nio.file.NoSuchFileException: Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf at nextflow.script.IncludeDef.realModulePath(IncludeDef.groovy:184) at nextflow.script.IncludeDef.load0(IncludeDef.groovy:112) diff --git a/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/mock.nf b/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/mock.nf new file mode 100644 index 0000000..e542da1 --- /dev/null +++ b/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/mock.nf @@ -0,0 +1,86 @@ +import groovy.json.JsonGenerator +import groovy.json.JsonGenerator.Converter + +nextflow.enable.dsl=2 + +// comes from nf-test to store json files +params.nf_test_output = "" + +// include dependencies + + +// include test process +include { DIAMOND_MAKEDB } from '/home/trace/projects/proteinannotator/modules/nf-core/diamond/makedb/tests/../main.nf' + +// define custom rules for JSON that will be generated. +def jsonOutput = + new JsonGenerator.Options() + .addConverter(Path) { value -> value.toAbsolutePath().toString() } // Custom converter for Path. Only filename + .build() + +def jsonWorkflowOutput = new JsonGenerator.Options().excludeNulls().build() + + +workflow { + + // run dependencies + + + // process mapping + def input = [] + + input[0] = [ [id:'test'], [ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta.gz', checkIfExists: true) ] ] + input[1] = [] + input[2] = [] + input[3] = [] + + //---- + + //run process + DIAMOND_MAKEDB(*input) + + if (DIAMOND_MAKEDB.output){ + + // consumes all named output channels and stores items in a json file + for (def name in DIAMOND_MAKEDB.out.getNames()) { + serializeChannel(name, DIAMOND_MAKEDB.out.getProperty(name), jsonOutput) + } + + // consumes all unnamed output channels and stores items in a json file + def array = DIAMOND_MAKEDB.out as Object[] + for (def i = 0; i < array.length ; i++) { + serializeChannel(i, array[i], jsonOutput) + } + + } + +} + +def serializeChannel(name, channel, jsonOutput) { + def _name = name + def list = [ ] + channel.subscribe( + onNext: { + list.add(it) + }, + onComplete: { + def map = new HashMap() + map[_name] = list + def filename = "${params.nf_test_output}/output_${_name}.json" + new File(filename).text = jsonOutput.toJson(map) + } + ) +} + + +workflow.onComplete { + + def result = [ + success: workflow.success, + exitStatus: workflow.exitStatus, + errorMessage: workflow.errorMessage, + errorReport: workflow.errorReport + ] + new File("${params.nf_test_output}/workflow.json").text = jsonWorkflowOutput.toJson(result) + +} diff --git a/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/nextflow.log b/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/nextflow.log new file mode 100644 index 0000000..69511ef --- /dev/null +++ b/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/nextflow.log @@ -0,0 +1,183 @@ +Jun-03 14:37:18.315 [main] DEBUG nextflow.cli.Launcher - $> nextflow -quiet -log /home/trace/projects/proteinannotator/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/nextflow.log run /home/trace/projects/proteinannotator/.nf-test-1d5885bf4a1b6a843b2ff7fe724035b2.nf -c /home/trace/projects/proteinannotator/nextflow.config -params-file /home/trace/projects/proteinannotator/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/params.json -ansi-log false -with-trace /home/trace/projects/proteinannotator/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/trace.csv -w /home/trace/projects/proteinannotator/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/work +Jun-03 14:37:18.447 [main] INFO nextflow.cli.CmdRun - N E X T F L O W ~ version 24.10.6 +Jun-03 14:37:18.479 [main] DEBUG nextflow.plugin.PluginsFacade - Setting up plugin manager > mode=prod; embedded=false; plugins-dir=/home/trace/.nextflow/plugins; core-plugins: nf-amazon@2.9.3,nf-azure@1.10.2,nf-cloudcache@0.4.2,nf-codecommit@0.2.2,nf-console@1.1.4,nf-google@1.15.4,nf-tower@1.9.3,nf-wave@1.7.5 +Jun-03 14:37:18.514 [main] INFO o.pf4j.DefaultPluginStatusProvider - Enabled plugins: [] +Jun-03 14:37:18.515 [main] INFO o.pf4j.DefaultPluginStatusProvider - Disabled plugins: [] +Jun-03 14:37:18.520 [main] INFO org.pf4j.DefaultPluginManager - PF4J version 3.12.0 in 'deployment' mode +Jun-03 14:37:18.539 [main] INFO org.pf4j.AbstractPluginManager - No plugins +Jun-03 14:37:18.580 [main] DEBUG nextflow.config.ConfigBuilder - Found config base: /home/trace/projects/proteinannotator/nextflow.config +Jun-03 14:37:18.588 [main] DEBUG nextflow.config.ConfigBuilder - User config file: /home/trace/projects/proteinannotator/nextflow.config +Jun-03 14:37:18.591 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config +Jun-03 14:37:18.592 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config +Jun-03 14:37:18.642 [main] DEBUG n.secret.LocalSecretsProvider - Secrets store: /home/trace/.nextflow/secrets/store.json +Jun-03 14:37:18.650 [main] DEBUG nextflow.secret.SecretsLoader - Discovered secrets providers: [nextflow.secret.LocalSecretsProvider@2fb5fe30] - activable => nextflow.secret.LocalSecretsProvider@2fb5fe30 +Jun-03 14:37:18.686 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` +Jun-03 14:37:21.212 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` +Jun-03 14:37:22.092 [main] DEBUG nextflow.cli.CmdRun - Applied DSL=2 from script declaration +Jun-03 14:37:22.110 [main] INFO nextflow.cli.CmdRun - Launching `/home/trace/projects/proteinannotator/.nf-test-1d5885bf4a1b6a843b2ff7fe724035b2.nf` [furious_descartes] DSL2 - revision: c74789356e +Jun-03 14:37:22.112 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins declared=[nf-schema@2.3.0] +Jun-03 14:37:22.113 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins default=[] +Jun-03 14:37:22.113 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins resolved requirement=[nf-schema@2.3.0] +Jun-03 14:37:22.114 [main] DEBUG nextflow.plugin.PluginUpdater - Installing plugin nf-schema version: 2.3.0 +Jun-03 14:37:22.124 [main] INFO org.pf4j.AbstractPluginManager - Plugin 'nf-schema@2.3.0' resolved +Jun-03 14:37:22.124 [main] INFO org.pf4j.AbstractPluginManager - Start plugin 'nf-schema@2.3.0' +Jun-03 14:37:22.136 [main] DEBUG nextflow.plugin.BasePlugin - Plugin started nf-schema@2.3.0 +Jun-03 14:37:22.221 [main] DEBUG nextflow.Session - Session UUID: 6d78d7e6-2612-4d46-a22f-3634e5310907 +Jun-03 14:37:22.222 [main] DEBUG nextflow.Session - Run name: furious_descartes +Jun-03 14:37:22.223 [main] DEBUG nextflow.Session - Executor pool size: 8 +Jun-03 14:37:22.239 [main] DEBUG nextflow.file.FilePorter - File porter settings maxRetries=3; maxTransfers=50; pollTimeout=null +Jun-03 14:37:22.248 [main] DEBUG nextflow.util.ThreadPoolBuilder - Creating thread pool 'FileTransfer' minSize=10; maxSize=24; workQueue=LinkedBlockingQueue[-1]; allowCoreThreadTimeout=false +Jun-03 14:37:22.277 [main] DEBUG nextflow.cli.CmdRun - + Version: 24.10.6 build 5937 + Created: 23-04-2025 16:53 UTC (12:53 EDT) + System: Linux 6.1.0-33-amd64 + Runtime: Groovy 4.0.23 on OpenJDK 64-Bit Server VM 21.0.6-internal-adhoc.conda.src + Encoding: UTF-8 (UTF-8) + Process: 35245@lail-laptop [127.0.1.1] + CPUs: 8 - Mem: 7 GB (142.7 MB) - Swap: 977 MB (63 MB) +Jun-03 14:37:22.321 [main] DEBUG nextflow.Session - Work-dir: /home/trace/projects/proteinannotator/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/work [ext2/ext3] +Jun-03 14:37:22.322 [main] DEBUG nextflow.Session - Script base path does not exist or is not a directory: /home/trace/projects/proteinannotator/bin +Jun-03 14:37:22.339 [main] DEBUG nextflow.executor.ExecutorFactory - Extension executors providers=[] +Jun-03 14:37:22.358 [main] DEBUG nextflow.Session - Observer factory: DefaultObserverFactory +Jun-03 14:37:22.392 [main] DEBUG nextflow.Session - Observer factory: ValidationObserverFactory +Jun-03 14:37:22.507 [main] DEBUG nextflow.cache.CacheFactory - Using Nextflow cache factory: nextflow.cache.DefaultCacheFactory +Jun-03 14:37:22.521 [main] DEBUG nextflow.util.CustomThreadPool - Creating default thread pool > poolSize: 9; maxThreads: 1000 +Jun-03 14:37:22.611 [main] DEBUG nextflow.Session - Session start +Jun-03 14:37:22.615 [main] DEBUG nextflow.trace.TraceFileObserver - Workflow started -- trace file: /home/trace/projects/proteinannotator/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/trace.csv +Jun-03 14:37:22.935 [main] DEBUG nextflow.script.ScriptRunner - > Launching execution +Jun-03 14:37:23.148 [main] WARN nextflow.script.ScriptBinding - Access to undefined parameter `modules_testdata_base_path` -- Initialise it to a default value eg. `params.modules_testdata_base_path = some_value` +Jun-03 14:37:23.163 [main] DEBUG nextflow.script.ScriptRunner - Parsed script files: + Script_5efcee37cf6f5961: /home/trace/projects/proteinannotator/.nf-test-1d5885bf4a1b6a843b2ff7fe724035b2.nf + Script_7c8a310cd66b8f33: /home/trace/projects/proteinannotator/modules/nf-core/diamond/makedb/tests/../main.nf +Jun-03 14:37:23.164 [main] DEBUG nextflow.Session - Session aborted -- Cause: /home/trace/projects/proteinannotator/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/nullgenomics/sarscov2/genome/proteome.fasta.gz +Jun-03 14:37:23.171 [main] DEBUG nextflow.Session - +Thread[#10,Finalizer,8,system] + java.base@21.0.6-internal/java.lang.Object.wait0(Native Method) + java.base@21.0.6-internal/java.lang.Object.wait(Object.java:366) + java.base@21.0.6-internal/java.lang.Object.wait(Object.java:339) + java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.await(NativeReferenceQueue.java:48) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:158) + java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.remove(NativeReferenceQueue.java:89) + java.base@21.0.6-internal/java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:173) + +Thread[#9,Reference Handler,10,system] + java.base@21.0.6-internal/java.lang.ref.Reference.waitForReferencePendingList(Native Method) + java.base@21.0.6-internal/java.lang.ref.Reference.processPendingReferences(Reference.java:246) + java.base@21.0.6-internal/java.lang.ref.Reference$ReferenceHandler.run(Reference.java:208) + +Thread[#33,Thread-1,5,main] + java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) + java.base@21.0.6-internal/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1763) + java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.pollFirst(LinkedBlockingDeque.java:515) + java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.poll(LinkedBlockingDeque.java:677) + app//nextflow.util.SimpleAgent.run(SimpleAgent.groovy:89) + java.base@21.0.6-internal/java.lang.invoke.LambdaForm$DMH/0x00007f0cc419bc00.invokeVirtual(LambdaForm$DMH) + java.base@21.0.6-internal/java.lang.invoke.LambdaForm$MH/0x00007f0cc4490000.invoke(LambdaForm$MH) + java.base@21.0.6-internal/java.lang.invoke.Invokers$Holder.invokeExact_MT(Invokers$Holder) + java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(DirectMethodHandleAccessor.java:153) + java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + java.base@21.0.6-internal/java.lang.reflect.Method.invoke(Method.java:580) + app//org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343) + app//groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:328) + app//groovy.lang.MetaClassImpl.doInvokeMethod(MetaClassImpl.java:1333) + app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1088) + app//groovy.lang.MetaClassImpl.invokeMethodClosure(MetaClassImpl.java:1017) + app//groovy.lang.MetaClassImpl.doInvokeMethod(MetaClassImpl.java:1207) + app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1088) + app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1007) + app//groovy.lang.Closure.call(Closure.java:433) + app//groovy.lang.Closure.call(Closure.java:412) + app//groovy.lang.Closure.run(Closure.java:505) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + +Thread[#31,Keep-Alive-Timer,8,InnocuousThreadGroup] + java.base@21.0.6-internal/java.lang.Thread.sleep0(Native Method) + java.base@21.0.6-internal/java.lang.Thread.sleep(Thread.java:509) + java.base@21.0.6-internal/sun.net.www.http.KeepAliveCache.run(KeepAliveCache.java:238) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) + +Thread[#34,Actor Thread 1,5,main] + java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.6-internal/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:458) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.take(SynchronousQueue.java:318) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + +Thread[#18,Common-Cleaner,8,InnocuousThreadGroup] + java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) + java.base@21.0.6-internal/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1852) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.await(ReferenceQueue.java:71) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:143) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:218) + java.base@21.0.6-internal/jdk.internal.ref.CleanerImpl.run(CleanerImpl.java:140) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) + +Thread[#11,Signal Dispatcher,9,system] + +Thread[#1,main,5,main] + java.base@21.0.6-internal/java.lang.Thread.dumpThreads(Native Method) + java.base@21.0.6-internal/java.lang.Thread.getAllStackTraces(Thread.java:2522) + app//nextflow.util.SysHelper.dumpThreads(SysHelper.groovy:188) + app//nextflow.Session.abort(Session.groovy:800) + app//nextflow.script.ScriptRunner.execute(ScriptRunner.groovy:149) + app//nextflow.cli.CmdRun.run(CmdRun.groovy:376) + app//nextflow.cli.Launcher.run(Launcher.groovy:503) + app//nextflow.cli.Launcher.main(Launcher.groovy:658) + +Thread[#32,process reaper,10,InnocuousThreadGroup] + java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:410) + java.base@21.0.6-internal/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:338) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1069) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) + +Thread[#19,Notification Thread,9,system] + +Jun-03 14:37:23.182 [main] ERROR nextflow.cli.Launcher - /home/trace/projects/proteinannotator/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/nullgenomics/sarscov2/genome/proteome.fasta.gz +java.nio.file.NoSuchFileException: /home/trace/projects/proteinannotator/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/nullgenomics/sarscov2/genome/proteome.fasta.gz + at nextflow.file.FileHelper.checkIfExists(FileHelper.groovy:1099) + at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) + at nextflow.Nextflow.file(Nextflow.groovy:123) + at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) + at Script_5efcee37cf6f5961$_runScript_closure4$_closure6.doCall(Script_5efcee37cf6f5961:32) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343) + at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:328) + at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:279) + at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1007) + at groovy.lang.Closure.call(Closure.java:433) + at groovy.lang.Closure.call(Closure.java:412) + at nextflow.script.WorkflowDef.run0(WorkflowDef.groovy:204) + at nextflow.script.WorkflowDef.run(WorkflowDef.groovy:188) + at nextflow.script.BindableDef.invoke_a(BindableDef.groovy:51) + at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) + at nextflow.script.BaseScript.run0(BaseScript.groovy:198) + at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) + at nextflow.script.BaseScript.run(BaseScript.groovy:209) + at nextflow.script.ScriptParser.runScript(ScriptParser.groovy:236) + at nextflow.script.ScriptRunner.run(ScriptRunner.groovy:243) + at nextflow.script.ScriptRunner.execute(ScriptRunner.groovy:138) + at nextflow.cli.CmdRun.run(CmdRun.groovy:376) + at nextflow.cli.Launcher.run(Launcher.groovy:503) + at nextflow.cli.Launcher.main(Launcher.groovy:658) diff --git a/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/params.json b/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/params.json new file mode 100644 index 0000000..5931b63 --- /dev/null +++ b/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/params.json @@ -0,0 +1 @@ +{"nf_test_output":"/home/trace/projects/proteinannotator/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta","outdir":"/home/trace/projects/proteinannotator/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/output"} \ No newline at end of file diff --git a/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/std.err b/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/std.err new file mode 100644 index 0000000..519f6b3 --- /dev/null +++ b/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/std.err @@ -0,0 +1 @@ +Nextflow 25.04.3 is available - Please consider updating your version to it(B diff --git a/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/std.out b/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/std.out new file mode 100644 index 0000000..2d02350 --- /dev/null +++ b/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/std.out @@ -0,0 +1,3 @@ +ERROR ~ No such file or directory: /home/trace/projects/proteinannotator/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/nullgenomics/sarscov2/genome/proteome.fasta.gz + + -- Check script '/home/trace/projects/proteinannotator/.nf-test-1d5885bf4a1b6a843b2ff7fe724035b2.nf' at line: 32 or see '/home/trace/projects/proteinannotator/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/nextflow.log' file for more details diff --git a/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/trace.csv b/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/trace.csv new file mode 100644 index 0000000..6b739ac --- /dev/null +++ b/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/trace.csv @@ -0,0 +1 @@ +task_id hash native_id name status exit submit duration realtime %cpu peak_rss peak_vmem rchar wchar diff --git a/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/mock.nf b/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/mock.nf new file mode 100644 index 0000000..af561fc --- /dev/null +++ b/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/mock.nf @@ -0,0 +1,86 @@ +import groovy.json.JsonGenerator +import groovy.json.JsonGenerator.Converter + +nextflow.enable.dsl=2 + +// comes from nf-test to store json files +params.nf_test_output = "" + +// include dependencies + + +// include test process +include { DIAMOND_MAKEDB } from '/home/trace/projects/proteinannotator/modules/nf-core/diamond/makedb/tests/../main.nf' + +// define custom rules for JSON that will be generated. +def jsonOutput = + new JsonGenerator.Options() + .addConverter(Path) { value -> value.toAbsolutePath().toString() } // Custom converter for Path. Only filename + .build() + +def jsonWorkflowOutput = new JsonGenerator.Options().excludeNulls().build() + + +workflow { + + // run dependencies + + + // process mapping + def input = [] + + input[0] = [ [id:'test'], [ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] ] + input[1] = [ file(params.modules_testdata_base_path + 'genomics/sarscov2/metagenome/prot.accession2taxid.gz', checkIfExists: true) ] + input[2] = [ file(params.modules_testdata_base_path + 'genomics/sarscov2/metagenome/prot_nodes.dmp', checkIfExists: true) ] + input[3] = [ file(params.modules_testdata_base_path + 'genomics/sarscov2/metagenome/prot_names.dmp', checkIfExists: true) ] + + //---- + + //run process + DIAMOND_MAKEDB(*input) + + if (DIAMOND_MAKEDB.output){ + + // consumes all named output channels and stores items in a json file + for (def name in DIAMOND_MAKEDB.out.getNames()) { + serializeChannel(name, DIAMOND_MAKEDB.out.getProperty(name), jsonOutput) + } + + // consumes all unnamed output channels and stores items in a json file + def array = DIAMOND_MAKEDB.out as Object[] + for (def i = 0; i < array.length ; i++) { + serializeChannel(i, array[i], jsonOutput) + } + + } + +} + +def serializeChannel(name, channel, jsonOutput) { + def _name = name + def list = [ ] + channel.subscribe( + onNext: { + list.add(it) + }, + onComplete: { + def map = new HashMap() + map[_name] = list + def filename = "${params.nf_test_output}/output_${_name}.json" + new File(filename).text = jsonOutput.toJson(map) + } + ) +} + + +workflow.onComplete { + + def result = [ + success: workflow.success, + exitStatus: workflow.exitStatus, + errorMessage: workflow.errorMessage, + errorReport: workflow.errorReport + ] + new File("${params.nf_test_output}/workflow.json").text = jsonWorkflowOutput.toJson(result) + +} diff --git a/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/nextflow.log b/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/nextflow.log new file mode 100644 index 0000000..7231065 --- /dev/null +++ b/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/nextflow.log @@ -0,0 +1,183 @@ +Jun-03 14:37:25.253 [main] DEBUG nextflow.cli.Launcher - $> nextflow -quiet -log /home/trace/projects/proteinannotator/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/nextflow.log run /home/trace/projects/proteinannotator/.nf-test-381174926a8d5ef292fb88056bbadebd.nf -c /home/trace/projects/proteinannotator/nextflow.config -params-file /home/trace/projects/proteinannotator/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/params.json -ansi-log false -with-trace /home/trace/projects/proteinannotator/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/trace.csv -w /home/trace/projects/proteinannotator/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/work +Jun-03 14:37:25.417 [main] INFO nextflow.cli.CmdRun - N E X T F L O W ~ version 24.10.6 +Jun-03 14:37:25.467 [main] DEBUG nextflow.plugin.PluginsFacade - Setting up plugin manager > mode=prod; embedded=false; plugins-dir=/home/trace/.nextflow/plugins; core-plugins: nf-amazon@2.9.3,nf-azure@1.10.2,nf-cloudcache@0.4.2,nf-codecommit@0.2.2,nf-console@1.1.4,nf-google@1.15.4,nf-tower@1.9.3,nf-wave@1.7.5 +Jun-03 14:37:25.513 [main] INFO o.pf4j.DefaultPluginStatusProvider - Enabled plugins: [] +Jun-03 14:37:25.515 [main] INFO o.pf4j.DefaultPluginStatusProvider - Disabled plugins: [] +Jun-03 14:37:25.522 [main] INFO org.pf4j.DefaultPluginManager - PF4J version 3.12.0 in 'deployment' mode +Jun-03 14:37:25.552 [main] INFO org.pf4j.AbstractPluginManager - No plugins +Jun-03 14:37:25.608 [main] DEBUG nextflow.config.ConfigBuilder - Found config base: /home/trace/projects/proteinannotator/nextflow.config +Jun-03 14:37:25.622 [main] DEBUG nextflow.config.ConfigBuilder - User config file: /home/trace/projects/proteinannotator/nextflow.config +Jun-03 14:37:25.625 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config +Jun-03 14:37:25.627 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config +Jun-03 14:37:25.691 [main] DEBUG n.secret.LocalSecretsProvider - Secrets store: /home/trace/.nextflow/secrets/store.json +Jun-03 14:37:25.699 [main] DEBUG nextflow.secret.SecretsLoader - Discovered secrets providers: [nextflow.secret.LocalSecretsProvider@2fb5fe30] - activable => nextflow.secret.LocalSecretsProvider@2fb5fe30 +Jun-03 14:37:25.751 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` +Jun-03 14:37:28.784 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` +Jun-03 14:37:29.576 [main] DEBUG nextflow.cli.CmdRun - Applied DSL=2 from script declaration +Jun-03 14:37:29.593 [main] INFO nextflow.cli.CmdRun - Launching `/home/trace/projects/proteinannotator/.nf-test-381174926a8d5ef292fb88056bbadebd.nf` [stoic_rutherford] DSL2 - revision: 6549a57cf9 +Jun-03 14:37:29.594 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins declared=[nf-schema@2.3.0] +Jun-03 14:37:29.595 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins default=[] +Jun-03 14:37:29.596 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins resolved requirement=[nf-schema@2.3.0] +Jun-03 14:37:29.596 [main] DEBUG nextflow.plugin.PluginUpdater - Installing plugin nf-schema version: 2.3.0 +Jun-03 14:37:29.603 [main] INFO org.pf4j.AbstractPluginManager - Plugin 'nf-schema@2.3.0' resolved +Jun-03 14:37:29.604 [main] INFO org.pf4j.AbstractPluginManager - Start plugin 'nf-schema@2.3.0' +Jun-03 14:37:29.611 [main] DEBUG nextflow.plugin.BasePlugin - Plugin started nf-schema@2.3.0 +Jun-03 14:37:29.678 [main] DEBUG nextflow.Session - Session UUID: f01300c6-87f9-4e32-85a9-f9273e420254 +Jun-03 14:37:29.679 [main] DEBUG nextflow.Session - Run name: stoic_rutherford +Jun-03 14:37:29.680 [main] DEBUG nextflow.Session - Executor pool size: 8 +Jun-03 14:37:29.692 [main] DEBUG nextflow.file.FilePorter - File porter settings maxRetries=3; maxTransfers=50; pollTimeout=null +Jun-03 14:37:29.700 [main] DEBUG nextflow.util.ThreadPoolBuilder - Creating thread pool 'FileTransfer' minSize=10; maxSize=24; workQueue=LinkedBlockingQueue[-1]; allowCoreThreadTimeout=false +Jun-03 14:37:29.722 [main] DEBUG nextflow.cli.CmdRun - + Version: 24.10.6 build 5937 + Created: 23-04-2025 16:53 UTC (12:53 EDT) + System: Linux 6.1.0-33-amd64 + Runtime: Groovy 4.0.23 on OpenJDK 64-Bit Server VM 21.0.6-internal-adhoc.conda.src + Encoding: UTF-8 (UTF-8) + Process: 35380@lail-laptop [127.0.1.1] + CPUs: 8 - Mem: 7 GB (114.5 MB) - Swap: 977 MB (42.3 MB) +Jun-03 14:37:29.757 [main] DEBUG nextflow.Session - Work-dir: /home/trace/projects/proteinannotator/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/work [ext2/ext3] +Jun-03 14:37:29.758 [main] DEBUG nextflow.Session - Script base path does not exist or is not a directory: /home/trace/projects/proteinannotator/bin +Jun-03 14:37:29.772 [main] DEBUG nextflow.executor.ExecutorFactory - Extension executors providers=[] +Jun-03 14:37:29.785 [main] DEBUG nextflow.Session - Observer factory: DefaultObserverFactory +Jun-03 14:37:29.821 [main] DEBUG nextflow.Session - Observer factory: ValidationObserverFactory +Jun-03 14:37:29.921 [main] DEBUG nextflow.cache.CacheFactory - Using Nextflow cache factory: nextflow.cache.DefaultCacheFactory +Jun-03 14:37:29.934 [main] DEBUG nextflow.util.CustomThreadPool - Creating default thread pool > poolSize: 9; maxThreads: 1000 +Jun-03 14:37:30.000 [main] DEBUG nextflow.Session - Session start +Jun-03 14:37:30.002 [main] DEBUG nextflow.trace.TraceFileObserver - Workflow started -- trace file: /home/trace/projects/proteinannotator/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/trace.csv +Jun-03 14:37:30.299 [main] DEBUG nextflow.script.ScriptRunner - > Launching execution +Jun-03 14:37:30.511 [main] WARN nextflow.script.ScriptBinding - Access to undefined parameter `modules_testdata_base_path` -- Initialise it to a default value eg. `params.modules_testdata_base_path = some_value` +Jun-03 14:37:30.525 [main] DEBUG nextflow.script.ScriptRunner - Parsed script files: + Script_2acebebf6b1195e5: /home/trace/projects/proteinannotator/.nf-test-381174926a8d5ef292fb88056bbadebd.nf + Script_7c8a310cd66b8f33: /home/trace/projects/proteinannotator/modules/nf-core/diamond/makedb/tests/../main.nf +Jun-03 14:37:30.525 [main] DEBUG nextflow.Session - Session aborted -- Cause: /home/trace/projects/proteinannotator/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/nullgenomics/sarscov2/genome/proteome.fasta +Jun-03 14:37:30.531 [main] DEBUG nextflow.Session - +Thread[#10,Finalizer,8,system] + java.base@21.0.6-internal/java.lang.Object.wait0(Native Method) + java.base@21.0.6-internal/java.lang.Object.wait(Object.java:366) + java.base@21.0.6-internal/java.lang.Object.wait(Object.java:339) + java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.await(NativeReferenceQueue.java:48) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:158) + java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.remove(NativeReferenceQueue.java:89) + java.base@21.0.6-internal/java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:173) + +Thread[#9,Reference Handler,10,system] + java.base@21.0.6-internal/java.lang.ref.Reference.waitForReferencePendingList(Native Method) + java.base@21.0.6-internal/java.lang.ref.Reference.processPendingReferences(Reference.java:246) + java.base@21.0.6-internal/java.lang.ref.Reference$ReferenceHandler.run(Reference.java:208) + +Thread[#33,Thread-1,5,main] + java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) + java.base@21.0.6-internal/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1763) + java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.pollFirst(LinkedBlockingDeque.java:515) + java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.poll(LinkedBlockingDeque.java:677) + app//nextflow.util.SimpleAgent.run(SimpleAgent.groovy:89) + java.base@21.0.6-internal/java.lang.invoke.LambdaForm$DMH/0x00007fda8c19bc00.invokeVirtual(LambdaForm$DMH) + java.base@21.0.6-internal/java.lang.invoke.LambdaForm$MH/0x00007fda8c48c800.invoke(LambdaForm$MH) + java.base@21.0.6-internal/java.lang.invoke.Invokers$Holder.invokeExact_MT(Invokers$Holder) + java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(DirectMethodHandleAccessor.java:153) + java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + java.base@21.0.6-internal/java.lang.reflect.Method.invoke(Method.java:580) + app//org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343) + app//groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:328) + app//groovy.lang.MetaClassImpl.doInvokeMethod(MetaClassImpl.java:1333) + app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1088) + app//groovy.lang.MetaClassImpl.invokeMethodClosure(MetaClassImpl.java:1017) + app//groovy.lang.MetaClassImpl.doInvokeMethod(MetaClassImpl.java:1207) + app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1088) + app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1007) + app//groovy.lang.Closure.call(Closure.java:433) + app//groovy.lang.Closure.call(Closure.java:412) + app//groovy.lang.Closure.run(Closure.java:505) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + +Thread[#31,Keep-Alive-Timer,8,InnocuousThreadGroup] + java.base@21.0.6-internal/java.lang.Thread.sleep0(Native Method) + java.base@21.0.6-internal/java.lang.Thread.sleep(Thread.java:509) + java.base@21.0.6-internal/sun.net.www.http.KeepAliveCache.run(KeepAliveCache.java:238) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) + +Thread[#34,Actor Thread 1,5,main] + java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.6-internal/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:458) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.take(SynchronousQueue.java:318) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + +Thread[#18,Common-Cleaner,8,InnocuousThreadGroup] + java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) + java.base@21.0.6-internal/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1852) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.await(ReferenceQueue.java:71) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:143) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:218) + java.base@21.0.6-internal/jdk.internal.ref.CleanerImpl.run(CleanerImpl.java:140) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) + +Thread[#11,Signal Dispatcher,9,system] + +Thread[#1,main,5,main] + java.base@21.0.6-internal/java.lang.Thread.dumpThreads(Native Method) + java.base@21.0.6-internal/java.lang.Thread.getAllStackTraces(Thread.java:2522) + app//nextflow.util.SysHelper.dumpThreads(SysHelper.groovy:188) + app//nextflow.Session.abort(Session.groovy:800) + app//nextflow.script.ScriptRunner.execute(ScriptRunner.groovy:149) + app//nextflow.cli.CmdRun.run(CmdRun.groovy:376) + app//nextflow.cli.Launcher.run(Launcher.groovy:503) + app//nextflow.cli.Launcher.main(Launcher.groovy:658) + +Thread[#32,process reaper,10,InnocuousThreadGroup] + java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:410) + java.base@21.0.6-internal/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:338) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1069) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) + +Thread[#19,Notification Thread,9,system] + +Jun-03 14:37:30.541 [main] ERROR nextflow.cli.Launcher - /home/trace/projects/proteinannotator/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/nullgenomics/sarscov2/genome/proteome.fasta +java.nio.file.NoSuchFileException: /home/trace/projects/proteinannotator/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/nullgenomics/sarscov2/genome/proteome.fasta + at nextflow.file.FileHelper.checkIfExists(FileHelper.groovy:1099) + at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) + at nextflow.Nextflow.file(Nextflow.groovy:123) + at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) + at Script_2acebebf6b1195e5$_runScript_closure4$_closure6.doCall(Script_2acebebf6b1195e5:32) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343) + at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:328) + at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:279) + at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1007) + at groovy.lang.Closure.call(Closure.java:433) + at groovy.lang.Closure.call(Closure.java:412) + at nextflow.script.WorkflowDef.run0(WorkflowDef.groovy:204) + at nextflow.script.WorkflowDef.run(WorkflowDef.groovy:188) + at nextflow.script.BindableDef.invoke_a(BindableDef.groovy:51) + at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) + at nextflow.script.BaseScript.run0(BaseScript.groovy:198) + at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) + at nextflow.script.BaseScript.run(BaseScript.groovy:209) + at nextflow.script.ScriptParser.runScript(ScriptParser.groovy:236) + at nextflow.script.ScriptRunner.run(ScriptRunner.groovy:243) + at nextflow.script.ScriptRunner.execute(ScriptRunner.groovy:138) + at nextflow.cli.CmdRun.run(CmdRun.groovy:376) + at nextflow.cli.Launcher.run(Launcher.groovy:503) + at nextflow.cli.Launcher.main(Launcher.groovy:658) diff --git a/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/params.json b/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/params.json new file mode 100644 index 0000000..5a99676 --- /dev/null +++ b/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/params.json @@ -0,0 +1 @@ +{"nf_test_output":"/home/trace/projects/proteinannotator/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta","outdir":"/home/trace/projects/proteinannotator/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/output"} \ No newline at end of file diff --git a/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/std.err b/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/std.err new file mode 100644 index 0000000..519f6b3 --- /dev/null +++ b/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/std.err @@ -0,0 +1 @@ +Nextflow 25.04.3 is available - Please consider updating your version to it(B diff --git a/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/std.out b/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/std.out new file mode 100644 index 0000000..2df5494 --- /dev/null +++ b/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/std.out @@ -0,0 +1,3 @@ +ERROR ~ No such file or directory: /home/trace/projects/proteinannotator/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/nullgenomics/sarscov2/genome/proteome.fasta + + -- Check script '/home/trace/projects/proteinannotator/.nf-test-381174926a8d5ef292fb88056bbadebd.nf' at line: 32 or see '/home/trace/projects/proteinannotator/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/nextflow.log' file for more details diff --git a/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/trace.csv b/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/trace.csv new file mode 100644 index 0000000..6b739ac --- /dev/null +++ b/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/trace.csv @@ -0,0 +1 @@ +task_id hash native_id name status exit submit duration realtime %cpu peak_rss peak_vmem rchar wchar diff --git a/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/nextflow.log b/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/nextflow.log index f6b0b39..3dbf5b6 100644 --- a/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/nextflow.log +++ b/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/nextflow.log @@ -1,57 +1,57 @@ -May-27 13:22:47.452 [main] DEBUG nextflow.cli.Launcher - $> nextflow -quiet -log /home/trace/projects/proteinannotator/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/nextflow.log run /home/trace/projects/proteinannotator/.nf-test-5fe1b68b1633d10fa11759d4fe6e77d1.nf -c /home/trace/projects/proteinannotator/nextflow.config -c /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/./nextflow.config -params-file /home/trace/projects/proteinannotator/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/params.json -ansi-log false -with-trace /home/trace/projects/proteinannotator/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/trace.csv -w /home/trace/projects/proteinannotator/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/work -May-27 13:22:47.572 [main] INFO nextflow.cli.CmdRun - N E X T F L O W ~ version 24.10.6 -May-27 13:22:47.605 [main] DEBUG nextflow.plugin.PluginsFacade - Setting up plugin manager > mode=prod; embedded=false; plugins-dir=/home/trace/.nextflow/plugins; core-plugins: nf-amazon@2.9.3,nf-azure@1.10.2,nf-cloudcache@0.4.2,nf-codecommit@0.2.2,nf-console@1.1.4,nf-google@1.15.4,nf-tower@1.9.3,nf-wave@1.7.5 -May-27 13:22:47.642 [main] INFO o.pf4j.DefaultPluginStatusProvider - Enabled plugins: [] -May-27 13:22:47.643 [main] INFO o.pf4j.DefaultPluginStatusProvider - Disabled plugins: [] -May-27 13:22:47.648 [main] INFO org.pf4j.DefaultPluginManager - PF4J version 3.12.0 in 'deployment' mode -May-27 13:22:47.670 [main] INFO org.pf4j.AbstractPluginManager - No plugins -May-27 13:22:47.711 [main] DEBUG nextflow.config.ConfigBuilder - Found config base: /home/trace/projects/proteinannotator/nextflow.config -May-27 13:22:47.722 [main] DEBUG nextflow.config.ConfigBuilder - User config file: /home/trace/projects/proteinannotator/nextflow.config -May-27 13:22:47.723 [main] DEBUG nextflow.config.ConfigBuilder - User config file: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/./nextflow.config -May-27 13:22:47.726 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config -May-27 13:22:47.727 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config -May-27 13:22:47.727 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/nextflow.config -May-27 13:22:47.776 [main] DEBUG n.secret.LocalSecretsProvider - Secrets store: /home/trace/.nextflow/secrets/store.json -May-27 13:22:47.782 [main] DEBUG nextflow.secret.SecretsLoader - Discovered secrets providers: [nextflow.secret.LocalSecretsProvider@2fb5fe30] - activable => nextflow.secret.LocalSecretsProvider@2fb5fe30 -May-27 13:22:47.815 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` -May-27 13:22:50.423 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` -May-27 13:22:51.090 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` -May-27 13:22:51.157 [main] DEBUG nextflow.cli.CmdRun - Applied DSL=2 from script declaration -May-27 13:22:51.176 [main] INFO nextflow.cli.CmdRun - Launching `/home/trace/projects/proteinannotator/.nf-test-5fe1b68b1633d10fa11759d4fe6e77d1.nf` [loving_albattani] DSL2 - revision: a1ca7e6f26 -May-27 13:22:51.178 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins declared=[nf-schema@2.3.0] -May-27 13:22:51.179 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins default=[] -May-27 13:22:51.179 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins resolved requirement=[nf-schema@2.3.0] -May-27 13:22:51.180 [main] DEBUG nextflow.plugin.PluginUpdater - Installing plugin nf-schema version: 2.3.0 -May-27 13:22:51.187 [main] INFO org.pf4j.AbstractPluginManager - Plugin 'nf-schema@2.3.0' resolved -May-27 13:22:51.188 [main] INFO org.pf4j.AbstractPluginManager - Start plugin 'nf-schema@2.3.0' -May-27 13:22:51.197 [main] DEBUG nextflow.plugin.BasePlugin - Plugin started nf-schema@2.3.0 -May-27 13:22:51.264 [main] DEBUG nextflow.Session - Session UUID: 6f48591d-548d-49dc-a6e6-bf3a0ab76f2a -May-27 13:22:51.265 [main] DEBUG nextflow.Session - Run name: loving_albattani -May-27 13:22:51.265 [main] DEBUG nextflow.Session - Executor pool size: 8 -May-27 13:22:51.276 [main] DEBUG nextflow.file.FilePorter - File porter settings maxRetries=3; maxTransfers=50; pollTimeout=null -May-27 13:22:51.284 [main] DEBUG nextflow.util.ThreadPoolBuilder - Creating thread pool 'FileTransfer' minSize=10; maxSize=24; workQueue=LinkedBlockingQueue[-1]; allowCoreThreadTimeout=false -May-27 13:22:51.311 [main] DEBUG nextflow.cli.CmdRun - +Jun-02 15:12:31.132 [main] DEBUG nextflow.cli.Launcher - $> nextflow -quiet -log /home/trace/projects/proteinannotator/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/nextflow.log run /home/trace/projects/proteinannotator/.nf-test-5fe1b68b1633d10fa11759d4fe6e77d1.nf -c /home/trace/projects/proteinannotator/nextflow.config -c /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/./nextflow.config -params-file /home/trace/projects/proteinannotator/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/params.json -ansi-log false -with-trace /home/trace/projects/proteinannotator/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/trace.csv -w /home/trace/projects/proteinannotator/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/work +Jun-02 15:12:31.300 [main] INFO nextflow.cli.CmdRun - N E X T F L O W ~ version 24.10.6 +Jun-02 15:12:31.358 [main] DEBUG nextflow.plugin.PluginsFacade - Setting up plugin manager > mode=prod; embedded=false; plugins-dir=/home/trace/.nextflow/plugins; core-plugins: nf-amazon@2.9.3,nf-azure@1.10.2,nf-cloudcache@0.4.2,nf-codecommit@0.2.2,nf-console@1.1.4,nf-google@1.15.4,nf-tower@1.9.3,nf-wave@1.7.5 +Jun-02 15:12:31.411 [main] INFO o.pf4j.DefaultPluginStatusProvider - Enabled plugins: [] +Jun-02 15:12:31.413 [main] INFO o.pf4j.DefaultPluginStatusProvider - Disabled plugins: [] +Jun-02 15:12:31.424 [main] INFO org.pf4j.DefaultPluginManager - PF4J version 3.12.0 in 'deployment' mode +Jun-02 15:12:31.458 [main] INFO org.pf4j.AbstractPluginManager - No plugins +Jun-02 15:12:31.515 [main] DEBUG nextflow.config.ConfigBuilder - Found config base: /home/trace/projects/proteinannotator/nextflow.config +Jun-02 15:12:31.530 [main] DEBUG nextflow.config.ConfigBuilder - User config file: /home/trace/projects/proteinannotator/nextflow.config +Jun-02 15:12:31.531 [main] DEBUG nextflow.config.ConfigBuilder - User config file: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/./nextflow.config +Jun-02 15:12:31.541 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config +Jun-02 15:12:31.543 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config +Jun-02 15:12:31.545 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/nextflow.config +Jun-02 15:12:31.624 [main] DEBUG n.secret.LocalSecretsProvider - Secrets store: /home/trace/.nextflow/secrets/store.json +Jun-02 15:12:31.632 [main] DEBUG nextflow.secret.SecretsLoader - Discovered secrets providers: [nextflow.secret.LocalSecretsProvider@2fb5fe30] - activable => nextflow.secret.LocalSecretsProvider@2fb5fe30 +Jun-02 15:12:31.702 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` +Jun-02 15:12:35.192 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` +Jun-02 15:12:36.088 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` +Jun-02 15:12:36.177 [main] DEBUG nextflow.cli.CmdRun - Applied DSL=2 from script declaration +Jun-02 15:12:36.201 [main] INFO nextflow.cli.CmdRun - Launching `/home/trace/projects/proteinannotator/.nf-test-5fe1b68b1633d10fa11759d4fe6e77d1.nf` [irreverent_wright] DSL2 - revision: a1ca7e6f26 +Jun-02 15:12:36.206 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins declared=[nf-schema@2.3.0] +Jun-02 15:12:36.207 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins default=[] +Jun-02 15:12:36.208 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins resolved requirement=[nf-schema@2.3.0] +Jun-02 15:12:36.208 [main] DEBUG nextflow.plugin.PluginUpdater - Installing plugin nf-schema version: 2.3.0 +Jun-02 15:12:36.216 [main] INFO org.pf4j.AbstractPluginManager - Plugin 'nf-schema@2.3.0' resolved +Jun-02 15:12:36.217 [main] INFO org.pf4j.AbstractPluginManager - Start plugin 'nf-schema@2.3.0' +Jun-02 15:12:36.227 [main] DEBUG nextflow.plugin.BasePlugin - Plugin started nf-schema@2.3.0 +Jun-02 15:12:36.321 [main] DEBUG nextflow.Session - Session UUID: 3f61e3a4-552a-48be-a800-7dc9a1ac512b +Jun-02 15:12:36.322 [main] DEBUG nextflow.Session - Run name: irreverent_wright +Jun-02 15:12:36.323 [main] DEBUG nextflow.Session - Executor pool size: 8 +Jun-02 15:12:36.342 [main] DEBUG nextflow.file.FilePorter - File porter settings maxRetries=3; maxTransfers=50; pollTimeout=null +Jun-02 15:12:36.351 [main] DEBUG nextflow.util.ThreadPoolBuilder - Creating thread pool 'FileTransfer' minSize=10; maxSize=24; workQueue=LinkedBlockingQueue[-1]; allowCoreThreadTimeout=false +Jun-02 15:12:36.386 [main] DEBUG nextflow.cli.CmdRun - Version: 24.10.6 build 5937 Created: 23-04-2025 16:53 UTC (12:53 EDT) System: Linux 6.1.0-33-amd64 Runtime: Groovy 4.0.23 on OpenJDK 64-Bit Server VM 21.0.6-internal-adhoc.conda.src Encoding: UTF-8 (UTF-8) - Process: 62415@lail-laptop [127.0.1.1] - CPUs: 8 - Mem: 7 GB (408.9 MB) - Swap: 977 MB (2.2 MB) -May-27 13:22:51.343 [main] DEBUG nextflow.Session - Work-dir: /home/trace/projects/proteinannotator/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/work [ext2/ext3] -May-27 13:22:51.343 [main] DEBUG nextflow.Session - Script base path does not exist or is not a directory: /home/trace/projects/proteinannotator/bin -May-27 13:22:51.358 [main] DEBUG nextflow.executor.ExecutorFactory - Extension executors providers=[] -May-27 13:22:51.373 [main] DEBUG nextflow.Session - Observer factory: DefaultObserverFactory -May-27 13:22:51.406 [main] DEBUG nextflow.Session - Observer factory: ValidationObserverFactory -May-27 13:22:51.498 [main] DEBUG nextflow.cache.CacheFactory - Using Nextflow cache factory: nextflow.cache.DefaultCacheFactory -May-27 13:22:51.511 [main] DEBUG nextflow.util.CustomThreadPool - Creating default thread pool > poolSize: 9; maxThreads: 1000 -May-27 13:22:51.587 [main] DEBUG nextflow.Session - Session start -May-27 13:22:51.590 [main] DEBUG nextflow.trace.TraceFileObserver - Workflow started -- trace file: /home/trace/projects/proteinannotator/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/trace.csv -May-27 13:22:51.927 [main] DEBUG nextflow.script.ScriptRunner - > Launching execution -May-27 13:22:51.947 [main] DEBUG nextflow.script.ScriptRunner - Parsed script files: + Process: 5929@lail-laptop [127.0.1.1] + CPUs: 8 - Mem: 7 GB (185.1 MB) - Swap: 977 MB (954 MB) +Jun-02 15:12:36.432 [main] DEBUG nextflow.Session - Work-dir: /home/trace/projects/proteinannotator/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/work [ext2/ext3] +Jun-02 15:12:36.433 [main] DEBUG nextflow.Session - Script base path does not exist or is not a directory: /home/trace/projects/proteinannotator/bin +Jun-02 15:12:36.454 [main] DEBUG nextflow.executor.ExecutorFactory - Extension executors providers=[] +Jun-02 15:12:36.477 [main] DEBUG nextflow.Session - Observer factory: DefaultObserverFactory +Jun-02 15:12:36.526 [main] DEBUG nextflow.Session - Observer factory: ValidationObserverFactory +Jun-02 15:12:36.648 [main] DEBUG nextflow.cache.CacheFactory - Using Nextflow cache factory: nextflow.cache.DefaultCacheFactory +Jun-02 15:12:36.665 [main] DEBUG nextflow.util.CustomThreadPool - Creating default thread pool > poolSize: 9; maxThreads: 1000 +Jun-02 15:12:36.762 [main] DEBUG nextflow.Session - Session start +Jun-02 15:12:36.766 [main] DEBUG nextflow.trace.TraceFileObserver - Workflow started -- trace file: /home/trace/projects/proteinannotator/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/trace.csv +Jun-02 15:12:37.241 [main] DEBUG nextflow.script.ScriptRunner - > Launching execution +Jun-02 15:12:37.263 [main] DEBUG nextflow.script.ScriptRunner - Parsed script files: Script_e3c35e79f690a4ec: /home/trace/projects/proteinannotator/.nf-test-5fe1b68b1633d10fa11759d4fe6e77d1.nf -May-27 13:22:51.948 [main] DEBUG nextflow.Session - Session aborted -- Cause: Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf -May-27 13:22:51.953 [main] DEBUG nextflow.Session - +Jun-02 15:12:37.264 [main] DEBUG nextflow.Session - Session aborted -- Cause: Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf +Jun-02 15:12:37.272 [main] DEBUG nextflow.Session - Thread[#34,Actor Thread 1,5,main] java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) @@ -86,8 +86,8 @@ Thread[#33,Thread-1,5,main] java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.pollFirst(LinkedBlockingDeque.java:515) java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.poll(LinkedBlockingDeque.java:677) app//nextflow.util.SimpleAgent.run(SimpleAgent.groovy:89) - java.base@21.0.6-internal/java.lang.invoke.LambdaForm$DMH/0x00007fe6fc19bc00.invokeVirtual(LambdaForm$DMH) - java.base@21.0.6-internal/java.lang.invoke.LambdaForm$MH/0x00007fe6fc490000.invoke(LambdaForm$MH) + java.base@21.0.6-internal/java.lang.invoke.LambdaForm$DMH/0x00007fc73819bc00.invokeVirtual(LambdaForm$DMH) + java.base@21.0.6-internal/java.lang.invoke.LambdaForm$MH/0x00007fc738490000.invoke(LambdaForm$MH) java.base@21.0.6-internal/java.lang.invoke.Invokers$Holder.invokeExact_MT(Invokers$Holder) java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(DirectMethodHandleAccessor.java:153) java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) @@ -154,7 +154,7 @@ Thread[#10,Finalizer,8,system] java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.remove(NativeReferenceQueue.java:89) java.base@21.0.6-internal/java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:173) -May-27 13:22:51.963 [main] ERROR nextflow.cli.Launcher - Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf +Jun-02 15:12:37.286 [main] ERROR nextflow.cli.Launcher - Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf java.nio.file.NoSuchFileException: Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf at nextflow.script.IncludeDef.realModulePath(IncludeDef.groovy:184) at nextflow.script.IncludeDef.load0(IncludeDef.groovy:112) diff --git a/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/nextflow.log b/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/nextflow.log index fed441e..997d29f 100644 --- a/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/nextflow.log +++ b/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/nextflow.log @@ -1,65 +1,58 @@ -May-27 13:22:35.640 [main] DEBUG nextflow.cli.Launcher - $> nextflow -quiet -log /home/trace/projects/proteinannotator/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/nextflow.log run /home/trace/projects/proteinannotator/.nf-test-a260ceea709dc0bf58d9c19bcab59e27.nf -c /home/trace/projects/proteinannotator/nextflow.config -params-file /home/trace/projects/proteinannotator/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/params.json -ansi-log false -with-trace /home/trace/projects/proteinannotator/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/trace.csv -w /home/trace/projects/proteinannotator/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/work -May-27 13:22:35.755 [main] INFO nextflow.cli.CmdRun - N E X T F L O W ~ version 24.10.6 -May-27 13:22:35.790 [main] DEBUG nextflow.plugin.PluginsFacade - Setting up plugin manager > mode=prod; embedded=false; plugins-dir=/home/trace/.nextflow/plugins; core-plugins: nf-amazon@2.9.3,nf-azure@1.10.2,nf-cloudcache@0.4.2,nf-codecommit@0.2.2,nf-console@1.1.4,nf-google@1.15.4,nf-tower@1.9.3,nf-wave@1.7.5 -May-27 13:22:35.826 [main] INFO o.pf4j.DefaultPluginStatusProvider - Enabled plugins: [] -May-27 13:22:35.827 [main] INFO o.pf4j.DefaultPluginStatusProvider - Disabled plugins: [] -May-27 13:22:35.832 [main] INFO org.pf4j.DefaultPluginManager - PF4J version 3.12.0 in 'deployment' mode -May-27 13:22:35.852 [main] INFO org.pf4j.AbstractPluginManager - No plugins -May-27 13:22:35.888 [main] DEBUG nextflow.config.ConfigBuilder - Found config base: /home/trace/projects/proteinannotator/nextflow.config -May-27 13:22:35.896 [main] DEBUG nextflow.config.ConfigBuilder - User config file: /home/trace/projects/proteinannotator/nextflow.config -May-27 13:22:35.899 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config -May-27 13:22:35.901 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config -May-27 13:22:35.951 [main] DEBUG n.secret.LocalSecretsProvider - Secrets store: /home/trace/.nextflow/secrets/store.json -May-27 13:22:35.959 [main] DEBUG nextflow.secret.SecretsLoader - Discovered secrets providers: [nextflow.secret.LocalSecretsProvider@2fb5fe30] - activable => nextflow.secret.LocalSecretsProvider@2fb5fe30 -May-27 13:22:35.997 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` -May-27 13:22:38.503 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` -May-27 13:22:39.196 [main] DEBUG nextflow.cli.CmdRun - Applied DSL=2 from script declaration -May-27 13:22:39.213 [main] INFO nextflow.cli.CmdRun - Launching `/home/trace/projects/proteinannotator/.nf-test-a260ceea709dc0bf58d9c19bcab59e27.nf` [admiring_knuth] DSL2 - revision: 011cf4f3fc -May-27 13:22:39.214 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins declared=[nf-schema@2.3.0] -May-27 13:22:39.215 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins default=[] -May-27 13:22:39.215 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins resolved requirement=[nf-schema@2.3.0] -May-27 13:22:39.215 [main] DEBUG nextflow.plugin.PluginUpdater - Installing plugin nf-schema version: 2.3.0 -May-27 13:22:39.222 [main] INFO org.pf4j.AbstractPluginManager - Plugin 'nf-schema@2.3.0' resolved -May-27 13:22:39.223 [main] INFO org.pf4j.AbstractPluginManager - Start plugin 'nf-schema@2.3.0' -May-27 13:22:39.231 [main] DEBUG nextflow.plugin.BasePlugin - Plugin started nf-schema@2.3.0 -May-27 13:22:39.293 [main] DEBUG nextflow.Session - Session UUID: 50b84080-fa16-4e51-8245-27c728f1480d -May-27 13:22:39.294 [main] DEBUG nextflow.Session - Run name: admiring_knuth -May-27 13:22:39.295 [main] DEBUG nextflow.Session - Executor pool size: 8 -May-27 13:22:39.304 [main] DEBUG nextflow.file.FilePorter - File porter settings maxRetries=3; maxTransfers=50; pollTimeout=null -May-27 13:22:39.312 [main] DEBUG nextflow.util.ThreadPoolBuilder - Creating thread pool 'FileTransfer' minSize=10; maxSize=24; workQueue=LinkedBlockingQueue[-1]; allowCoreThreadTimeout=false -May-27 13:22:39.336 [main] DEBUG nextflow.cli.CmdRun - +Jun-02 15:12:16.381 [main] DEBUG nextflow.cli.Launcher - $> nextflow -quiet -log /home/trace/projects/proteinannotator/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/nextflow.log run /home/trace/projects/proteinannotator/.nf-test-a260ceea709dc0bf58d9c19bcab59e27.nf -c /home/trace/projects/proteinannotator/nextflow.config -params-file /home/trace/projects/proteinannotator/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/params.json -ansi-log false -with-trace /home/trace/projects/proteinannotator/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/trace.csv -w /home/trace/projects/proteinannotator/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/work +Jun-02 15:12:16.508 [main] INFO nextflow.cli.CmdRun - N E X T F L O W ~ version 24.10.6 +Jun-02 15:12:16.547 [main] DEBUG nextflow.plugin.PluginsFacade - Setting up plugin manager > mode=prod; embedded=false; plugins-dir=/home/trace/.nextflow/plugins; core-plugins: nf-amazon@2.9.3,nf-azure@1.10.2,nf-cloudcache@0.4.2,nf-codecommit@0.2.2,nf-console@1.1.4,nf-google@1.15.4,nf-tower@1.9.3,nf-wave@1.7.5 +Jun-02 15:12:16.582 [main] INFO o.pf4j.DefaultPluginStatusProvider - Enabled plugins: [] +Jun-02 15:12:16.584 [main] INFO o.pf4j.DefaultPluginStatusProvider - Disabled plugins: [] +Jun-02 15:12:16.589 [main] INFO org.pf4j.DefaultPluginManager - PF4J version 3.12.0 in 'deployment' mode +Jun-02 15:12:16.612 [main] INFO org.pf4j.AbstractPluginManager - No plugins +Jun-02 15:12:16.656 [main] DEBUG nextflow.config.ConfigBuilder - Found config base: /home/trace/projects/proteinannotator/nextflow.config +Jun-02 15:12:16.670 [main] DEBUG nextflow.config.ConfigBuilder - User config file: /home/trace/projects/proteinannotator/nextflow.config +Jun-02 15:12:16.673 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config +Jun-02 15:12:16.674 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config +Jun-02 15:12:16.727 [main] DEBUG n.secret.LocalSecretsProvider - Secrets store: /home/trace/.nextflow/secrets/store.json +Jun-02 15:12:16.735 [main] DEBUG nextflow.secret.SecretsLoader - Discovered secrets providers: [nextflow.secret.LocalSecretsProvider@2fb5fe30] - activable => nextflow.secret.LocalSecretsProvider@2fb5fe30 +Jun-02 15:12:16.772 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` +Jun-02 15:12:20.089 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` +Jun-02 15:12:20.983 [main] DEBUG nextflow.cli.CmdRun - Applied DSL=2 from script declaration +Jun-02 15:12:21.000 [main] INFO nextflow.cli.CmdRun - Launching `/home/trace/projects/proteinannotator/.nf-test-a260ceea709dc0bf58d9c19bcab59e27.nf` [chaotic_hugle] DSL2 - revision: 011cf4f3fc +Jun-02 15:12:21.002 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins declared=[nf-schema@2.3.0] +Jun-02 15:12:21.003 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins default=[] +Jun-02 15:12:21.004 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins resolved requirement=[nf-schema@2.3.0] +Jun-02 15:12:21.004 [main] DEBUG nextflow.plugin.PluginUpdater - Installing plugin nf-schema version: 2.3.0 +Jun-02 15:12:21.011 [main] INFO org.pf4j.AbstractPluginManager - Plugin 'nf-schema@2.3.0' resolved +Jun-02 15:12:21.012 [main] INFO org.pf4j.AbstractPluginManager - Start plugin 'nf-schema@2.3.0' +Jun-02 15:12:21.024 [main] DEBUG nextflow.plugin.BasePlugin - Plugin started nf-schema@2.3.0 +Jun-02 15:12:21.094 [main] DEBUG nextflow.Session - Session UUID: fccd9582-c948-4dce-9ce2-c1c0e6f75543 +Jun-02 15:12:21.094 [main] DEBUG nextflow.Session - Run name: chaotic_hugle +Jun-02 15:12:21.095 [main] DEBUG nextflow.Session - Executor pool size: 8 +Jun-02 15:12:21.105 [main] DEBUG nextflow.file.FilePorter - File porter settings maxRetries=3; maxTransfers=50; pollTimeout=null +Jun-02 15:12:21.116 [main] DEBUG nextflow.util.ThreadPoolBuilder - Creating thread pool 'FileTransfer' minSize=10; maxSize=24; workQueue=LinkedBlockingQueue[-1]; allowCoreThreadTimeout=false +Jun-02 15:12:21.143 [main] DEBUG nextflow.cli.CmdRun - Version: 24.10.6 build 5937 Created: 23-04-2025 16:53 UTC (12:53 EDT) System: Linux 6.1.0-33-amd64 Runtime: Groovy 4.0.23 on OpenJDK 64-Bit Server VM 21.0.6-internal-adhoc.conda.src Encoding: UTF-8 (UTF-8) - Process: 62189@lail-laptop [127.0.1.1] - CPUs: 8 - Mem: 7 GB (432.5 MB) - Swap: 977 MB (2.2 MB) -May-27 13:22:39.368 [main] DEBUG nextflow.Session - Work-dir: /home/trace/projects/proteinannotator/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/work [ext2/ext3] -May-27 13:22:39.369 [main] DEBUG nextflow.Session - Script base path does not exist or is not a directory: /home/trace/projects/proteinannotator/bin -May-27 13:22:39.381 [main] DEBUG nextflow.executor.ExecutorFactory - Extension executors providers=[] -May-27 13:22:39.392 [main] DEBUG nextflow.Session - Observer factory: DefaultObserverFactory -May-27 13:22:39.419 [main] DEBUG nextflow.Session - Observer factory: ValidationObserverFactory -May-27 13:22:39.514 [main] DEBUG nextflow.cache.CacheFactory - Using Nextflow cache factory: nextflow.cache.DefaultCacheFactory -May-27 13:22:39.526 [main] DEBUG nextflow.util.CustomThreadPool - Creating default thread pool > poolSize: 9; maxThreads: 1000 -May-27 13:22:39.607 [main] DEBUG nextflow.Session - Session start -May-27 13:22:39.610 [main] DEBUG nextflow.trace.TraceFileObserver - Workflow started -- trace file: /home/trace/projects/proteinannotator/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/trace.csv -May-27 13:22:39.915 [main] DEBUG nextflow.script.ScriptRunner - > Launching execution -May-27 13:22:39.934 [main] DEBUG nextflow.script.ScriptRunner - Parsed script files: + Process: 5635@lail-laptop [127.0.1.1] + CPUs: 8 - Mem: 7 GB (164.2 MB) - Swap: 977 MB (954 MB) +Jun-02 15:12:21.180 [main] DEBUG nextflow.Session - Work-dir: /home/trace/projects/proteinannotator/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/work [ext2/ext3] +Jun-02 15:12:21.182 [main] DEBUG nextflow.Session - Script base path does not exist or is not a directory: /home/trace/projects/proteinannotator/bin +Jun-02 15:12:21.198 [main] DEBUG nextflow.executor.ExecutorFactory - Extension executors providers=[] +Jun-02 15:12:21.212 [main] DEBUG nextflow.Session - Observer factory: DefaultObserverFactory +Jun-02 15:12:21.254 [main] DEBUG nextflow.Session - Observer factory: ValidationObserverFactory +Jun-02 15:12:21.368 [main] DEBUG nextflow.cache.CacheFactory - Using Nextflow cache factory: nextflow.cache.DefaultCacheFactory +Jun-02 15:12:21.389 [main] DEBUG nextflow.util.CustomThreadPool - Creating default thread pool > poolSize: 9; maxThreads: 1000 +Jun-02 15:12:21.503 [main] DEBUG nextflow.Session - Session start +Jun-02 15:12:21.507 [main] DEBUG nextflow.trace.TraceFileObserver - Workflow started -- trace file: /home/trace/projects/proteinannotator/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/trace.csv +Jun-02 15:12:21.924 [main] DEBUG nextflow.script.ScriptRunner - > Launching execution +Jun-02 15:12:21.945 [main] DEBUG nextflow.script.ScriptRunner - Parsed script files: Script_226fa0985fbc84f4: /home/trace/projects/proteinannotator/.nf-test-a260ceea709dc0bf58d9c19bcab59e27.nf -May-27 13:22:39.935 [main] DEBUG nextflow.Session - Session aborted -- Cause: Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf -May-27 13:22:39.940 [main] DEBUG nextflow.Session - -Thread[#18,Common-Cleaner,8,InnocuousThreadGroup] - java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) - java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) - java.base@21.0.6-internal/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1852) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.await(ReferenceQueue.java:71) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:143) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:218) - java.base@21.0.6-internal/jdk.internal.ref.CleanerImpl.run(CleanerImpl.java:140) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) +Jun-02 15:12:21.946 [main] DEBUG nextflow.Session - Session aborted -- Cause: Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf +Jun-02 15:12:21.955 [main] DEBUG nextflow.Session - +Thread[#9,Reference Handler,10,system] + java.base@21.0.6-internal/java.lang.ref.Reference.waitForReferencePendingList(Native Method) + java.base@21.0.6-internal/java.lang.ref.Reference.processPendingReferences(Reference.java:246) + java.base@21.0.6-internal/java.lang.ref.Reference$ReferenceHandler.run(Reference.java:208) Thread[#31,Keep-Alive-Timer,8,InnocuousThreadGroup] java.base@21.0.6-internal/java.lang.Thread.sleep0(Native Method) @@ -69,31 +62,6 @@ Thread[#31,Keep-Alive-Timer,8,InnocuousThreadGroup] java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) -Thread[#32,process reaper,10,InnocuousThreadGroup] - java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) - java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:410) - java.base@21.0.6-internal/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:338) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1069) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) - -Thread[#10,Finalizer,8,system] - java.base@21.0.6-internal/java.lang.Object.wait0(Native Method) - java.base@21.0.6-internal/java.lang.Object.wait(Object.java:366) - java.base@21.0.6-internal/java.lang.Object.wait(Object.java:339) - java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.await(NativeReferenceQueue.java:48) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:158) - java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.remove(NativeReferenceQueue.java:89) - java.base@21.0.6-internal/java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:173) - -Thread[#19,Notification Thread,9,system] - Thread[#33,Thread-1,5,main] java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) @@ -101,8 +69,8 @@ Thread[#33,Thread-1,5,main] java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.pollFirst(LinkedBlockingDeque.java:515) java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.poll(LinkedBlockingDeque.java:677) app//nextflow.util.SimpleAgent.run(SimpleAgent.groovy:89) - java.base@21.0.6-internal/java.lang.invoke.LambdaForm$DMH/0x00007f358819bc00.invokeVirtual(LambdaForm$DMH) - java.base@21.0.6-internal/java.lang.invoke.LambdaForm$MH/0x00007f3588490000.invoke(LambdaForm$MH) + java.base@21.0.6-internal/java.lang.invoke.LambdaForm$DMH/0x00007f692019bc00.invokeVirtual(LambdaForm$DMH) + java.base@21.0.6-internal/java.lang.invoke.LambdaForm$MH/0x00007f6920490000.invoke(LambdaForm$MH) java.base@21.0.6-internal/java.lang.invoke.Invokers$Holder.invokeExact_MT(Invokers$Holder) java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(DirectMethodHandleAccessor.java:153) java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) @@ -121,11 +89,6 @@ Thread[#33,Thread-1,5,main] java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) -Thread[#9,Reference Handler,10,system] - java.base@21.0.6-internal/java.lang.ref.Reference.waitForReferencePendingList(Native Method) - java.base@21.0.6-internal/java.lang.ref.Reference.processPendingReferences(Reference.java:246) - java.base@21.0.6-internal/java.lang.ref.Reference$ReferenceHandler.run(Reference.java:208) - Thread[#34,Actor Thread 1,5,main] java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) @@ -139,8 +102,45 @@ Thread[#34,Actor Thread 1,5,main] java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) +Thread[#18,Common-Cleaner,8,InnocuousThreadGroup] + java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) + java.base@21.0.6-internal/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1852) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.await(ReferenceQueue.java:71) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:143) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:218) + java.base@21.0.6-internal/jdk.internal.ref.CleanerImpl.run(CleanerImpl.java:140) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) + +Thread[#32,process reaper,10,InnocuousThreadGroup] + java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:410) + java.base@21.0.6-internal/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:338) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1069) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) + Thread[#11,Signal Dispatcher,9,system] +Thread[#10,Finalizer,8,system] + java.base@21.0.6-internal/java.lang.Object.wait0(Native Method) + java.base@21.0.6-internal/java.lang.Object.wait(Object.java:366) + java.base@21.0.6-internal/java.lang.Object.wait(Object.java:339) + java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.await(NativeReferenceQueue.java:48) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:158) + java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.remove(NativeReferenceQueue.java:89) + java.base@21.0.6-internal/java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:173) + +Thread[#19,Notification Thread,9,system] + Thread[#1,main,5,main] java.base@21.0.6-internal/java.lang.Thread.dumpThreads(Native Method) java.base@21.0.6-internal/java.lang.Thread.getAllStackTraces(Thread.java:2522) @@ -151,7 +151,7 @@ Thread[#1,main,5,main] app//nextflow.cli.Launcher.run(Launcher.groovy:503) app//nextflow.cli.Launcher.main(Launcher.groovy:658) -May-27 13:22:39.950 [main] ERROR nextflow.cli.Launcher - Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf +Jun-02 15:12:21.965 [main] ERROR nextflow.cli.Launcher - Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf java.nio.file.NoSuchFileException: Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf at nextflow.script.IncludeDef.realModulePath(IncludeDef.groovy:184) at nextflow.script.IncludeDef.load0(IncludeDef.groovy:112) diff --git a/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/mock.nf b/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/mock.nf new file mode 100644 index 0000000..0f4eb7a --- /dev/null +++ b/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/mock.nf @@ -0,0 +1,86 @@ +import groovy.json.JsonGenerator +import groovy.json.JsonGenerator.Converter + +nextflow.enable.dsl=2 + +// comes from nf-test to store json files +params.nf_test_output = "" + +// include dependencies + + +// include test process +include { DIAMOND_MAKEDB } from '/home/trace/projects/proteinannotator/modules/nf-core/diamond/makedb/tests/../main.nf' + +// define custom rules for JSON that will be generated. +def jsonOutput = + new JsonGenerator.Options() + .addConverter(Path) { value -> value.toAbsolutePath().toString() } // Custom converter for Path. Only filename + .build() + +def jsonWorkflowOutput = new JsonGenerator.Options().excludeNulls().build() + + +workflow { + + // run dependencies + + + // process mapping + def input = [] + + input[0] = [ [id:'test'], [ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] ] + input[1] = [] + input[2] = [] + input[3] = [] + + //---- + + //run process + DIAMOND_MAKEDB(*input) + + if (DIAMOND_MAKEDB.output){ + + // consumes all named output channels and stores items in a json file + for (def name in DIAMOND_MAKEDB.out.getNames()) { + serializeChannel(name, DIAMOND_MAKEDB.out.getProperty(name), jsonOutput) + } + + // consumes all unnamed output channels and stores items in a json file + def array = DIAMOND_MAKEDB.out as Object[] + for (def i = 0; i < array.length ; i++) { + serializeChannel(i, array[i], jsonOutput) + } + + } + +} + +def serializeChannel(name, channel, jsonOutput) { + def _name = name + def list = [ ] + channel.subscribe( + onNext: { + list.add(it) + }, + onComplete: { + def map = new HashMap() + map[_name] = list + def filename = "${params.nf_test_output}/output_${_name}.json" + new File(filename).text = jsonOutput.toJson(map) + } + ) +} + + +workflow.onComplete { + + def result = [ + success: workflow.success, + exitStatus: workflow.exitStatus, + errorMessage: workflow.errorMessage, + errorReport: workflow.errorReport + ] + new File("${params.nf_test_output}/workflow.json").text = jsonWorkflowOutput.toJson(result) + +} diff --git a/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/nextflow.log b/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/nextflow.log new file mode 100644 index 0000000..8e81ca2 --- /dev/null +++ b/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/nextflow.log @@ -0,0 +1,183 @@ +Jun-03 14:37:11.973 [main] DEBUG nextflow.cli.Launcher - $> nextflow -quiet -log /home/trace/projects/proteinannotator/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/nextflow.log run /home/trace/projects/proteinannotator/.nf-test-b2b060aac6247755a2eeab16e289e473.nf -c /home/trace/projects/proteinannotator/nextflow.config -params-file /home/trace/projects/proteinannotator/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/params.json -ansi-log false -with-trace /home/trace/projects/proteinannotator/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/trace.csv -w /home/trace/projects/proteinannotator/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/work +Jun-03 14:37:12.086 [main] INFO nextflow.cli.CmdRun - N E X T F L O W ~ version 24.10.6 +Jun-03 14:37:12.119 [main] DEBUG nextflow.plugin.PluginsFacade - Setting up plugin manager > mode=prod; embedded=false; plugins-dir=/home/trace/.nextflow/plugins; core-plugins: nf-amazon@2.9.3,nf-azure@1.10.2,nf-cloudcache@0.4.2,nf-codecommit@0.2.2,nf-console@1.1.4,nf-google@1.15.4,nf-tower@1.9.3,nf-wave@1.7.5 +Jun-03 14:37:12.154 [main] INFO o.pf4j.DefaultPluginStatusProvider - Enabled plugins: [] +Jun-03 14:37:12.155 [main] INFO o.pf4j.DefaultPluginStatusProvider - Disabled plugins: [] +Jun-03 14:37:12.161 [main] INFO org.pf4j.DefaultPluginManager - PF4J version 3.12.0 in 'deployment' mode +Jun-03 14:37:12.178 [main] INFO org.pf4j.AbstractPluginManager - No plugins +Jun-03 14:37:12.217 [main] DEBUG nextflow.config.ConfigBuilder - Found config base: /home/trace/projects/proteinannotator/nextflow.config +Jun-03 14:37:12.228 [main] DEBUG nextflow.config.ConfigBuilder - User config file: /home/trace/projects/proteinannotator/nextflow.config +Jun-03 14:37:12.231 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config +Jun-03 14:37:12.233 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config +Jun-03 14:37:12.282 [main] DEBUG n.secret.LocalSecretsProvider - Secrets store: /home/trace/.nextflow/secrets/store.json +Jun-03 14:37:12.288 [main] DEBUG nextflow.secret.SecretsLoader - Discovered secrets providers: [nextflow.secret.LocalSecretsProvider@2fb5fe30] - activable => nextflow.secret.LocalSecretsProvider@2fb5fe30 +Jun-03 14:37:12.321 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` +Jun-03 14:37:14.950 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` +Jun-03 14:37:15.680 [main] DEBUG nextflow.cli.CmdRun - Applied DSL=2 from script declaration +Jun-03 14:37:15.706 [main] INFO nextflow.cli.CmdRun - Launching `/home/trace/projects/proteinannotator/.nf-test-b2b060aac6247755a2eeab16e289e473.nf` [hungry_avogadro] DSL2 - revision: 034c9e5ece +Jun-03 14:37:15.707 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins declared=[nf-schema@2.3.0] +Jun-03 14:37:15.708 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins default=[] +Jun-03 14:37:15.709 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins resolved requirement=[nf-schema@2.3.0] +Jun-03 14:37:15.710 [main] DEBUG nextflow.plugin.PluginUpdater - Installing plugin nf-schema version: 2.3.0 +Jun-03 14:37:15.719 [main] INFO org.pf4j.AbstractPluginManager - Plugin 'nf-schema@2.3.0' resolved +Jun-03 14:37:15.720 [main] INFO org.pf4j.AbstractPluginManager - Start plugin 'nf-schema@2.3.0' +Jun-03 14:37:15.730 [main] DEBUG nextflow.plugin.BasePlugin - Plugin started nf-schema@2.3.0 +Jun-03 14:37:15.798 [main] DEBUG nextflow.Session - Session UUID: f93ff346-1b59-4d8e-bd0a-a844768c1fe0 +Jun-03 14:37:15.799 [main] DEBUG nextflow.Session - Run name: hungry_avogadro +Jun-03 14:37:15.799 [main] DEBUG nextflow.Session - Executor pool size: 8 +Jun-03 14:37:15.809 [main] DEBUG nextflow.file.FilePorter - File porter settings maxRetries=3; maxTransfers=50; pollTimeout=null +Jun-03 14:37:15.817 [main] DEBUG nextflow.util.ThreadPoolBuilder - Creating thread pool 'FileTransfer' minSize=10; maxSize=24; workQueue=LinkedBlockingQueue[-1]; allowCoreThreadTimeout=false +Jun-03 14:37:15.847 [main] DEBUG nextflow.cli.CmdRun - + Version: 24.10.6 build 5937 + Created: 23-04-2025 16:53 UTC (12:53 EDT) + System: Linux 6.1.0-33-amd64 + Runtime: Groovy 4.0.23 on OpenJDK 64-Bit Server VM 21.0.6-internal-adhoc.conda.src + Encoding: UTF-8 (UTF-8) + Process: 35111@lail-laptop [127.0.1.1] + CPUs: 8 - Mem: 7 GB (140 MB) - Swap: 977 MB (67.8 MB) +Jun-03 14:37:15.879 [main] DEBUG nextflow.Session - Work-dir: /home/trace/projects/proteinannotator/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/work [ext2/ext3] +Jun-03 14:37:15.880 [main] DEBUG nextflow.Session - Script base path does not exist or is not a directory: /home/trace/projects/proteinannotator/bin +Jun-03 14:37:15.895 [main] DEBUG nextflow.executor.ExecutorFactory - Extension executors providers=[] +Jun-03 14:37:15.909 [main] DEBUG nextflow.Session - Observer factory: DefaultObserverFactory +Jun-03 14:37:15.941 [main] DEBUG nextflow.Session - Observer factory: ValidationObserverFactory +Jun-03 14:37:16.029 [main] DEBUG nextflow.cache.CacheFactory - Using Nextflow cache factory: nextflow.cache.DefaultCacheFactory +Jun-03 14:37:16.041 [main] DEBUG nextflow.util.CustomThreadPool - Creating default thread pool > poolSize: 9; maxThreads: 1000 +Jun-03 14:37:16.125 [main] DEBUG nextflow.Session - Session start +Jun-03 14:37:16.128 [main] DEBUG nextflow.trace.TraceFileObserver - Workflow started -- trace file: /home/trace/projects/proteinannotator/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/trace.csv +Jun-03 14:37:16.423 [main] DEBUG nextflow.script.ScriptRunner - > Launching execution +Jun-03 14:37:16.645 [main] WARN nextflow.script.ScriptBinding - Access to undefined parameter `modules_testdata_base_path` -- Initialise it to a default value eg. `params.modules_testdata_base_path = some_value` +Jun-03 14:37:16.661 [main] DEBUG nextflow.script.ScriptRunner - Parsed script files: + Script_6a09d86216a54543: /home/trace/projects/proteinannotator/.nf-test-b2b060aac6247755a2eeab16e289e473.nf + Script_7c8a310cd66b8f33: /home/trace/projects/proteinannotator/modules/nf-core/diamond/makedb/tests/../main.nf +Jun-03 14:37:16.662 [main] DEBUG nextflow.Session - Session aborted -- Cause: /home/trace/projects/proteinannotator/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/nullgenomics/sarscov2/genome/proteome.fasta +Jun-03 14:37:16.669 [main] DEBUG nextflow.Session - +Thread[#10,Finalizer,8,system] + java.base@21.0.6-internal/java.lang.Object.wait0(Native Method) + java.base@21.0.6-internal/java.lang.Object.wait(Object.java:366) + java.base@21.0.6-internal/java.lang.Object.wait(Object.java:339) + java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.await(NativeReferenceQueue.java:48) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:158) + java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.remove(NativeReferenceQueue.java:89) + java.base@21.0.6-internal/java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:173) + +Thread[#9,Reference Handler,10,system] + java.base@21.0.6-internal/java.lang.ref.Reference.waitForReferencePendingList(Native Method) + java.base@21.0.6-internal/java.lang.ref.Reference.processPendingReferences(Reference.java:246) + java.base@21.0.6-internal/java.lang.ref.Reference$ReferenceHandler.run(Reference.java:208) + +Thread[#33,Thread-1,5,main] + java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) + java.base@21.0.6-internal/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1763) + java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.pollFirst(LinkedBlockingDeque.java:515) + java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.poll(LinkedBlockingDeque.java:677) + app//nextflow.util.SimpleAgent.run(SimpleAgent.groovy:89) + java.base@21.0.6-internal/java.lang.invoke.LambdaForm$DMH/0x00007f100819bc00.invokeVirtual(LambdaForm$DMH) + java.base@21.0.6-internal/java.lang.invoke.LambdaForm$MH/0x00007f100848c800.invoke(LambdaForm$MH) + java.base@21.0.6-internal/java.lang.invoke.Invokers$Holder.invokeExact_MT(Invokers$Holder) + java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(DirectMethodHandleAccessor.java:153) + java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + java.base@21.0.6-internal/java.lang.reflect.Method.invoke(Method.java:580) + app//org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343) + app//groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:328) + app//groovy.lang.MetaClassImpl.doInvokeMethod(MetaClassImpl.java:1333) + app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1088) + app//groovy.lang.MetaClassImpl.invokeMethodClosure(MetaClassImpl.java:1017) + app//groovy.lang.MetaClassImpl.doInvokeMethod(MetaClassImpl.java:1207) + app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1088) + app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1007) + app//groovy.lang.Closure.call(Closure.java:433) + app//groovy.lang.Closure.call(Closure.java:412) + app//groovy.lang.Closure.run(Closure.java:505) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + +Thread[#31,Keep-Alive-Timer,8,InnocuousThreadGroup] + java.base@21.0.6-internal/java.lang.Thread.sleep0(Native Method) + java.base@21.0.6-internal/java.lang.Thread.sleep(Thread.java:509) + java.base@21.0.6-internal/sun.net.www.http.KeepAliveCache.run(KeepAliveCache.java:238) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) + +Thread[#34,Actor Thread 1,5,main] + java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.6-internal/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:458) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.take(SynchronousQueue.java:318) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + +Thread[#18,Common-Cleaner,8,InnocuousThreadGroup] + java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) + java.base@21.0.6-internal/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1852) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.await(ReferenceQueue.java:71) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:143) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:218) + java.base@21.0.6-internal/jdk.internal.ref.CleanerImpl.run(CleanerImpl.java:140) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) + +Thread[#11,Signal Dispatcher,9,system] + +Thread[#1,main,5,main] + java.base@21.0.6-internal/java.lang.Thread.dumpThreads(Native Method) + java.base@21.0.6-internal/java.lang.Thread.getAllStackTraces(Thread.java:2522) + app//nextflow.util.SysHelper.dumpThreads(SysHelper.groovy:188) + app//nextflow.Session.abort(Session.groovy:800) + app//nextflow.script.ScriptRunner.execute(ScriptRunner.groovy:149) + app//nextflow.cli.CmdRun.run(CmdRun.groovy:376) + app//nextflow.cli.Launcher.run(Launcher.groovy:503) + app//nextflow.cli.Launcher.main(Launcher.groovy:658) + +Thread[#32,process reaper,10,InnocuousThreadGroup] + java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:410) + java.base@21.0.6-internal/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:338) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1069) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) + +Thread[#19,Notification Thread,9,system] + +Jun-03 14:37:16.684 [main] ERROR nextflow.cli.Launcher - /home/trace/projects/proteinannotator/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/nullgenomics/sarscov2/genome/proteome.fasta +java.nio.file.NoSuchFileException: /home/trace/projects/proteinannotator/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/nullgenomics/sarscov2/genome/proteome.fasta + at nextflow.file.FileHelper.checkIfExists(FileHelper.groovy:1099) + at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) + at nextflow.Nextflow.file(Nextflow.groovy:123) + at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) + at Script_6a09d86216a54543$_runScript_closure4$_closure6.doCall(Script_6a09d86216a54543:32) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343) + at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:328) + at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:279) + at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1007) + at groovy.lang.Closure.call(Closure.java:433) + at groovy.lang.Closure.call(Closure.java:412) + at nextflow.script.WorkflowDef.run0(WorkflowDef.groovy:204) + at nextflow.script.WorkflowDef.run(WorkflowDef.groovy:188) + at nextflow.script.BindableDef.invoke_a(BindableDef.groovy:51) + at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) + at nextflow.script.BaseScript.run0(BaseScript.groovy:198) + at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) + at nextflow.script.BaseScript.run(BaseScript.groovy:209) + at nextflow.script.ScriptParser.runScript(ScriptParser.groovy:236) + at nextflow.script.ScriptRunner.run(ScriptRunner.groovy:243) + at nextflow.script.ScriptRunner.execute(ScriptRunner.groovy:138) + at nextflow.cli.CmdRun.run(CmdRun.groovy:376) + at nextflow.cli.Launcher.run(Launcher.groovy:503) + at nextflow.cli.Launcher.main(Launcher.groovy:658) diff --git a/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/params.json b/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/params.json new file mode 100644 index 0000000..a8d2c38 --- /dev/null +++ b/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/params.json @@ -0,0 +1 @@ +{"nf_test_output":"/home/trace/projects/proteinannotator/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta","outdir":"/home/trace/projects/proteinannotator/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/output"} \ No newline at end of file diff --git a/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/std.err b/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/std.err new file mode 100644 index 0000000..519f6b3 --- /dev/null +++ b/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/std.err @@ -0,0 +1 @@ +Nextflow 25.04.3 is available - Please consider updating your version to it(B diff --git a/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/std.out b/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/std.out new file mode 100644 index 0000000..9481f53 --- /dev/null +++ b/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/std.out @@ -0,0 +1,3 @@ +ERROR ~ No such file or directory: /home/trace/projects/proteinannotator/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/nullgenomics/sarscov2/genome/proteome.fasta + + -- Check script '/home/trace/projects/proteinannotator/.nf-test-b2b060aac6247755a2eeab16e289e473.nf' at line: 32 or see '/home/trace/projects/proteinannotator/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/nextflow.log' file for more details diff --git a/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/trace.csv b/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/trace.csv new file mode 100644 index 0000000..6b739ac --- /dev/null +++ b/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/trace.csv @@ -0,0 +1 @@ +task_id hash native_id name status exit submit duration realtime %cpu peak_rss peak_vmem rchar wchar diff --git a/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/nextflow.log b/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/nextflow.log index b8e680c..19cd28f 100644 --- a/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/nextflow.log +++ b/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/nextflow.log @@ -1,84 +1,54 @@ -May-27 13:22:29.684 [main] DEBUG nextflow.cli.Launcher - $> nextflow -quiet -log /home/trace/projects/proteinannotator/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/nextflow.log run /home/trace/projects/proteinannotator/.nf-test-d44daec0656fd514e1f90b15d37109eb.nf -c /home/trace/projects/proteinannotator/nextflow.config -params-file /home/trace/projects/proteinannotator/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/params.json -ansi-log false -with-trace /home/trace/projects/proteinannotator/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/trace.csv -w /home/trace/projects/proteinannotator/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/work -May-27 13:22:29.818 [main] INFO nextflow.cli.CmdRun - N E X T F L O W ~ version 24.10.6 -May-27 13:22:29.857 [main] DEBUG nextflow.plugin.PluginsFacade - Setting up plugin manager > mode=prod; embedded=false; plugins-dir=/home/trace/.nextflow/plugins; core-plugins: nf-amazon@2.9.3,nf-azure@1.10.2,nf-cloudcache@0.4.2,nf-codecommit@0.2.2,nf-console@1.1.4,nf-google@1.15.4,nf-tower@1.9.3,nf-wave@1.7.5 -May-27 13:22:29.897 [main] INFO o.pf4j.DefaultPluginStatusProvider - Enabled plugins: [] -May-27 13:22:29.898 [main] INFO o.pf4j.DefaultPluginStatusProvider - Disabled plugins: [] -May-27 13:22:29.904 [main] INFO org.pf4j.DefaultPluginManager - PF4J version 3.12.0 in 'deployment' mode -May-27 13:22:29.926 [main] INFO org.pf4j.AbstractPluginManager - No plugins -May-27 13:22:29.960 [main] DEBUG nextflow.config.ConfigBuilder - Found config base: /home/trace/projects/proteinannotator/nextflow.config -May-27 13:22:29.968 [main] DEBUG nextflow.config.ConfigBuilder - User config file: /home/trace/projects/proteinannotator/nextflow.config -May-27 13:22:29.970 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config -May-27 13:22:29.971 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config -May-27 13:22:30.023 [main] DEBUG n.secret.LocalSecretsProvider - Secrets store: /home/trace/.nextflow/secrets/store.json -May-27 13:22:30.030 [main] DEBUG nextflow.secret.SecretsLoader - Discovered secrets providers: [nextflow.secret.LocalSecretsProvider@2fb5fe30] - activable => nextflow.secret.LocalSecretsProvider@2fb5fe30 -May-27 13:22:30.063 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` -May-27 13:22:32.615 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` -May-27 13:22:33.257 [main] DEBUG nextflow.cli.CmdRun - Applied DSL=2 from script declaration -May-27 13:22:33.279 [main] INFO nextflow.cli.CmdRun - Launching `/home/trace/projects/proteinannotator/.nf-test-d44daec0656fd514e1f90b15d37109eb.nf` [hungry_linnaeus] DSL2 - revision: a1ca7e6f26 -May-27 13:22:33.280 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins declared=[nf-schema@2.3.0] -May-27 13:22:33.281 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins default=[] -May-27 13:22:33.281 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins resolved requirement=[nf-schema@2.3.0] -May-27 13:22:33.281 [main] DEBUG nextflow.plugin.PluginUpdater - Installing plugin nf-schema version: 2.3.0 -May-27 13:22:33.289 [main] INFO org.pf4j.AbstractPluginManager - Plugin 'nf-schema@2.3.0' resolved -May-27 13:22:33.290 [main] INFO org.pf4j.AbstractPluginManager - Start plugin 'nf-schema@2.3.0' -May-27 13:22:33.301 [main] DEBUG nextflow.plugin.BasePlugin - Plugin started nf-schema@2.3.0 -May-27 13:22:33.366 [main] DEBUG nextflow.Session - Session UUID: 94dab4df-58c6-43ff-b277-669e1cf2e43b -May-27 13:22:33.366 [main] DEBUG nextflow.Session - Run name: hungry_linnaeus -May-27 13:22:33.367 [main] DEBUG nextflow.Session - Executor pool size: 8 -May-27 13:22:33.376 [main] DEBUG nextflow.file.FilePorter - File porter settings maxRetries=3; maxTransfers=50; pollTimeout=null -May-27 13:22:33.383 [main] DEBUG nextflow.util.ThreadPoolBuilder - Creating thread pool 'FileTransfer' minSize=10; maxSize=24; workQueue=LinkedBlockingQueue[-1]; allowCoreThreadTimeout=false -May-27 13:22:33.411 [main] DEBUG nextflow.cli.CmdRun - +Jun-02 15:12:08.994 [main] DEBUG nextflow.cli.Launcher - $> nextflow -quiet -log /home/trace/projects/proteinannotator/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/nextflow.log run /home/trace/projects/proteinannotator/.nf-test-d44daec0656fd514e1f90b15d37109eb.nf -c /home/trace/projects/proteinannotator/nextflow.config -params-file /home/trace/projects/proteinannotator/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/params.json -ansi-log false -with-trace /home/trace/projects/proteinannotator/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/trace.csv -w /home/trace/projects/proteinannotator/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/work +Jun-02 15:12:09.110 [main] INFO nextflow.cli.CmdRun - N E X T F L O W ~ version 24.10.6 +Jun-02 15:12:09.147 [main] DEBUG nextflow.plugin.PluginsFacade - Setting up plugin manager > mode=prod; embedded=false; plugins-dir=/home/trace/.nextflow/plugins; core-plugins: nf-amazon@2.9.3,nf-azure@1.10.2,nf-cloudcache@0.4.2,nf-codecommit@0.2.2,nf-console@1.1.4,nf-google@1.15.4,nf-tower@1.9.3,nf-wave@1.7.5 +Jun-02 15:12:09.184 [main] INFO o.pf4j.DefaultPluginStatusProvider - Enabled plugins: [] +Jun-02 15:12:09.185 [main] INFO o.pf4j.DefaultPluginStatusProvider - Disabled plugins: [] +Jun-02 15:12:09.189 [main] INFO org.pf4j.DefaultPluginManager - PF4J version 3.12.0 in 'deployment' mode +Jun-02 15:12:09.211 [main] INFO org.pf4j.AbstractPluginManager - No plugins +Jun-02 15:12:09.248 [main] DEBUG nextflow.config.ConfigBuilder - Found config base: /home/trace/projects/proteinannotator/nextflow.config +Jun-02 15:12:09.256 [main] DEBUG nextflow.config.ConfigBuilder - User config file: /home/trace/projects/proteinannotator/nextflow.config +Jun-02 15:12:09.258 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config +Jun-02 15:12:09.260 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config +Jun-02 15:12:09.312 [main] DEBUG n.secret.LocalSecretsProvider - Secrets store: /home/trace/.nextflow/secrets/store.json +Jun-02 15:12:09.320 [main] DEBUG nextflow.secret.SecretsLoader - Discovered secrets providers: [nextflow.secret.LocalSecretsProvider@2fb5fe30] - activable => nextflow.secret.LocalSecretsProvider@2fb5fe30 +Jun-02 15:12:09.360 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` +Jun-02 15:12:12.488 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` +Jun-02 15:12:13.370 [main] DEBUG nextflow.cli.CmdRun - Applied DSL=2 from script declaration +Jun-02 15:12:13.392 [main] INFO nextflow.cli.CmdRun - Launching `/home/trace/projects/proteinannotator/.nf-test-d44daec0656fd514e1f90b15d37109eb.nf` [intergalactic_bassi] DSL2 - revision: a1ca7e6f26 +Jun-02 15:12:13.393 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins declared=[nf-schema@2.3.0] +Jun-02 15:12:13.394 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins default=[] +Jun-02 15:12:13.394 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins resolved requirement=[nf-schema@2.3.0] +Jun-02 15:12:13.395 [main] DEBUG nextflow.plugin.PluginUpdater - Installing plugin nf-schema version: 2.3.0 +Jun-02 15:12:13.401 [main] INFO org.pf4j.AbstractPluginManager - Plugin 'nf-schema@2.3.0' resolved +Jun-02 15:12:13.402 [main] INFO org.pf4j.AbstractPluginManager - Start plugin 'nf-schema@2.3.0' +Jun-02 15:12:13.413 [main] DEBUG nextflow.plugin.BasePlugin - Plugin started nf-schema@2.3.0 +Jun-02 15:12:13.526 [main] DEBUG nextflow.Session - Session UUID: 37abc952-fd1b-4f84-8fc3-38d01aaec695 +Jun-02 15:12:13.526 [main] DEBUG nextflow.Session - Run name: intergalactic_bassi +Jun-02 15:12:13.527 [main] DEBUG nextflow.Session - Executor pool size: 8 +Jun-02 15:12:13.538 [main] DEBUG nextflow.file.FilePorter - File porter settings maxRetries=3; maxTransfers=50; pollTimeout=null +Jun-02 15:12:13.548 [main] DEBUG nextflow.util.ThreadPoolBuilder - Creating thread pool 'FileTransfer' minSize=10; maxSize=24; workQueue=LinkedBlockingQueue[-1]; allowCoreThreadTimeout=false +Jun-02 15:12:13.578 [main] DEBUG nextflow.cli.CmdRun - Version: 24.10.6 build 5937 Created: 23-04-2025 16:53 UTC (12:53 EDT) System: Linux 6.1.0-33-amd64 Runtime: Groovy 4.0.23 on OpenJDK 64-Bit Server VM 21.0.6-internal-adhoc.conda.src Encoding: UTF-8 (UTF-8) - Process: 62075@lail-laptop [127.0.1.1] - CPUs: 8 - Mem: 7 GB (431.8 MB) - Swap: 977 MB (2.2 MB) -May-27 13:22:33.443 [main] DEBUG nextflow.Session - Work-dir: /home/trace/projects/proteinannotator/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/work [ext2/ext3] -May-27 13:22:33.443 [main] DEBUG nextflow.Session - Script base path does not exist or is not a directory: /home/trace/projects/proteinannotator/bin -May-27 13:22:33.457 [main] DEBUG nextflow.executor.ExecutorFactory - Extension executors providers=[] -May-27 13:22:33.470 [main] DEBUG nextflow.Session - Observer factory: DefaultObserverFactory -May-27 13:22:33.499 [main] DEBUG nextflow.Session - Observer factory: ValidationObserverFactory -May-27 13:22:33.590 [main] DEBUG nextflow.cache.CacheFactory - Using Nextflow cache factory: nextflow.cache.DefaultCacheFactory -May-27 13:22:33.603 [main] DEBUG nextflow.util.CustomThreadPool - Creating default thread pool > poolSize: 9; maxThreads: 1000 -May-27 13:22:33.682 [main] DEBUG nextflow.Session - Session start -May-27 13:22:33.685 [main] DEBUG nextflow.trace.TraceFileObserver - Workflow started -- trace file: /home/trace/projects/proteinannotator/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/trace.csv -May-27 13:22:33.961 [main] DEBUG nextflow.script.ScriptRunner - > Launching execution -May-27 13:22:33.976 [main] DEBUG nextflow.script.ScriptRunner - Parsed script files: + Process: 5493@lail-laptop [127.0.1.1] + CPUs: 8 - Mem: 7 GB (161.6 MB) - Swap: 977 MB (954.2 MB) +Jun-02 15:12:13.624 [main] DEBUG nextflow.Session - Work-dir: /home/trace/projects/proteinannotator/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/work [ext2/ext3] +Jun-02 15:12:13.625 [main] DEBUG nextflow.Session - Script base path does not exist or is not a directory: /home/trace/projects/proteinannotator/bin +Jun-02 15:12:13.642 [main] DEBUG nextflow.executor.ExecutorFactory - Extension executors providers=[] +Jun-02 15:12:13.663 [main] DEBUG nextflow.Session - Observer factory: DefaultObserverFactory +Jun-02 15:12:13.704 [main] DEBUG nextflow.Session - Observer factory: ValidationObserverFactory +Jun-02 15:12:13.821 [main] DEBUG nextflow.cache.CacheFactory - Using Nextflow cache factory: nextflow.cache.DefaultCacheFactory +Jun-02 15:12:13.835 [main] DEBUG nextflow.util.CustomThreadPool - Creating default thread pool > poolSize: 9; maxThreads: 1000 +Jun-02 15:12:13.923 [main] DEBUG nextflow.Session - Session start +Jun-02 15:12:13.928 [main] DEBUG nextflow.trace.TraceFileObserver - Workflow started -- trace file: /home/trace/projects/proteinannotator/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/trace.csv +Jun-02 15:12:14.307 [main] DEBUG nextflow.script.ScriptRunner - > Launching execution +Jun-02 15:12:14.332 [main] DEBUG nextflow.script.ScriptRunner - Parsed script files: Script_e3c35e79f690a4ec: /home/trace/projects/proteinannotator/.nf-test-d44daec0656fd514e1f90b15d37109eb.nf -May-27 13:22:33.976 [main] DEBUG nextflow.Session - Session aborted -- Cause: Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf -May-27 13:22:33.980 [main] DEBUG nextflow.Session - -Thread[#11,Signal Dispatcher,9,system] - -Thread[#19,Notification Thread,9,system] - -Thread[#31,Keep-Alive-Timer,8,InnocuousThreadGroup] - java.base@21.0.6-internal/java.lang.Thread.sleep0(Native Method) - java.base@21.0.6-internal/java.lang.Thread.sleep(Thread.java:509) - java.base@21.0.6-internal/sun.net.www.http.KeepAliveCache.run(KeepAliveCache.java:238) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) - -Thread[#9,Reference Handler,10,system] - java.base@21.0.6-internal/java.lang.ref.Reference.waitForReferencePendingList(Native Method) - java.base@21.0.6-internal/java.lang.ref.Reference.processPendingReferences(Reference.java:246) - java.base@21.0.6-internal/java.lang.ref.Reference$ReferenceHandler.run(Reference.java:208) - -Thread[#34,Actor Thread 1,5,main] - java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) - java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) - java.base@21.0.6-internal/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:458) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.take(SynchronousQueue.java:318) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - +Jun-02 15:12:14.333 [main] DEBUG nextflow.Session - Session aborted -- Cause: Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf +Jun-02 15:12:14.339 [main] DEBUG nextflow.Session - Thread[#18,Common-Cleaner,8,InnocuousThreadGroup] java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) @@ -91,6 +61,14 @@ Thread[#18,Common-Cleaner,8,InnocuousThreadGroup] java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) +Thread[#31,Keep-Alive-Timer,8,InnocuousThreadGroup] + java.base@21.0.6-internal/java.lang.Thread.sleep0(Native Method) + java.base@21.0.6-internal/java.lang.Thread.sleep(Thread.java:509) + java.base@21.0.6-internal/sun.net.www.http.KeepAliveCache.run(KeepAliveCache.java:238) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) + Thread[#32,process reaper,10,InnocuousThreadGroup] java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:410) @@ -105,6 +83,17 @@ Thread[#32,process reaper,10,InnocuousThreadGroup] java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) +Thread[#10,Finalizer,8,system] + java.base@21.0.6-internal/java.lang.Object.wait0(Native Method) + java.base@21.0.6-internal/java.lang.Object.wait(Object.java:366) + java.base@21.0.6-internal/java.lang.Object.wait(Object.java:339) + java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.await(NativeReferenceQueue.java:48) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:158) + java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.remove(NativeReferenceQueue.java:89) + java.base@21.0.6-internal/java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:173) + +Thread[#19,Notification Thread,9,system] + Thread[#33,Thread-1,5,main] java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) @@ -112,8 +101,8 @@ Thread[#33,Thread-1,5,main] java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.pollFirst(LinkedBlockingDeque.java:515) java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.poll(LinkedBlockingDeque.java:677) app//nextflow.util.SimpleAgent.run(SimpleAgent.groovy:89) - java.base@21.0.6-internal/java.lang.invoke.LambdaForm$DMH/0x00007f2ed019bc00.invokeVirtual(LambdaForm$DMH) - java.base@21.0.6-internal/java.lang.invoke.LambdaForm$MH/0x00007f2ed048c800.invoke(LambdaForm$MH) + java.base@21.0.6-internal/java.lang.invoke.LambdaForm$DMH/0x00007feb3819bc00.invokeVirtual(LambdaForm$DMH) + java.base@21.0.6-internal/java.lang.invoke.LambdaForm$MH/0x00007feb3848c800.invoke(LambdaForm$MH) java.base@21.0.6-internal/java.lang.invoke.Invokers$Holder.invokeExact_MT(Invokers$Holder) java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(DirectMethodHandleAccessor.java:153) java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) @@ -132,14 +121,25 @@ Thread[#33,Thread-1,5,main] java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) -Thread[#10,Finalizer,8,system] - java.base@21.0.6-internal/java.lang.Object.wait0(Native Method) - java.base@21.0.6-internal/java.lang.Object.wait(Object.java:366) - java.base@21.0.6-internal/java.lang.Object.wait(Object.java:339) - java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.await(NativeReferenceQueue.java:48) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:158) - java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.remove(NativeReferenceQueue.java:89) - java.base@21.0.6-internal/java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:173) +Thread[#9,Reference Handler,10,system] + java.base@21.0.6-internal/java.lang.ref.Reference.waitForReferencePendingList(Native Method) + java.base@21.0.6-internal/java.lang.ref.Reference.processPendingReferences(Reference.java:246) + java.base@21.0.6-internal/java.lang.ref.Reference$ReferenceHandler.run(Reference.java:208) + +Thread[#34,Actor Thread 1,5,main] + java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) + java.base@21.0.6-internal/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:458) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.take(SynchronousQueue.java:318) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + +Thread[#11,Signal Dispatcher,9,system] Thread[#1,main,5,main] java.base@21.0.6-internal/java.lang.Thread.dumpThreads(Native Method) @@ -151,7 +151,7 @@ Thread[#1,main,5,main] app//nextflow.cli.Launcher.run(Launcher.groovy:503) app//nextflow.cli.Launcher.main(Launcher.groovy:658) -May-27 13:22:33.989 [main] ERROR nextflow.cli.Launcher - Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf +Jun-02 15:12:14.353 [main] ERROR nextflow.cli.Launcher - Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf java.nio.file.NoSuchFileException: Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf at nextflow.script.IncludeDef.realModulePath(IncludeDef.groovy:184) at nextflow.script.IncludeDef.load0(IncludeDef.groovy:112) diff --git a/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/nextflow.log b/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/nextflow.log index f7eb7af..e594051 100644 --- a/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/nextflow.log +++ b/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/nextflow.log @@ -1,65 +1,58 @@ -May-27 13:22:41.471 [main] DEBUG nextflow.cli.Launcher - $> nextflow -quiet -log /home/trace/projects/proteinannotator/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/nextflow.log run /home/trace/projects/proteinannotator/.nf-test-d5aff37838516a475af3455639858b2.nf -c /home/trace/projects/proteinannotator/nextflow.config -params-file /home/trace/projects/proteinannotator/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/params.json -ansi-log false -with-trace /home/trace/projects/proteinannotator/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/trace.csv -w /home/trace/projects/proteinannotator/.nf-test/tests/d5aff37838516a475af3455639858b2/work -May-27 13:22:41.592 [main] INFO nextflow.cli.CmdRun - N E X T F L O W ~ version 24.10.6 -May-27 13:22:41.627 [main] DEBUG nextflow.plugin.PluginsFacade - Setting up plugin manager > mode=prod; embedded=false; plugins-dir=/home/trace/.nextflow/plugins; core-plugins: nf-amazon@2.9.3,nf-azure@1.10.2,nf-cloudcache@0.4.2,nf-codecommit@0.2.2,nf-console@1.1.4,nf-google@1.15.4,nf-tower@1.9.3,nf-wave@1.7.5 -May-27 13:22:41.665 [main] INFO o.pf4j.DefaultPluginStatusProvider - Enabled plugins: [] -May-27 13:22:41.667 [main] INFO o.pf4j.DefaultPluginStatusProvider - Disabled plugins: [] -May-27 13:22:41.672 [main] INFO org.pf4j.DefaultPluginManager - PF4J version 3.12.0 in 'deployment' mode -May-27 13:22:41.694 [main] INFO org.pf4j.AbstractPluginManager - No plugins -May-27 13:22:41.737 [main] DEBUG nextflow.config.ConfigBuilder - Found config base: /home/trace/projects/proteinannotator/nextflow.config -May-27 13:22:41.745 [main] DEBUG nextflow.config.ConfigBuilder - User config file: /home/trace/projects/proteinannotator/nextflow.config -May-27 13:22:41.748 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config -May-27 13:22:41.750 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config -May-27 13:22:41.808 [main] DEBUG n.secret.LocalSecretsProvider - Secrets store: /home/trace/.nextflow/secrets/store.json -May-27 13:22:41.815 [main] DEBUG nextflow.secret.SecretsLoader - Discovered secrets providers: [nextflow.secret.LocalSecretsProvider@2fb5fe30] - activable => nextflow.secret.LocalSecretsProvider@2fb5fe30 -May-27 13:22:41.854 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` -May-27 13:22:44.449 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` -May-27 13:22:45.134 [main] DEBUG nextflow.cli.CmdRun - Applied DSL=2 from script declaration -May-27 13:22:45.151 [main] INFO nextflow.cli.CmdRun - Launching `/home/trace/projects/proteinannotator/.nf-test-d5aff37838516a475af3455639858b2.nf` [awesome_solvay] DSL2 - revision: 4d6eef58aa -May-27 13:22:45.152 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins declared=[nf-schema@2.3.0] -May-27 13:22:45.153 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins default=[] -May-27 13:22:45.153 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins resolved requirement=[nf-schema@2.3.0] -May-27 13:22:45.153 [main] DEBUG nextflow.plugin.PluginUpdater - Installing plugin nf-schema version: 2.3.0 -May-27 13:22:45.160 [main] INFO org.pf4j.AbstractPluginManager - Plugin 'nf-schema@2.3.0' resolved -May-27 13:22:45.160 [main] INFO org.pf4j.AbstractPluginManager - Start plugin 'nf-schema@2.3.0' -May-27 13:22:45.169 [main] DEBUG nextflow.plugin.BasePlugin - Plugin started nf-schema@2.3.0 -May-27 13:22:45.237 [main] DEBUG nextflow.Session - Session UUID: 5c213b1b-b681-4a73-b8a0-5ac513986092 -May-27 13:22:45.238 [main] DEBUG nextflow.Session - Run name: awesome_solvay -May-27 13:22:45.238 [main] DEBUG nextflow.Session - Executor pool size: 8 -May-27 13:22:45.249 [main] DEBUG nextflow.file.FilePorter - File porter settings maxRetries=3; maxTransfers=50; pollTimeout=null -May-27 13:22:45.256 [main] DEBUG nextflow.util.ThreadPoolBuilder - Creating thread pool 'FileTransfer' minSize=10; maxSize=24; workQueue=LinkedBlockingQueue[-1]; allowCoreThreadTimeout=false -May-27 13:22:45.281 [main] DEBUG nextflow.cli.CmdRun - +Jun-02 15:12:23.991 [main] DEBUG nextflow.cli.Launcher - $> nextflow -quiet -log /home/trace/projects/proteinannotator/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/nextflow.log run /home/trace/projects/proteinannotator/.nf-test-d5aff37838516a475af3455639858b2.nf -c /home/trace/projects/proteinannotator/nextflow.config -params-file /home/trace/projects/proteinannotator/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/params.json -ansi-log false -with-trace /home/trace/projects/proteinannotator/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/trace.csv -w /home/trace/projects/proteinannotator/.nf-test/tests/d5aff37838516a475af3455639858b2/work +Jun-02 15:12:24.115 [main] INFO nextflow.cli.CmdRun - N E X T F L O W ~ version 24.10.6 +Jun-02 15:12:24.152 [main] DEBUG nextflow.plugin.PluginsFacade - Setting up plugin manager > mode=prod; embedded=false; plugins-dir=/home/trace/.nextflow/plugins; core-plugins: nf-amazon@2.9.3,nf-azure@1.10.2,nf-cloudcache@0.4.2,nf-codecommit@0.2.2,nf-console@1.1.4,nf-google@1.15.4,nf-tower@1.9.3,nf-wave@1.7.5 +Jun-02 15:12:24.195 [main] INFO o.pf4j.DefaultPluginStatusProvider - Enabled plugins: [] +Jun-02 15:12:24.196 [main] INFO o.pf4j.DefaultPluginStatusProvider - Disabled plugins: [] +Jun-02 15:12:24.200 [main] INFO org.pf4j.DefaultPluginManager - PF4J version 3.12.0 in 'deployment' mode +Jun-02 15:12:24.221 [main] INFO org.pf4j.AbstractPluginManager - No plugins +Jun-02 15:12:24.265 [main] DEBUG nextflow.config.ConfigBuilder - Found config base: /home/trace/projects/proteinannotator/nextflow.config +Jun-02 15:12:24.274 [main] DEBUG nextflow.config.ConfigBuilder - User config file: /home/trace/projects/proteinannotator/nextflow.config +Jun-02 15:12:24.276 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config +Jun-02 15:12:24.277 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config +Jun-02 15:12:24.329 [main] DEBUG n.secret.LocalSecretsProvider - Secrets store: /home/trace/.nextflow/secrets/store.json +Jun-02 15:12:24.338 [main] DEBUG nextflow.secret.SecretsLoader - Discovered secrets providers: [nextflow.secret.LocalSecretsProvider@2fb5fe30] - activable => nextflow.secret.LocalSecretsProvider@2fb5fe30 +Jun-02 15:12:24.374 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` +Jun-02 15:12:27.292 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` +Jun-02 15:12:28.186 [main] DEBUG nextflow.cli.CmdRun - Applied DSL=2 from script declaration +Jun-02 15:12:28.210 [main] INFO nextflow.cli.CmdRun - Launching `/home/trace/projects/proteinannotator/.nf-test-d5aff37838516a475af3455639858b2.nf` [distracted_church] DSL2 - revision: 4d6eef58aa +Jun-02 15:12:28.212 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins declared=[nf-schema@2.3.0] +Jun-02 15:12:28.213 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins default=[] +Jun-02 15:12:28.213 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins resolved requirement=[nf-schema@2.3.0] +Jun-02 15:12:28.214 [main] DEBUG nextflow.plugin.PluginUpdater - Installing plugin nf-schema version: 2.3.0 +Jun-02 15:12:28.222 [main] INFO org.pf4j.AbstractPluginManager - Plugin 'nf-schema@2.3.0' resolved +Jun-02 15:12:28.223 [main] INFO org.pf4j.AbstractPluginManager - Start plugin 'nf-schema@2.3.0' +Jun-02 15:12:28.233 [main] DEBUG nextflow.plugin.BasePlugin - Plugin started nf-schema@2.3.0 +Jun-02 15:12:28.318 [main] DEBUG nextflow.Session - Session UUID: b63e9229-8d83-4f53-ba14-3b51af4ab66a +Jun-02 15:12:28.319 [main] DEBUG nextflow.Session - Run name: distracted_church +Jun-02 15:12:28.320 [main] DEBUG nextflow.Session - Executor pool size: 8 +Jun-02 15:12:28.334 [main] DEBUG nextflow.file.FilePorter - File porter settings maxRetries=3; maxTransfers=50; pollTimeout=null +Jun-02 15:12:28.347 [main] DEBUG nextflow.util.ThreadPoolBuilder - Creating thread pool 'FileTransfer' minSize=10; maxSize=24; workQueue=LinkedBlockingQueue[-1]; allowCoreThreadTimeout=false +Jun-02 15:12:28.381 [main] DEBUG nextflow.cli.CmdRun - Version: 24.10.6 build 5937 Created: 23-04-2025 16:53 UTC (12:53 EDT) System: Linux 6.1.0-33-amd64 Runtime: Groovy 4.0.23 on OpenJDK 64-Bit Server VM 21.0.6-internal-adhoc.conda.src Encoding: UTF-8 (UTF-8) - Process: 62302@lail-laptop [127.0.1.1] - CPUs: 8 - Mem: 7 GB (402.9 MB) - Swap: 977 MB (2.2 MB) -May-27 13:22:45.312 [main] DEBUG nextflow.Session - Work-dir: /home/trace/projects/proteinannotator/.nf-test/tests/d5aff37838516a475af3455639858b2/work [ext2/ext3] -May-27 13:22:45.313 [main] DEBUG nextflow.Session - Script base path does not exist or is not a directory: /home/trace/projects/proteinannotator/bin -May-27 13:22:45.327 [main] DEBUG nextflow.executor.ExecutorFactory - Extension executors providers=[] -May-27 13:22:45.342 [main] DEBUG nextflow.Session - Observer factory: DefaultObserverFactory -May-27 13:22:45.376 [main] DEBUG nextflow.Session - Observer factory: ValidationObserverFactory -May-27 13:22:45.468 [main] DEBUG nextflow.cache.CacheFactory - Using Nextflow cache factory: nextflow.cache.DefaultCacheFactory -May-27 13:22:45.479 [main] DEBUG nextflow.util.CustomThreadPool - Creating default thread pool > poolSize: 9; maxThreads: 1000 -May-27 13:22:45.554 [main] DEBUG nextflow.Session - Session start -May-27 13:22:45.558 [main] DEBUG nextflow.trace.TraceFileObserver - Workflow started -- trace file: /home/trace/projects/proteinannotator/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/trace.csv -May-27 13:22:45.850 [main] DEBUG nextflow.script.ScriptRunner - > Launching execution -May-27 13:22:45.869 [main] DEBUG nextflow.script.ScriptRunner - Parsed script files: + Process: 5784@lail-laptop [127.0.1.1] + CPUs: 8 - Mem: 7 GB (188.4 MB) - Swap: 977 MB (954 MB) +Jun-02 15:12:28.420 [main] DEBUG nextflow.Session - Work-dir: /home/trace/projects/proteinannotator/.nf-test/tests/d5aff37838516a475af3455639858b2/work [ext2/ext3] +Jun-02 15:12:28.420 [main] DEBUG nextflow.Session - Script base path does not exist or is not a directory: /home/trace/projects/proteinannotator/bin +Jun-02 15:12:28.439 [main] DEBUG nextflow.executor.ExecutorFactory - Extension executors providers=[] +Jun-02 15:12:28.453 [main] DEBUG nextflow.Session - Observer factory: DefaultObserverFactory +Jun-02 15:12:28.490 [main] DEBUG nextflow.Session - Observer factory: ValidationObserverFactory +Jun-02 15:12:28.619 [main] DEBUG nextflow.cache.CacheFactory - Using Nextflow cache factory: nextflow.cache.DefaultCacheFactory +Jun-02 15:12:28.632 [main] DEBUG nextflow.util.CustomThreadPool - Creating default thread pool > poolSize: 9; maxThreads: 1000 +Jun-02 15:12:28.717 [main] DEBUG nextflow.Session - Session start +Jun-02 15:12:28.722 [main] DEBUG nextflow.trace.TraceFileObserver - Workflow started -- trace file: /home/trace/projects/proteinannotator/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/trace.csv +Jun-02 15:12:29.063 [main] DEBUG nextflow.script.ScriptRunner - > Launching execution +Jun-02 15:12:29.087 [main] DEBUG nextflow.script.ScriptRunner - Parsed script files: Script_8a784aaaa98e4d65: /home/trace/projects/proteinannotator/.nf-test-d5aff37838516a475af3455639858b2.nf -May-27 13:22:45.869 [main] DEBUG nextflow.Session - Session aborted -- Cause: Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf -May-27 13:22:45.874 [main] DEBUG nextflow.Session - -Thread[#18,Common-Cleaner,8,InnocuousThreadGroup] - java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) - java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) - java.base@21.0.6-internal/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1852) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.await(ReferenceQueue.java:71) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:143) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:218) - java.base@21.0.6-internal/jdk.internal.ref.CleanerImpl.run(CleanerImpl.java:140) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) +Jun-02 15:12:29.088 [main] DEBUG nextflow.Session - Session aborted -- Cause: Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf +Jun-02 15:12:29.093 [main] DEBUG nextflow.Session - +Thread[#9,Reference Handler,10,system] + java.base@21.0.6-internal/java.lang.ref.Reference.waitForReferencePendingList(Native Method) + java.base@21.0.6-internal/java.lang.ref.Reference.processPendingReferences(Reference.java:246) + java.base@21.0.6-internal/java.lang.ref.Reference$ReferenceHandler.run(Reference.java:208) Thread[#31,Keep-Alive-Timer,8,InnocuousThreadGroup] java.base@21.0.6-internal/java.lang.Thread.sleep0(Native Method) @@ -69,31 +62,6 @@ Thread[#31,Keep-Alive-Timer,8,InnocuousThreadGroup] java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) -Thread[#32,process reaper,10,InnocuousThreadGroup] - java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) - java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:410) - java.base@21.0.6-internal/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:338) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1069) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) - -Thread[#10,Finalizer,8,system] - java.base@21.0.6-internal/java.lang.Object.wait0(Native Method) - java.base@21.0.6-internal/java.lang.Object.wait(Object.java:366) - java.base@21.0.6-internal/java.lang.Object.wait(Object.java:339) - java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.await(NativeReferenceQueue.java:48) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:158) - java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.remove(NativeReferenceQueue.java:89) - java.base@21.0.6-internal/java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:173) - -Thread[#19,Notification Thread,9,system] - Thread[#33,Thread-1,5,main] java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) @@ -101,8 +69,8 @@ Thread[#33,Thread-1,5,main] java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.pollFirst(LinkedBlockingDeque.java:515) java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.poll(LinkedBlockingDeque.java:677) app//nextflow.util.SimpleAgent.run(SimpleAgent.groovy:89) - java.base@21.0.6-internal/java.lang.invoke.LambdaForm$DMH/0x00007f428c19bc00.invokeVirtual(LambdaForm$DMH) - java.base@21.0.6-internal/java.lang.invoke.LambdaForm$MH/0x00007f428c490000.invoke(LambdaForm$MH) + java.base@21.0.6-internal/java.lang.invoke.LambdaForm$DMH/0x00007f72cc19bc00.invokeVirtual(LambdaForm$DMH) + java.base@21.0.6-internal/java.lang.invoke.LambdaForm$MH/0x00007f72cc48c800.invoke(LambdaForm$MH) java.base@21.0.6-internal/java.lang.invoke.Invokers$Holder.invokeExact_MT(Invokers$Holder) java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(DirectMethodHandleAccessor.java:153) java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) @@ -121,11 +89,6 @@ Thread[#33,Thread-1,5,main] java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) -Thread[#9,Reference Handler,10,system] - java.base@21.0.6-internal/java.lang.ref.Reference.waitForReferencePendingList(Native Method) - java.base@21.0.6-internal/java.lang.ref.Reference.processPendingReferences(Reference.java:246) - java.base@21.0.6-internal/java.lang.ref.Reference$ReferenceHandler.run(Reference.java:208) - Thread[#34,Actor Thread 1,5,main] java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) @@ -139,8 +102,45 @@ Thread[#34,Actor Thread 1,5,main] java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) +Thread[#18,Common-Cleaner,8,InnocuousThreadGroup] + java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) + java.base@21.0.6-internal/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1852) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.await(ReferenceQueue.java:71) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:143) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:218) + java.base@21.0.6-internal/jdk.internal.ref.CleanerImpl.run(CleanerImpl.java:140) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) + +Thread[#32,process reaper,10,InnocuousThreadGroup] + java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) + java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:410) + java.base@21.0.6-internal/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) + java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:338) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1069) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) + java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) + java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) + java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) + Thread[#11,Signal Dispatcher,9,system] +Thread[#10,Finalizer,8,system] + java.base@21.0.6-internal/java.lang.Object.wait0(Native Method) + java.base@21.0.6-internal/java.lang.Object.wait(Object.java:366) + java.base@21.0.6-internal/java.lang.Object.wait(Object.java:339) + java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.await(NativeReferenceQueue.java:48) + java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:158) + java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.remove(NativeReferenceQueue.java:89) + java.base@21.0.6-internal/java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:173) + +Thread[#19,Notification Thread,9,system] + Thread[#1,main,5,main] java.base@21.0.6-internal/java.lang.Thread.dumpThreads(Native Method) java.base@21.0.6-internal/java.lang.Thread.getAllStackTraces(Thread.java:2522) @@ -151,7 +151,7 @@ Thread[#1,main,5,main] app//nextflow.cli.Launcher.run(Launcher.groovy:503) app//nextflow.cli.Launcher.main(Launcher.groovy:658) -May-27 13:22:45.884 [main] ERROR nextflow.cli.Launcher - Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf +Jun-02 15:12:29.106 [main] ERROR nextflow.cli.Launcher - Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf java.nio.file.NoSuchFileException: Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf at nextflow.script.IncludeDef.realModulePath(IncludeDef.groovy:184) at nextflow.script.IncludeDef.load0(IncludeDef.groovy:112) diff --git a/modules.json b/modules.json index c88d38e..1247071 100644 --- a/modules.json +++ b/modules.json @@ -15,6 +15,11 @@ "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", "installed_by": ["modules"] }, + "diamond/makedb": { + "branch": "master", + "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "installed_by": ["modules"] + }, "multiqc": { "branch": "master", "git_sha": "f0719ae309075ae4a291533883847c3f7c441dad", diff --git a/modules/local/modules/local/ncbirefseqdownload/environment.yml b/modules/local/local/ncbirefseqdownload/environment.yml similarity index 100% rename from modules/local/modules/local/ncbirefseqdownload/environment.yml rename to modules/local/local/ncbirefseqdownload/environment.yml diff --git a/modules/local/modules/local/ncbirefseqdownload/main.nf b/modules/local/local/ncbirefseqdownload/main.nf similarity index 100% rename from modules/local/modules/local/ncbirefseqdownload/main.nf rename to modules/local/local/ncbirefseqdownload/main.nf diff --git a/modules/local/modules/local/ncbirefseqdownload/meta.yml b/modules/local/local/ncbirefseqdownload/meta.yml similarity index 100% rename from modules/local/modules/local/ncbirefseqdownload/meta.yml rename to modules/local/local/ncbirefseqdownload/meta.yml diff --git a/modules/local/modules/local/ncbirefseqdownload/tests/main.nf.test b/modules/local/local/ncbirefseqdownload/tests/main.nf.test similarity index 100% rename from modules/local/modules/local/ncbirefseqdownload/tests/main.nf.test rename to modules/local/local/ncbirefseqdownload/tests/main.nf.test diff --git a/modules/nf-core/diamond/makedb/environment.yml b/modules/nf-core/diamond/makedb/environment.yml new file mode 100644 index 0000000..60c71ba --- /dev/null +++ b/modules/nf-core/diamond/makedb/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::diamond=2.1.8 diff --git a/modules/nf-core/diamond/makedb/main.nf b/modules/nf-core/diamond/makedb/main.nf new file mode 100644 index 0000000..94011cf --- /dev/null +++ b/modules/nf-core/diamond/makedb/main.nf @@ -0,0 +1,65 @@ +process DIAMOND_MAKEDB { + tag "$meta.id" + label 'process_medium' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/diamond:2.1.8--h43eeafb_0' : + 'biocontainers/diamond:2.1.8--h43eeafb_0' }" + + input: + tuple val(meta), path(fasta) + path taxonmap + path taxonnodes + path taxonnames + + output: + tuple val(meta), path("*.dmnd"), emit: db + 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}" + def is_compressed = fasta.getExtension() == "gz" ? true : false + def fasta_name = is_compressed ? fasta.getBaseName() : fasta + def insert_taxonmap = taxonmap ? "--taxonmap $taxonmap" : "" + def insert_taxonnodes = taxonnodes ? "--taxonnodes $taxonnodes" : "" + def insert_taxonnames = taxonnames ? "--taxonnames $taxonnames" : "" + + """ + if [ "${is_compressed}" == "true" ]; then + gzip -c -d ${fasta} > ${fasta_name} + fi + + diamond \\ + makedb \\ + --threads ${task.cpus} \\ + --in ${fasta_name} \\ + -d ${prefix} \\ + ${args} \\ + ${insert_taxonmap} \\ + ${insert_taxonnodes} \\ + ${insert_taxonnames} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + diamond: \$(diamond --version 2>&1 | tail -n 1 | sed 's/^diamond version //') + END_VERSIONS + """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + + """ + touch ${prefix}.dmnd + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + diamond: \$(diamond --version 2>&1 | tail -n 1 | sed 's/^diamond version //') + END_VERSIONS + """ +} diff --git a/modules/nf-core/diamond/makedb/meta.yml b/modules/nf-core/diamond/makedb/meta.yml new file mode 100644 index 0000000..822e824 --- /dev/null +++ b/modules/nf-core/diamond/makedb/meta.yml @@ -0,0 +1,69 @@ +name: diamond_makedb +description: Builds a DIAMOND database +keywords: + - fasta + - diamond + - index + - database +tools: + - diamond: + description: Accelerated BLAST compatible local sequence aligner + homepage: https://github.com/bbuchfink/diamond + documentation: https://github.com/bbuchfink/diamond/wiki + tool_dev_url: https://github.com/bbuchfink/diamond + doi: "10.1038/s41592-021-01101-x" + licence: ["GPL v3.0"] + identifier: biotools:diamond +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - fasta: + type: file + description: Input fasta file + pattern: "*.{fa,fasta,fa.gz,fasta.gz}" + ontologies: + - edam: http://edamontology.org/format_1929 # FASTA + - - taxonmap: + type: file + description: Optional mapping file of NCBI protein accession numbers to taxon + ids (gzip compressed), required for taxonomy functionality. + pattern: "*.gz" + ontologies: [] + - - taxonnodes: + type: file + description: Optional NCBI taxonomy nodes.dmp file, required for taxonomy functionality. + pattern: "*.dmp" + ontologies: [] + - - taxonnames: + type: file + description: Optional NCBI taxonomy names.dmp file, required for taxonomy functionality. + pattern: "*.dmp" + ontologies: [] +output: + - db: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.dmnd": + type: file + description: File of the indexed DIAMOND database + pattern: "*.dmnd" + ontologies: [] + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML +authors: + - "@spficklin" +maintainers: + - "@spficklin" + - "@vagkaratzas" + - "@jfy133" diff --git a/modules/nf-core/diamond/makedb/tests/main.nf.test b/modules/nf-core/diamond/makedb/tests/main.nf.test new file mode 100644 index 0000000..f27e142 --- /dev/null +++ b/modules/nf-core/diamond/makedb/tests/main.nf.test @@ -0,0 +1,86 @@ +nextflow_process { + + name "Test Process DIAMOND_MAKEDB" + script "../main.nf" + process "DIAMOND_MAKEDB" + tag "modules" + tag "modules_nfcore" + tag "diamond" + tag "diamond/makedb" + + test("Should build a DIAMOND db file from a fasta file without taxonomic information") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = [ [id:'test'], [ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] ] + input[1] = [] + input[2] = [] + input[3] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("Should build a DIAMOND db file from a zipped fasta file without taxonomic information") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = [ [id:'test'], [ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta.gz', checkIfExists: true) ] ] + input[1] = [] + input[2] = [] + input[3] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("Should build a DIAMOND db file from a fasta file with taxonomic information") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = [ [id:'test'], [ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] ] + input[1] = [ file(params.modules_testdata_base_path + 'genomics/sarscov2/metagenome/prot.accession2taxid.gz', checkIfExists: true) ] + input[2] = [ file(params.modules_testdata_base_path + 'genomics/sarscov2/metagenome/prot_nodes.dmp', checkIfExists: true) ] + input[3] = [ file(params.modules_testdata_base_path + 'genomics/sarscov2/metagenome/prot_names.dmp', checkIfExists: true) ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/diamond/makedb/tests/main.nf.test.snap b/modules/nf-core/diamond/makedb/tests/main.nf.test.snap new file mode 100644 index 0000000..5abefce --- /dev/null +++ b/modules/nf-core/diamond/makedb/tests/main.nf.test.snap @@ -0,0 +1,101 @@ +{ + "Should build a DIAMOND db file from a fasta file with taxonomic information": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.dmnd:md5,9d57aa88cd1766adfda8360876fc0e4f" + ] + ], + "1": [ + "versions.yml:md5,29a8cea287d2206b9a837d2750de00c4" + ], + "db": [ + [ + { + "id": "test" + }, + "test.dmnd:md5,9d57aa88cd1766adfda8360876fc0e4f" + ] + ], + "versions": [ + "versions.yml:md5,29a8cea287d2206b9a837d2750de00c4" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-29T14:35:11.221381" + }, + "Should build a DIAMOND db file from a fasta file without taxonomic information": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.dmnd:md5,6039420745dd4db6e761244498460ae1" + ] + ], + "1": [ + "versions.yml:md5,29a8cea287d2206b9a837d2750de00c4" + ], + "db": [ + [ + { + "id": "test" + }, + "test.dmnd:md5,6039420745dd4db6e761244498460ae1" + ] + ], + "versions": [ + "versions.yml:md5,29a8cea287d2206b9a837d2750de00c4" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-29T14:35:00.595693" + }, + "Should build a DIAMOND db file from a zipped fasta file without taxonomic information": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.dmnd:md5,6039420745dd4db6e761244498460ae1" + ] + ], + "1": [ + "versions.yml:md5,29a8cea287d2206b9a837d2750de00c4" + ], + "db": [ + [ + { + "id": "test" + }, + "test.dmnd:md5,6039420745dd4db6e761244498460ae1" + ] + ], + "versions": [ + "versions.yml:md5,29a8cea287d2206b9a837d2750de00c4" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-29T14:35:05.494933" + } +} \ No newline at end of file diff --git a/subworkflows/local/functional_annotation/main.nf b/subworkflows/local/functional_annotation/main.nf index d262309..81b899f 100644 --- a/subworkflows/local/functional_annotation/main.nf +++ b/subworkflows/local/functional_annotation/main.nf @@ -1,5 +1,6 @@ include { DIAMOND_BLASTP } from '../../../modules/nf-core/diamond/blastp/main' -include { BLAST_MAKEBLASTDB } from '../../../modules/nf-core/blast/makeblastdb/main' +include { DIAMOND_MAKEDB } from '../modules/nf-core/diamond/makedb/main' +// include { BLAST_MAKEBLASTDB } from '../../../modules/nf-core/blast/makeblastdb/main' include { NCBIREFSEQDOWNLOAD } from '../../../modules/local/ncbirefseqdownload/main' workflow FUNCTIONAL_ANNOTATION { @@ -16,12 +17,12 @@ workflow FUNCTIONAL_ANNOTATION { ch_diamond_reference_fasta = NCBIREFSEQDOWNLOAD.out.fasta ch_versions = ch_versions.mix(NCBIREFSEQDOWNLOAD.out.versions.first()) - BLAST_MAKEBLASTDB ( + DIAMOND_MAKEDB ( ch_diamond_reference_fasta, ) - ch_diamond_db = BLAST_MAKEBLASTDB.out.db - ch_versions = ch_versions.mix(BLAST_MAKEBLASTDB.out.versions.first()) + ch_diamond_db = DIAMOND_MAKEDB.out.db + ch_versions = ch_versions.mix(DIAMOND_MAKEDB.out.versions.first()) //ch_diamond_db = Channel.of( [ [id:"diamond_db"], file(params.diamond_db, checkIfExists: true) ] ) From 49ee17c154db165c7c05bbe237704c2cba4043fa Mon Sep 17 00:00:00 2001 From: tracelail Date: Tue, 3 Jun 2025 15:07:19 -0400 Subject: [PATCH 07/59] cleared nf-test logs and added tuple output for main.nf.test of diamond makedb. --- .nf-test.log | 38 ++-- .../meta/mock.nf | 99 ---------- .../meta/nextflow.log | 169 ---------------- .../meta/params.json | 1 - .../meta/std.err | 1 - .../meta/std.out | 3 - .../meta/trace.csv | 1 - .../meta/mock.nf | 86 -------- .../meta/nextflow.log | 183 ----------------- .../meta/params.json | 1 - .../meta/std.err | 1 - .../meta/std.out | 3 - .../meta/trace.csv | 1 - .../meta/mock.nf | 86 -------- .../meta/nextflow.log | 183 ----------------- .../meta/params.json | 1 - .../meta/std.err | 1 - .../meta/std.out | 3 - .../meta/trace.csv | 1 - .../meta/mock.nf | 83 -------- .../meta/nextflow.log | 186 ------------------ .../meta/params.json | 1 - .../meta/std.err | 1 - .../meta/std.out | 3 - .../meta/trace.csv | 1 - .../meta/mock.nf | 99 ---------- .../meta/nextflow.log | 172 ---------------- .../meta/params.json | 1 - .../meta/std.err | 1 - .../meta/std.out | 3 - .../meta/trace.csv | 1 - .../meta/mock.nf | 83 -------- .../meta/nextflow.log | 186 ------------------ .../meta/params.json | 1 - .../meta/std.err | 1 - .../meta/std.out | 3 - .../meta/trace.csv | 1 - .../meta/mock.nf | 99 ---------- .../meta/nextflow.log | 169 ---------------- .../meta/params.json | 1 - .../meta/std.err | 1 - .../meta/std.out | 3 - .../meta/trace.csv | 1 - .../meta/mock.nf | 86 -------- .../meta/nextflow.log | 183 ----------------- .../meta/params.json | 1 - .../meta/std.err | 1 - .../meta/std.out | 3 - .../meta/trace.csv | 1 - .../meta/mock.nf | 99 ---------- .../meta/nextflow.log | 169 ---------------- .../meta/params.json | 1 - .../meta/std.err | 1 - .../meta/std.out | 3 - .../meta/trace.csv | 1 - .../meta/mock.nf | 99 ---------- .../meta/nextflow.log | 169 ---------------- .../meta/params.json | 1 - .../meta/std.err | 1 - .../meta/std.out | 3 - .../meta/trace.csv | 1 - .../nf-core/diamond/blastp/tests/main.nf.test | 2 +- .../local/functional_annotation/main.nf | 2 +- 63 files changed, 21 insertions(+), 2769 deletions(-) delete mode 100644 .nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/mock.nf delete mode 100644 .nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/nextflow.log delete mode 100644 .nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/params.json delete mode 100644 .nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/std.err delete mode 100644 .nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/std.out delete mode 100644 .nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/trace.csv delete mode 100644 .nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/mock.nf delete mode 100644 .nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/nextflow.log delete mode 100644 .nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/params.json delete mode 100644 .nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/std.err delete mode 100644 .nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/std.out delete mode 100644 .nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/trace.csv delete mode 100644 .nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/mock.nf delete mode 100644 .nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/nextflow.log delete mode 100644 .nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/params.json delete mode 100644 .nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/std.err delete mode 100644 .nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/std.out delete mode 100644 .nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/trace.csv delete mode 100644 .nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/mock.nf delete mode 100644 .nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/nextflow.log delete mode 100644 .nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/params.json delete mode 100644 .nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/std.err delete mode 100644 .nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/std.out delete mode 100644 .nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/trace.csv delete mode 100644 .nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/mock.nf delete mode 100644 .nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/nextflow.log delete mode 100644 .nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/params.json delete mode 100644 .nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/std.err delete mode 100644 .nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/std.out delete mode 100644 .nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/trace.csv delete mode 100644 .nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/mock.nf delete mode 100644 .nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/nextflow.log delete mode 100644 .nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/params.json delete mode 100644 .nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/std.err delete mode 100644 .nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/std.out delete mode 100644 .nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/trace.csv delete mode 100644 .nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/mock.nf delete mode 100644 .nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/nextflow.log delete mode 100644 .nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/params.json delete mode 100644 .nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/std.err delete mode 100644 .nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/std.out delete mode 100644 .nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/trace.csv delete mode 100644 .nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/mock.nf delete mode 100644 .nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/nextflow.log delete mode 100644 .nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/params.json delete mode 100644 .nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/std.err delete mode 100644 .nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/std.out delete mode 100644 .nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/trace.csv delete mode 100644 .nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/mock.nf delete mode 100644 .nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/nextflow.log delete mode 100644 .nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/params.json delete mode 100644 .nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/std.err delete mode 100644 .nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/std.out delete mode 100644 .nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/trace.csv delete mode 100644 .nf-test/tests/d5aff37838516a475af3455639858b2/meta/mock.nf delete mode 100644 .nf-test/tests/d5aff37838516a475af3455639858b2/meta/nextflow.log delete mode 100644 .nf-test/tests/d5aff37838516a475af3455639858b2/meta/params.json delete mode 100644 .nf-test/tests/d5aff37838516a475af3455639858b2/meta/std.err delete mode 100644 .nf-test/tests/d5aff37838516a475af3455639858b2/meta/std.out delete mode 100644 .nf-test/tests/d5aff37838516a475af3455639858b2/meta/trace.csv diff --git a/.nf-test.log b/.nf-test.log index 5007dd4..687f769 100644 --- a/.nf-test.log +++ b/.nf-test.log @@ -1,16 +1,16 @@ -Jun-03 14:37:08.369 [main] INFO com.askimed.nf.test.App - nf-test 0.9.2 -Jun-03 14:37:08.386 [main] INFO com.askimed.nf.test.App - Arguments: [test, modules/nf-core/diamond/makedb] -Jun-03 14:37:09.324 [main] INFO com.askimed.nf.test.App - Nextflow Version: 24.10.6 -Jun-03 14:37:09.329 [main] WARN com.askimed.nf.test.commands.RunTestsCommand - No nf-test config file found. -Jun-03 14:37:09.357 [main] WARN com.askimed.nf.test.nextflow.NextflowScript - Module /home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/main.nf: Dependency '/home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/../../../modules/local/ncbirefseqdownload/main.nf' not found. -Jun-03 14:37:09.391 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Loaded 30 files from directory /home/trace/projects/proteinannotator in 0.058 sec -Jun-03 14:37:09.393 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Found 1 files containing tests. -Jun-03 14:37:09.394 [main] DEBUG com.askimed.nf.test.lang.dependencies.DependencyResolver - Found files: [/home/trace/projects/proteinannotator/modules/nf-core/diamond/makedb/tests/main.nf.test] -Jun-03 14:37:10.076 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Found 3 tests to execute. -Jun-03 14:37:10.077 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Started test plan -Jun-03 14:37:10.077 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Running testsuite 'Test Process DIAMOND_MAKEDB' from file '/home/trace/projects/proteinannotator/modules/nf-core/diamond/makedb/tests/main.nf.test'. -Jun-03 14:37:10.077 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test 'b2b060aa: Should build a DIAMOND db file from a fasta file without taxonomic information'. type: com.askimed.nf.test.lang.process.ProcessTest -Jun-03 14:37:16.752 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test 'b2b060aa: Should build a DIAMOND db file from a fasta file without taxonomic information' finished. status: FAILED +Jun-03 14:55:37.424 [main] INFO com.askimed.nf.test.App - nf-test 0.9.2 +Jun-03 14:55:37.447 [main] INFO com.askimed.nf.test.App - Arguments: [test, modules/nf-core/diamond/makedb] +Jun-03 14:55:38.680 [main] INFO com.askimed.nf.test.App - Nextflow Version: 24.10.6 +Jun-03 14:55:38.687 [main] WARN com.askimed.nf.test.commands.RunTestsCommand - No nf-test config file found. +Jun-03 14:55:38.724 [main] WARN com.askimed.nf.test.nextflow.NextflowScript - Module /home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/main.nf: Dependency '/home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/../../../modules/local/ncbirefseqdownload/main.nf' not found. +Jun-03 14:55:38.782 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Loaded 30 files from directory /home/trace/projects/proteinannotator in 0.09 sec +Jun-03 14:55:38.788 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Found 1 files containing tests. +Jun-03 14:55:38.789 [main] DEBUG com.askimed.nf.test.lang.dependencies.DependencyResolver - Found files: [/home/trace/projects/proteinannotator/modules/nf-core/diamond/makedb/tests/main.nf.test] +Jun-03 14:55:39.604 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Found 3 tests to execute. +Jun-03 14:55:39.605 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Started test plan +Jun-03 14:55:39.606 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Running testsuite 'Test Process DIAMOND_MAKEDB' from file '/home/trace/projects/proteinannotator/modules/nf-core/diamond/makedb/tests/main.nf.test'. +Jun-03 14:55:39.606 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test 'b2b060aa: Should build a DIAMOND db file from a fasta file without taxonomic information'. type: com.askimed.nf.test.lang.process.ProcessTest +Jun-03 14:55:47.813 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test 'b2b060aa: Should build a DIAMOND db file from a fasta file without taxonomic information' finished. status: FAILED org.codehaus.groovy.runtime.powerassert.PowerAssertionError: 2 of 2 assertions failed at com.askimed.nf.test.lang.extensions.GlobalMethods.assertAll(GlobalMethods.java:48) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) @@ -47,8 +47,8 @@ org.codehaus.groovy.runtime.powerassert.PowerAssertionError: 2 of 2 assertions f at picocli.CommandLine.execute(CommandLine.java:2078) at com.askimed.nf.test.App.run(App.java:39) at com.askimed.nf.test.App.main(App.java:46) -Jun-03 14:37:16.757 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test '1d5885bf: Should build a DIAMOND db file from a zipped fasta file without taxonomic information'. type: com.askimed.nf.test.lang.process.ProcessTest -Jun-03 14:37:23.252 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test '1d5885bf: Should build a DIAMOND db file from a zipped fasta file without taxonomic information' finished. status: FAILED +Jun-03 14:55:47.820 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test '1d5885bf: Should build a DIAMOND db file from a zipped fasta file without taxonomic information'. type: com.askimed.nf.test.lang.process.ProcessTest +Jun-03 14:55:56.016 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test '1d5885bf: Should build a DIAMOND db file from a zipped fasta file without taxonomic information' finished. status: FAILED org.codehaus.groovy.runtime.powerassert.PowerAssertionError: 2 of 2 assertions failed at com.askimed.nf.test.lang.extensions.GlobalMethods.assertAll(GlobalMethods.java:48) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) @@ -85,8 +85,8 @@ org.codehaus.groovy.runtime.powerassert.PowerAssertionError: 2 of 2 assertions f at picocli.CommandLine.execute(CommandLine.java:2078) at com.askimed.nf.test.App.run(App.java:39) at com.askimed.nf.test.App.main(App.java:46) -Jun-03 14:37:23.253 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test '38117492: Should build a DIAMOND db file from a fasta file with taxonomic information'. type: com.askimed.nf.test.lang.process.ProcessTest -Jun-03 14:37:30.603 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test '38117492: Should build a DIAMOND db file from a fasta file with taxonomic information' finished. status: FAILED +Jun-03 14:55:56.018 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test '38117492: Should build a DIAMOND db file from a fasta file with taxonomic information'. type: com.askimed.nf.test.lang.process.ProcessTest +Jun-03 14:56:04.375 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test '38117492: Should build a DIAMOND db file from a fasta file with taxonomic information' finished. status: FAILED org.codehaus.groovy.runtime.powerassert.PowerAssertionError: 2 of 2 assertions failed at com.askimed.nf.test.lang.extensions.GlobalMethods.assertAll(GlobalMethods.java:48) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) @@ -123,5 +123,5 @@ org.codehaus.groovy.runtime.powerassert.PowerAssertionError: 2 of 2 assertions f at picocli.CommandLine.execute(CommandLine.java:2078) at com.askimed.nf.test.App.run(App.java:39) at com.askimed.nf.test.App.main(App.java:46) -Jun-03 14:37:30.604 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Testsuite 'Test Process DIAMOND_MAKEDB' finished. snapshot file: false, skipped tests: false, failed tests: true -Jun-03 14:37:30.604 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Executed 3 tests. 3 tests failed. Done! +Jun-03 14:56:04.376 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Testsuite 'Test Process DIAMOND_MAKEDB' finished. snapshot file: false, skipped tests: false, failed tests: true +Jun-03 14:56:04.377 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Executed 3 tests. 3 tests failed. Done! diff --git a/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/mock.nf b/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/mock.nf deleted file mode 100644 index 7e407de..0000000 --- a/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/mock.nf +++ /dev/null @@ -1,99 +0,0 @@ -import groovy.json.JsonGenerator -import groovy.json.JsonGenerator.Converter - -nextflow.enable.dsl=2 - -// comes from nf-test to store json files -params.nf_test_output = "" - -// include dependencies - -include { DIAMOND_MAKEDB } from '/home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf' - - -// include test process -include { DIAMOND_BLASTP } from '/home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../main.nf' - -// define custom rules for JSON that will be generated. -def jsonOutput = - new JsonGenerator.Options() - .addConverter(Path) { value -> value.toAbsolutePath().toString() } // Custom converter for Path. Only filename - .build() - -def jsonWorkflowOutput = new JsonGenerator.Options().excludeNulls().build() - - -workflow { - - // run dependencies - - { - def input = [] - - input[0] = [ [id:'test2'], [ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] ] - input[1] = [] - input[2] = [] - input[3] = [] - - DIAMOND_MAKEDB(*input) - } - - - // process mapping - def input = [] - - input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] - input[1] = DIAMOND_MAKEDB.out.db - input[2] = 6 - input[3] = 'qseqid qlen' - - //---- - - //run process - DIAMOND_BLASTP(*input) - - if (DIAMOND_BLASTP.output){ - - // consumes all named output channels and stores items in a json file - for (def name in DIAMOND_BLASTP.out.getNames()) { - serializeChannel(name, DIAMOND_BLASTP.out.getProperty(name), jsonOutput) - } - - // consumes all unnamed output channels and stores items in a json file - def array = DIAMOND_BLASTP.out as Object[] - for (def i = 0; i < array.length ; i++) { - serializeChannel(i, array[i], jsonOutput) - } - - } - -} - -def serializeChannel(name, channel, jsonOutput) { - def _name = name - def list = [ ] - channel.subscribe( - onNext: { - list.add(it) - }, - onComplete: { - def map = new HashMap() - map[_name] = list - def filename = "${params.nf_test_output}/output_${_name}.json" - new File(filename).text = jsonOutput.toJson(map) - } - ) -} - - -workflow.onComplete { - - def result = [ - success: workflow.success, - exitStatus: workflow.exitStatus, - errorMessage: workflow.errorMessage, - errorReport: workflow.errorReport - ] - new File("${params.nf_test_output}/workflow.json").text = jsonWorkflowOutput.toJson(result) - -} diff --git a/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/nextflow.log b/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/nextflow.log deleted file mode 100644 index 5319d7a..0000000 --- a/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/nextflow.log +++ /dev/null @@ -1,169 +0,0 @@ -Jun-02 15:12:39.597 [main] DEBUG nextflow.cli.Launcher - $> nextflow -quiet -log /home/trace/projects/proteinannotator/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/nextflow.log run /home/trace/projects/proteinannotator/.nf-test-1bdc1f2ecae38147b8549068f7156372.nf -c /home/trace/projects/proteinannotator/nextflow.config -params-file /home/trace/projects/proteinannotator/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/params.json -ansi-log false -with-trace /home/trace/projects/proteinannotator/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/trace.csv -w /home/trace/projects/proteinannotator/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/work -stub -Jun-02 15:12:39.740 [main] INFO nextflow.cli.CmdRun - N E X T F L O W ~ version 24.10.6 -Jun-02 15:12:39.780 [main] DEBUG nextflow.plugin.PluginsFacade - Setting up plugin manager > mode=prod; embedded=false; plugins-dir=/home/trace/.nextflow/plugins; core-plugins: nf-amazon@2.9.3,nf-azure@1.10.2,nf-cloudcache@0.4.2,nf-codecommit@0.2.2,nf-console@1.1.4,nf-google@1.15.4,nf-tower@1.9.3,nf-wave@1.7.5 -Jun-02 15:12:39.826 [main] INFO o.pf4j.DefaultPluginStatusProvider - Enabled plugins: [] -Jun-02 15:12:39.827 [main] INFO o.pf4j.DefaultPluginStatusProvider - Disabled plugins: [] -Jun-02 15:12:39.832 [main] INFO org.pf4j.DefaultPluginManager - PF4J version 3.12.0 in 'deployment' mode -Jun-02 15:12:39.859 [main] INFO org.pf4j.AbstractPluginManager - No plugins -Jun-02 15:12:39.910 [main] DEBUG nextflow.config.ConfigBuilder - Found config base: /home/trace/projects/proteinannotator/nextflow.config -Jun-02 15:12:39.920 [main] DEBUG nextflow.config.ConfigBuilder - User config file: /home/trace/projects/proteinannotator/nextflow.config -Jun-02 15:12:39.928 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config -Jun-02 15:12:39.929 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config -Jun-02 15:12:39.982 [main] DEBUG n.secret.LocalSecretsProvider - Secrets store: /home/trace/.nextflow/secrets/store.json -Jun-02 15:12:39.993 [main] DEBUG nextflow.secret.SecretsLoader - Discovered secrets providers: [nextflow.secret.LocalSecretsProvider@456be73c] - activable => nextflow.secret.LocalSecretsProvider@456be73c -Jun-02 15:12:40.039 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` -Jun-02 15:12:44.122 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` -Jun-02 15:12:45.189 [main] DEBUG nextflow.cli.CmdRun - Applied DSL=2 from script declaration -Jun-02 15:12:45.215 [main] INFO nextflow.cli.CmdRun - Launching `/home/trace/projects/proteinannotator/.nf-test-1bdc1f2ecae38147b8549068f7156372.nf` [sharp_shirley] DSL2 - revision: a1ca7e6f26 -Jun-02 15:12:45.218 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins declared=[nf-schema@2.3.0] -Jun-02 15:12:45.219 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins default=[] -Jun-02 15:12:45.220 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins resolved requirement=[nf-schema@2.3.0] -Jun-02 15:12:45.220 [main] DEBUG nextflow.plugin.PluginUpdater - Installing plugin nf-schema version: 2.3.0 -Jun-02 15:12:45.229 [main] INFO org.pf4j.AbstractPluginManager - Plugin 'nf-schema@2.3.0' resolved -Jun-02 15:12:45.230 [main] INFO org.pf4j.AbstractPluginManager - Start plugin 'nf-schema@2.3.0' -Jun-02 15:12:45.240 [main] DEBUG nextflow.plugin.BasePlugin - Plugin started nf-schema@2.3.0 -Jun-02 15:12:45.336 [main] DEBUG nextflow.Session - Session UUID: 90e88996-39d9-4db9-9c8d-6ae2d472235e -Jun-02 15:12:45.336 [main] DEBUG nextflow.Session - Run name: sharp_shirley -Jun-02 15:12:45.337 [main] DEBUG nextflow.Session - Executor pool size: 8 -Jun-02 15:12:45.351 [main] DEBUG nextflow.file.FilePorter - File porter settings maxRetries=3; maxTransfers=50; pollTimeout=null -Jun-02 15:12:45.361 [main] DEBUG nextflow.util.ThreadPoolBuilder - Creating thread pool 'FileTransfer' minSize=10; maxSize=24; workQueue=LinkedBlockingQueue[-1]; allowCoreThreadTimeout=false -Jun-02 15:12:45.394 [main] DEBUG nextflow.cli.CmdRun - - Version: 24.10.6 build 5937 - Created: 23-04-2025 16:53 UTC (12:53 EDT) - System: Linux 6.1.0-33-amd64 - Runtime: Groovy 4.0.23 on OpenJDK 64-Bit Server VM 21.0.6-internal-adhoc.conda.src - Encoding: UTF-8 (UTF-8) - Process: 6071@lail-laptop [127.0.1.1] - CPUs: 8 - Mem: 7 GB (205.8 MB) - Swap: 977 MB (954 MB) -Jun-02 15:12:45.443 [main] DEBUG nextflow.Session - Work-dir: /home/trace/projects/proteinannotator/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/work [ext2/ext3] -Jun-02 15:12:45.443 [main] DEBUG nextflow.Session - Script base path does not exist or is not a directory: /home/trace/projects/proteinannotator/bin -Jun-02 15:12:45.465 [main] DEBUG nextflow.executor.ExecutorFactory - Extension executors providers=[] -Jun-02 15:12:45.483 [main] DEBUG nextflow.Session - Observer factory: DefaultObserverFactory -Jun-02 15:12:45.529 [main] DEBUG nextflow.Session - Observer factory: ValidationObserverFactory -Jun-02 15:12:45.644 [main] DEBUG nextflow.cache.CacheFactory - Using Nextflow cache factory: nextflow.cache.DefaultCacheFactory -Jun-02 15:12:45.666 [main] DEBUG nextflow.util.CustomThreadPool - Creating default thread pool > poolSize: 9; maxThreads: 1000 -Jun-02 15:12:45.768 [main] DEBUG nextflow.Session - Session start -Jun-02 15:12:45.772 [main] DEBUG nextflow.trace.TraceFileObserver - Workflow started -- trace file: /home/trace/projects/proteinannotator/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/trace.csv -Jun-02 15:12:46.230 [main] DEBUG nextflow.script.ScriptRunner - > Launching execution -Jun-02 15:12:46.252 [main] DEBUG nextflow.script.ScriptRunner - Parsed script files: - Script_e3c35e79f690a4ec: /home/trace/projects/proteinannotator/.nf-test-1bdc1f2ecae38147b8549068f7156372.nf -Jun-02 15:12:46.253 [main] DEBUG nextflow.Session - Session aborted -- Cause: Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf -Jun-02 15:12:46.261 [main] DEBUG nextflow.Session - -Thread[#32,process reaper,10,InnocuousThreadGroup] - java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) - java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:410) - java.base@21.0.6-internal/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:338) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1069) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) - -Thread[#10,Finalizer,8,system] - java.base@21.0.6-internal/java.lang.Object.wait0(Native Method) - java.base@21.0.6-internal/java.lang.Object.wait(Object.java:366) - java.base@21.0.6-internal/java.lang.Object.wait(Object.java:339) - java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.await(NativeReferenceQueue.java:48) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:158) - java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.remove(NativeReferenceQueue.java:89) - java.base@21.0.6-internal/java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:173) - -Thread[#11,Signal Dispatcher,9,system] - -Thread[#31,Keep-Alive-Timer,8,InnocuousThreadGroup] - java.base@21.0.6-internal/java.lang.Thread.sleep0(Native Method) - java.base@21.0.6-internal/java.lang.Thread.sleep(Thread.java:509) - java.base@21.0.6-internal/sun.net.www.http.KeepAliveCache.run(KeepAliveCache.java:238) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) - -Thread[#33,Thread-1,5,main] - java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) - java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) - java.base@21.0.6-internal/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1763) - java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.pollFirst(LinkedBlockingDeque.java:515) - java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.poll(LinkedBlockingDeque.java:677) - app//nextflow.util.SimpleAgent.run(SimpleAgent.groovy:89) - java.base@21.0.6-internal/java.lang.invoke.LambdaForm$DMH/0x00007f0bbc19bc00.invokeVirtual(LambdaForm$DMH) - java.base@21.0.6-internal/java.lang.invoke.LambdaForm$MH/0x00007f0bbc48c000.invoke(LambdaForm$MH) - java.base@21.0.6-internal/java.lang.invoke.Invokers$Holder.invokeExact_MT(Invokers$Holder) - java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(DirectMethodHandleAccessor.java:153) - java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - java.base@21.0.6-internal/java.lang.reflect.Method.invoke(Method.java:580) - app//org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343) - app//groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:328) - app//groovy.lang.MetaClassImpl.doInvokeMethod(MetaClassImpl.java:1333) - app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1088) - app//groovy.lang.MetaClassImpl.invokeMethodClosure(MetaClassImpl.java:1017) - app//groovy.lang.MetaClassImpl.doInvokeMethod(MetaClassImpl.java:1207) - app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1088) - app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1007) - app//groovy.lang.Closure.call(Closure.java:433) - app//groovy.lang.Closure.call(Closure.java:412) - app//groovy.lang.Closure.run(Closure.java:505) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - -Thread[#34,Actor Thread 1,5,main] - java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) - java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) - java.base@21.0.6-internal/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:458) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.take(SynchronousQueue.java:318) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - -Thread[#9,Reference Handler,10,system] - java.base@21.0.6-internal/java.lang.ref.Reference.waitForReferencePendingList(Native Method) - java.base@21.0.6-internal/java.lang.ref.Reference.processPendingReferences(Reference.java:246) - java.base@21.0.6-internal/java.lang.ref.Reference$ReferenceHandler.run(Reference.java:208) - -Thread[#18,Common-Cleaner,8,InnocuousThreadGroup] - java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) - java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) - java.base@21.0.6-internal/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1852) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.await(ReferenceQueue.java:71) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:143) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:218) - java.base@21.0.6-internal/jdk.internal.ref.CleanerImpl.run(CleanerImpl.java:140) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) - -Thread[#19,Notification Thread,9,system] - -Thread[#1,main,5,main] - java.base@21.0.6-internal/java.lang.Thread.dumpThreads(Native Method) - java.base@21.0.6-internal/java.lang.Thread.getAllStackTraces(Thread.java:2522) - app//nextflow.util.SysHelper.dumpThreads(SysHelper.groovy:188) - app//nextflow.Session.abort(Session.groovy:800) - app//nextflow.script.ScriptRunner.execute(ScriptRunner.groovy:149) - app//nextflow.cli.CmdRun.run(CmdRun.groovy:376) - app//nextflow.cli.Launcher.run(Launcher.groovy:503) - app//nextflow.cli.Launcher.main(Launcher.groovy:658) - -Jun-02 15:12:46.272 [main] ERROR nextflow.cli.Launcher - Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf -java.nio.file.NoSuchFileException: Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf - at nextflow.script.IncludeDef.realModulePath(IncludeDef.groovy:184) - at nextflow.script.IncludeDef.load0(IncludeDef.groovy:112) - at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) - at Script_e3c35e79f690a4ec.runScript(Script_e3c35e79f690a4ec:11) - at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) - at nextflow.script.BaseScript.run0(BaseScript.groovy:159) - at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) - at nextflow.script.BaseScript.run(BaseScript.groovy:209) - at nextflow.script.ScriptParser.runScript(ScriptParser.groovy:236) - at nextflow.script.ScriptRunner.run(ScriptRunner.groovy:243) - at nextflow.script.ScriptRunner.execute(ScriptRunner.groovy:138) - at nextflow.cli.CmdRun.run(CmdRun.groovy:376) - at nextflow.cli.Launcher.run(Launcher.groovy:503) - at nextflow.cli.Launcher.main(Launcher.groovy:658) diff --git a/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/params.json b/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/params.json deleted file mode 100644 index 1b8d9da..0000000 --- a/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/params.json +++ /dev/null @@ -1 +0,0 @@ -{"nf_test_output":"/home/trace/projects/proteinannotator/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta"} \ No newline at end of file diff --git a/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/std.err b/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/std.err deleted file mode 100644 index 5890cc1..0000000 --- a/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/std.err +++ /dev/null @@ -1 +0,0 @@ -Nextflow 25.04.2 is available - Please consider updating your version to it(B diff --git a/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/std.out b/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/std.out deleted file mode 100644 index 369701e..0000000 --- a/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/std.out +++ /dev/null @@ -1,3 +0,0 @@ -ERROR ~ No such file or directory: Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf - - -- Check script '/home/trace/projects/proteinannotator/.nf-test-1bdc1f2ecae38147b8549068f7156372.nf' at line: 11 or see '/home/trace/projects/proteinannotator/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/nextflow.log' file for more details diff --git a/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/trace.csv b/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/trace.csv deleted file mode 100644 index 6b739ac..0000000 --- a/.nf-test/tests/1bdc1f2ecae38147b8549068f7156372/meta/trace.csv +++ /dev/null @@ -1 +0,0 @@ -task_id hash native_id name status exit submit duration realtime %cpu peak_rss peak_vmem rchar wchar diff --git a/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/mock.nf b/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/mock.nf deleted file mode 100644 index e542da1..0000000 --- a/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/mock.nf +++ /dev/null @@ -1,86 +0,0 @@ -import groovy.json.JsonGenerator -import groovy.json.JsonGenerator.Converter - -nextflow.enable.dsl=2 - -// comes from nf-test to store json files -params.nf_test_output = "" - -// include dependencies - - -// include test process -include { DIAMOND_MAKEDB } from '/home/trace/projects/proteinannotator/modules/nf-core/diamond/makedb/tests/../main.nf' - -// define custom rules for JSON that will be generated. -def jsonOutput = - new JsonGenerator.Options() - .addConverter(Path) { value -> value.toAbsolutePath().toString() } // Custom converter for Path. Only filename - .build() - -def jsonWorkflowOutput = new JsonGenerator.Options().excludeNulls().build() - - -workflow { - - // run dependencies - - - // process mapping - def input = [] - - input[0] = [ [id:'test'], [ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta.gz', checkIfExists: true) ] ] - input[1] = [] - input[2] = [] - input[3] = [] - - //---- - - //run process - DIAMOND_MAKEDB(*input) - - if (DIAMOND_MAKEDB.output){ - - // consumes all named output channels and stores items in a json file - for (def name in DIAMOND_MAKEDB.out.getNames()) { - serializeChannel(name, DIAMOND_MAKEDB.out.getProperty(name), jsonOutput) - } - - // consumes all unnamed output channels and stores items in a json file - def array = DIAMOND_MAKEDB.out as Object[] - for (def i = 0; i < array.length ; i++) { - serializeChannel(i, array[i], jsonOutput) - } - - } - -} - -def serializeChannel(name, channel, jsonOutput) { - def _name = name - def list = [ ] - channel.subscribe( - onNext: { - list.add(it) - }, - onComplete: { - def map = new HashMap() - map[_name] = list - def filename = "${params.nf_test_output}/output_${_name}.json" - new File(filename).text = jsonOutput.toJson(map) - } - ) -} - - -workflow.onComplete { - - def result = [ - success: workflow.success, - exitStatus: workflow.exitStatus, - errorMessage: workflow.errorMessage, - errorReport: workflow.errorReport - ] - new File("${params.nf_test_output}/workflow.json").text = jsonWorkflowOutput.toJson(result) - -} diff --git a/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/nextflow.log b/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/nextflow.log deleted file mode 100644 index 69511ef..0000000 --- a/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/nextflow.log +++ /dev/null @@ -1,183 +0,0 @@ -Jun-03 14:37:18.315 [main] DEBUG nextflow.cli.Launcher - $> nextflow -quiet -log /home/trace/projects/proteinannotator/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/nextflow.log run /home/trace/projects/proteinannotator/.nf-test-1d5885bf4a1b6a843b2ff7fe724035b2.nf -c /home/trace/projects/proteinannotator/nextflow.config -params-file /home/trace/projects/proteinannotator/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/params.json -ansi-log false -with-trace /home/trace/projects/proteinannotator/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/trace.csv -w /home/trace/projects/proteinannotator/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/work -Jun-03 14:37:18.447 [main] INFO nextflow.cli.CmdRun - N E X T F L O W ~ version 24.10.6 -Jun-03 14:37:18.479 [main] DEBUG nextflow.plugin.PluginsFacade - Setting up plugin manager > mode=prod; embedded=false; plugins-dir=/home/trace/.nextflow/plugins; core-plugins: nf-amazon@2.9.3,nf-azure@1.10.2,nf-cloudcache@0.4.2,nf-codecommit@0.2.2,nf-console@1.1.4,nf-google@1.15.4,nf-tower@1.9.3,nf-wave@1.7.5 -Jun-03 14:37:18.514 [main] INFO o.pf4j.DefaultPluginStatusProvider - Enabled plugins: [] -Jun-03 14:37:18.515 [main] INFO o.pf4j.DefaultPluginStatusProvider - Disabled plugins: [] -Jun-03 14:37:18.520 [main] INFO org.pf4j.DefaultPluginManager - PF4J version 3.12.0 in 'deployment' mode -Jun-03 14:37:18.539 [main] INFO org.pf4j.AbstractPluginManager - No plugins -Jun-03 14:37:18.580 [main] DEBUG nextflow.config.ConfigBuilder - Found config base: /home/trace/projects/proteinannotator/nextflow.config -Jun-03 14:37:18.588 [main] DEBUG nextflow.config.ConfigBuilder - User config file: /home/trace/projects/proteinannotator/nextflow.config -Jun-03 14:37:18.591 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config -Jun-03 14:37:18.592 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config -Jun-03 14:37:18.642 [main] DEBUG n.secret.LocalSecretsProvider - Secrets store: /home/trace/.nextflow/secrets/store.json -Jun-03 14:37:18.650 [main] DEBUG nextflow.secret.SecretsLoader - Discovered secrets providers: [nextflow.secret.LocalSecretsProvider@2fb5fe30] - activable => nextflow.secret.LocalSecretsProvider@2fb5fe30 -Jun-03 14:37:18.686 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` -Jun-03 14:37:21.212 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` -Jun-03 14:37:22.092 [main] DEBUG nextflow.cli.CmdRun - Applied DSL=2 from script declaration -Jun-03 14:37:22.110 [main] INFO nextflow.cli.CmdRun - Launching `/home/trace/projects/proteinannotator/.nf-test-1d5885bf4a1b6a843b2ff7fe724035b2.nf` [furious_descartes] DSL2 - revision: c74789356e -Jun-03 14:37:22.112 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins declared=[nf-schema@2.3.0] -Jun-03 14:37:22.113 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins default=[] -Jun-03 14:37:22.113 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins resolved requirement=[nf-schema@2.3.0] -Jun-03 14:37:22.114 [main] DEBUG nextflow.plugin.PluginUpdater - Installing plugin nf-schema version: 2.3.0 -Jun-03 14:37:22.124 [main] INFO org.pf4j.AbstractPluginManager - Plugin 'nf-schema@2.3.0' resolved -Jun-03 14:37:22.124 [main] INFO org.pf4j.AbstractPluginManager - Start plugin 'nf-schema@2.3.0' -Jun-03 14:37:22.136 [main] DEBUG nextflow.plugin.BasePlugin - Plugin started nf-schema@2.3.0 -Jun-03 14:37:22.221 [main] DEBUG nextflow.Session - Session UUID: 6d78d7e6-2612-4d46-a22f-3634e5310907 -Jun-03 14:37:22.222 [main] DEBUG nextflow.Session - Run name: furious_descartes -Jun-03 14:37:22.223 [main] DEBUG nextflow.Session - Executor pool size: 8 -Jun-03 14:37:22.239 [main] DEBUG nextflow.file.FilePorter - File porter settings maxRetries=3; maxTransfers=50; pollTimeout=null -Jun-03 14:37:22.248 [main] DEBUG nextflow.util.ThreadPoolBuilder - Creating thread pool 'FileTransfer' minSize=10; maxSize=24; workQueue=LinkedBlockingQueue[-1]; allowCoreThreadTimeout=false -Jun-03 14:37:22.277 [main] DEBUG nextflow.cli.CmdRun - - Version: 24.10.6 build 5937 - Created: 23-04-2025 16:53 UTC (12:53 EDT) - System: Linux 6.1.0-33-amd64 - Runtime: Groovy 4.0.23 on OpenJDK 64-Bit Server VM 21.0.6-internal-adhoc.conda.src - Encoding: UTF-8 (UTF-8) - Process: 35245@lail-laptop [127.0.1.1] - CPUs: 8 - Mem: 7 GB (142.7 MB) - Swap: 977 MB (63 MB) -Jun-03 14:37:22.321 [main] DEBUG nextflow.Session - Work-dir: /home/trace/projects/proteinannotator/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/work [ext2/ext3] -Jun-03 14:37:22.322 [main] DEBUG nextflow.Session - Script base path does not exist or is not a directory: /home/trace/projects/proteinannotator/bin -Jun-03 14:37:22.339 [main] DEBUG nextflow.executor.ExecutorFactory - Extension executors providers=[] -Jun-03 14:37:22.358 [main] DEBUG nextflow.Session - Observer factory: DefaultObserverFactory -Jun-03 14:37:22.392 [main] DEBUG nextflow.Session - Observer factory: ValidationObserverFactory -Jun-03 14:37:22.507 [main] DEBUG nextflow.cache.CacheFactory - Using Nextflow cache factory: nextflow.cache.DefaultCacheFactory -Jun-03 14:37:22.521 [main] DEBUG nextflow.util.CustomThreadPool - Creating default thread pool > poolSize: 9; maxThreads: 1000 -Jun-03 14:37:22.611 [main] DEBUG nextflow.Session - Session start -Jun-03 14:37:22.615 [main] DEBUG nextflow.trace.TraceFileObserver - Workflow started -- trace file: /home/trace/projects/proteinannotator/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/trace.csv -Jun-03 14:37:22.935 [main] DEBUG nextflow.script.ScriptRunner - > Launching execution -Jun-03 14:37:23.148 [main] WARN nextflow.script.ScriptBinding - Access to undefined parameter `modules_testdata_base_path` -- Initialise it to a default value eg. `params.modules_testdata_base_path = some_value` -Jun-03 14:37:23.163 [main] DEBUG nextflow.script.ScriptRunner - Parsed script files: - Script_5efcee37cf6f5961: /home/trace/projects/proteinannotator/.nf-test-1d5885bf4a1b6a843b2ff7fe724035b2.nf - Script_7c8a310cd66b8f33: /home/trace/projects/proteinannotator/modules/nf-core/diamond/makedb/tests/../main.nf -Jun-03 14:37:23.164 [main] DEBUG nextflow.Session - Session aborted -- Cause: /home/trace/projects/proteinannotator/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/nullgenomics/sarscov2/genome/proteome.fasta.gz -Jun-03 14:37:23.171 [main] DEBUG nextflow.Session - -Thread[#10,Finalizer,8,system] - java.base@21.0.6-internal/java.lang.Object.wait0(Native Method) - java.base@21.0.6-internal/java.lang.Object.wait(Object.java:366) - java.base@21.0.6-internal/java.lang.Object.wait(Object.java:339) - java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.await(NativeReferenceQueue.java:48) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:158) - java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.remove(NativeReferenceQueue.java:89) - java.base@21.0.6-internal/java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:173) - -Thread[#9,Reference Handler,10,system] - java.base@21.0.6-internal/java.lang.ref.Reference.waitForReferencePendingList(Native Method) - java.base@21.0.6-internal/java.lang.ref.Reference.processPendingReferences(Reference.java:246) - java.base@21.0.6-internal/java.lang.ref.Reference$ReferenceHandler.run(Reference.java:208) - -Thread[#33,Thread-1,5,main] - java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) - java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) - java.base@21.0.6-internal/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1763) - java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.pollFirst(LinkedBlockingDeque.java:515) - java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.poll(LinkedBlockingDeque.java:677) - app//nextflow.util.SimpleAgent.run(SimpleAgent.groovy:89) - java.base@21.0.6-internal/java.lang.invoke.LambdaForm$DMH/0x00007f0cc419bc00.invokeVirtual(LambdaForm$DMH) - java.base@21.0.6-internal/java.lang.invoke.LambdaForm$MH/0x00007f0cc4490000.invoke(LambdaForm$MH) - java.base@21.0.6-internal/java.lang.invoke.Invokers$Holder.invokeExact_MT(Invokers$Holder) - java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(DirectMethodHandleAccessor.java:153) - java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - java.base@21.0.6-internal/java.lang.reflect.Method.invoke(Method.java:580) - app//org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343) - app//groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:328) - app//groovy.lang.MetaClassImpl.doInvokeMethod(MetaClassImpl.java:1333) - app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1088) - app//groovy.lang.MetaClassImpl.invokeMethodClosure(MetaClassImpl.java:1017) - app//groovy.lang.MetaClassImpl.doInvokeMethod(MetaClassImpl.java:1207) - app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1088) - app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1007) - app//groovy.lang.Closure.call(Closure.java:433) - app//groovy.lang.Closure.call(Closure.java:412) - app//groovy.lang.Closure.run(Closure.java:505) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - -Thread[#31,Keep-Alive-Timer,8,InnocuousThreadGroup] - java.base@21.0.6-internal/java.lang.Thread.sleep0(Native Method) - java.base@21.0.6-internal/java.lang.Thread.sleep(Thread.java:509) - java.base@21.0.6-internal/sun.net.www.http.KeepAliveCache.run(KeepAliveCache.java:238) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) - -Thread[#34,Actor Thread 1,5,main] - java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) - java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) - java.base@21.0.6-internal/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:458) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.take(SynchronousQueue.java:318) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - -Thread[#18,Common-Cleaner,8,InnocuousThreadGroup] - java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) - java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) - java.base@21.0.6-internal/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1852) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.await(ReferenceQueue.java:71) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:143) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:218) - java.base@21.0.6-internal/jdk.internal.ref.CleanerImpl.run(CleanerImpl.java:140) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) - -Thread[#11,Signal Dispatcher,9,system] - -Thread[#1,main,5,main] - java.base@21.0.6-internal/java.lang.Thread.dumpThreads(Native Method) - java.base@21.0.6-internal/java.lang.Thread.getAllStackTraces(Thread.java:2522) - app//nextflow.util.SysHelper.dumpThreads(SysHelper.groovy:188) - app//nextflow.Session.abort(Session.groovy:800) - app//nextflow.script.ScriptRunner.execute(ScriptRunner.groovy:149) - app//nextflow.cli.CmdRun.run(CmdRun.groovy:376) - app//nextflow.cli.Launcher.run(Launcher.groovy:503) - app//nextflow.cli.Launcher.main(Launcher.groovy:658) - -Thread[#32,process reaper,10,InnocuousThreadGroup] - java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) - java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:410) - java.base@21.0.6-internal/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:338) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1069) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) - -Thread[#19,Notification Thread,9,system] - -Jun-03 14:37:23.182 [main] ERROR nextflow.cli.Launcher - /home/trace/projects/proteinannotator/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/nullgenomics/sarscov2/genome/proteome.fasta.gz -java.nio.file.NoSuchFileException: /home/trace/projects/proteinannotator/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/nullgenomics/sarscov2/genome/proteome.fasta.gz - at nextflow.file.FileHelper.checkIfExists(FileHelper.groovy:1099) - at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) - at nextflow.Nextflow.file(Nextflow.groovy:123) - at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) - at Script_5efcee37cf6f5961$_runScript_closure4$_closure6.doCall(Script_5efcee37cf6f5961:32) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343) - at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:328) - at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:279) - at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1007) - at groovy.lang.Closure.call(Closure.java:433) - at groovy.lang.Closure.call(Closure.java:412) - at nextflow.script.WorkflowDef.run0(WorkflowDef.groovy:204) - at nextflow.script.WorkflowDef.run(WorkflowDef.groovy:188) - at nextflow.script.BindableDef.invoke_a(BindableDef.groovy:51) - at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) - at nextflow.script.BaseScript.run0(BaseScript.groovy:198) - at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) - at nextflow.script.BaseScript.run(BaseScript.groovy:209) - at nextflow.script.ScriptParser.runScript(ScriptParser.groovy:236) - at nextflow.script.ScriptRunner.run(ScriptRunner.groovy:243) - at nextflow.script.ScriptRunner.execute(ScriptRunner.groovy:138) - at nextflow.cli.CmdRun.run(CmdRun.groovy:376) - at nextflow.cli.Launcher.run(Launcher.groovy:503) - at nextflow.cli.Launcher.main(Launcher.groovy:658) diff --git a/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/params.json b/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/params.json deleted file mode 100644 index 5931b63..0000000 --- a/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/params.json +++ /dev/null @@ -1 +0,0 @@ -{"nf_test_output":"/home/trace/projects/proteinannotator/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta","outdir":"/home/trace/projects/proteinannotator/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/output"} \ No newline at end of file diff --git a/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/std.err b/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/std.err deleted file mode 100644 index 519f6b3..0000000 --- a/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/std.err +++ /dev/null @@ -1 +0,0 @@ -Nextflow 25.04.3 is available - Please consider updating your version to it(B diff --git a/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/std.out b/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/std.out deleted file mode 100644 index 2d02350..0000000 --- a/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/std.out +++ /dev/null @@ -1,3 +0,0 @@ -ERROR ~ No such file or directory: /home/trace/projects/proteinannotator/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/nullgenomics/sarscov2/genome/proteome.fasta.gz - - -- Check script '/home/trace/projects/proteinannotator/.nf-test-1d5885bf4a1b6a843b2ff7fe724035b2.nf' at line: 32 or see '/home/trace/projects/proteinannotator/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/nextflow.log' file for more details diff --git a/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/trace.csv b/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/trace.csv deleted file mode 100644 index 6b739ac..0000000 --- a/.nf-test/tests/1d5885bf4a1b6a843b2ff7fe724035b2/meta/trace.csv +++ /dev/null @@ -1 +0,0 @@ -task_id hash native_id name status exit submit duration realtime %cpu peak_rss peak_vmem rchar wchar diff --git a/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/mock.nf b/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/mock.nf deleted file mode 100644 index af561fc..0000000 --- a/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/mock.nf +++ /dev/null @@ -1,86 +0,0 @@ -import groovy.json.JsonGenerator -import groovy.json.JsonGenerator.Converter - -nextflow.enable.dsl=2 - -// comes from nf-test to store json files -params.nf_test_output = "" - -// include dependencies - - -// include test process -include { DIAMOND_MAKEDB } from '/home/trace/projects/proteinannotator/modules/nf-core/diamond/makedb/tests/../main.nf' - -// define custom rules for JSON that will be generated. -def jsonOutput = - new JsonGenerator.Options() - .addConverter(Path) { value -> value.toAbsolutePath().toString() } // Custom converter for Path. Only filename - .build() - -def jsonWorkflowOutput = new JsonGenerator.Options().excludeNulls().build() - - -workflow { - - // run dependencies - - - // process mapping - def input = [] - - input[0] = [ [id:'test'], [ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] ] - input[1] = [ file(params.modules_testdata_base_path + 'genomics/sarscov2/metagenome/prot.accession2taxid.gz', checkIfExists: true) ] - input[2] = [ file(params.modules_testdata_base_path + 'genomics/sarscov2/metagenome/prot_nodes.dmp', checkIfExists: true) ] - input[3] = [ file(params.modules_testdata_base_path + 'genomics/sarscov2/metagenome/prot_names.dmp', checkIfExists: true) ] - - //---- - - //run process - DIAMOND_MAKEDB(*input) - - if (DIAMOND_MAKEDB.output){ - - // consumes all named output channels and stores items in a json file - for (def name in DIAMOND_MAKEDB.out.getNames()) { - serializeChannel(name, DIAMOND_MAKEDB.out.getProperty(name), jsonOutput) - } - - // consumes all unnamed output channels and stores items in a json file - def array = DIAMOND_MAKEDB.out as Object[] - for (def i = 0; i < array.length ; i++) { - serializeChannel(i, array[i], jsonOutput) - } - - } - -} - -def serializeChannel(name, channel, jsonOutput) { - def _name = name - def list = [ ] - channel.subscribe( - onNext: { - list.add(it) - }, - onComplete: { - def map = new HashMap() - map[_name] = list - def filename = "${params.nf_test_output}/output_${_name}.json" - new File(filename).text = jsonOutput.toJson(map) - } - ) -} - - -workflow.onComplete { - - def result = [ - success: workflow.success, - exitStatus: workflow.exitStatus, - errorMessage: workflow.errorMessage, - errorReport: workflow.errorReport - ] - new File("${params.nf_test_output}/workflow.json").text = jsonWorkflowOutput.toJson(result) - -} diff --git a/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/nextflow.log b/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/nextflow.log deleted file mode 100644 index 7231065..0000000 --- a/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/nextflow.log +++ /dev/null @@ -1,183 +0,0 @@ -Jun-03 14:37:25.253 [main] DEBUG nextflow.cli.Launcher - $> nextflow -quiet -log /home/trace/projects/proteinannotator/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/nextflow.log run /home/trace/projects/proteinannotator/.nf-test-381174926a8d5ef292fb88056bbadebd.nf -c /home/trace/projects/proteinannotator/nextflow.config -params-file /home/trace/projects/proteinannotator/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/params.json -ansi-log false -with-trace /home/trace/projects/proteinannotator/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/trace.csv -w /home/trace/projects/proteinannotator/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/work -Jun-03 14:37:25.417 [main] INFO nextflow.cli.CmdRun - N E X T F L O W ~ version 24.10.6 -Jun-03 14:37:25.467 [main] DEBUG nextflow.plugin.PluginsFacade - Setting up plugin manager > mode=prod; embedded=false; plugins-dir=/home/trace/.nextflow/plugins; core-plugins: nf-amazon@2.9.3,nf-azure@1.10.2,nf-cloudcache@0.4.2,nf-codecommit@0.2.2,nf-console@1.1.4,nf-google@1.15.4,nf-tower@1.9.3,nf-wave@1.7.5 -Jun-03 14:37:25.513 [main] INFO o.pf4j.DefaultPluginStatusProvider - Enabled plugins: [] -Jun-03 14:37:25.515 [main] INFO o.pf4j.DefaultPluginStatusProvider - Disabled plugins: [] -Jun-03 14:37:25.522 [main] INFO org.pf4j.DefaultPluginManager - PF4J version 3.12.0 in 'deployment' mode -Jun-03 14:37:25.552 [main] INFO org.pf4j.AbstractPluginManager - No plugins -Jun-03 14:37:25.608 [main] DEBUG nextflow.config.ConfigBuilder - Found config base: /home/trace/projects/proteinannotator/nextflow.config -Jun-03 14:37:25.622 [main] DEBUG nextflow.config.ConfigBuilder - User config file: /home/trace/projects/proteinannotator/nextflow.config -Jun-03 14:37:25.625 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config -Jun-03 14:37:25.627 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config -Jun-03 14:37:25.691 [main] DEBUG n.secret.LocalSecretsProvider - Secrets store: /home/trace/.nextflow/secrets/store.json -Jun-03 14:37:25.699 [main] DEBUG nextflow.secret.SecretsLoader - Discovered secrets providers: [nextflow.secret.LocalSecretsProvider@2fb5fe30] - activable => nextflow.secret.LocalSecretsProvider@2fb5fe30 -Jun-03 14:37:25.751 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` -Jun-03 14:37:28.784 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` -Jun-03 14:37:29.576 [main] DEBUG nextflow.cli.CmdRun - Applied DSL=2 from script declaration -Jun-03 14:37:29.593 [main] INFO nextflow.cli.CmdRun - Launching `/home/trace/projects/proteinannotator/.nf-test-381174926a8d5ef292fb88056bbadebd.nf` [stoic_rutherford] DSL2 - revision: 6549a57cf9 -Jun-03 14:37:29.594 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins declared=[nf-schema@2.3.0] -Jun-03 14:37:29.595 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins default=[] -Jun-03 14:37:29.596 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins resolved requirement=[nf-schema@2.3.0] -Jun-03 14:37:29.596 [main] DEBUG nextflow.plugin.PluginUpdater - Installing plugin nf-schema version: 2.3.0 -Jun-03 14:37:29.603 [main] INFO org.pf4j.AbstractPluginManager - Plugin 'nf-schema@2.3.0' resolved -Jun-03 14:37:29.604 [main] INFO org.pf4j.AbstractPluginManager - Start plugin 'nf-schema@2.3.0' -Jun-03 14:37:29.611 [main] DEBUG nextflow.plugin.BasePlugin - Plugin started nf-schema@2.3.0 -Jun-03 14:37:29.678 [main] DEBUG nextflow.Session - Session UUID: f01300c6-87f9-4e32-85a9-f9273e420254 -Jun-03 14:37:29.679 [main] DEBUG nextflow.Session - Run name: stoic_rutherford -Jun-03 14:37:29.680 [main] DEBUG nextflow.Session - Executor pool size: 8 -Jun-03 14:37:29.692 [main] DEBUG nextflow.file.FilePorter - File porter settings maxRetries=3; maxTransfers=50; pollTimeout=null -Jun-03 14:37:29.700 [main] DEBUG nextflow.util.ThreadPoolBuilder - Creating thread pool 'FileTransfer' minSize=10; maxSize=24; workQueue=LinkedBlockingQueue[-1]; allowCoreThreadTimeout=false -Jun-03 14:37:29.722 [main] DEBUG nextflow.cli.CmdRun - - Version: 24.10.6 build 5937 - Created: 23-04-2025 16:53 UTC (12:53 EDT) - System: Linux 6.1.0-33-amd64 - Runtime: Groovy 4.0.23 on OpenJDK 64-Bit Server VM 21.0.6-internal-adhoc.conda.src - Encoding: UTF-8 (UTF-8) - Process: 35380@lail-laptop [127.0.1.1] - CPUs: 8 - Mem: 7 GB (114.5 MB) - Swap: 977 MB (42.3 MB) -Jun-03 14:37:29.757 [main] DEBUG nextflow.Session - Work-dir: /home/trace/projects/proteinannotator/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/work [ext2/ext3] -Jun-03 14:37:29.758 [main] DEBUG nextflow.Session - Script base path does not exist or is not a directory: /home/trace/projects/proteinannotator/bin -Jun-03 14:37:29.772 [main] DEBUG nextflow.executor.ExecutorFactory - Extension executors providers=[] -Jun-03 14:37:29.785 [main] DEBUG nextflow.Session - Observer factory: DefaultObserverFactory -Jun-03 14:37:29.821 [main] DEBUG nextflow.Session - Observer factory: ValidationObserverFactory -Jun-03 14:37:29.921 [main] DEBUG nextflow.cache.CacheFactory - Using Nextflow cache factory: nextflow.cache.DefaultCacheFactory -Jun-03 14:37:29.934 [main] DEBUG nextflow.util.CustomThreadPool - Creating default thread pool > poolSize: 9; maxThreads: 1000 -Jun-03 14:37:30.000 [main] DEBUG nextflow.Session - Session start -Jun-03 14:37:30.002 [main] DEBUG nextflow.trace.TraceFileObserver - Workflow started -- trace file: /home/trace/projects/proteinannotator/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/trace.csv -Jun-03 14:37:30.299 [main] DEBUG nextflow.script.ScriptRunner - > Launching execution -Jun-03 14:37:30.511 [main] WARN nextflow.script.ScriptBinding - Access to undefined parameter `modules_testdata_base_path` -- Initialise it to a default value eg. `params.modules_testdata_base_path = some_value` -Jun-03 14:37:30.525 [main] DEBUG nextflow.script.ScriptRunner - Parsed script files: - Script_2acebebf6b1195e5: /home/trace/projects/proteinannotator/.nf-test-381174926a8d5ef292fb88056bbadebd.nf - Script_7c8a310cd66b8f33: /home/trace/projects/proteinannotator/modules/nf-core/diamond/makedb/tests/../main.nf -Jun-03 14:37:30.525 [main] DEBUG nextflow.Session - Session aborted -- Cause: /home/trace/projects/proteinannotator/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/nullgenomics/sarscov2/genome/proteome.fasta -Jun-03 14:37:30.531 [main] DEBUG nextflow.Session - -Thread[#10,Finalizer,8,system] - java.base@21.0.6-internal/java.lang.Object.wait0(Native Method) - java.base@21.0.6-internal/java.lang.Object.wait(Object.java:366) - java.base@21.0.6-internal/java.lang.Object.wait(Object.java:339) - java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.await(NativeReferenceQueue.java:48) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:158) - java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.remove(NativeReferenceQueue.java:89) - java.base@21.0.6-internal/java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:173) - -Thread[#9,Reference Handler,10,system] - java.base@21.0.6-internal/java.lang.ref.Reference.waitForReferencePendingList(Native Method) - java.base@21.0.6-internal/java.lang.ref.Reference.processPendingReferences(Reference.java:246) - java.base@21.0.6-internal/java.lang.ref.Reference$ReferenceHandler.run(Reference.java:208) - -Thread[#33,Thread-1,5,main] - java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) - java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) - java.base@21.0.6-internal/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1763) - java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.pollFirst(LinkedBlockingDeque.java:515) - java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.poll(LinkedBlockingDeque.java:677) - app//nextflow.util.SimpleAgent.run(SimpleAgent.groovy:89) - java.base@21.0.6-internal/java.lang.invoke.LambdaForm$DMH/0x00007fda8c19bc00.invokeVirtual(LambdaForm$DMH) - java.base@21.0.6-internal/java.lang.invoke.LambdaForm$MH/0x00007fda8c48c800.invoke(LambdaForm$MH) - java.base@21.0.6-internal/java.lang.invoke.Invokers$Holder.invokeExact_MT(Invokers$Holder) - java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(DirectMethodHandleAccessor.java:153) - java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - java.base@21.0.6-internal/java.lang.reflect.Method.invoke(Method.java:580) - app//org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343) - app//groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:328) - app//groovy.lang.MetaClassImpl.doInvokeMethod(MetaClassImpl.java:1333) - app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1088) - app//groovy.lang.MetaClassImpl.invokeMethodClosure(MetaClassImpl.java:1017) - app//groovy.lang.MetaClassImpl.doInvokeMethod(MetaClassImpl.java:1207) - app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1088) - app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1007) - app//groovy.lang.Closure.call(Closure.java:433) - app//groovy.lang.Closure.call(Closure.java:412) - app//groovy.lang.Closure.run(Closure.java:505) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - -Thread[#31,Keep-Alive-Timer,8,InnocuousThreadGroup] - java.base@21.0.6-internal/java.lang.Thread.sleep0(Native Method) - java.base@21.0.6-internal/java.lang.Thread.sleep(Thread.java:509) - java.base@21.0.6-internal/sun.net.www.http.KeepAliveCache.run(KeepAliveCache.java:238) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) - -Thread[#34,Actor Thread 1,5,main] - java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) - java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) - java.base@21.0.6-internal/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:458) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.take(SynchronousQueue.java:318) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - -Thread[#18,Common-Cleaner,8,InnocuousThreadGroup] - java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) - java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) - java.base@21.0.6-internal/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1852) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.await(ReferenceQueue.java:71) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:143) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:218) - java.base@21.0.6-internal/jdk.internal.ref.CleanerImpl.run(CleanerImpl.java:140) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) - -Thread[#11,Signal Dispatcher,9,system] - -Thread[#1,main,5,main] - java.base@21.0.6-internal/java.lang.Thread.dumpThreads(Native Method) - java.base@21.0.6-internal/java.lang.Thread.getAllStackTraces(Thread.java:2522) - app//nextflow.util.SysHelper.dumpThreads(SysHelper.groovy:188) - app//nextflow.Session.abort(Session.groovy:800) - app//nextflow.script.ScriptRunner.execute(ScriptRunner.groovy:149) - app//nextflow.cli.CmdRun.run(CmdRun.groovy:376) - app//nextflow.cli.Launcher.run(Launcher.groovy:503) - app//nextflow.cli.Launcher.main(Launcher.groovy:658) - -Thread[#32,process reaper,10,InnocuousThreadGroup] - java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) - java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:410) - java.base@21.0.6-internal/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:338) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1069) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) - -Thread[#19,Notification Thread,9,system] - -Jun-03 14:37:30.541 [main] ERROR nextflow.cli.Launcher - /home/trace/projects/proteinannotator/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/nullgenomics/sarscov2/genome/proteome.fasta -java.nio.file.NoSuchFileException: /home/trace/projects/proteinannotator/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/nullgenomics/sarscov2/genome/proteome.fasta - at nextflow.file.FileHelper.checkIfExists(FileHelper.groovy:1099) - at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) - at nextflow.Nextflow.file(Nextflow.groovy:123) - at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) - at Script_2acebebf6b1195e5$_runScript_closure4$_closure6.doCall(Script_2acebebf6b1195e5:32) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343) - at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:328) - at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:279) - at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1007) - at groovy.lang.Closure.call(Closure.java:433) - at groovy.lang.Closure.call(Closure.java:412) - at nextflow.script.WorkflowDef.run0(WorkflowDef.groovy:204) - at nextflow.script.WorkflowDef.run(WorkflowDef.groovy:188) - at nextflow.script.BindableDef.invoke_a(BindableDef.groovy:51) - at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) - at nextflow.script.BaseScript.run0(BaseScript.groovy:198) - at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) - at nextflow.script.BaseScript.run(BaseScript.groovy:209) - at nextflow.script.ScriptParser.runScript(ScriptParser.groovy:236) - at nextflow.script.ScriptRunner.run(ScriptRunner.groovy:243) - at nextflow.script.ScriptRunner.execute(ScriptRunner.groovy:138) - at nextflow.cli.CmdRun.run(CmdRun.groovy:376) - at nextflow.cli.Launcher.run(Launcher.groovy:503) - at nextflow.cli.Launcher.main(Launcher.groovy:658) diff --git a/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/params.json b/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/params.json deleted file mode 100644 index 5a99676..0000000 --- a/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/params.json +++ /dev/null @@ -1 +0,0 @@ -{"nf_test_output":"/home/trace/projects/proteinannotator/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta","outdir":"/home/trace/projects/proteinannotator/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/output"} \ No newline at end of file diff --git a/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/std.err b/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/std.err deleted file mode 100644 index 519f6b3..0000000 --- a/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/std.err +++ /dev/null @@ -1 +0,0 @@ -Nextflow 25.04.3 is available - Please consider updating your version to it(B diff --git a/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/std.out b/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/std.out deleted file mode 100644 index 2df5494..0000000 --- a/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/std.out +++ /dev/null @@ -1,3 +0,0 @@ -ERROR ~ No such file or directory: /home/trace/projects/proteinannotator/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/nullgenomics/sarscov2/genome/proteome.fasta - - -- Check script '/home/trace/projects/proteinannotator/.nf-test-381174926a8d5ef292fb88056bbadebd.nf' at line: 32 or see '/home/trace/projects/proteinannotator/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/nextflow.log' file for more details diff --git a/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/trace.csv b/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/trace.csv deleted file mode 100644 index 6b739ac..0000000 --- a/.nf-test/tests/381174926a8d5ef292fb88056bbadebd/meta/trace.csv +++ /dev/null @@ -1 +0,0 @@ -task_id hash native_id name status exit submit duration realtime %cpu peak_rss peak_vmem rchar wchar diff --git a/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/mock.nf b/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/mock.nf deleted file mode 100644 index 034e3ba..0000000 --- a/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/mock.nf +++ /dev/null @@ -1,83 +0,0 @@ -import groovy.json.JsonGenerator -import groovy.json.JsonGenerator.Converter - -nextflow.enable.dsl=2 - -// comes from nf-test to store json files -params.nf_test_output = "" - -// include dependencies - - -// include test process -include { BLAST_MAKEBLASTDB } from '/home/trace/projects/proteinannotator/modules/nf-core/blast/makeblastdb/tests/../main.nf' - -// define custom rules for JSON that will be generated. -def jsonOutput = - new JsonGenerator.Options() - .addConverter(Path) { value -> value.toAbsolutePath().toString() } // Custom converter for Path. Only filename - .build() - -def jsonWorkflowOutput = new JsonGenerator.Options().excludeNulls().build() - - -workflow { - - // run dependencies - - - // process mapping - def input = [] - - input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] - - //---- - - //run process - BLAST_MAKEBLASTDB(*input) - - if (BLAST_MAKEBLASTDB.output){ - - // consumes all named output channels and stores items in a json file - for (def name in BLAST_MAKEBLASTDB.out.getNames()) { - serializeChannel(name, BLAST_MAKEBLASTDB.out.getProperty(name), jsonOutput) - } - - // consumes all unnamed output channels and stores items in a json file - def array = BLAST_MAKEBLASTDB.out as Object[] - for (def i = 0; i < array.length ; i++) { - serializeChannel(i, array[i], jsonOutput) - } - - } - -} - -def serializeChannel(name, channel, jsonOutput) { - def _name = name - def list = [ ] - channel.subscribe( - onNext: { - list.add(it) - }, - onComplete: { - def map = new HashMap() - map[_name] = list - def filename = "${params.nf_test_output}/output_${_name}.json" - new File(filename).text = jsonOutput.toJson(map) - } - ) -} - - -workflow.onComplete { - - def result = [ - success: workflow.success, - exitStatus: workflow.exitStatus, - errorMessage: workflow.errorMessage, - errorReport: workflow.errorReport - ] - new File("${params.nf_test_output}/workflow.json").text = jsonWorkflowOutput.toJson(result) - -} diff --git a/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/nextflow.log b/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/nextflow.log deleted file mode 100644 index ec95535..0000000 --- a/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/nextflow.log +++ /dev/null @@ -1,186 +0,0 @@ -May-27 13:29:01.342 [main] DEBUG nextflow.cli.Launcher - $> nextflow -quiet -log /home/trace/projects/proteinannotator/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/nextflow.log run /home/trace/projects/proteinannotator/.nf-test-5c90a8e619d75fd40c2c8fc548260e22.nf -c /home/trace/projects/proteinannotator/nextflow.config -c /home/trace/projects/proteinannotator/modules/nf-core/blast/makeblastdb/tests/./nextflow.config -params-file /home/trace/projects/proteinannotator/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/params.json -ansi-log false -with-trace /home/trace/projects/proteinannotator/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/trace.csv -w /home/trace/projects/proteinannotator/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/work -May-27 13:29:01.455 [main] INFO nextflow.cli.CmdRun - N E X T F L O W ~ version 24.10.6 -May-27 13:29:01.489 [main] DEBUG nextflow.plugin.PluginsFacade - Setting up plugin manager > mode=prod; embedded=false; plugins-dir=/home/trace/.nextflow/plugins; core-plugins: nf-amazon@2.9.3,nf-azure@1.10.2,nf-cloudcache@0.4.2,nf-codecommit@0.2.2,nf-console@1.1.4,nf-google@1.15.4,nf-tower@1.9.3,nf-wave@1.7.5 -May-27 13:29:01.524 [main] INFO o.pf4j.DefaultPluginStatusProvider - Enabled plugins: [] -May-27 13:29:01.526 [main] INFO o.pf4j.DefaultPluginStatusProvider - Disabled plugins: [] -May-27 13:29:01.531 [main] INFO org.pf4j.DefaultPluginManager - PF4J version 3.12.0 in 'deployment' mode -May-27 13:29:01.551 [main] INFO org.pf4j.AbstractPluginManager - No plugins -May-27 13:29:01.595 [main] DEBUG nextflow.config.ConfigBuilder - Found config base: /home/trace/projects/proteinannotator/nextflow.config -May-27 13:29:01.603 [main] DEBUG nextflow.config.ConfigBuilder - User config file: /home/trace/projects/proteinannotator/nextflow.config -May-27 13:29:01.603 [main] DEBUG nextflow.config.ConfigBuilder - User config file: /home/trace/projects/proteinannotator/modules/nf-core/blast/makeblastdb/tests/./nextflow.config -May-27 13:29:01.605 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config -May-27 13:29:01.607 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config -May-27 13:29:01.607 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/modules/nf-core/blast/makeblastdb/tests/nextflow.config -May-27 13:29:01.647 [main] DEBUG n.secret.LocalSecretsProvider - Secrets store: /home/trace/.nextflow/secrets/store.json -May-27 13:29:01.653 [main] DEBUG nextflow.secret.SecretsLoader - Discovered secrets providers: [nextflow.secret.LocalSecretsProvider@2fb5fe30] - activable => nextflow.secret.LocalSecretsProvider@2fb5fe30 -May-27 13:29:01.682 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` -May-27 13:29:04.042 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` -May-27 13:29:04.690 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` -May-27 13:29:04.750 [main] DEBUG nextflow.cli.CmdRun - Applied DSL=2 from script declaration -May-27 13:29:04.767 [main] INFO nextflow.cli.CmdRun - Launching `/home/trace/projects/proteinannotator/.nf-test-5c90a8e619d75fd40c2c8fc548260e22.nf` [chaotic_engelbart] DSL2 - revision: 04640d9817 -May-27 13:29:04.768 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins declared=[nf-schema@2.3.0] -May-27 13:29:04.769 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins default=[] -May-27 13:29:04.769 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins resolved requirement=[nf-schema@2.3.0] -May-27 13:29:04.770 [main] DEBUG nextflow.plugin.PluginUpdater - Installing plugin nf-schema version: 2.3.0 -May-27 13:29:04.777 [main] INFO org.pf4j.AbstractPluginManager - Plugin 'nf-schema@2.3.0' resolved -May-27 13:29:04.777 [main] INFO org.pf4j.AbstractPluginManager - Start plugin 'nf-schema@2.3.0' -May-27 13:29:04.785 [main] DEBUG nextflow.plugin.BasePlugin - Plugin started nf-schema@2.3.0 -May-27 13:29:04.841 [main] DEBUG nextflow.Session - Session UUID: 0a76014c-cf67-45bd-a49c-957772e8baee -May-27 13:29:04.841 [main] DEBUG nextflow.Session - Run name: chaotic_engelbart -May-27 13:29:04.842 [main] DEBUG nextflow.Session - Executor pool size: 8 -May-27 13:29:04.851 [main] DEBUG nextflow.file.FilePorter - File porter settings maxRetries=3; maxTransfers=50; pollTimeout=null -May-27 13:29:04.858 [main] DEBUG nextflow.util.ThreadPoolBuilder - Creating thread pool 'FileTransfer' minSize=10; maxSize=24; workQueue=LinkedBlockingQueue[-1]; allowCoreThreadTimeout=false -May-27 13:29:04.881 [main] DEBUG nextflow.cli.CmdRun - - Version: 24.10.6 build 5937 - Created: 23-04-2025 16:53 UTC (12:53 EDT) - System: Linux 6.1.0-33-amd64 - Runtime: Groovy 4.0.23 on OpenJDK 64-Bit Server VM 21.0.6-internal-adhoc.conda.src - Encoding: UTF-8 (UTF-8) - Process: 64606@lail-laptop [127.0.1.1] - CPUs: 8 - Mem: 7 GB (218.3 MB) - Swap: 977 MB (296 KB) -May-27 13:29:04.913 [main] DEBUG nextflow.Session - Work-dir: /home/trace/projects/proteinannotator/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/work [ext2/ext3] -May-27 13:29:04.914 [main] DEBUG nextflow.Session - Script base path does not exist or is not a directory: /home/trace/projects/proteinannotator/bin -May-27 13:29:04.930 [main] DEBUG nextflow.executor.ExecutorFactory - Extension executors providers=[] -May-27 13:29:04.945 [main] DEBUG nextflow.Session - Observer factory: DefaultObserverFactory -May-27 13:29:04.973 [main] DEBUG nextflow.Session - Observer factory: ValidationObserverFactory -May-27 13:29:05.060 [main] DEBUG nextflow.cache.CacheFactory - Using Nextflow cache factory: nextflow.cache.DefaultCacheFactory -May-27 13:29:05.072 [main] DEBUG nextflow.util.CustomThreadPool - Creating default thread pool > poolSize: 9; maxThreads: 1000 -May-27 13:29:05.144 [main] DEBUG nextflow.Session - Session start -May-27 13:29:05.149 [main] DEBUG nextflow.trace.TraceFileObserver - Workflow started -- trace file: /home/trace/projects/proteinannotator/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/trace.csv -May-27 13:29:05.391 [main] DEBUG nextflow.script.ScriptRunner - > Launching execution -May-27 13:29:05.572 [main] WARN nextflow.script.ScriptBinding - Access to undefined parameter `modules_testdata_base_path` -- Initialise it to a default value eg. `params.modules_testdata_base_path = some_value` -May-27 13:29:05.584 [main] DEBUG nextflow.script.ScriptRunner - Parsed script files: - Script_661b920493a93545: /home/trace/projects/proteinannotator/.nf-test-5c90a8e619d75fd40c2c8fc548260e22.nf - Script_fba48771bc5efb6e: /home/trace/projects/proteinannotator/modules/nf-core/blast/makeblastdb/tests/../main.nf -May-27 13:29:05.585 [main] DEBUG nextflow.Session - Session aborted -- Cause: /home/trace/projects/proteinannotator/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/nullgenomics/sarscov2/genome/genome.fasta -May-27 13:29:05.589 [main] DEBUG nextflow.Session - -Thread[#9,Reference Handler,10,system] - java.base@21.0.6-internal/java.lang.ref.Reference.waitForReferencePendingList(Native Method) - java.base@21.0.6-internal/java.lang.ref.Reference.processPendingReferences(Reference.java:246) - java.base@21.0.6-internal/java.lang.ref.Reference$ReferenceHandler.run(Reference.java:208) - -Thread[#18,Common-Cleaner,8,InnocuousThreadGroup] - java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) - java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) - java.base@21.0.6-internal/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1852) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.await(ReferenceQueue.java:71) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:143) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:218) - java.base@21.0.6-internal/jdk.internal.ref.CleanerImpl.run(CleanerImpl.java:140) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) - -Thread[#11,Signal Dispatcher,9,system] - -Thread[#32,process reaper,10,InnocuousThreadGroup] - java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) - java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:410) - java.base@21.0.6-internal/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:338) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1069) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) - -Thread[#33,Thread-1,5,main] - java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) - java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) - java.base@21.0.6-internal/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1763) - java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.pollFirst(LinkedBlockingDeque.java:515) - java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.poll(LinkedBlockingDeque.java:677) - app//nextflow.util.SimpleAgent.run(SimpleAgent.groovy:89) - java.base@21.0.6-internal/java.lang.invoke.LambdaForm$DMH/0x00007faa4c19bc00.invokeVirtual(LambdaForm$DMH) - java.base@21.0.6-internal/java.lang.invoke.LambdaForm$MH/0x00007faa4c490000.invoke(LambdaForm$MH) - java.base@21.0.6-internal/java.lang.invoke.Invokers$Holder.invokeExact_MT(Invokers$Holder) - java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(DirectMethodHandleAccessor.java:153) - java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - java.base@21.0.6-internal/java.lang.reflect.Method.invoke(Method.java:580) - app//org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343) - app//groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:328) - app//groovy.lang.MetaClassImpl.doInvokeMethod(MetaClassImpl.java:1333) - app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1088) - app//groovy.lang.MetaClassImpl.invokeMethodClosure(MetaClassImpl.java:1017) - app//groovy.lang.MetaClassImpl.doInvokeMethod(MetaClassImpl.java:1207) - app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1088) - app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1007) - app//groovy.lang.Closure.call(Closure.java:433) - app//groovy.lang.Closure.call(Closure.java:412) - app//groovy.lang.Closure.run(Closure.java:505) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - -Thread[#1,main,5,main] - java.base@21.0.6-internal/java.lang.Thread.dumpThreads(Native Method) - java.base@21.0.6-internal/java.lang.Thread.getAllStackTraces(Thread.java:2522) - app//nextflow.util.SysHelper.dumpThreads(SysHelper.groovy:188) - app//nextflow.Session.abort(Session.groovy:800) - app//nextflow.script.ScriptRunner.execute(ScriptRunner.groovy:149) - app//nextflow.cli.CmdRun.run(CmdRun.groovy:376) - app//nextflow.cli.Launcher.run(Launcher.groovy:503) - app//nextflow.cli.Launcher.main(Launcher.groovy:658) - -Thread[#10,Finalizer,8,system] - java.base@21.0.6-internal/java.lang.Object.wait0(Native Method) - java.base@21.0.6-internal/java.lang.Object.wait(Object.java:366) - java.base@21.0.6-internal/java.lang.Object.wait(Object.java:339) - java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.await(NativeReferenceQueue.java:48) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:158) - java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.remove(NativeReferenceQueue.java:89) - java.base@21.0.6-internal/java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:173) - -Thread[#34,Actor Thread 1,5,main] - java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) - java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) - java.base@21.0.6-internal/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:458) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.take(SynchronousQueue.java:318) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - -Thread[#19,Notification Thread,9,system] - -Thread[#31,Keep-Alive-Timer,8,InnocuousThreadGroup] - java.base@21.0.6-internal/java.lang.Thread.sleep0(Native Method) - java.base@21.0.6-internal/java.lang.Thread.sleep(Thread.java:509) - java.base@21.0.6-internal/sun.net.www.http.KeepAliveCache.run(KeepAliveCache.java:238) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) - -May-27 13:29:05.600 [main] ERROR nextflow.cli.Launcher - /home/trace/projects/proteinannotator/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/nullgenomics/sarscov2/genome/genome.fasta -java.nio.file.NoSuchFileException: /home/trace/projects/proteinannotator/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/nullgenomics/sarscov2/genome/genome.fasta - at nextflow.file.FileHelper.checkIfExists(FileHelper.groovy:1099) - at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) - at nextflow.Nextflow.file(Nextflow.groovy:123) - at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) - at Script_661b920493a93545$_runScript_closure4$_closure6.doCall(Script_661b920493a93545:32) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343) - at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:328) - at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:279) - at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1007) - at groovy.lang.Closure.call(Closure.java:433) - at groovy.lang.Closure.call(Closure.java:412) - at nextflow.script.WorkflowDef.run0(WorkflowDef.groovy:204) - at nextflow.script.WorkflowDef.run(WorkflowDef.groovy:188) - at nextflow.script.BindableDef.invoke_a(BindableDef.groovy:51) - at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) - at nextflow.script.BaseScript.run0(BaseScript.groovy:198) - at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) - at nextflow.script.BaseScript.run(BaseScript.groovy:209) - at nextflow.script.ScriptParser.runScript(ScriptParser.groovy:236) - at nextflow.script.ScriptRunner.run(ScriptRunner.groovy:243) - at nextflow.script.ScriptRunner.execute(ScriptRunner.groovy:138) - at nextflow.cli.CmdRun.run(CmdRun.groovy:376) - at nextflow.cli.Launcher.run(Launcher.groovy:503) - at nextflow.cli.Launcher.main(Launcher.groovy:658) diff --git a/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/params.json b/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/params.json deleted file mode 100644 index 7dd2655..0000000 --- a/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/params.json +++ /dev/null @@ -1 +0,0 @@ -{"nf_test_output":"/home/trace/projects/proteinannotator/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta"} \ No newline at end of file diff --git a/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/std.err b/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/std.err deleted file mode 100644 index 5890cc1..0000000 --- a/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/std.err +++ /dev/null @@ -1 +0,0 @@ -Nextflow 25.04.2 is available - Please consider updating your version to it(B diff --git a/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/std.out b/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/std.out deleted file mode 100644 index d0fe8e2..0000000 --- a/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/std.out +++ /dev/null @@ -1,3 +0,0 @@ -ERROR ~ No such file or directory: /home/trace/projects/proteinannotator/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/nullgenomics/sarscov2/genome/genome.fasta - - -- Check script '/home/trace/projects/proteinannotator/.nf-test-5c90a8e619d75fd40c2c8fc548260e22.nf' at line: 32 or see '/home/trace/projects/proteinannotator/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/nextflow.log' file for more details diff --git a/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/trace.csv b/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/trace.csv deleted file mode 100644 index 6b739ac..0000000 --- a/.nf-test/tests/5c90a8e619d75fd40c2c8fc548260e22/meta/trace.csv +++ /dev/null @@ -1 +0,0 @@ -task_id hash native_id name status exit submit duration realtime %cpu peak_rss peak_vmem rchar wchar diff --git a/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/mock.nf b/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/mock.nf deleted file mode 100644 index 7e407de..0000000 --- a/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/mock.nf +++ /dev/null @@ -1,99 +0,0 @@ -import groovy.json.JsonGenerator -import groovy.json.JsonGenerator.Converter - -nextflow.enable.dsl=2 - -// comes from nf-test to store json files -params.nf_test_output = "" - -// include dependencies - -include { DIAMOND_MAKEDB } from '/home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf' - - -// include test process -include { DIAMOND_BLASTP } from '/home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../main.nf' - -// define custom rules for JSON that will be generated. -def jsonOutput = - new JsonGenerator.Options() - .addConverter(Path) { value -> value.toAbsolutePath().toString() } // Custom converter for Path. Only filename - .build() - -def jsonWorkflowOutput = new JsonGenerator.Options().excludeNulls().build() - - -workflow { - - // run dependencies - - { - def input = [] - - input[0] = [ [id:'test2'], [ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] ] - input[1] = [] - input[2] = [] - input[3] = [] - - DIAMOND_MAKEDB(*input) - } - - - // process mapping - def input = [] - - input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] - input[1] = DIAMOND_MAKEDB.out.db - input[2] = 6 - input[3] = 'qseqid qlen' - - //---- - - //run process - DIAMOND_BLASTP(*input) - - if (DIAMOND_BLASTP.output){ - - // consumes all named output channels and stores items in a json file - for (def name in DIAMOND_BLASTP.out.getNames()) { - serializeChannel(name, DIAMOND_BLASTP.out.getProperty(name), jsonOutput) - } - - // consumes all unnamed output channels and stores items in a json file - def array = DIAMOND_BLASTP.out as Object[] - for (def i = 0; i < array.length ; i++) { - serializeChannel(i, array[i], jsonOutput) - } - - } - -} - -def serializeChannel(name, channel, jsonOutput) { - def _name = name - def list = [ ] - channel.subscribe( - onNext: { - list.add(it) - }, - onComplete: { - def map = new HashMap() - map[_name] = list - def filename = "${params.nf_test_output}/output_${_name}.json" - new File(filename).text = jsonOutput.toJson(map) - } - ) -} - - -workflow.onComplete { - - def result = [ - success: workflow.success, - exitStatus: workflow.exitStatus, - errorMessage: workflow.errorMessage, - errorReport: workflow.errorReport - ] - new File("${params.nf_test_output}/workflow.json").text = jsonWorkflowOutput.toJson(result) - -} diff --git a/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/nextflow.log b/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/nextflow.log deleted file mode 100644 index 3dbf5b6..0000000 --- a/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/nextflow.log +++ /dev/null @@ -1,172 +0,0 @@ -Jun-02 15:12:31.132 [main] DEBUG nextflow.cli.Launcher - $> nextflow -quiet -log /home/trace/projects/proteinannotator/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/nextflow.log run /home/trace/projects/proteinannotator/.nf-test-5fe1b68b1633d10fa11759d4fe6e77d1.nf -c /home/trace/projects/proteinannotator/nextflow.config -c /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/./nextflow.config -params-file /home/trace/projects/proteinannotator/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/params.json -ansi-log false -with-trace /home/trace/projects/proteinannotator/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/trace.csv -w /home/trace/projects/proteinannotator/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/work -Jun-02 15:12:31.300 [main] INFO nextflow.cli.CmdRun - N E X T F L O W ~ version 24.10.6 -Jun-02 15:12:31.358 [main] DEBUG nextflow.plugin.PluginsFacade - Setting up plugin manager > mode=prod; embedded=false; plugins-dir=/home/trace/.nextflow/plugins; core-plugins: nf-amazon@2.9.3,nf-azure@1.10.2,nf-cloudcache@0.4.2,nf-codecommit@0.2.2,nf-console@1.1.4,nf-google@1.15.4,nf-tower@1.9.3,nf-wave@1.7.5 -Jun-02 15:12:31.411 [main] INFO o.pf4j.DefaultPluginStatusProvider - Enabled plugins: [] -Jun-02 15:12:31.413 [main] INFO o.pf4j.DefaultPluginStatusProvider - Disabled plugins: [] -Jun-02 15:12:31.424 [main] INFO org.pf4j.DefaultPluginManager - PF4J version 3.12.0 in 'deployment' mode -Jun-02 15:12:31.458 [main] INFO org.pf4j.AbstractPluginManager - No plugins -Jun-02 15:12:31.515 [main] DEBUG nextflow.config.ConfigBuilder - Found config base: /home/trace/projects/proteinannotator/nextflow.config -Jun-02 15:12:31.530 [main] DEBUG nextflow.config.ConfigBuilder - User config file: /home/trace/projects/proteinannotator/nextflow.config -Jun-02 15:12:31.531 [main] DEBUG nextflow.config.ConfigBuilder - User config file: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/./nextflow.config -Jun-02 15:12:31.541 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config -Jun-02 15:12:31.543 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config -Jun-02 15:12:31.545 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/nextflow.config -Jun-02 15:12:31.624 [main] DEBUG n.secret.LocalSecretsProvider - Secrets store: /home/trace/.nextflow/secrets/store.json -Jun-02 15:12:31.632 [main] DEBUG nextflow.secret.SecretsLoader - Discovered secrets providers: [nextflow.secret.LocalSecretsProvider@2fb5fe30] - activable => nextflow.secret.LocalSecretsProvider@2fb5fe30 -Jun-02 15:12:31.702 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` -Jun-02 15:12:35.192 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` -Jun-02 15:12:36.088 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` -Jun-02 15:12:36.177 [main] DEBUG nextflow.cli.CmdRun - Applied DSL=2 from script declaration -Jun-02 15:12:36.201 [main] INFO nextflow.cli.CmdRun - Launching `/home/trace/projects/proteinannotator/.nf-test-5fe1b68b1633d10fa11759d4fe6e77d1.nf` [irreverent_wright] DSL2 - revision: a1ca7e6f26 -Jun-02 15:12:36.206 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins declared=[nf-schema@2.3.0] -Jun-02 15:12:36.207 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins default=[] -Jun-02 15:12:36.208 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins resolved requirement=[nf-schema@2.3.0] -Jun-02 15:12:36.208 [main] DEBUG nextflow.plugin.PluginUpdater - Installing plugin nf-schema version: 2.3.0 -Jun-02 15:12:36.216 [main] INFO org.pf4j.AbstractPluginManager - Plugin 'nf-schema@2.3.0' resolved -Jun-02 15:12:36.217 [main] INFO org.pf4j.AbstractPluginManager - Start plugin 'nf-schema@2.3.0' -Jun-02 15:12:36.227 [main] DEBUG nextflow.plugin.BasePlugin - Plugin started nf-schema@2.3.0 -Jun-02 15:12:36.321 [main] DEBUG nextflow.Session - Session UUID: 3f61e3a4-552a-48be-a800-7dc9a1ac512b -Jun-02 15:12:36.322 [main] DEBUG nextflow.Session - Run name: irreverent_wright -Jun-02 15:12:36.323 [main] DEBUG nextflow.Session - Executor pool size: 8 -Jun-02 15:12:36.342 [main] DEBUG nextflow.file.FilePorter - File porter settings maxRetries=3; maxTransfers=50; pollTimeout=null -Jun-02 15:12:36.351 [main] DEBUG nextflow.util.ThreadPoolBuilder - Creating thread pool 'FileTransfer' minSize=10; maxSize=24; workQueue=LinkedBlockingQueue[-1]; allowCoreThreadTimeout=false -Jun-02 15:12:36.386 [main] DEBUG nextflow.cli.CmdRun - - Version: 24.10.6 build 5937 - Created: 23-04-2025 16:53 UTC (12:53 EDT) - System: Linux 6.1.0-33-amd64 - Runtime: Groovy 4.0.23 on OpenJDK 64-Bit Server VM 21.0.6-internal-adhoc.conda.src - Encoding: UTF-8 (UTF-8) - Process: 5929@lail-laptop [127.0.1.1] - CPUs: 8 - Mem: 7 GB (185.1 MB) - Swap: 977 MB (954 MB) -Jun-02 15:12:36.432 [main] DEBUG nextflow.Session - Work-dir: /home/trace/projects/proteinannotator/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/work [ext2/ext3] -Jun-02 15:12:36.433 [main] DEBUG nextflow.Session - Script base path does not exist or is not a directory: /home/trace/projects/proteinannotator/bin -Jun-02 15:12:36.454 [main] DEBUG nextflow.executor.ExecutorFactory - Extension executors providers=[] -Jun-02 15:12:36.477 [main] DEBUG nextflow.Session - Observer factory: DefaultObserverFactory -Jun-02 15:12:36.526 [main] DEBUG nextflow.Session - Observer factory: ValidationObserverFactory -Jun-02 15:12:36.648 [main] DEBUG nextflow.cache.CacheFactory - Using Nextflow cache factory: nextflow.cache.DefaultCacheFactory -Jun-02 15:12:36.665 [main] DEBUG nextflow.util.CustomThreadPool - Creating default thread pool > poolSize: 9; maxThreads: 1000 -Jun-02 15:12:36.762 [main] DEBUG nextflow.Session - Session start -Jun-02 15:12:36.766 [main] DEBUG nextflow.trace.TraceFileObserver - Workflow started -- trace file: /home/trace/projects/proteinannotator/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/trace.csv -Jun-02 15:12:37.241 [main] DEBUG nextflow.script.ScriptRunner - > Launching execution -Jun-02 15:12:37.263 [main] DEBUG nextflow.script.ScriptRunner - Parsed script files: - Script_e3c35e79f690a4ec: /home/trace/projects/proteinannotator/.nf-test-5fe1b68b1633d10fa11759d4fe6e77d1.nf -Jun-02 15:12:37.264 [main] DEBUG nextflow.Session - Session aborted -- Cause: Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf -Jun-02 15:12:37.272 [main] DEBUG nextflow.Session - -Thread[#34,Actor Thread 1,5,main] - java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) - java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) - java.base@21.0.6-internal/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:458) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.take(SynchronousQueue.java:318) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - -Thread[#18,Common-Cleaner,8,InnocuousThreadGroup] - java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) - java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) - java.base@21.0.6-internal/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1852) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.await(ReferenceQueue.java:71) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:143) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:218) - java.base@21.0.6-internal/jdk.internal.ref.CleanerImpl.run(CleanerImpl.java:140) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) - -Thread[#19,Notification Thread,9,system] - -Thread[#33,Thread-1,5,main] - java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) - java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) - java.base@21.0.6-internal/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1763) - java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.pollFirst(LinkedBlockingDeque.java:515) - java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.poll(LinkedBlockingDeque.java:677) - app//nextflow.util.SimpleAgent.run(SimpleAgent.groovy:89) - java.base@21.0.6-internal/java.lang.invoke.LambdaForm$DMH/0x00007fc73819bc00.invokeVirtual(LambdaForm$DMH) - java.base@21.0.6-internal/java.lang.invoke.LambdaForm$MH/0x00007fc738490000.invoke(LambdaForm$MH) - java.base@21.0.6-internal/java.lang.invoke.Invokers$Holder.invokeExact_MT(Invokers$Holder) - java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(DirectMethodHandleAccessor.java:153) - java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - java.base@21.0.6-internal/java.lang.reflect.Method.invoke(Method.java:580) - app//org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343) - app//groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:328) - app//groovy.lang.MetaClassImpl.doInvokeMethod(MetaClassImpl.java:1333) - app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1088) - app//groovy.lang.MetaClassImpl.invokeMethodClosure(MetaClassImpl.java:1017) - app//groovy.lang.MetaClassImpl.doInvokeMethod(MetaClassImpl.java:1207) - app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1088) - app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1007) - app//groovy.lang.Closure.call(Closure.java:433) - app//groovy.lang.Closure.call(Closure.java:412) - app//groovy.lang.Closure.run(Closure.java:505) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - -Thread[#31,Keep-Alive-Timer,8,InnocuousThreadGroup] - java.base@21.0.6-internal/java.lang.Thread.sleep0(Native Method) - java.base@21.0.6-internal/java.lang.Thread.sleep(Thread.java:509) - java.base@21.0.6-internal/sun.net.www.http.KeepAliveCache.run(KeepAliveCache.java:238) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) - -Thread[#32,process reaper,10,InnocuousThreadGroup] - java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) - java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:410) - java.base@21.0.6-internal/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:338) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1069) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) - -Thread[#9,Reference Handler,10,system] - java.base@21.0.6-internal/java.lang.ref.Reference.waitForReferencePendingList(Native Method) - java.base@21.0.6-internal/java.lang.ref.Reference.processPendingReferences(Reference.java:246) - java.base@21.0.6-internal/java.lang.ref.Reference$ReferenceHandler.run(Reference.java:208) - -Thread[#11,Signal Dispatcher,9,system] - -Thread[#1,main,5,main] - java.base@21.0.6-internal/java.lang.Thread.dumpThreads(Native Method) - java.base@21.0.6-internal/java.lang.Thread.getAllStackTraces(Thread.java:2522) - app//nextflow.util.SysHelper.dumpThreads(SysHelper.groovy:188) - app//nextflow.Session.abort(Session.groovy:800) - app//nextflow.script.ScriptRunner.execute(ScriptRunner.groovy:149) - app//nextflow.cli.CmdRun.run(CmdRun.groovy:376) - app//nextflow.cli.Launcher.run(Launcher.groovy:503) - app//nextflow.cli.Launcher.main(Launcher.groovy:658) - -Thread[#10,Finalizer,8,system] - java.base@21.0.6-internal/java.lang.Object.wait0(Native Method) - java.base@21.0.6-internal/java.lang.Object.wait(Object.java:366) - java.base@21.0.6-internal/java.lang.Object.wait(Object.java:339) - java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.await(NativeReferenceQueue.java:48) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:158) - java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.remove(NativeReferenceQueue.java:89) - java.base@21.0.6-internal/java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:173) - -Jun-02 15:12:37.286 [main] ERROR nextflow.cli.Launcher - Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf -java.nio.file.NoSuchFileException: Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf - at nextflow.script.IncludeDef.realModulePath(IncludeDef.groovy:184) - at nextflow.script.IncludeDef.load0(IncludeDef.groovy:112) - at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) - at Script_e3c35e79f690a4ec.runScript(Script_e3c35e79f690a4ec:11) - at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) - at nextflow.script.BaseScript.run0(BaseScript.groovy:159) - at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) - at nextflow.script.BaseScript.run(BaseScript.groovy:209) - at nextflow.script.ScriptParser.runScript(ScriptParser.groovy:236) - at nextflow.script.ScriptRunner.run(ScriptRunner.groovy:243) - at nextflow.script.ScriptRunner.execute(ScriptRunner.groovy:138) - at nextflow.cli.CmdRun.run(CmdRun.groovy:376) - at nextflow.cli.Launcher.run(Launcher.groovy:503) - at nextflow.cli.Launcher.main(Launcher.groovy:658) diff --git a/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/params.json b/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/params.json deleted file mode 100644 index 6f9a019..0000000 --- a/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/params.json +++ /dev/null @@ -1 +0,0 @@ -{"nf_test_output":"/home/trace/projects/proteinannotator/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta"} \ No newline at end of file diff --git a/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/std.err b/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/std.err deleted file mode 100644 index 5890cc1..0000000 --- a/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/std.err +++ /dev/null @@ -1 +0,0 @@ -Nextflow 25.04.2 is available - Please consider updating your version to it(B diff --git a/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/std.out b/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/std.out deleted file mode 100644 index 01213aa..0000000 --- a/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/std.out +++ /dev/null @@ -1,3 +0,0 @@ -ERROR ~ No such file or directory: Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf - - -- Check script '/home/trace/projects/proteinannotator/.nf-test-5fe1b68b1633d10fa11759d4fe6e77d1.nf' at line: 11 or see '/home/trace/projects/proteinannotator/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/nextflow.log' file for more details diff --git a/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/trace.csv b/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/trace.csv deleted file mode 100644 index 6b739ac..0000000 --- a/.nf-test/tests/5fe1b68b1633d10fa11759d4fe6e77d1/meta/trace.csv +++ /dev/null @@ -1 +0,0 @@ -task_id hash native_id name status exit submit duration realtime %cpu peak_rss peak_vmem rchar wchar diff --git a/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/mock.nf b/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/mock.nf deleted file mode 100644 index a2e1dfb..0000000 --- a/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/mock.nf +++ /dev/null @@ -1,83 +0,0 @@ -import groovy.json.JsonGenerator -import groovy.json.JsonGenerator.Converter - -nextflow.enable.dsl=2 - -// comes from nf-test to store json files -params.nf_test_output = "" - -// include dependencies - - -// include test process -include { BLAST_MAKEBLASTDB } from '/home/trace/projects/proteinannotator/modules/nf-core/blast/makeblastdb/tests/../main.nf' - -// define custom rules for JSON that will be generated. -def jsonOutput = - new JsonGenerator.Options() - .addConverter(Path) { value -> value.toAbsolutePath().toString() } // Custom converter for Path. Only filename - .build() - -def jsonWorkflowOutput = new JsonGenerator.Options().excludeNulls().build() - - -workflow { - - // run dependencies - - - // process mapping - def input = [] - - input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.gz', checkIfExists: true) ] - - //---- - - //run process - BLAST_MAKEBLASTDB(*input) - - if (BLAST_MAKEBLASTDB.output){ - - // consumes all named output channels and stores items in a json file - for (def name in BLAST_MAKEBLASTDB.out.getNames()) { - serializeChannel(name, BLAST_MAKEBLASTDB.out.getProperty(name), jsonOutput) - } - - // consumes all unnamed output channels and stores items in a json file - def array = BLAST_MAKEBLASTDB.out as Object[] - for (def i = 0; i < array.length ; i++) { - serializeChannel(i, array[i], jsonOutput) - } - - } - -} - -def serializeChannel(name, channel, jsonOutput) { - def _name = name - def list = [ ] - channel.subscribe( - onNext: { - list.add(it) - }, - onComplete: { - def map = new HashMap() - map[_name] = list - def filename = "${params.nf_test_output}/output_${_name}.json" - new File(filename).text = jsonOutput.toJson(map) - } - ) -} - - -workflow.onComplete { - - def result = [ - success: workflow.success, - exitStatus: workflow.exitStatus, - errorMessage: workflow.errorMessage, - errorReport: workflow.errorReport - ] - new File("${params.nf_test_output}/workflow.json").text = jsonWorkflowOutput.toJson(result) - -} diff --git a/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/nextflow.log b/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/nextflow.log deleted file mode 100644 index 8ebaa89..0000000 --- a/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/nextflow.log +++ /dev/null @@ -1,186 +0,0 @@ -May-27 13:29:07.468 [main] DEBUG nextflow.cli.Launcher - $> nextflow -quiet -log /home/trace/projects/proteinannotator/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/nextflow.log run /home/trace/projects/proteinannotator/.nf-test-992768407bf21c36a1b8c45efb0d022f.nf -c /home/trace/projects/proteinannotator/nextflow.config -c /home/trace/projects/proteinannotator/modules/nf-core/blast/makeblastdb/tests/./nextflow.config -params-file /home/trace/projects/proteinannotator/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/params.json -ansi-log false -with-trace /home/trace/projects/proteinannotator/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/trace.csv -w /home/trace/projects/proteinannotator/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/work -May-27 13:29:07.572 [main] INFO nextflow.cli.CmdRun - N E X T F L O W ~ version 24.10.6 -May-27 13:29:07.605 [main] DEBUG nextflow.plugin.PluginsFacade - Setting up plugin manager > mode=prod; embedded=false; plugins-dir=/home/trace/.nextflow/plugins; core-plugins: nf-amazon@2.9.3,nf-azure@1.10.2,nf-cloudcache@0.4.2,nf-codecommit@0.2.2,nf-console@1.1.4,nf-google@1.15.4,nf-tower@1.9.3,nf-wave@1.7.5 -May-27 13:29:07.641 [main] INFO o.pf4j.DefaultPluginStatusProvider - Enabled plugins: [] -May-27 13:29:07.642 [main] INFO o.pf4j.DefaultPluginStatusProvider - Disabled plugins: [] -May-27 13:29:07.646 [main] INFO org.pf4j.DefaultPluginManager - PF4J version 3.12.0 in 'deployment' mode -May-27 13:29:07.662 [main] INFO org.pf4j.AbstractPluginManager - No plugins -May-27 13:29:07.694 [main] DEBUG nextflow.config.ConfigBuilder - Found config base: /home/trace/projects/proteinannotator/nextflow.config -May-27 13:29:07.700 [main] DEBUG nextflow.config.ConfigBuilder - User config file: /home/trace/projects/proteinannotator/nextflow.config -May-27 13:29:07.701 [main] DEBUG nextflow.config.ConfigBuilder - User config file: /home/trace/projects/proteinannotator/modules/nf-core/blast/makeblastdb/tests/./nextflow.config -May-27 13:29:07.703 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config -May-27 13:29:07.704 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config -May-27 13:29:07.704 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/modules/nf-core/blast/makeblastdb/tests/nextflow.config -May-27 13:29:07.743 [main] DEBUG n.secret.LocalSecretsProvider - Secrets store: /home/trace/.nextflow/secrets/store.json -May-27 13:29:07.749 [main] DEBUG nextflow.secret.SecretsLoader - Discovered secrets providers: [nextflow.secret.LocalSecretsProvider@2fb5fe30] - activable => nextflow.secret.LocalSecretsProvider@2fb5fe30 -May-27 13:29:07.777 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` -May-27 13:29:10.034 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` -May-27 13:29:10.664 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` -May-27 13:29:10.722 [main] DEBUG nextflow.cli.CmdRun - Applied DSL=2 from script declaration -May-27 13:29:10.738 [main] INFO nextflow.cli.CmdRun - Launching `/home/trace/projects/proteinannotator/.nf-test-992768407bf21c36a1b8c45efb0d022f.nf` [loving_kay] DSL2 - revision: 2d587e0a25 -May-27 13:29:10.739 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins declared=[nf-schema@2.3.0] -May-27 13:29:10.740 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins default=[] -May-27 13:29:10.740 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins resolved requirement=[nf-schema@2.3.0] -May-27 13:29:10.741 [main] DEBUG nextflow.plugin.PluginUpdater - Installing plugin nf-schema version: 2.3.0 -May-27 13:29:10.747 [main] INFO org.pf4j.AbstractPluginManager - Plugin 'nf-schema@2.3.0' resolved -May-27 13:29:10.748 [main] INFO org.pf4j.AbstractPluginManager - Start plugin 'nf-schema@2.3.0' -May-27 13:29:10.756 [main] DEBUG nextflow.plugin.BasePlugin - Plugin started nf-schema@2.3.0 -May-27 13:29:10.817 [main] DEBUG nextflow.Session - Session UUID: 18c37713-0a0c-4892-b134-9cacdaa1714e -May-27 13:29:10.817 [main] DEBUG nextflow.Session - Run name: loving_kay -May-27 13:29:10.818 [main] DEBUG nextflow.Session - Executor pool size: 8 -May-27 13:29:10.827 [main] DEBUG nextflow.file.FilePorter - File porter settings maxRetries=3; maxTransfers=50; pollTimeout=null -May-27 13:29:10.834 [main] DEBUG nextflow.util.ThreadPoolBuilder - Creating thread pool 'FileTransfer' minSize=10; maxSize=24; workQueue=LinkedBlockingQueue[-1]; allowCoreThreadTimeout=false -May-27 13:29:10.856 [main] DEBUG nextflow.cli.CmdRun - - Version: 24.10.6 build 5937 - Created: 23-04-2025 16:53 UTC (12:53 EDT) - System: Linux 6.1.0-33-amd64 - Runtime: Groovy 4.0.23 on OpenJDK 64-Bit Server VM 21.0.6-internal-adhoc.conda.src - Encoding: UTF-8 (UTF-8) - Process: 64717@lail-laptop [127.0.1.1] - CPUs: 8 - Mem: 7 GB (224 MB) - Swap: 977 MB (492 KB) -May-27 13:29:10.886 [main] DEBUG nextflow.Session - Work-dir: /home/trace/projects/proteinannotator/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/work [ext2/ext3] -May-27 13:29:10.886 [main] DEBUG nextflow.Session - Script base path does not exist or is not a directory: /home/trace/projects/proteinannotator/bin -May-27 13:29:10.900 [main] DEBUG nextflow.executor.ExecutorFactory - Extension executors providers=[] -May-27 13:29:10.914 [main] DEBUG nextflow.Session - Observer factory: DefaultObserverFactory -May-27 13:29:10.945 [main] DEBUG nextflow.Session - Observer factory: ValidationObserverFactory -May-27 13:29:11.032 [main] DEBUG nextflow.cache.CacheFactory - Using Nextflow cache factory: nextflow.cache.DefaultCacheFactory -May-27 13:29:11.043 [main] DEBUG nextflow.util.CustomThreadPool - Creating default thread pool > poolSize: 9; maxThreads: 1000 -May-27 13:29:11.108 [main] DEBUG nextflow.Session - Session start -May-27 13:29:11.111 [main] DEBUG nextflow.trace.TraceFileObserver - Workflow started -- trace file: /home/trace/projects/proteinannotator/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/trace.csv -May-27 13:29:11.418 [main] DEBUG nextflow.script.ScriptRunner - > Launching execution -May-27 13:29:11.639 [main] WARN nextflow.script.ScriptBinding - Access to undefined parameter `modules_testdata_base_path` -- Initialise it to a default value eg. `params.modules_testdata_base_path = some_value` -May-27 13:29:11.652 [main] DEBUG nextflow.script.ScriptRunner - Parsed script files: - Script_96efd502c24bd7ef: /home/trace/projects/proteinannotator/.nf-test-992768407bf21c36a1b8c45efb0d022f.nf - Script_fba48771bc5efb6e: /home/trace/projects/proteinannotator/modules/nf-core/blast/makeblastdb/tests/../main.nf -May-27 13:29:11.652 [main] DEBUG nextflow.Session - Session aborted -- Cause: /home/trace/projects/proteinannotator/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/nullgenomics/sarscov2/genome/genome.fasta.gz -May-27 13:29:11.656 [main] DEBUG nextflow.Session - -Thread[#9,Reference Handler,10,system] - java.base@21.0.6-internal/java.lang.ref.Reference.waitForReferencePendingList(Native Method) - java.base@21.0.6-internal/java.lang.ref.Reference.processPendingReferences(Reference.java:246) - java.base@21.0.6-internal/java.lang.ref.Reference$ReferenceHandler.run(Reference.java:208) - -Thread[#18,Common-Cleaner,8,InnocuousThreadGroup] - java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) - java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) - java.base@21.0.6-internal/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1852) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.await(ReferenceQueue.java:71) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:143) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:218) - java.base@21.0.6-internal/jdk.internal.ref.CleanerImpl.run(CleanerImpl.java:140) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) - -Thread[#11,Signal Dispatcher,9,system] - -Thread[#32,process reaper,10,InnocuousThreadGroup] - java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) - java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:410) - java.base@21.0.6-internal/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:338) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1069) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) - -Thread[#33,Thread-1,5,main] - java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) - java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) - java.base@21.0.6-internal/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1763) - java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.pollFirst(LinkedBlockingDeque.java:515) - java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.poll(LinkedBlockingDeque.java:677) - app//nextflow.util.SimpleAgent.run(SimpleAgent.groovy:89) - java.base@21.0.6-internal/java.lang.invoke.LambdaForm$DMH/0x00007fea6c19bc00.invokeVirtual(LambdaForm$DMH) - java.base@21.0.6-internal/java.lang.invoke.LambdaForm$MH/0x00007fea6c490000.invoke(LambdaForm$MH) - java.base@21.0.6-internal/java.lang.invoke.Invokers$Holder.invokeExact_MT(Invokers$Holder) - java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(DirectMethodHandleAccessor.java:153) - java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - java.base@21.0.6-internal/java.lang.reflect.Method.invoke(Method.java:580) - app//org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343) - app//groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:328) - app//groovy.lang.MetaClassImpl.doInvokeMethod(MetaClassImpl.java:1333) - app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1088) - app//groovy.lang.MetaClassImpl.invokeMethodClosure(MetaClassImpl.java:1017) - app//groovy.lang.MetaClassImpl.doInvokeMethod(MetaClassImpl.java:1207) - app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1088) - app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1007) - app//groovy.lang.Closure.call(Closure.java:433) - app//groovy.lang.Closure.call(Closure.java:412) - app//groovy.lang.Closure.run(Closure.java:505) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - -Thread[#1,main,5,main] - java.base@21.0.6-internal/java.lang.Thread.dumpThreads(Native Method) - java.base@21.0.6-internal/java.lang.Thread.getAllStackTraces(Thread.java:2522) - app//nextflow.util.SysHelper.dumpThreads(SysHelper.groovy:188) - app//nextflow.Session.abort(Session.groovy:800) - app//nextflow.script.ScriptRunner.execute(ScriptRunner.groovy:149) - app//nextflow.cli.CmdRun.run(CmdRun.groovy:376) - app//nextflow.cli.Launcher.run(Launcher.groovy:503) - app//nextflow.cli.Launcher.main(Launcher.groovy:658) - -Thread[#10,Finalizer,8,system] - java.base@21.0.6-internal/java.lang.Object.wait0(Native Method) - java.base@21.0.6-internal/java.lang.Object.wait(Object.java:366) - java.base@21.0.6-internal/java.lang.Object.wait(Object.java:339) - java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.await(NativeReferenceQueue.java:48) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:158) - java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.remove(NativeReferenceQueue.java:89) - java.base@21.0.6-internal/java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:173) - -Thread[#34,Actor Thread 1,5,main] - java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) - java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) - java.base@21.0.6-internal/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:458) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.take(SynchronousQueue.java:318) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - -Thread[#19,Notification Thread,9,system] - -Thread[#31,Keep-Alive-Timer,8,InnocuousThreadGroup] - java.base@21.0.6-internal/java.lang.Thread.sleep0(Native Method) - java.base@21.0.6-internal/java.lang.Thread.sleep(Thread.java:509) - java.base@21.0.6-internal/sun.net.www.http.KeepAliveCache.run(KeepAliveCache.java:238) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) - -May-27 13:29:11.669 [main] ERROR nextflow.cli.Launcher - /home/trace/projects/proteinannotator/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/nullgenomics/sarscov2/genome/genome.fasta.gz -java.nio.file.NoSuchFileException: /home/trace/projects/proteinannotator/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/nullgenomics/sarscov2/genome/genome.fasta.gz - at nextflow.file.FileHelper.checkIfExists(FileHelper.groovy:1099) - at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) - at nextflow.Nextflow.file(Nextflow.groovy:123) - at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) - at Script_96efd502c24bd7ef$_runScript_closure4$_closure6.doCall(Script_96efd502c24bd7ef:32) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343) - at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:328) - at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:279) - at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1007) - at groovy.lang.Closure.call(Closure.java:433) - at groovy.lang.Closure.call(Closure.java:412) - at nextflow.script.WorkflowDef.run0(WorkflowDef.groovy:204) - at nextflow.script.WorkflowDef.run(WorkflowDef.groovy:188) - at nextflow.script.BindableDef.invoke_a(BindableDef.groovy:51) - at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) - at nextflow.script.BaseScript.run0(BaseScript.groovy:198) - at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) - at nextflow.script.BaseScript.run(BaseScript.groovy:209) - at nextflow.script.ScriptParser.runScript(ScriptParser.groovy:236) - at nextflow.script.ScriptRunner.run(ScriptRunner.groovy:243) - at nextflow.script.ScriptRunner.execute(ScriptRunner.groovy:138) - at nextflow.cli.CmdRun.run(CmdRun.groovy:376) - at nextflow.cli.Launcher.run(Launcher.groovy:503) - at nextflow.cli.Launcher.main(Launcher.groovy:658) diff --git a/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/params.json b/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/params.json deleted file mode 100644 index b9005cf..0000000 --- a/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/params.json +++ /dev/null @@ -1 +0,0 @@ -{"nf_test_output":"/home/trace/projects/proteinannotator/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta"} \ No newline at end of file diff --git a/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/std.err b/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/std.err deleted file mode 100644 index 5890cc1..0000000 --- a/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/std.err +++ /dev/null @@ -1 +0,0 @@ -Nextflow 25.04.2 is available - Please consider updating your version to it(B diff --git a/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/std.out b/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/std.out deleted file mode 100644 index c15048a..0000000 --- a/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/std.out +++ /dev/null @@ -1,3 +0,0 @@ -ERROR ~ No such file or directory: /home/trace/projects/proteinannotator/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/nullgenomics/sarscov2/genome/genome.fasta.gz - - -- Check script '/home/trace/projects/proteinannotator/.nf-test-992768407bf21c36a1b8c45efb0d022f.nf' at line: 32 or see '/home/trace/projects/proteinannotator/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/nextflow.log' file for more details diff --git a/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/trace.csv b/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/trace.csv deleted file mode 100644 index 6b739ac..0000000 --- a/.nf-test/tests/992768407bf21c36a1b8c45efb0d022f/meta/trace.csv +++ /dev/null @@ -1 +0,0 @@ -task_id hash native_id name status exit submit duration realtime %cpu peak_rss peak_vmem rchar wchar diff --git a/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/mock.nf b/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/mock.nf deleted file mode 100644 index 47873f5..0000000 --- a/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/mock.nf +++ /dev/null @@ -1,99 +0,0 @@ -import groovy.json.JsonGenerator -import groovy.json.JsonGenerator.Converter - -nextflow.enable.dsl=2 - -// comes from nf-test to store json files -params.nf_test_output = "" - -// include dependencies - -include { DIAMOND_MAKEDB } from '/home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf' - - -// include test process -include { DIAMOND_BLASTP } from '/home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../main.nf' - -// define custom rules for JSON that will be generated. -def jsonOutput = - new JsonGenerator.Options() - .addConverter(Path) { value -> value.toAbsolutePath().toString() } // Custom converter for Path. Only filename - .build() - -def jsonWorkflowOutput = new JsonGenerator.Options().excludeNulls().build() - - -workflow { - - // run dependencies - - { - def input = [] - - input[0] = [ [id:'test2'], [ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] ] - input[1] = [] - input[2] = [] - input[3] = [] - - DIAMOND_MAKEDB(*input) - } - - - // process mapping - def input = [] - - input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta.gz', checkIfExists: true) ] - input[1] = DIAMOND_MAKEDB.out.db - input[2] = 6 - input[3] = 'qseqid qlen' - - //---- - - //run process - DIAMOND_BLASTP(*input) - - if (DIAMOND_BLASTP.output){ - - // consumes all named output channels and stores items in a json file - for (def name in DIAMOND_BLASTP.out.getNames()) { - serializeChannel(name, DIAMOND_BLASTP.out.getProperty(name), jsonOutput) - } - - // consumes all unnamed output channels and stores items in a json file - def array = DIAMOND_BLASTP.out as Object[] - for (def i = 0; i < array.length ; i++) { - serializeChannel(i, array[i], jsonOutput) - } - - } - -} - -def serializeChannel(name, channel, jsonOutput) { - def _name = name - def list = [ ] - channel.subscribe( - onNext: { - list.add(it) - }, - onComplete: { - def map = new HashMap() - map[_name] = list - def filename = "${params.nf_test_output}/output_${_name}.json" - new File(filename).text = jsonOutput.toJson(map) - } - ) -} - - -workflow.onComplete { - - def result = [ - success: workflow.success, - exitStatus: workflow.exitStatus, - errorMessage: workflow.errorMessage, - errorReport: workflow.errorReport - ] - new File("${params.nf_test_output}/workflow.json").text = jsonWorkflowOutput.toJson(result) - -} diff --git a/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/nextflow.log b/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/nextflow.log deleted file mode 100644 index 997d29f..0000000 --- a/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/nextflow.log +++ /dev/null @@ -1,169 +0,0 @@ -Jun-02 15:12:16.381 [main] DEBUG nextflow.cli.Launcher - $> nextflow -quiet -log /home/trace/projects/proteinannotator/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/nextflow.log run /home/trace/projects/proteinannotator/.nf-test-a260ceea709dc0bf58d9c19bcab59e27.nf -c /home/trace/projects/proteinannotator/nextflow.config -params-file /home/trace/projects/proteinannotator/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/params.json -ansi-log false -with-trace /home/trace/projects/proteinannotator/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/trace.csv -w /home/trace/projects/proteinannotator/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/work -Jun-02 15:12:16.508 [main] INFO nextflow.cli.CmdRun - N E X T F L O W ~ version 24.10.6 -Jun-02 15:12:16.547 [main] DEBUG nextflow.plugin.PluginsFacade - Setting up plugin manager > mode=prod; embedded=false; plugins-dir=/home/trace/.nextflow/plugins; core-plugins: nf-amazon@2.9.3,nf-azure@1.10.2,nf-cloudcache@0.4.2,nf-codecommit@0.2.2,nf-console@1.1.4,nf-google@1.15.4,nf-tower@1.9.3,nf-wave@1.7.5 -Jun-02 15:12:16.582 [main] INFO o.pf4j.DefaultPluginStatusProvider - Enabled plugins: [] -Jun-02 15:12:16.584 [main] INFO o.pf4j.DefaultPluginStatusProvider - Disabled plugins: [] -Jun-02 15:12:16.589 [main] INFO org.pf4j.DefaultPluginManager - PF4J version 3.12.0 in 'deployment' mode -Jun-02 15:12:16.612 [main] INFO org.pf4j.AbstractPluginManager - No plugins -Jun-02 15:12:16.656 [main] DEBUG nextflow.config.ConfigBuilder - Found config base: /home/trace/projects/proteinannotator/nextflow.config -Jun-02 15:12:16.670 [main] DEBUG nextflow.config.ConfigBuilder - User config file: /home/trace/projects/proteinannotator/nextflow.config -Jun-02 15:12:16.673 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config -Jun-02 15:12:16.674 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config -Jun-02 15:12:16.727 [main] DEBUG n.secret.LocalSecretsProvider - Secrets store: /home/trace/.nextflow/secrets/store.json -Jun-02 15:12:16.735 [main] DEBUG nextflow.secret.SecretsLoader - Discovered secrets providers: [nextflow.secret.LocalSecretsProvider@2fb5fe30] - activable => nextflow.secret.LocalSecretsProvider@2fb5fe30 -Jun-02 15:12:16.772 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` -Jun-02 15:12:20.089 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` -Jun-02 15:12:20.983 [main] DEBUG nextflow.cli.CmdRun - Applied DSL=2 from script declaration -Jun-02 15:12:21.000 [main] INFO nextflow.cli.CmdRun - Launching `/home/trace/projects/proteinannotator/.nf-test-a260ceea709dc0bf58d9c19bcab59e27.nf` [chaotic_hugle] DSL2 - revision: 011cf4f3fc -Jun-02 15:12:21.002 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins declared=[nf-schema@2.3.0] -Jun-02 15:12:21.003 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins default=[] -Jun-02 15:12:21.004 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins resolved requirement=[nf-schema@2.3.0] -Jun-02 15:12:21.004 [main] DEBUG nextflow.plugin.PluginUpdater - Installing plugin nf-schema version: 2.3.0 -Jun-02 15:12:21.011 [main] INFO org.pf4j.AbstractPluginManager - Plugin 'nf-schema@2.3.0' resolved -Jun-02 15:12:21.012 [main] INFO org.pf4j.AbstractPluginManager - Start plugin 'nf-schema@2.3.0' -Jun-02 15:12:21.024 [main] DEBUG nextflow.plugin.BasePlugin - Plugin started nf-schema@2.3.0 -Jun-02 15:12:21.094 [main] DEBUG nextflow.Session - Session UUID: fccd9582-c948-4dce-9ce2-c1c0e6f75543 -Jun-02 15:12:21.094 [main] DEBUG nextflow.Session - Run name: chaotic_hugle -Jun-02 15:12:21.095 [main] DEBUG nextflow.Session - Executor pool size: 8 -Jun-02 15:12:21.105 [main] DEBUG nextflow.file.FilePorter - File porter settings maxRetries=3; maxTransfers=50; pollTimeout=null -Jun-02 15:12:21.116 [main] DEBUG nextflow.util.ThreadPoolBuilder - Creating thread pool 'FileTransfer' minSize=10; maxSize=24; workQueue=LinkedBlockingQueue[-1]; allowCoreThreadTimeout=false -Jun-02 15:12:21.143 [main] DEBUG nextflow.cli.CmdRun - - Version: 24.10.6 build 5937 - Created: 23-04-2025 16:53 UTC (12:53 EDT) - System: Linux 6.1.0-33-amd64 - Runtime: Groovy 4.0.23 on OpenJDK 64-Bit Server VM 21.0.6-internal-adhoc.conda.src - Encoding: UTF-8 (UTF-8) - Process: 5635@lail-laptop [127.0.1.1] - CPUs: 8 - Mem: 7 GB (164.2 MB) - Swap: 977 MB (954 MB) -Jun-02 15:12:21.180 [main] DEBUG nextflow.Session - Work-dir: /home/trace/projects/proteinannotator/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/work [ext2/ext3] -Jun-02 15:12:21.182 [main] DEBUG nextflow.Session - Script base path does not exist or is not a directory: /home/trace/projects/proteinannotator/bin -Jun-02 15:12:21.198 [main] DEBUG nextflow.executor.ExecutorFactory - Extension executors providers=[] -Jun-02 15:12:21.212 [main] DEBUG nextflow.Session - Observer factory: DefaultObserverFactory -Jun-02 15:12:21.254 [main] DEBUG nextflow.Session - Observer factory: ValidationObserverFactory -Jun-02 15:12:21.368 [main] DEBUG nextflow.cache.CacheFactory - Using Nextflow cache factory: nextflow.cache.DefaultCacheFactory -Jun-02 15:12:21.389 [main] DEBUG nextflow.util.CustomThreadPool - Creating default thread pool > poolSize: 9; maxThreads: 1000 -Jun-02 15:12:21.503 [main] DEBUG nextflow.Session - Session start -Jun-02 15:12:21.507 [main] DEBUG nextflow.trace.TraceFileObserver - Workflow started -- trace file: /home/trace/projects/proteinannotator/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/trace.csv -Jun-02 15:12:21.924 [main] DEBUG nextflow.script.ScriptRunner - > Launching execution -Jun-02 15:12:21.945 [main] DEBUG nextflow.script.ScriptRunner - Parsed script files: - Script_226fa0985fbc84f4: /home/trace/projects/proteinannotator/.nf-test-a260ceea709dc0bf58d9c19bcab59e27.nf -Jun-02 15:12:21.946 [main] DEBUG nextflow.Session - Session aborted -- Cause: Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf -Jun-02 15:12:21.955 [main] DEBUG nextflow.Session - -Thread[#9,Reference Handler,10,system] - java.base@21.0.6-internal/java.lang.ref.Reference.waitForReferencePendingList(Native Method) - java.base@21.0.6-internal/java.lang.ref.Reference.processPendingReferences(Reference.java:246) - java.base@21.0.6-internal/java.lang.ref.Reference$ReferenceHandler.run(Reference.java:208) - -Thread[#31,Keep-Alive-Timer,8,InnocuousThreadGroup] - java.base@21.0.6-internal/java.lang.Thread.sleep0(Native Method) - java.base@21.0.6-internal/java.lang.Thread.sleep(Thread.java:509) - java.base@21.0.6-internal/sun.net.www.http.KeepAliveCache.run(KeepAliveCache.java:238) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) - -Thread[#33,Thread-1,5,main] - java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) - java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) - java.base@21.0.6-internal/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1763) - java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.pollFirst(LinkedBlockingDeque.java:515) - java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.poll(LinkedBlockingDeque.java:677) - app//nextflow.util.SimpleAgent.run(SimpleAgent.groovy:89) - java.base@21.0.6-internal/java.lang.invoke.LambdaForm$DMH/0x00007f692019bc00.invokeVirtual(LambdaForm$DMH) - java.base@21.0.6-internal/java.lang.invoke.LambdaForm$MH/0x00007f6920490000.invoke(LambdaForm$MH) - java.base@21.0.6-internal/java.lang.invoke.Invokers$Holder.invokeExact_MT(Invokers$Holder) - java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(DirectMethodHandleAccessor.java:153) - java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - java.base@21.0.6-internal/java.lang.reflect.Method.invoke(Method.java:580) - app//org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343) - app//groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:328) - app//groovy.lang.MetaClassImpl.doInvokeMethod(MetaClassImpl.java:1333) - app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1088) - app//groovy.lang.MetaClassImpl.invokeMethodClosure(MetaClassImpl.java:1017) - app//groovy.lang.MetaClassImpl.doInvokeMethod(MetaClassImpl.java:1207) - app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1088) - app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1007) - app//groovy.lang.Closure.call(Closure.java:433) - app//groovy.lang.Closure.call(Closure.java:412) - app//groovy.lang.Closure.run(Closure.java:505) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - -Thread[#34,Actor Thread 1,5,main] - java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) - java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) - java.base@21.0.6-internal/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:458) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.take(SynchronousQueue.java:318) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - -Thread[#18,Common-Cleaner,8,InnocuousThreadGroup] - java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) - java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) - java.base@21.0.6-internal/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1852) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.await(ReferenceQueue.java:71) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:143) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:218) - java.base@21.0.6-internal/jdk.internal.ref.CleanerImpl.run(CleanerImpl.java:140) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) - -Thread[#32,process reaper,10,InnocuousThreadGroup] - java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) - java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:410) - java.base@21.0.6-internal/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:338) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1069) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) - -Thread[#11,Signal Dispatcher,9,system] - -Thread[#10,Finalizer,8,system] - java.base@21.0.6-internal/java.lang.Object.wait0(Native Method) - java.base@21.0.6-internal/java.lang.Object.wait(Object.java:366) - java.base@21.0.6-internal/java.lang.Object.wait(Object.java:339) - java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.await(NativeReferenceQueue.java:48) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:158) - java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.remove(NativeReferenceQueue.java:89) - java.base@21.0.6-internal/java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:173) - -Thread[#19,Notification Thread,9,system] - -Thread[#1,main,5,main] - java.base@21.0.6-internal/java.lang.Thread.dumpThreads(Native Method) - java.base@21.0.6-internal/java.lang.Thread.getAllStackTraces(Thread.java:2522) - app//nextflow.util.SysHelper.dumpThreads(SysHelper.groovy:188) - app//nextflow.Session.abort(Session.groovy:800) - app//nextflow.script.ScriptRunner.execute(ScriptRunner.groovy:149) - app//nextflow.cli.CmdRun.run(CmdRun.groovy:376) - app//nextflow.cli.Launcher.run(Launcher.groovy:503) - app//nextflow.cli.Launcher.main(Launcher.groovy:658) - -Jun-02 15:12:21.965 [main] ERROR nextflow.cli.Launcher - Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf -java.nio.file.NoSuchFileException: Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf - at nextflow.script.IncludeDef.realModulePath(IncludeDef.groovy:184) - at nextflow.script.IncludeDef.load0(IncludeDef.groovy:112) - at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) - at Script_226fa0985fbc84f4.runScript(Script_226fa0985fbc84f4:11) - at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) - at nextflow.script.BaseScript.run0(BaseScript.groovy:159) - at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) - at nextflow.script.BaseScript.run(BaseScript.groovy:209) - at nextflow.script.ScriptParser.runScript(ScriptParser.groovy:236) - at nextflow.script.ScriptRunner.run(ScriptRunner.groovy:243) - at nextflow.script.ScriptRunner.execute(ScriptRunner.groovy:138) - at nextflow.cli.CmdRun.run(CmdRun.groovy:376) - at nextflow.cli.Launcher.run(Launcher.groovy:503) - at nextflow.cli.Launcher.main(Launcher.groovy:658) diff --git a/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/params.json b/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/params.json deleted file mode 100644 index bee6d71..0000000 --- a/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/params.json +++ /dev/null @@ -1 +0,0 @@ -{"nf_test_output":"/home/trace/projects/proteinannotator/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta"} \ No newline at end of file diff --git a/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/std.err b/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/std.err deleted file mode 100644 index 5890cc1..0000000 --- a/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/std.err +++ /dev/null @@ -1 +0,0 @@ -Nextflow 25.04.2 is available - Please consider updating your version to it(B diff --git a/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/std.out b/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/std.out deleted file mode 100644 index 8955dc4..0000000 --- a/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/std.out +++ /dev/null @@ -1,3 +0,0 @@ -ERROR ~ No such file or directory: Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf - - -- Check script '/home/trace/projects/proteinannotator/.nf-test-a260ceea709dc0bf58d9c19bcab59e27.nf' at line: 11 or see '/home/trace/projects/proteinannotator/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/nextflow.log' file for more details diff --git a/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/trace.csv b/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/trace.csv deleted file mode 100644 index 6b739ac..0000000 --- a/.nf-test/tests/a260ceea709dc0bf58d9c19bcab59e27/meta/trace.csv +++ /dev/null @@ -1 +0,0 @@ -task_id hash native_id name status exit submit duration realtime %cpu peak_rss peak_vmem rchar wchar diff --git a/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/mock.nf b/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/mock.nf deleted file mode 100644 index 0f4eb7a..0000000 --- a/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/mock.nf +++ /dev/null @@ -1,86 +0,0 @@ -import groovy.json.JsonGenerator -import groovy.json.JsonGenerator.Converter - -nextflow.enable.dsl=2 - -// comes from nf-test to store json files -params.nf_test_output = "" - -// include dependencies - - -// include test process -include { DIAMOND_MAKEDB } from '/home/trace/projects/proteinannotator/modules/nf-core/diamond/makedb/tests/../main.nf' - -// define custom rules for JSON that will be generated. -def jsonOutput = - new JsonGenerator.Options() - .addConverter(Path) { value -> value.toAbsolutePath().toString() } // Custom converter for Path. Only filename - .build() - -def jsonWorkflowOutput = new JsonGenerator.Options().excludeNulls().build() - - -workflow { - - // run dependencies - - - // process mapping - def input = [] - - input[0] = [ [id:'test'], [ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] ] - input[1] = [] - input[2] = [] - input[3] = [] - - //---- - - //run process - DIAMOND_MAKEDB(*input) - - if (DIAMOND_MAKEDB.output){ - - // consumes all named output channels and stores items in a json file - for (def name in DIAMOND_MAKEDB.out.getNames()) { - serializeChannel(name, DIAMOND_MAKEDB.out.getProperty(name), jsonOutput) - } - - // consumes all unnamed output channels and stores items in a json file - def array = DIAMOND_MAKEDB.out as Object[] - for (def i = 0; i < array.length ; i++) { - serializeChannel(i, array[i], jsonOutput) - } - - } - -} - -def serializeChannel(name, channel, jsonOutput) { - def _name = name - def list = [ ] - channel.subscribe( - onNext: { - list.add(it) - }, - onComplete: { - def map = new HashMap() - map[_name] = list - def filename = "${params.nf_test_output}/output_${_name}.json" - new File(filename).text = jsonOutput.toJson(map) - } - ) -} - - -workflow.onComplete { - - def result = [ - success: workflow.success, - exitStatus: workflow.exitStatus, - errorMessage: workflow.errorMessage, - errorReport: workflow.errorReport - ] - new File("${params.nf_test_output}/workflow.json").text = jsonWorkflowOutput.toJson(result) - -} diff --git a/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/nextflow.log b/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/nextflow.log deleted file mode 100644 index 8e81ca2..0000000 --- a/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/nextflow.log +++ /dev/null @@ -1,183 +0,0 @@ -Jun-03 14:37:11.973 [main] DEBUG nextflow.cli.Launcher - $> nextflow -quiet -log /home/trace/projects/proteinannotator/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/nextflow.log run /home/trace/projects/proteinannotator/.nf-test-b2b060aac6247755a2eeab16e289e473.nf -c /home/trace/projects/proteinannotator/nextflow.config -params-file /home/trace/projects/proteinannotator/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/params.json -ansi-log false -with-trace /home/trace/projects/proteinannotator/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/trace.csv -w /home/trace/projects/proteinannotator/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/work -Jun-03 14:37:12.086 [main] INFO nextflow.cli.CmdRun - N E X T F L O W ~ version 24.10.6 -Jun-03 14:37:12.119 [main] DEBUG nextflow.plugin.PluginsFacade - Setting up plugin manager > mode=prod; embedded=false; plugins-dir=/home/trace/.nextflow/plugins; core-plugins: nf-amazon@2.9.3,nf-azure@1.10.2,nf-cloudcache@0.4.2,nf-codecommit@0.2.2,nf-console@1.1.4,nf-google@1.15.4,nf-tower@1.9.3,nf-wave@1.7.5 -Jun-03 14:37:12.154 [main] INFO o.pf4j.DefaultPluginStatusProvider - Enabled plugins: [] -Jun-03 14:37:12.155 [main] INFO o.pf4j.DefaultPluginStatusProvider - Disabled plugins: [] -Jun-03 14:37:12.161 [main] INFO org.pf4j.DefaultPluginManager - PF4J version 3.12.0 in 'deployment' mode -Jun-03 14:37:12.178 [main] INFO org.pf4j.AbstractPluginManager - No plugins -Jun-03 14:37:12.217 [main] DEBUG nextflow.config.ConfigBuilder - Found config base: /home/trace/projects/proteinannotator/nextflow.config -Jun-03 14:37:12.228 [main] DEBUG nextflow.config.ConfigBuilder - User config file: /home/trace/projects/proteinannotator/nextflow.config -Jun-03 14:37:12.231 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config -Jun-03 14:37:12.233 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config -Jun-03 14:37:12.282 [main] DEBUG n.secret.LocalSecretsProvider - Secrets store: /home/trace/.nextflow/secrets/store.json -Jun-03 14:37:12.288 [main] DEBUG nextflow.secret.SecretsLoader - Discovered secrets providers: [nextflow.secret.LocalSecretsProvider@2fb5fe30] - activable => nextflow.secret.LocalSecretsProvider@2fb5fe30 -Jun-03 14:37:12.321 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` -Jun-03 14:37:14.950 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` -Jun-03 14:37:15.680 [main] DEBUG nextflow.cli.CmdRun - Applied DSL=2 from script declaration -Jun-03 14:37:15.706 [main] INFO nextflow.cli.CmdRun - Launching `/home/trace/projects/proteinannotator/.nf-test-b2b060aac6247755a2eeab16e289e473.nf` [hungry_avogadro] DSL2 - revision: 034c9e5ece -Jun-03 14:37:15.707 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins declared=[nf-schema@2.3.0] -Jun-03 14:37:15.708 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins default=[] -Jun-03 14:37:15.709 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins resolved requirement=[nf-schema@2.3.0] -Jun-03 14:37:15.710 [main] DEBUG nextflow.plugin.PluginUpdater - Installing plugin nf-schema version: 2.3.0 -Jun-03 14:37:15.719 [main] INFO org.pf4j.AbstractPluginManager - Plugin 'nf-schema@2.3.0' resolved -Jun-03 14:37:15.720 [main] INFO org.pf4j.AbstractPluginManager - Start plugin 'nf-schema@2.3.0' -Jun-03 14:37:15.730 [main] DEBUG nextflow.plugin.BasePlugin - Plugin started nf-schema@2.3.0 -Jun-03 14:37:15.798 [main] DEBUG nextflow.Session - Session UUID: f93ff346-1b59-4d8e-bd0a-a844768c1fe0 -Jun-03 14:37:15.799 [main] DEBUG nextflow.Session - Run name: hungry_avogadro -Jun-03 14:37:15.799 [main] DEBUG nextflow.Session - Executor pool size: 8 -Jun-03 14:37:15.809 [main] DEBUG nextflow.file.FilePorter - File porter settings maxRetries=3; maxTransfers=50; pollTimeout=null -Jun-03 14:37:15.817 [main] DEBUG nextflow.util.ThreadPoolBuilder - Creating thread pool 'FileTransfer' minSize=10; maxSize=24; workQueue=LinkedBlockingQueue[-1]; allowCoreThreadTimeout=false -Jun-03 14:37:15.847 [main] DEBUG nextflow.cli.CmdRun - - Version: 24.10.6 build 5937 - Created: 23-04-2025 16:53 UTC (12:53 EDT) - System: Linux 6.1.0-33-amd64 - Runtime: Groovy 4.0.23 on OpenJDK 64-Bit Server VM 21.0.6-internal-adhoc.conda.src - Encoding: UTF-8 (UTF-8) - Process: 35111@lail-laptop [127.0.1.1] - CPUs: 8 - Mem: 7 GB (140 MB) - Swap: 977 MB (67.8 MB) -Jun-03 14:37:15.879 [main] DEBUG nextflow.Session - Work-dir: /home/trace/projects/proteinannotator/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/work [ext2/ext3] -Jun-03 14:37:15.880 [main] DEBUG nextflow.Session - Script base path does not exist or is not a directory: /home/trace/projects/proteinannotator/bin -Jun-03 14:37:15.895 [main] DEBUG nextflow.executor.ExecutorFactory - Extension executors providers=[] -Jun-03 14:37:15.909 [main] DEBUG nextflow.Session - Observer factory: DefaultObserverFactory -Jun-03 14:37:15.941 [main] DEBUG nextflow.Session - Observer factory: ValidationObserverFactory -Jun-03 14:37:16.029 [main] DEBUG nextflow.cache.CacheFactory - Using Nextflow cache factory: nextflow.cache.DefaultCacheFactory -Jun-03 14:37:16.041 [main] DEBUG nextflow.util.CustomThreadPool - Creating default thread pool > poolSize: 9; maxThreads: 1000 -Jun-03 14:37:16.125 [main] DEBUG nextflow.Session - Session start -Jun-03 14:37:16.128 [main] DEBUG nextflow.trace.TraceFileObserver - Workflow started -- trace file: /home/trace/projects/proteinannotator/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/trace.csv -Jun-03 14:37:16.423 [main] DEBUG nextflow.script.ScriptRunner - > Launching execution -Jun-03 14:37:16.645 [main] WARN nextflow.script.ScriptBinding - Access to undefined parameter `modules_testdata_base_path` -- Initialise it to a default value eg. `params.modules_testdata_base_path = some_value` -Jun-03 14:37:16.661 [main] DEBUG nextflow.script.ScriptRunner - Parsed script files: - Script_6a09d86216a54543: /home/trace/projects/proteinannotator/.nf-test-b2b060aac6247755a2eeab16e289e473.nf - Script_7c8a310cd66b8f33: /home/trace/projects/proteinannotator/modules/nf-core/diamond/makedb/tests/../main.nf -Jun-03 14:37:16.662 [main] DEBUG nextflow.Session - Session aborted -- Cause: /home/trace/projects/proteinannotator/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/nullgenomics/sarscov2/genome/proteome.fasta -Jun-03 14:37:16.669 [main] DEBUG nextflow.Session - -Thread[#10,Finalizer,8,system] - java.base@21.0.6-internal/java.lang.Object.wait0(Native Method) - java.base@21.0.6-internal/java.lang.Object.wait(Object.java:366) - java.base@21.0.6-internal/java.lang.Object.wait(Object.java:339) - java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.await(NativeReferenceQueue.java:48) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:158) - java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.remove(NativeReferenceQueue.java:89) - java.base@21.0.6-internal/java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:173) - -Thread[#9,Reference Handler,10,system] - java.base@21.0.6-internal/java.lang.ref.Reference.waitForReferencePendingList(Native Method) - java.base@21.0.6-internal/java.lang.ref.Reference.processPendingReferences(Reference.java:246) - java.base@21.0.6-internal/java.lang.ref.Reference$ReferenceHandler.run(Reference.java:208) - -Thread[#33,Thread-1,5,main] - java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) - java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) - java.base@21.0.6-internal/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1763) - java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.pollFirst(LinkedBlockingDeque.java:515) - java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.poll(LinkedBlockingDeque.java:677) - app//nextflow.util.SimpleAgent.run(SimpleAgent.groovy:89) - java.base@21.0.6-internal/java.lang.invoke.LambdaForm$DMH/0x00007f100819bc00.invokeVirtual(LambdaForm$DMH) - java.base@21.0.6-internal/java.lang.invoke.LambdaForm$MH/0x00007f100848c800.invoke(LambdaForm$MH) - java.base@21.0.6-internal/java.lang.invoke.Invokers$Holder.invokeExact_MT(Invokers$Holder) - java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(DirectMethodHandleAccessor.java:153) - java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - java.base@21.0.6-internal/java.lang.reflect.Method.invoke(Method.java:580) - app//org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343) - app//groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:328) - app//groovy.lang.MetaClassImpl.doInvokeMethod(MetaClassImpl.java:1333) - app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1088) - app//groovy.lang.MetaClassImpl.invokeMethodClosure(MetaClassImpl.java:1017) - app//groovy.lang.MetaClassImpl.doInvokeMethod(MetaClassImpl.java:1207) - app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1088) - app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1007) - app//groovy.lang.Closure.call(Closure.java:433) - app//groovy.lang.Closure.call(Closure.java:412) - app//groovy.lang.Closure.run(Closure.java:505) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - -Thread[#31,Keep-Alive-Timer,8,InnocuousThreadGroup] - java.base@21.0.6-internal/java.lang.Thread.sleep0(Native Method) - java.base@21.0.6-internal/java.lang.Thread.sleep(Thread.java:509) - java.base@21.0.6-internal/sun.net.www.http.KeepAliveCache.run(KeepAliveCache.java:238) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) - -Thread[#34,Actor Thread 1,5,main] - java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) - java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) - java.base@21.0.6-internal/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:458) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.take(SynchronousQueue.java:318) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - -Thread[#18,Common-Cleaner,8,InnocuousThreadGroup] - java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) - java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) - java.base@21.0.6-internal/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1852) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.await(ReferenceQueue.java:71) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:143) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:218) - java.base@21.0.6-internal/jdk.internal.ref.CleanerImpl.run(CleanerImpl.java:140) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) - -Thread[#11,Signal Dispatcher,9,system] - -Thread[#1,main,5,main] - java.base@21.0.6-internal/java.lang.Thread.dumpThreads(Native Method) - java.base@21.0.6-internal/java.lang.Thread.getAllStackTraces(Thread.java:2522) - app//nextflow.util.SysHelper.dumpThreads(SysHelper.groovy:188) - app//nextflow.Session.abort(Session.groovy:800) - app//nextflow.script.ScriptRunner.execute(ScriptRunner.groovy:149) - app//nextflow.cli.CmdRun.run(CmdRun.groovy:376) - app//nextflow.cli.Launcher.run(Launcher.groovy:503) - app//nextflow.cli.Launcher.main(Launcher.groovy:658) - -Thread[#32,process reaper,10,InnocuousThreadGroup] - java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) - java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:410) - java.base@21.0.6-internal/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:338) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1069) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) - -Thread[#19,Notification Thread,9,system] - -Jun-03 14:37:16.684 [main] ERROR nextflow.cli.Launcher - /home/trace/projects/proteinannotator/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/nullgenomics/sarscov2/genome/proteome.fasta -java.nio.file.NoSuchFileException: /home/trace/projects/proteinannotator/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/nullgenomics/sarscov2/genome/proteome.fasta - at nextflow.file.FileHelper.checkIfExists(FileHelper.groovy:1099) - at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) - at nextflow.Nextflow.file(Nextflow.groovy:123) - at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) - at Script_6a09d86216a54543$_runScript_closure4$_closure6.doCall(Script_6a09d86216a54543:32) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343) - at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:328) - at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:279) - at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1007) - at groovy.lang.Closure.call(Closure.java:433) - at groovy.lang.Closure.call(Closure.java:412) - at nextflow.script.WorkflowDef.run0(WorkflowDef.groovy:204) - at nextflow.script.WorkflowDef.run(WorkflowDef.groovy:188) - at nextflow.script.BindableDef.invoke_a(BindableDef.groovy:51) - at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) - at nextflow.script.BaseScript.run0(BaseScript.groovy:198) - at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) - at nextflow.script.BaseScript.run(BaseScript.groovy:209) - at nextflow.script.ScriptParser.runScript(ScriptParser.groovy:236) - at nextflow.script.ScriptRunner.run(ScriptRunner.groovy:243) - at nextflow.script.ScriptRunner.execute(ScriptRunner.groovy:138) - at nextflow.cli.CmdRun.run(CmdRun.groovy:376) - at nextflow.cli.Launcher.run(Launcher.groovy:503) - at nextflow.cli.Launcher.main(Launcher.groovy:658) diff --git a/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/params.json b/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/params.json deleted file mode 100644 index a8d2c38..0000000 --- a/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/params.json +++ /dev/null @@ -1 +0,0 @@ -{"nf_test_output":"/home/trace/projects/proteinannotator/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta","outdir":"/home/trace/projects/proteinannotator/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/output"} \ No newline at end of file diff --git a/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/std.err b/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/std.err deleted file mode 100644 index 519f6b3..0000000 --- a/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/std.err +++ /dev/null @@ -1 +0,0 @@ -Nextflow 25.04.3 is available - Please consider updating your version to it(B diff --git a/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/std.out b/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/std.out deleted file mode 100644 index 9481f53..0000000 --- a/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/std.out +++ /dev/null @@ -1,3 +0,0 @@ -ERROR ~ No such file or directory: /home/trace/projects/proteinannotator/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/nullgenomics/sarscov2/genome/proteome.fasta - - -- Check script '/home/trace/projects/proteinannotator/.nf-test-b2b060aac6247755a2eeab16e289e473.nf' at line: 32 or see '/home/trace/projects/proteinannotator/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/nextflow.log' file for more details diff --git a/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/trace.csv b/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/trace.csv deleted file mode 100644 index 6b739ac..0000000 --- a/.nf-test/tests/b2b060aac6247755a2eeab16e289e473/meta/trace.csv +++ /dev/null @@ -1 +0,0 @@ -task_id hash native_id name status exit submit duration realtime %cpu peak_rss peak_vmem rchar wchar diff --git a/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/mock.nf b/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/mock.nf deleted file mode 100644 index 7e407de..0000000 --- a/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/mock.nf +++ /dev/null @@ -1,99 +0,0 @@ -import groovy.json.JsonGenerator -import groovy.json.JsonGenerator.Converter - -nextflow.enable.dsl=2 - -// comes from nf-test to store json files -params.nf_test_output = "" - -// include dependencies - -include { DIAMOND_MAKEDB } from '/home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf' - - -// include test process -include { DIAMOND_BLASTP } from '/home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../main.nf' - -// define custom rules for JSON that will be generated. -def jsonOutput = - new JsonGenerator.Options() - .addConverter(Path) { value -> value.toAbsolutePath().toString() } // Custom converter for Path. Only filename - .build() - -def jsonWorkflowOutput = new JsonGenerator.Options().excludeNulls().build() - - -workflow { - - // run dependencies - - { - def input = [] - - input[0] = [ [id:'test2'], [ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] ] - input[1] = [] - input[2] = [] - input[3] = [] - - DIAMOND_MAKEDB(*input) - } - - - // process mapping - def input = [] - - input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] - input[1] = DIAMOND_MAKEDB.out.db - input[2] = 6 - input[3] = 'qseqid qlen' - - //---- - - //run process - DIAMOND_BLASTP(*input) - - if (DIAMOND_BLASTP.output){ - - // consumes all named output channels and stores items in a json file - for (def name in DIAMOND_BLASTP.out.getNames()) { - serializeChannel(name, DIAMOND_BLASTP.out.getProperty(name), jsonOutput) - } - - // consumes all unnamed output channels and stores items in a json file - def array = DIAMOND_BLASTP.out as Object[] - for (def i = 0; i < array.length ; i++) { - serializeChannel(i, array[i], jsonOutput) - } - - } - -} - -def serializeChannel(name, channel, jsonOutput) { - def _name = name - def list = [ ] - channel.subscribe( - onNext: { - list.add(it) - }, - onComplete: { - def map = new HashMap() - map[_name] = list - def filename = "${params.nf_test_output}/output_${_name}.json" - new File(filename).text = jsonOutput.toJson(map) - } - ) -} - - -workflow.onComplete { - - def result = [ - success: workflow.success, - exitStatus: workflow.exitStatus, - errorMessage: workflow.errorMessage, - errorReport: workflow.errorReport - ] - new File("${params.nf_test_output}/workflow.json").text = jsonWorkflowOutput.toJson(result) - -} diff --git a/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/nextflow.log b/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/nextflow.log deleted file mode 100644 index 19cd28f..0000000 --- a/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/nextflow.log +++ /dev/null @@ -1,169 +0,0 @@ -Jun-02 15:12:08.994 [main] DEBUG nextflow.cli.Launcher - $> nextflow -quiet -log /home/trace/projects/proteinannotator/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/nextflow.log run /home/trace/projects/proteinannotator/.nf-test-d44daec0656fd514e1f90b15d37109eb.nf -c /home/trace/projects/proteinannotator/nextflow.config -params-file /home/trace/projects/proteinannotator/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/params.json -ansi-log false -with-trace /home/trace/projects/proteinannotator/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/trace.csv -w /home/trace/projects/proteinannotator/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/work -Jun-02 15:12:09.110 [main] INFO nextflow.cli.CmdRun - N E X T F L O W ~ version 24.10.6 -Jun-02 15:12:09.147 [main] DEBUG nextflow.plugin.PluginsFacade - Setting up plugin manager > mode=prod; embedded=false; plugins-dir=/home/trace/.nextflow/plugins; core-plugins: nf-amazon@2.9.3,nf-azure@1.10.2,nf-cloudcache@0.4.2,nf-codecommit@0.2.2,nf-console@1.1.4,nf-google@1.15.4,nf-tower@1.9.3,nf-wave@1.7.5 -Jun-02 15:12:09.184 [main] INFO o.pf4j.DefaultPluginStatusProvider - Enabled plugins: [] -Jun-02 15:12:09.185 [main] INFO o.pf4j.DefaultPluginStatusProvider - Disabled plugins: [] -Jun-02 15:12:09.189 [main] INFO org.pf4j.DefaultPluginManager - PF4J version 3.12.0 in 'deployment' mode -Jun-02 15:12:09.211 [main] INFO org.pf4j.AbstractPluginManager - No plugins -Jun-02 15:12:09.248 [main] DEBUG nextflow.config.ConfigBuilder - Found config base: /home/trace/projects/proteinannotator/nextflow.config -Jun-02 15:12:09.256 [main] DEBUG nextflow.config.ConfigBuilder - User config file: /home/trace/projects/proteinannotator/nextflow.config -Jun-02 15:12:09.258 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config -Jun-02 15:12:09.260 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config -Jun-02 15:12:09.312 [main] DEBUG n.secret.LocalSecretsProvider - Secrets store: /home/trace/.nextflow/secrets/store.json -Jun-02 15:12:09.320 [main] DEBUG nextflow.secret.SecretsLoader - Discovered secrets providers: [nextflow.secret.LocalSecretsProvider@2fb5fe30] - activable => nextflow.secret.LocalSecretsProvider@2fb5fe30 -Jun-02 15:12:09.360 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` -Jun-02 15:12:12.488 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` -Jun-02 15:12:13.370 [main] DEBUG nextflow.cli.CmdRun - Applied DSL=2 from script declaration -Jun-02 15:12:13.392 [main] INFO nextflow.cli.CmdRun - Launching `/home/trace/projects/proteinannotator/.nf-test-d44daec0656fd514e1f90b15d37109eb.nf` [intergalactic_bassi] DSL2 - revision: a1ca7e6f26 -Jun-02 15:12:13.393 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins declared=[nf-schema@2.3.0] -Jun-02 15:12:13.394 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins default=[] -Jun-02 15:12:13.394 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins resolved requirement=[nf-schema@2.3.0] -Jun-02 15:12:13.395 [main] DEBUG nextflow.plugin.PluginUpdater - Installing plugin nf-schema version: 2.3.0 -Jun-02 15:12:13.401 [main] INFO org.pf4j.AbstractPluginManager - Plugin 'nf-schema@2.3.0' resolved -Jun-02 15:12:13.402 [main] INFO org.pf4j.AbstractPluginManager - Start plugin 'nf-schema@2.3.0' -Jun-02 15:12:13.413 [main] DEBUG nextflow.plugin.BasePlugin - Plugin started nf-schema@2.3.0 -Jun-02 15:12:13.526 [main] DEBUG nextflow.Session - Session UUID: 37abc952-fd1b-4f84-8fc3-38d01aaec695 -Jun-02 15:12:13.526 [main] DEBUG nextflow.Session - Run name: intergalactic_bassi -Jun-02 15:12:13.527 [main] DEBUG nextflow.Session - Executor pool size: 8 -Jun-02 15:12:13.538 [main] DEBUG nextflow.file.FilePorter - File porter settings maxRetries=3; maxTransfers=50; pollTimeout=null -Jun-02 15:12:13.548 [main] DEBUG nextflow.util.ThreadPoolBuilder - Creating thread pool 'FileTransfer' minSize=10; maxSize=24; workQueue=LinkedBlockingQueue[-1]; allowCoreThreadTimeout=false -Jun-02 15:12:13.578 [main] DEBUG nextflow.cli.CmdRun - - Version: 24.10.6 build 5937 - Created: 23-04-2025 16:53 UTC (12:53 EDT) - System: Linux 6.1.0-33-amd64 - Runtime: Groovy 4.0.23 on OpenJDK 64-Bit Server VM 21.0.6-internal-adhoc.conda.src - Encoding: UTF-8 (UTF-8) - Process: 5493@lail-laptop [127.0.1.1] - CPUs: 8 - Mem: 7 GB (161.6 MB) - Swap: 977 MB (954.2 MB) -Jun-02 15:12:13.624 [main] DEBUG nextflow.Session - Work-dir: /home/trace/projects/proteinannotator/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/work [ext2/ext3] -Jun-02 15:12:13.625 [main] DEBUG nextflow.Session - Script base path does not exist or is not a directory: /home/trace/projects/proteinannotator/bin -Jun-02 15:12:13.642 [main] DEBUG nextflow.executor.ExecutorFactory - Extension executors providers=[] -Jun-02 15:12:13.663 [main] DEBUG nextflow.Session - Observer factory: DefaultObserverFactory -Jun-02 15:12:13.704 [main] DEBUG nextflow.Session - Observer factory: ValidationObserverFactory -Jun-02 15:12:13.821 [main] DEBUG nextflow.cache.CacheFactory - Using Nextflow cache factory: nextflow.cache.DefaultCacheFactory -Jun-02 15:12:13.835 [main] DEBUG nextflow.util.CustomThreadPool - Creating default thread pool > poolSize: 9; maxThreads: 1000 -Jun-02 15:12:13.923 [main] DEBUG nextflow.Session - Session start -Jun-02 15:12:13.928 [main] DEBUG nextflow.trace.TraceFileObserver - Workflow started -- trace file: /home/trace/projects/proteinannotator/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/trace.csv -Jun-02 15:12:14.307 [main] DEBUG nextflow.script.ScriptRunner - > Launching execution -Jun-02 15:12:14.332 [main] DEBUG nextflow.script.ScriptRunner - Parsed script files: - Script_e3c35e79f690a4ec: /home/trace/projects/proteinannotator/.nf-test-d44daec0656fd514e1f90b15d37109eb.nf -Jun-02 15:12:14.333 [main] DEBUG nextflow.Session - Session aborted -- Cause: Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf -Jun-02 15:12:14.339 [main] DEBUG nextflow.Session - -Thread[#18,Common-Cleaner,8,InnocuousThreadGroup] - java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) - java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) - java.base@21.0.6-internal/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1852) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.await(ReferenceQueue.java:71) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:143) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:218) - java.base@21.0.6-internal/jdk.internal.ref.CleanerImpl.run(CleanerImpl.java:140) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) - -Thread[#31,Keep-Alive-Timer,8,InnocuousThreadGroup] - java.base@21.0.6-internal/java.lang.Thread.sleep0(Native Method) - java.base@21.0.6-internal/java.lang.Thread.sleep(Thread.java:509) - java.base@21.0.6-internal/sun.net.www.http.KeepAliveCache.run(KeepAliveCache.java:238) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) - -Thread[#32,process reaper,10,InnocuousThreadGroup] - java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) - java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:410) - java.base@21.0.6-internal/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:338) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1069) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) - -Thread[#10,Finalizer,8,system] - java.base@21.0.6-internal/java.lang.Object.wait0(Native Method) - java.base@21.0.6-internal/java.lang.Object.wait(Object.java:366) - java.base@21.0.6-internal/java.lang.Object.wait(Object.java:339) - java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.await(NativeReferenceQueue.java:48) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:158) - java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.remove(NativeReferenceQueue.java:89) - java.base@21.0.6-internal/java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:173) - -Thread[#19,Notification Thread,9,system] - -Thread[#33,Thread-1,5,main] - java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) - java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) - java.base@21.0.6-internal/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1763) - java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.pollFirst(LinkedBlockingDeque.java:515) - java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.poll(LinkedBlockingDeque.java:677) - app//nextflow.util.SimpleAgent.run(SimpleAgent.groovy:89) - java.base@21.0.6-internal/java.lang.invoke.LambdaForm$DMH/0x00007feb3819bc00.invokeVirtual(LambdaForm$DMH) - java.base@21.0.6-internal/java.lang.invoke.LambdaForm$MH/0x00007feb3848c800.invoke(LambdaForm$MH) - java.base@21.0.6-internal/java.lang.invoke.Invokers$Holder.invokeExact_MT(Invokers$Holder) - java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(DirectMethodHandleAccessor.java:153) - java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - java.base@21.0.6-internal/java.lang.reflect.Method.invoke(Method.java:580) - app//org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343) - app//groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:328) - app//groovy.lang.MetaClassImpl.doInvokeMethod(MetaClassImpl.java:1333) - app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1088) - app//groovy.lang.MetaClassImpl.invokeMethodClosure(MetaClassImpl.java:1017) - app//groovy.lang.MetaClassImpl.doInvokeMethod(MetaClassImpl.java:1207) - app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1088) - app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1007) - app//groovy.lang.Closure.call(Closure.java:433) - app//groovy.lang.Closure.call(Closure.java:412) - app//groovy.lang.Closure.run(Closure.java:505) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - -Thread[#9,Reference Handler,10,system] - java.base@21.0.6-internal/java.lang.ref.Reference.waitForReferencePendingList(Native Method) - java.base@21.0.6-internal/java.lang.ref.Reference.processPendingReferences(Reference.java:246) - java.base@21.0.6-internal/java.lang.ref.Reference$ReferenceHandler.run(Reference.java:208) - -Thread[#34,Actor Thread 1,5,main] - java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) - java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) - java.base@21.0.6-internal/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:458) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.take(SynchronousQueue.java:318) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - -Thread[#11,Signal Dispatcher,9,system] - -Thread[#1,main,5,main] - java.base@21.0.6-internal/java.lang.Thread.dumpThreads(Native Method) - java.base@21.0.6-internal/java.lang.Thread.getAllStackTraces(Thread.java:2522) - app//nextflow.util.SysHelper.dumpThreads(SysHelper.groovy:188) - app//nextflow.Session.abort(Session.groovy:800) - app//nextflow.script.ScriptRunner.execute(ScriptRunner.groovy:149) - app//nextflow.cli.CmdRun.run(CmdRun.groovy:376) - app//nextflow.cli.Launcher.run(Launcher.groovy:503) - app//nextflow.cli.Launcher.main(Launcher.groovy:658) - -Jun-02 15:12:14.353 [main] ERROR nextflow.cli.Launcher - Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf -java.nio.file.NoSuchFileException: Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf - at nextflow.script.IncludeDef.realModulePath(IncludeDef.groovy:184) - at nextflow.script.IncludeDef.load0(IncludeDef.groovy:112) - at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) - at Script_e3c35e79f690a4ec.runScript(Script_e3c35e79f690a4ec:11) - at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) - at nextflow.script.BaseScript.run0(BaseScript.groovy:159) - at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) - at nextflow.script.BaseScript.run(BaseScript.groovy:209) - at nextflow.script.ScriptParser.runScript(ScriptParser.groovy:236) - at nextflow.script.ScriptRunner.run(ScriptRunner.groovy:243) - at nextflow.script.ScriptRunner.execute(ScriptRunner.groovy:138) - at nextflow.cli.CmdRun.run(CmdRun.groovy:376) - at nextflow.cli.Launcher.run(Launcher.groovy:503) - at nextflow.cli.Launcher.main(Launcher.groovy:658) diff --git a/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/params.json b/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/params.json deleted file mode 100644 index b523f71..0000000 --- a/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/params.json +++ /dev/null @@ -1 +0,0 @@ -{"nf_test_output":"/home/trace/projects/proteinannotator/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta"} \ No newline at end of file diff --git a/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/std.err b/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/std.err deleted file mode 100644 index 5890cc1..0000000 --- a/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/std.err +++ /dev/null @@ -1 +0,0 @@ -Nextflow 25.04.2 is available - Please consider updating your version to it(B diff --git a/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/std.out b/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/std.out deleted file mode 100644 index f90b6b5..0000000 --- a/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/std.out +++ /dev/null @@ -1,3 +0,0 @@ -ERROR ~ No such file or directory: Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf - - -- Check script '/home/trace/projects/proteinannotator/.nf-test-d44daec0656fd514e1f90b15d37109eb.nf' at line: 11 or see '/home/trace/projects/proteinannotator/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/nextflow.log' file for more details diff --git a/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/trace.csv b/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/trace.csv deleted file mode 100644 index 6b739ac..0000000 --- a/.nf-test/tests/d44daec0656fd514e1f90b15d37109eb/meta/trace.csv +++ /dev/null @@ -1 +0,0 @@ -task_id hash native_id name status exit submit duration realtime %cpu peak_rss peak_vmem rchar wchar diff --git a/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/mock.nf b/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/mock.nf deleted file mode 100644 index bc07c5e..0000000 --- a/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/mock.nf +++ /dev/null @@ -1,99 +0,0 @@ -import groovy.json.JsonGenerator -import groovy.json.JsonGenerator.Converter - -nextflow.enable.dsl=2 - -// comes from nf-test to store json files -params.nf_test_output = "" - -// include dependencies - -include { DIAMOND_MAKEDB } from '/home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf' - - -// include test process -include { DIAMOND_BLASTP } from '/home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../main.nf' - -// define custom rules for JSON that will be generated. -def jsonOutput = - new JsonGenerator.Options() - .addConverter(Path) { value -> value.toAbsolutePath().toString() } // Custom converter for Path. Only filename - .build() - -def jsonWorkflowOutput = new JsonGenerator.Options().excludeNulls().build() - - -workflow { - - // run dependencies - - { - def input = [] - - input[0] = [ [id:'test2'], [ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] ] - input[1] = [] - input[2] = [] - input[3] = [] - - DIAMOND_MAKEDB(*input) - } - - - // process mapping - def input = [] - - input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] - input[1] = DIAMOND_MAKEDB.out.db - input[2] = 100 - input[3] = [] - - //---- - - //run process - DIAMOND_BLASTP(*input) - - if (DIAMOND_BLASTP.output){ - - // consumes all named output channels and stores items in a json file - for (def name in DIAMOND_BLASTP.out.getNames()) { - serializeChannel(name, DIAMOND_BLASTP.out.getProperty(name), jsonOutput) - } - - // consumes all unnamed output channels and stores items in a json file - def array = DIAMOND_BLASTP.out as Object[] - for (def i = 0; i < array.length ; i++) { - serializeChannel(i, array[i], jsonOutput) - } - - } - -} - -def serializeChannel(name, channel, jsonOutput) { - def _name = name - def list = [ ] - channel.subscribe( - onNext: { - list.add(it) - }, - onComplete: { - def map = new HashMap() - map[_name] = list - def filename = "${params.nf_test_output}/output_${_name}.json" - new File(filename).text = jsonOutput.toJson(map) - } - ) -} - - -workflow.onComplete { - - def result = [ - success: workflow.success, - exitStatus: workflow.exitStatus, - errorMessage: workflow.errorMessage, - errorReport: workflow.errorReport - ] - new File("${params.nf_test_output}/workflow.json").text = jsonWorkflowOutput.toJson(result) - -} diff --git a/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/nextflow.log b/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/nextflow.log deleted file mode 100644 index e594051..0000000 --- a/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/nextflow.log +++ /dev/null @@ -1,169 +0,0 @@ -Jun-02 15:12:23.991 [main] DEBUG nextflow.cli.Launcher - $> nextflow -quiet -log /home/trace/projects/proteinannotator/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/nextflow.log run /home/trace/projects/proteinannotator/.nf-test-d5aff37838516a475af3455639858b2.nf -c /home/trace/projects/proteinannotator/nextflow.config -params-file /home/trace/projects/proteinannotator/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/params.json -ansi-log false -with-trace /home/trace/projects/proteinannotator/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/trace.csv -w /home/trace/projects/proteinannotator/.nf-test/tests/d5aff37838516a475af3455639858b2/work -Jun-02 15:12:24.115 [main] INFO nextflow.cli.CmdRun - N E X T F L O W ~ version 24.10.6 -Jun-02 15:12:24.152 [main] DEBUG nextflow.plugin.PluginsFacade - Setting up plugin manager > mode=prod; embedded=false; plugins-dir=/home/trace/.nextflow/plugins; core-plugins: nf-amazon@2.9.3,nf-azure@1.10.2,nf-cloudcache@0.4.2,nf-codecommit@0.2.2,nf-console@1.1.4,nf-google@1.15.4,nf-tower@1.9.3,nf-wave@1.7.5 -Jun-02 15:12:24.195 [main] INFO o.pf4j.DefaultPluginStatusProvider - Enabled plugins: [] -Jun-02 15:12:24.196 [main] INFO o.pf4j.DefaultPluginStatusProvider - Disabled plugins: [] -Jun-02 15:12:24.200 [main] INFO org.pf4j.DefaultPluginManager - PF4J version 3.12.0 in 'deployment' mode -Jun-02 15:12:24.221 [main] INFO org.pf4j.AbstractPluginManager - No plugins -Jun-02 15:12:24.265 [main] DEBUG nextflow.config.ConfigBuilder - Found config base: /home/trace/projects/proteinannotator/nextflow.config -Jun-02 15:12:24.274 [main] DEBUG nextflow.config.ConfigBuilder - User config file: /home/trace/projects/proteinannotator/nextflow.config -Jun-02 15:12:24.276 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config -Jun-02 15:12:24.277 [main] DEBUG nextflow.config.ConfigBuilder - Parsing config file: /home/trace/projects/proteinannotator/nextflow.config -Jun-02 15:12:24.329 [main] DEBUG n.secret.LocalSecretsProvider - Secrets store: /home/trace/.nextflow/secrets/store.json -Jun-02 15:12:24.338 [main] DEBUG nextflow.secret.SecretsLoader - Discovered secrets providers: [nextflow.secret.LocalSecretsProvider@2fb5fe30] - activable => nextflow.secret.LocalSecretsProvider@2fb5fe30 -Jun-02 15:12:24.374 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` -Jun-02 15:12:27.292 [main] DEBUG nextflow.config.ConfigBuilder - Applying config profile: `standard` -Jun-02 15:12:28.186 [main] DEBUG nextflow.cli.CmdRun - Applied DSL=2 from script declaration -Jun-02 15:12:28.210 [main] INFO nextflow.cli.CmdRun - Launching `/home/trace/projects/proteinannotator/.nf-test-d5aff37838516a475af3455639858b2.nf` [distracted_church] DSL2 - revision: 4d6eef58aa -Jun-02 15:12:28.212 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins declared=[nf-schema@2.3.0] -Jun-02 15:12:28.213 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins default=[] -Jun-02 15:12:28.213 [main] DEBUG nextflow.plugin.PluginsFacade - Plugins resolved requirement=[nf-schema@2.3.0] -Jun-02 15:12:28.214 [main] DEBUG nextflow.plugin.PluginUpdater - Installing plugin nf-schema version: 2.3.0 -Jun-02 15:12:28.222 [main] INFO org.pf4j.AbstractPluginManager - Plugin 'nf-schema@2.3.0' resolved -Jun-02 15:12:28.223 [main] INFO org.pf4j.AbstractPluginManager - Start plugin 'nf-schema@2.3.0' -Jun-02 15:12:28.233 [main] DEBUG nextflow.plugin.BasePlugin - Plugin started nf-schema@2.3.0 -Jun-02 15:12:28.318 [main] DEBUG nextflow.Session - Session UUID: b63e9229-8d83-4f53-ba14-3b51af4ab66a -Jun-02 15:12:28.319 [main] DEBUG nextflow.Session - Run name: distracted_church -Jun-02 15:12:28.320 [main] DEBUG nextflow.Session - Executor pool size: 8 -Jun-02 15:12:28.334 [main] DEBUG nextflow.file.FilePorter - File porter settings maxRetries=3; maxTransfers=50; pollTimeout=null -Jun-02 15:12:28.347 [main] DEBUG nextflow.util.ThreadPoolBuilder - Creating thread pool 'FileTransfer' minSize=10; maxSize=24; workQueue=LinkedBlockingQueue[-1]; allowCoreThreadTimeout=false -Jun-02 15:12:28.381 [main] DEBUG nextflow.cli.CmdRun - - Version: 24.10.6 build 5937 - Created: 23-04-2025 16:53 UTC (12:53 EDT) - System: Linux 6.1.0-33-amd64 - Runtime: Groovy 4.0.23 on OpenJDK 64-Bit Server VM 21.0.6-internal-adhoc.conda.src - Encoding: UTF-8 (UTF-8) - Process: 5784@lail-laptop [127.0.1.1] - CPUs: 8 - Mem: 7 GB (188.4 MB) - Swap: 977 MB (954 MB) -Jun-02 15:12:28.420 [main] DEBUG nextflow.Session - Work-dir: /home/trace/projects/proteinannotator/.nf-test/tests/d5aff37838516a475af3455639858b2/work [ext2/ext3] -Jun-02 15:12:28.420 [main] DEBUG nextflow.Session - Script base path does not exist or is not a directory: /home/trace/projects/proteinannotator/bin -Jun-02 15:12:28.439 [main] DEBUG nextflow.executor.ExecutorFactory - Extension executors providers=[] -Jun-02 15:12:28.453 [main] DEBUG nextflow.Session - Observer factory: DefaultObserverFactory -Jun-02 15:12:28.490 [main] DEBUG nextflow.Session - Observer factory: ValidationObserverFactory -Jun-02 15:12:28.619 [main] DEBUG nextflow.cache.CacheFactory - Using Nextflow cache factory: nextflow.cache.DefaultCacheFactory -Jun-02 15:12:28.632 [main] DEBUG nextflow.util.CustomThreadPool - Creating default thread pool > poolSize: 9; maxThreads: 1000 -Jun-02 15:12:28.717 [main] DEBUG nextflow.Session - Session start -Jun-02 15:12:28.722 [main] DEBUG nextflow.trace.TraceFileObserver - Workflow started -- trace file: /home/trace/projects/proteinannotator/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/trace.csv -Jun-02 15:12:29.063 [main] DEBUG nextflow.script.ScriptRunner - > Launching execution -Jun-02 15:12:29.087 [main] DEBUG nextflow.script.ScriptRunner - Parsed script files: - Script_8a784aaaa98e4d65: /home/trace/projects/proteinannotator/.nf-test-d5aff37838516a475af3455639858b2.nf -Jun-02 15:12:29.088 [main] DEBUG nextflow.Session - Session aborted -- Cause: Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf -Jun-02 15:12:29.093 [main] DEBUG nextflow.Session - -Thread[#9,Reference Handler,10,system] - java.base@21.0.6-internal/java.lang.ref.Reference.waitForReferencePendingList(Native Method) - java.base@21.0.6-internal/java.lang.ref.Reference.processPendingReferences(Reference.java:246) - java.base@21.0.6-internal/java.lang.ref.Reference$ReferenceHandler.run(Reference.java:208) - -Thread[#31,Keep-Alive-Timer,8,InnocuousThreadGroup] - java.base@21.0.6-internal/java.lang.Thread.sleep0(Native Method) - java.base@21.0.6-internal/java.lang.Thread.sleep(Thread.java:509) - java.base@21.0.6-internal/sun.net.www.http.KeepAliveCache.run(KeepAliveCache.java:238) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) - -Thread[#33,Thread-1,5,main] - java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) - java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) - java.base@21.0.6-internal/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1763) - java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.pollFirst(LinkedBlockingDeque.java:515) - java.base@21.0.6-internal/java.util.concurrent.LinkedBlockingDeque.poll(LinkedBlockingDeque.java:677) - app//nextflow.util.SimpleAgent.run(SimpleAgent.groovy:89) - java.base@21.0.6-internal/java.lang.invoke.LambdaForm$DMH/0x00007f72cc19bc00.invokeVirtual(LambdaForm$DMH) - java.base@21.0.6-internal/java.lang.invoke.LambdaForm$MH/0x00007f72cc48c800.invoke(LambdaForm$MH) - java.base@21.0.6-internal/java.lang.invoke.Invokers$Holder.invokeExact_MT(Invokers$Holder) - java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(DirectMethodHandleAccessor.java:153) - java.base@21.0.6-internal/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - java.base@21.0.6-internal/java.lang.reflect.Method.invoke(Method.java:580) - app//org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343) - app//groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:328) - app//groovy.lang.MetaClassImpl.doInvokeMethod(MetaClassImpl.java:1333) - app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1088) - app//groovy.lang.MetaClassImpl.invokeMethodClosure(MetaClassImpl.java:1017) - app//groovy.lang.MetaClassImpl.doInvokeMethod(MetaClassImpl.java:1207) - app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1088) - app//groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1007) - app//groovy.lang.Closure.call(Closure.java:433) - app//groovy.lang.Closure.call(Closure.java:412) - app//groovy.lang.Closure.run(Closure.java:505) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - -Thread[#34,Actor Thread 1,5,main] - java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) - java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.park(LockSupport.java:371) - java.base@21.0.6-internal/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:458) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.take(SynchronousQueue.java:318) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - -Thread[#18,Common-Cleaner,8,InnocuousThreadGroup] - java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) - java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269) - java.base@21.0.6-internal/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1852) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.await(ReferenceQueue.java:71) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:143) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:218) - java.base@21.0.6-internal/jdk.internal.ref.CleanerImpl.run(CleanerImpl.java:140) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) - -Thread[#32,process reaper,10,InnocuousThreadGroup] - java.base@21.0.6-internal/jdk.internal.misc.Unsafe.park(Native Method) - java.base@21.0.6-internal/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:410) - java.base@21.0.6-internal/java.util.concurrent.LinkedTransferQueue$DualNode.await(LinkedTransferQueue.java:452) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue$Transferer.xferLifo(SynchronousQueue.java:194) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.xfer(SynchronousQueue.java:235) - java.base@21.0.6-internal/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:338) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1069) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) - java.base@21.0.6-internal/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) - java.base@21.0.6-internal/java.lang.Thread.runWith(Thread.java:1596) - java.base@21.0.6-internal/java.lang.Thread.run(Thread.java:1583) - java.base@21.0.6-internal/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:186) - -Thread[#11,Signal Dispatcher,9,system] - -Thread[#10,Finalizer,8,system] - java.base@21.0.6-internal/java.lang.Object.wait0(Native Method) - java.base@21.0.6-internal/java.lang.Object.wait(Object.java:366) - java.base@21.0.6-internal/java.lang.Object.wait(Object.java:339) - java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.await(NativeReferenceQueue.java:48) - java.base@21.0.6-internal/java.lang.ref.ReferenceQueue.remove0(ReferenceQueue.java:158) - java.base@21.0.6-internal/java.lang.ref.NativeReferenceQueue.remove(NativeReferenceQueue.java:89) - java.base@21.0.6-internal/java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:173) - -Thread[#19,Notification Thread,9,system] - -Thread[#1,main,5,main] - java.base@21.0.6-internal/java.lang.Thread.dumpThreads(Native Method) - java.base@21.0.6-internal/java.lang.Thread.getAllStackTraces(Thread.java:2522) - app//nextflow.util.SysHelper.dumpThreads(SysHelper.groovy:188) - app//nextflow.Session.abort(Session.groovy:800) - app//nextflow.script.ScriptRunner.execute(ScriptRunner.groovy:149) - app//nextflow.cli.CmdRun.run(CmdRun.groovy:376) - app//nextflow.cli.Launcher.run(Launcher.groovy:503) - app//nextflow.cli.Launcher.main(Launcher.groovy:658) - -Jun-02 15:12:29.106 [main] ERROR nextflow.cli.Launcher - Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf -java.nio.file.NoSuchFileException: Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf - at nextflow.script.IncludeDef.realModulePath(IncludeDef.groovy:184) - at nextflow.script.IncludeDef.load0(IncludeDef.groovy:112) - at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) - at Script_8a784aaaa98e4d65.runScript(Script_8a784aaaa98e4d65:11) - at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) - at nextflow.script.BaseScript.run0(BaseScript.groovy:159) - at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) - at nextflow.script.BaseScript.run(BaseScript.groovy:209) - at nextflow.script.ScriptParser.runScript(ScriptParser.groovy:236) - at nextflow.script.ScriptRunner.run(ScriptRunner.groovy:243) - at nextflow.script.ScriptRunner.execute(ScriptRunner.groovy:138) - at nextflow.cli.CmdRun.run(CmdRun.groovy:376) - at nextflow.cli.Launcher.run(Launcher.groovy:503) - at nextflow.cli.Launcher.main(Launcher.groovy:658) diff --git a/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/params.json b/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/params.json deleted file mode 100644 index 7047556..0000000 --- a/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/params.json +++ /dev/null @@ -1 +0,0 @@ -{"nf_test_output":"/home/trace/projects/proteinannotator/.nf-test/tests/d5aff37838516a475af3455639858b2/meta"} \ No newline at end of file diff --git a/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/std.err b/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/std.err deleted file mode 100644 index 5890cc1..0000000 --- a/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/std.err +++ /dev/null @@ -1 +0,0 @@ -Nextflow 25.04.2 is available - Please consider updating your version to it(B diff --git a/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/std.out b/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/std.out deleted file mode 100644 index 50d252a..0000000 --- a/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/std.out +++ /dev/null @@ -1,3 +0,0 @@ -ERROR ~ No such file or directory: Can't find a matching module file for include: /home/trace/projects/proteinannotator/modules/nf-core/diamond/blastp/tests/../../makedb/main.nf - - -- Check script '/home/trace/projects/proteinannotator/.nf-test-d5aff37838516a475af3455639858b2.nf' at line: 11 or see '/home/trace/projects/proteinannotator/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/nextflow.log' file for more details diff --git a/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/trace.csv b/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/trace.csv deleted file mode 100644 index 6b739ac..0000000 --- a/.nf-test/tests/d5aff37838516a475af3455639858b2/meta/trace.csv +++ /dev/null @@ -1 +0,0 @@ -task_id hash native_id name status exit submit duration realtime %cpu peak_rss peak_vmem rchar wchar diff --git a/modules/nf-core/diamond/blastp/tests/main.nf.test b/modules/nf-core/diamond/blastp/tests/main.nf.test index 9211915..12dee61 100644 --- a/modules/nf-core/diamond/blastp/tests/main.nf.test +++ b/modules/nf-core/diamond/blastp/tests/main.nf.test @@ -29,7 +29,7 @@ nextflow_process { process { """ input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] - input[1] = DIAMOND_MAKEDB.out.db + input[1] = [ [id:'testdb'], DIAMOND_MAKEDB.out.db ] input[2] = 6 input[3] = 'qseqid qlen' """ diff --git a/subworkflows/local/functional_annotation/main.nf b/subworkflows/local/functional_annotation/main.nf index 81b899f..34a9e68 100644 --- a/subworkflows/local/functional_annotation/main.nf +++ b/subworkflows/local/functional_annotation/main.nf @@ -1,5 +1,5 @@ include { DIAMOND_BLASTP } from '../../../modules/nf-core/diamond/blastp/main' -include { DIAMOND_MAKEDB } from '../modules/nf-core/diamond/makedb/main' +include { DIAMOND_MAKEDB } from '../../../modules/nf-core/diamond/makedb/main' // include { BLAST_MAKEBLASTDB } from '../../../modules/nf-core/blast/makeblastdb/main' include { NCBIREFSEQDOWNLOAD } from '../../../modules/local/ncbirefseqdownload/main' From f12c61963257b8892682bcc13da99beb7551ea94 Mon Sep 17 00:00:00 2001 From: tracelail Date: Tue, 10 Jun 2025 13:41:01 -0400 Subject: [PATCH 08/59] removed blast/makeblastdb nf-core module and create local diamondpreparetaxa local module template. --- .nf-test.log | 136 ++---------------- modules.json | 35 +++-- .../local/diamondpreparetaxa/environment.yml | 10 ++ modules/local/diamondpreparetaxa/main.nf | 103 +++++++++++++ modules/local/diamondpreparetaxa/meta.yml | 68 +++++++++ .../diamondpreparetaxa/tests/main.nf.test | 73 ++++++++++ .../ncbirefseqdownload/environment.yml | 0 .../{local => }/ncbirefseqdownload/main.nf | 6 +- .../{local => }/ncbirefseqdownload/meta.yml | 0 .../ncbirefseqdownload/tests/main.nf.test | 0 .../nf-core/blast/makeblastdb/environment.yml | 7 - modules/nf-core/blast/makeblastdb/main.nf | 64 --------- modules/nf-core/blast/makeblastdb/meta.yml | 49 ------- .../blast/makeblastdb/tests/main.nf.test | 90 ------------ .../blast/makeblastdb/tests/main.nf.test.snap | 58 -------- .../blast/makeblastdb/tests/nextflow.config | 5 - subworkflows/local/diamond/main.nf | 63 ++++++++ subworkflows/local/diamond/meta.yml | 51 +++++++ subworkflows/local/diamond/tests/main.nf.test | 45 ++++++ 19 files changed, 446 insertions(+), 417 deletions(-) create mode 100644 modules/local/diamondpreparetaxa/environment.yml create mode 100644 modules/local/diamondpreparetaxa/main.nf create mode 100644 modules/local/diamondpreparetaxa/meta.yml create mode 100644 modules/local/diamondpreparetaxa/tests/main.nf.test rename modules/local/{local => }/ncbirefseqdownload/environment.yml (100%) rename modules/local/{local => }/ncbirefseqdownload/main.nf (99%) rename modules/local/{local => }/ncbirefseqdownload/meta.yml (100%) rename modules/local/{local => }/ncbirefseqdownload/tests/main.nf.test (100%) delete mode 100644 modules/nf-core/blast/makeblastdb/environment.yml delete mode 100644 modules/nf-core/blast/makeblastdb/main.nf delete mode 100644 modules/nf-core/blast/makeblastdb/meta.yml delete mode 100644 modules/nf-core/blast/makeblastdb/tests/main.nf.test delete mode 100644 modules/nf-core/blast/makeblastdb/tests/main.nf.test.snap delete mode 100644 modules/nf-core/blast/makeblastdb/tests/nextflow.config create mode 100644 subworkflows/local/diamond/main.nf create mode 100644 subworkflows/local/diamond/meta.yml create mode 100644 subworkflows/local/diamond/tests/main.nf.test diff --git a/.nf-test.log b/.nf-test.log index 687f769..4500005 100644 --- a/.nf-test.log +++ b/.nf-test.log @@ -1,127 +1,9 @@ -Jun-03 14:55:37.424 [main] INFO com.askimed.nf.test.App - nf-test 0.9.2 -Jun-03 14:55:37.447 [main] INFO com.askimed.nf.test.App - Arguments: [test, modules/nf-core/diamond/makedb] -Jun-03 14:55:38.680 [main] INFO com.askimed.nf.test.App - Nextflow Version: 24.10.6 -Jun-03 14:55:38.687 [main] WARN com.askimed.nf.test.commands.RunTestsCommand - No nf-test config file found. -Jun-03 14:55:38.724 [main] WARN com.askimed.nf.test.nextflow.NextflowScript - Module /home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/main.nf: Dependency '/home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/../../../modules/local/ncbirefseqdownload/main.nf' not found. -Jun-03 14:55:38.782 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Loaded 30 files from directory /home/trace/projects/proteinannotator in 0.09 sec -Jun-03 14:55:38.788 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Found 1 files containing tests. -Jun-03 14:55:38.789 [main] DEBUG com.askimed.nf.test.lang.dependencies.DependencyResolver - Found files: [/home/trace/projects/proteinannotator/modules/nf-core/diamond/makedb/tests/main.nf.test] -Jun-03 14:55:39.604 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Found 3 tests to execute. -Jun-03 14:55:39.605 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Started test plan -Jun-03 14:55:39.606 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Running testsuite 'Test Process DIAMOND_MAKEDB' from file '/home/trace/projects/proteinannotator/modules/nf-core/diamond/makedb/tests/main.nf.test'. -Jun-03 14:55:39.606 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test 'b2b060aa: Should build a DIAMOND db file from a fasta file without taxonomic information'. type: com.askimed.nf.test.lang.process.ProcessTest -Jun-03 14:55:47.813 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test 'b2b060aa: Should build a DIAMOND db file from a fasta file without taxonomic information' finished. status: FAILED -org.codehaus.groovy.runtime.powerassert.PowerAssertionError: 2 of 2 assertions failed - at com.askimed.nf.test.lang.extensions.GlobalMethods.assertAll(GlobalMethods.java:48) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107) - at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) - at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.invoke(StaticMetaMethodSite.java:44) - at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.callStatic(StaticMetaMethodSite.java:100) - at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:55) - at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:217) - at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:240) - at main_nf$_run_closure1$_closure2$_closure6.doCall(main.nf.test:28) - at main_nf$_run_closure1$_closure2$_closure6.doCall(main.nf.test) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107) - at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) - at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:274) - at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1030) - at groovy.lang.Closure.call(Closure.java:427) - at groovy.lang.Closure.call(Closure.java:406) - at com.askimed.nf.test.lang.TestCode.execute(TestCode.java:16) - at com.askimed.nf.test.lang.process.ProcessTest.execute(ProcessTest.java:171) - at com.askimed.nf.test.core.TestExecutionEngine.execute(TestExecutionEngine.java:165) - at com.askimed.nf.test.commands.RunTestsCommand.execute(RunTestsCommand.java:298) - at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:43) - at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:18) - at picocli.CommandLine.executeUserObject(CommandLine.java:1953) - at picocli.CommandLine.access$1300(CommandLine.java:145) - at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352) - at picocli.CommandLine$RunLast.handle(CommandLine.java:2346) - at picocli.CommandLine$RunLast.handle(CommandLine.java:2311) - at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179) - at picocli.CommandLine.execute(CommandLine.java:2078) - at com.askimed.nf.test.App.run(App.java:39) - at com.askimed.nf.test.App.main(App.java:46) -Jun-03 14:55:47.820 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test '1d5885bf: Should build a DIAMOND db file from a zipped fasta file without taxonomic information'. type: com.askimed.nf.test.lang.process.ProcessTest -Jun-03 14:55:56.016 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test '1d5885bf: Should build a DIAMOND db file from a zipped fasta file without taxonomic information' finished. status: FAILED -org.codehaus.groovy.runtime.powerassert.PowerAssertionError: 2 of 2 assertions failed - at com.askimed.nf.test.lang.extensions.GlobalMethods.assertAll(GlobalMethods.java:48) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107) - at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) - at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.invoke(StaticMetaMethodSite.java:44) - at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.callStatic(StaticMetaMethodSite.java:100) - at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:55) - at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:217) - at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:240) - at main_nf$_run_closure1$_closure3$_closure12.doCall(main.nf.test:53) - at main_nf$_run_closure1$_closure3$_closure12.doCall(main.nf.test) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107) - at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) - at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:274) - at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1030) - at groovy.lang.Closure.call(Closure.java:427) - at groovy.lang.Closure.call(Closure.java:406) - at com.askimed.nf.test.lang.TestCode.execute(TestCode.java:16) - at com.askimed.nf.test.lang.process.ProcessTest.execute(ProcessTest.java:171) - at com.askimed.nf.test.core.TestExecutionEngine.execute(TestExecutionEngine.java:165) - at com.askimed.nf.test.commands.RunTestsCommand.execute(RunTestsCommand.java:298) - at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:43) - at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:18) - at picocli.CommandLine.executeUserObject(CommandLine.java:1953) - at picocli.CommandLine.access$1300(CommandLine.java:145) - at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352) - at picocli.CommandLine$RunLast.handle(CommandLine.java:2346) - at picocli.CommandLine$RunLast.handle(CommandLine.java:2311) - at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179) - at picocli.CommandLine.execute(CommandLine.java:2078) - at com.askimed.nf.test.App.run(App.java:39) - at com.askimed.nf.test.App.main(App.java:46) -Jun-03 14:55:56.018 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test '38117492: Should build a DIAMOND db file from a fasta file with taxonomic information'. type: com.askimed.nf.test.lang.process.ProcessTest -Jun-03 14:56:04.375 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test '38117492: Should build a DIAMOND db file from a fasta file with taxonomic information' finished. status: FAILED -org.codehaus.groovy.runtime.powerassert.PowerAssertionError: 2 of 2 assertions failed - at com.askimed.nf.test.lang.extensions.GlobalMethods.assertAll(GlobalMethods.java:48) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107) - at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) - at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.invoke(StaticMetaMethodSite.java:44) - at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.callStatic(StaticMetaMethodSite.java:100) - at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:55) - at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:217) - at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:240) - at main_nf$_run_closure1$_closure4$_closure18.doCall(main.nf.test:78) - at main_nf$_run_closure1$_closure4$_closure18.doCall(main.nf.test) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107) - at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) - at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:274) - at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1030) - at groovy.lang.Closure.call(Closure.java:427) - at groovy.lang.Closure.call(Closure.java:406) - at com.askimed.nf.test.lang.TestCode.execute(TestCode.java:16) - at com.askimed.nf.test.lang.process.ProcessTest.execute(ProcessTest.java:171) - at com.askimed.nf.test.core.TestExecutionEngine.execute(TestExecutionEngine.java:165) - at com.askimed.nf.test.commands.RunTestsCommand.execute(RunTestsCommand.java:298) - at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:43) - at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:18) - at picocli.CommandLine.executeUserObject(CommandLine.java:1953) - at picocli.CommandLine.access$1300(CommandLine.java:145) - at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352) - at picocli.CommandLine$RunLast.handle(CommandLine.java:2346) - at picocli.CommandLine$RunLast.handle(CommandLine.java:2311) - at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179) - at picocli.CommandLine.execute(CommandLine.java:2078) - at com.askimed.nf.test.App.run(App.java:39) - at com.askimed.nf.test.App.main(App.java:46) -Jun-03 14:56:04.376 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Testsuite 'Test Process DIAMOND_MAKEDB' finished. snapshot file: false, skipped tests: false, failed tests: true -Jun-03 14:56:04.377 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Executed 3 tests. 3 tests failed. Done! +Jun-03 15:45:56.333 [main] INFO com.askimed.nf.test.App - nf-test 0.9.2 +Jun-03 15:45:56.355 [main] INFO com.askimed.nf.test.App - Arguments: [test, modules/nf-core/diamond/makedb/tests/main.nf.test, --verbose] +Jun-03 15:45:57.446 [main] INFO com.askimed.nf.test.App - Nextflow Version: 24.10.6 +Jun-03 15:45:57.448 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Load config from file /home/trace/projects/proteinannotator/nf-test.config... +Jun-03 15:45:58.181 [main] WARN com.askimed.nf.test.nextflow.NextflowScript - Module /home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/main.nf: Dependency '/home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/../../../modules/local/ncbirefseqdownload/main.nf' not found. +Jun-03 15:45:58.229 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Loaded 9 files from directory /home/trace/projects/proteinannotator in 0.074 sec +Jun-03 15:45:58.230 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Found 0 files containing tests. +Jun-03 15:45:58.231 [main] DEBUG com.askimed.nf.test.lang.dependencies.DependencyResolver - Found files: [] +Jun-03 15:45:58.233 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Found 0 tests to execute. diff --git a/modules.json b/modules.json index 9f87ea6..84207d1 100644 --- a/modules.json +++ b/modules.json @@ -5,30 +5,33 @@ "https://github.com/nf-core/modules.git": { "modules": { "nf-core": { - "blast/makeblastdb": { - "branch": "master", - "git_sha": "c7a7f06819adcf6f922e11b47f308b7c74484d67", - "installed_by": ["modules"] - }, "diamond/blastp": { "branch": "master", "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "diamond/makedb": { "branch": "master", "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "multiqc": { "branch": "master", "git_sha": "f0719ae309075ae4a291533883847c3f7c441dad", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "seqkit/stats": { "branch": "master", "git_sha": "81880787133db07d9b4c1febd152c090eb8325dc", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] } } }, @@ -37,20 +40,26 @@ "utils_nextflow_pipeline": { "branch": "master", "git_sha": "c2b22d85f30a706a3073387f30380704fcae013b", - "installed_by": ["subworkflows"] + "installed_by": [ + "subworkflows" + ] }, "utils_nfcore_pipeline": { "branch": "master", "git_sha": "51ae5406a030d4da1e49e4dab49756844fdd6c7a", - "installed_by": ["subworkflows"] + "installed_by": [ + "subworkflows" + ] }, "utils_nfschema_plugin": { "branch": "master", "git_sha": "2fd2cd6d0e7b273747f32e465fdc6bcc3ae0814e", - "installed_by": ["subworkflows"] + "installed_by": [ + "subworkflows" + ] } } } } } -} +} \ No newline at end of file diff --git a/modules/local/diamondpreparetaxa/environment.yml b/modules/local/diamondpreparetaxa/environment.yml new file mode 100644 index 0000000..32bc330 --- /dev/null +++ b/modules/local/diamondpreparetaxa/environment.yml @@ -0,0 +1,10 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + # TODO nf-core: List required Conda package(s). + # Software MUST be pinned to channel (i.e. "bioconda"), version (i.e. "1.10"). + # For Conda, the build (i.e. "h9402c20_2") must be EXCLUDED to support installation on different operating systems. + - "YOUR-TOOL-HERE" diff --git a/modules/local/diamondpreparetaxa/main.nf b/modules/local/diamondpreparetaxa/main.nf new file mode 100644 index 0000000..3bb3a9b --- /dev/null +++ b/modules/local/diamondpreparetaxa/main.nf @@ -0,0 +1,103 @@ +// TODO nf-core: If in doubt look at other nf-core/modules to see how we are doing things! :) +// https://github.com/nf-core/modules/tree/master/modules/nf-core/ +// You can also ask for help via your pull request or on the #modules channel on the nf-core Slack workspace: +// https://nf-co.re/join +// TODO nf-core: A module file SHOULD only define input and output files as command-line parameters. +// All other parameters MUST be provided using the "task.ext" directive, see here: +// https://www.nextflow.io/docs/latest/process.html#ext +// where "task.ext" is a string. +// Any parameters that need to be evaluated in the context of a particular sample +// e.g. single-end/paired-end data MUST also be defined and evaluated appropriately. +// TODO nf-core: Software that can be piped together SHOULD be added to separate module files +// unless there is a run-time, storage advantage in implementing in this way +// e.g. it's ok to have a single module for bwa to output BAM instead of SAM: +// bwa mem | samtools view -B -T ref.fasta +// TODO nf-core: Optional inputs are not currently supported by Nextflow. However, using an empty +// list (`[]`) instead of a file can be used to work around this issue. + +process DIAMONDPREPARETAXA { + // tag "${taxondmp_zip.baseName}" + // label "process_low" + + // publishDir "${params.outdir}/ncbi_refseq/", mode: 'copy' + + // input: + // file(taxondmp_zip) from ch_diamond_taxdmp_zip + + // output: + // file("nodes.dmp") into ch_diamond_taxonnodes + // file("names.dmp") into ch_diamond_taxonnames + + // script: + // """ + // 7z x ${taxondmp_zip} + // """ + + tag "$meta.id" + label 'process_low' + + // TODO nf-core: See section in main README for further information regarding finding and adding container addresses to the section below. + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/YOUR-TOOL-HERE': + 'biocontainers/YOUR-TOOL-HERE' }" + + input:// TODO nf-core: Where applicable all sample-specific information e.g. "id", "single_end", "read_group" + // MUST be provided as an input via a Groovy Map called "meta". + // This information may not be required in some instances e.g. indexing reference genome files: + // https://github.com/nf-core/modules/blob/master/modules/nf-core/bwa/index/main.nf + // TODO nf-core: Where applicable please provide/convert compressed files as input/output + // e.g. "*.fastq.gz" and NOT "*.fastq", "*.bam" and NOT "*.sam" etc. + tuple val(meta), path(bam) + + output: + // TODO nf-core: Named file extensions MUST be emitted for ALL output channels + tuple val(meta), path("*.bam"), emit: bam + // TODO nf-core: List additional required output channels/values here + 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}" + // TODO nf-core: Where possible, a command MUST be provided to obtain the version number of the software e.g. 1.10 + // If the software is unable to output a version number on the command-line then it can be manually specified + // e.g. https://github.com/nf-core/modules/blob/master/modules/nf-core/homer/annotatepeaks/main.nf + // Each software used MUST provide the software name and version number in the YAML version file (versions.yml) + // TODO nf-core: It MUST be possible to pass additional parameters to the tool as a command-line string via the "task.ext.args" directive + // TODO nf-core: If the tool supports multi-threading then you MUST provide the appropriate parameter + // using the Nextflow "task" variable e.g. "--threads $task.cpus" + // TODO nf-core: Please replace the example samtools command below with your module's command + // TODO nf-core: Please indent the command appropriately (4 spaces!!) to help with readability ;) + """ + diamondpreparetaxa \\ + $args \\ + -@ $task.cpus \\ + -o ${prefix}.bam \\ + $bam + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + diamondpreparetaxa: \$(diamondpreparetaxa --version) + END_VERSIONS + """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + // TODO nf-core: A stub section should mimic the execution of the original module as best as possible + // Have a look at the following examples: + // Simple example: https://github.com/nf-core/modules/blob/818474a292b4860ae8ff88e149fbcda68814114d/modules/nf-core/bcftools/annotate/main.nf#L47-L63 + // Complex example: https://github.com/nf-core/modules/blob/818474a292b4860ae8ff88e149fbcda68814114d/modules/nf-core/bedtools/split/main.nf#L38-L54 + """ + + touch ${prefix}.bam + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + diamondpreparetaxa: \$(diamondpreparetaxa --version) + END_VERSIONS + """ +} diff --git a/modules/local/diamondpreparetaxa/meta.yml b/modules/local/diamondpreparetaxa/meta.yml new file mode 100644 index 0000000..3339002 --- /dev/null +++ b/modules/local/diamondpreparetaxa/meta.yml @@ -0,0 +1,68 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json +name: "diamondpreparetaxa" +## TODO nf-core: Add a description of the module and list keywords +description: write your description here +keywords: + - sort + - example + - genomics +tools: + - "diamondpreparetaxa": + ## TODO nf-core: Add a description and other details for the software below + description: "" + homepage: "" + documentation: "" + tool_dev_url: "" + doi: "" + licence: + identifier: + +## TODO nf-core: Add a description of all of the variables used as input +input: + # Only when we have meta + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1' ]` + + ## TODO nf-core: Delete / customise this example input + - bam: + type: file + description: Sorted BAM/CRAM/SAM file + pattern: "*.{bam,cram,sam}" + ontologies: + - edam: "http://edamontology.org/format_2572" # BAM + - edam: "http://edamontology.org/format_2573" # CRAM + - edam: "http://edamontology.org/format_3462" # SAM + +## TODO nf-core: Add a description of all of the variables used as output +output: + - bam: + #Only when we have meta + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1' ]` + ## TODO nf-core: Delete / customise this example output + - "*.bam": + type: file + description: Sorted BAM/CRAM/SAM file + pattern: "*.{bam,cram,sam}" + ontologies: + - edam: "http://edamontology.org/format_2572" # BAM + - edam: "http://edamontology.org/format_2573" # CRAM + - edam: "http://edamontology.org/format_3462" # SAM + + - versions: + - "versions.yml": + type: file + description: File containing software versions + pattern: "versions.yml" + +authors: + - "@tracelail" +maintainers: + - "@tracelail" diff --git a/modules/local/diamondpreparetaxa/tests/main.nf.test b/modules/local/diamondpreparetaxa/tests/main.nf.test new file mode 100644 index 0000000..45e905f --- /dev/null +++ b/modules/local/diamondpreparetaxa/tests/main.nf.test @@ -0,0 +1,73 @@ +// TODO nf-core: Once you have added the required tests, please run the following command to build this file: +// nf-core modules test diamondpreparetaxa +nextflow_process { + + name "Test Process DIAMONDPREPARETAXA" + script "../main.nf" + process "DIAMONDPREPARETAXA" + + tag "modules" + tag "modules_" + tag "diamondpreparetaxa" + + // TODO nf-core: Change the test name preferably indicating the test-data and file-format used + test("sarscov2 - bam") { + + // TODO nf-core: If you are created a test for a chained module + // (the module requires running more than one process to generate the required output) + // add the 'setup' method here. + // You can find more information about how to use a 'setup' method in the docs (https://nf-co.re/docs/contributing/modules#steps-for-creating-nf-test-for-chained-modules). + + when { + process { + """ + // TODO nf-core: define inputs of the process here. Example: + + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + //TODO nf-core: Add all required assertions to verify the test output. + // See https://nf-co.re/docs/contributing/tutorials/nf-test_assertions for more information and examples. + ) + } + + } + + // TODO nf-core: Change the test name preferably indicating the test-data and file-format used but keep the " - stub" suffix. + test("sarscov2 - bam - stub") { + + options "-stub" + + when { + process { + """ + // TODO nf-core: define inputs of the process here. Example: + + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + //TODO nf-core: Add all required assertions to verify the test output. + ) + } + + } + +} diff --git a/modules/local/local/ncbirefseqdownload/environment.yml b/modules/local/ncbirefseqdownload/environment.yml similarity index 100% rename from modules/local/local/ncbirefseqdownload/environment.yml rename to modules/local/ncbirefseqdownload/environment.yml diff --git a/modules/local/local/ncbirefseqdownload/main.nf b/modules/local/ncbirefseqdownload/main.nf similarity index 99% rename from modules/local/local/ncbirefseqdownload/main.nf rename to modules/local/ncbirefseqdownload/main.nf index 7b657b3..3f9cfb4 100644 --- a/modules/local/local/ncbirefseqdownload/main.nf +++ b/modules/local/ncbirefseqdownload/main.nf @@ -84,8 +84,6 @@ process NCBIREFSEQDOWNLOAD { END_VERSIONS """ - """ - stub: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" @@ -97,8 +95,8 @@ process NCBIREFSEQDOWNLOAD { touch refseq_fastas.fa.gz cat <<-END_VERSIONS > versions.yml - "${task.process}": + "${task.process}" rsync: "stub" END_VERSIONS """ -} +} \ No newline at end of file diff --git a/modules/local/local/ncbirefseqdownload/meta.yml b/modules/local/ncbirefseqdownload/meta.yml similarity index 100% rename from modules/local/local/ncbirefseqdownload/meta.yml rename to modules/local/ncbirefseqdownload/meta.yml diff --git a/modules/local/local/ncbirefseqdownload/tests/main.nf.test b/modules/local/ncbirefseqdownload/tests/main.nf.test similarity index 100% rename from modules/local/local/ncbirefseqdownload/tests/main.nf.test rename to modules/local/ncbirefseqdownload/tests/main.nf.test diff --git a/modules/nf-core/blast/makeblastdb/environment.yml b/modules/nf-core/blast/makeblastdb/environment.yml deleted file mode 100644 index 8fb1f8a..0000000 --- a/modules/nf-core/blast/makeblastdb/environment.yml +++ /dev/null @@ -1,7 +0,0 @@ ---- -# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json -channels: - - conda-forge - - bioconda -dependencies: - - bioconda::blast=2.16.0 diff --git a/modules/nf-core/blast/makeblastdb/main.nf b/modules/nf-core/blast/makeblastdb/main.nf deleted file mode 100644 index 796c7be..0000000 --- a/modules/nf-core/blast/makeblastdb/main.nf +++ /dev/null @@ -1,64 +0,0 @@ -process BLAST_MAKEBLASTDB { - tag "$meta.id" - label 'process_medium' - - conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/blast:2.16.0--h66d330f_5': - 'biocontainers/blast:2.16.0--h66d330f_5' }" - - input: - tuple val(meta), path(fasta) - - output: - tuple val(meta), path("${prefix}"), emit: db - 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}" - def is_compressed = fasta.getExtension() == "gz" ? true : false - def fasta_name = is_compressed ? fasta.getBaseName() : fasta - """ - if [ "${is_compressed}" == "true" ]; then - gzip -c -d ${fasta} > ${fasta_name} - fi - - makeblastdb \\ - -in ${fasta_name} \\ - -out ${prefix}/${fasta_name} \\ - ${args} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - blast: \$(makeblastdb -version 2>&1 | sed 's/^.*makeblastdb: //; s/ .*\$//') - END_VERSIONS - """ - - stub: - def args = task.ext.args ?: '' - prefix = task.ext.prefix ?: "${meta.id}" - def is_compressed = fasta.getExtension() == "gz" ? true : false - def fasta_name = is_compressed ? fasta.getBaseName() : fasta - """ - touch ${fasta_name}.fasta - touch ${fasta_name}.fasta.ndb - touch ${fasta_name}.fasta.nhr - touch ${fasta_name}.fasta.nin - touch ${fasta_name}.fasta.njs - touch ${fasta_name}.fasta.not - touch ${fasta_name}.fasta.nsq - touch ${fasta_name}.fasta.ntf - touch ${fasta_name}.fasta.nto - mkdir ${prefix} - mv ${fasta_name}* ${prefix} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - blast: \$(makeblastdb -version 2>&1 | sed 's/^.*makeblastdb: //; s/ .*\$//') - END_VERSIONS - """ -} diff --git a/modules/nf-core/blast/makeblastdb/meta.yml b/modules/nf-core/blast/makeblastdb/meta.yml deleted file mode 100644 index 3b50654..0000000 --- a/modules/nf-core/blast/makeblastdb/meta.yml +++ /dev/null @@ -1,49 +0,0 @@ -name: blast_makeblastdb -description: Builds a BLAST database -keywords: - - fasta - - blast - - database -tools: - - blast: - description: | - BLAST finds regions of similarity between biological sequences. - homepage: https://blast.ncbi.nlm.nih.gov/Blast.cgi - documentation: https://blast.ncbi.nlm.nih.gov/Blast.cgi?CMD=Web&PAGE_TYPE=Blastdocs - doi: 10.1016/S0022-2836(05)80360-2 - licence: ["US-Government-Work"] - identifier: "" -input: - - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - fasta: - type: file - description: Input fasta file - pattern: "*.{fa,fasta,fa.gz,fasta.gz}" -output: - - db: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - ${prefix}: - type: directory - description: Output directory containing blast database files - pattern: "*" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" -authors: - - "@joseespinosa" - - "@drpatelh" -maintainers: - - "@joseespinosa" - - "@drpatelh" - - "@vagkaratzas" - - "@DLBPointon" diff --git a/modules/nf-core/blast/makeblastdb/tests/main.nf.test b/modules/nf-core/blast/makeblastdb/tests/main.nf.test deleted file mode 100644 index b822689..0000000 --- a/modules/nf-core/blast/makeblastdb/tests/main.nf.test +++ /dev/null @@ -1,90 +0,0 @@ -nextflow_process { - - name "Test Process BLAST_MAKEBLASTDB" - script "../main.nf" - process "BLAST_MAKEBLASTDB" - config "./nextflow.config" - tag "modules" - tag "modules_nfcore" - tag "blast" - tag "blast/makeblastdb" - - test("Should build a blast db folder from a fasta file") { - - when { - process { - """ - input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] - """ - } - } - - then { - assertAll( - { assert process.success }, - { - assert process.out.db.size() == 1 - - def all_files = ( new File(process.out.db[0][1]) ).listFiles() - def stable_file_names = [ - 'genome.fasta.ndb', - 'genome.fasta.nhr', - 'genome.fasta.not', - 'genome.fasta.nsq', - 'genome.fasta.ntf', - 'genome.fasta.nto' - ] - - def stable_files = all_files.findAll { it.name in stable_file_names }.toSorted() - - assert snapshot( - all_files.collect { it.name }.toSorted(), - stable_files, - process.out.versions[0] - ).match() - } - ) - } - - } - - test("Should build a blast db folder from a zipped fasta file") { - - when { - process { - """ - input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.gz', checkIfExists: true) ] - """ - } - } - - then { - assertAll( - { assert process.success }, - { - assert process.out.db.size() == 1 - - def all_files = ( new File(process.out.db[0][1]) ).listFiles() - def stable_file_names = [ - 'genome.fasta.ndb', - 'genome.fasta.nhr', - 'genome.fasta.not', - 'genome.fasta.nsq', - 'genome.fasta.ntf', - 'genome.fasta.nto' - ] - - def stable_files = all_files.findAll { it.name in stable_file_names }.toSorted() - - assert snapshot( - all_files.collect { it.name }.toSorted(), - stable_files, - process.out.versions[0] - ).match() - } - ) - } - - } - -} diff --git a/modules/nf-core/blast/makeblastdb/tests/main.nf.test.snap b/modules/nf-core/blast/makeblastdb/tests/main.nf.test.snap deleted file mode 100644 index 8154acb..0000000 --- a/modules/nf-core/blast/makeblastdb/tests/main.nf.test.snap +++ /dev/null @@ -1,58 +0,0 @@ -{ - "Should build a blast db folder from a fasta file": { - "content": [ - [ - "genome.fasta.ndb", - "genome.fasta.nhr", - "genome.fasta.nin", - "genome.fasta.njs", - "genome.fasta.not", - "genome.fasta.nsq", - "genome.fasta.ntf", - "genome.fasta.nto" - ], - [ - "genome.fasta.ndb:md5,0d553c830656469211de113c5022f06d", - "genome.fasta.nhr:md5,f4b4ddb034fd3dd7b25c89e9d50c004e", - "genome.fasta.not:md5,1e53e9d08f1d23af0299cfa87478a7bb", - "genome.fasta.nsq:md5,982cbc7d9e38743b9b1037588862b9da", - "genome.fasta.ntf:md5,de1250813f0c7affc6d12dac9d0fb6bb", - "genome.fasta.nto:md5,33cdeccccebe80329f1fdbee7f5874cb" - ], - "versions.yml:md5,91a8afa89354bef8a3c127cafaf1f46d" - ], - "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.5" - }, - "timestamp": "2025-04-12T09:03:14.830721389" - }, - "Should build a blast db folder from a zipped fasta file": { - "content": [ - [ - "genome.fasta.ndb", - "genome.fasta.nhr", - "genome.fasta.nin", - "genome.fasta.njs", - "genome.fasta.not", - "genome.fasta.nsq", - "genome.fasta.ntf", - "genome.fasta.nto" - ], - [ - "genome.fasta.ndb:md5,0d553c830656469211de113c5022f06d", - "genome.fasta.nhr:md5,f4b4ddb034fd3dd7b25c89e9d50c004e", - "genome.fasta.not:md5,1e53e9d08f1d23af0299cfa87478a7bb", - "genome.fasta.nsq:md5,982cbc7d9e38743b9b1037588862b9da", - "genome.fasta.ntf:md5,de1250813f0c7affc6d12dac9d0fb6bb", - "genome.fasta.nto:md5,33cdeccccebe80329f1fdbee7f5874cb" - ], - "versions.yml:md5,91a8afa89354bef8a3c127cafaf1f46d" - ], - "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.5" - }, - "timestamp": "2025-04-12T09:03:23.653118873" - } -} \ No newline at end of file diff --git a/modules/nf-core/blast/makeblastdb/tests/nextflow.config b/modules/nf-core/blast/makeblastdb/tests/nextflow.config deleted file mode 100644 index 0899289..0000000 --- a/modules/nf-core/blast/makeblastdb/tests/nextflow.config +++ /dev/null @@ -1,5 +0,0 @@ -process { - withName: BLAST_MAKEBLASTDB { - ext.args = '-dbtype nucl' - } -} diff --git a/subworkflows/local/diamond/main.nf b/subworkflows/local/diamond/main.nf new file mode 100644 index 0000000..4ad763c --- /dev/null +++ b/subworkflows/local/diamond/main.nf @@ -0,0 +1,63 @@ +// TODO nf-core: If in doubt look at other nf-core/subworkflows to see how we are doing things! :) +// https://github.com/nf-core/modules/tree/master/subworkflows +// You can also ask for help via your pull request or on the #subworkflows channel on the nf-core Slack workspace: +// https://nf-co.re/join +// TODO nf-core: A subworkflow SHOULD import at least two modules +include { NCBIREFSEQDOWNLOAD } from '../../../modules/local/ncbirefseqdownload/main' +include { DIAMOND_MAKEDB } from '../../../modules/nf-core/diamond/makedb/main' +include { DIAMOND_BLASTP } from '../../../modules/nf-core/diamond/blastp/main' + +workflow DIAMOND { + take: + ch_fasta // channel: [ val(meta), [ fasta ] ] + + main: + + ch_versions = Channel.empty() + + // TODO nf-core: substitute modules here for the modules of your subworkflow + NCBIREFSEQDOWNLOAD() // may need to include an input, currently uses default categories def categories = task.ext.categories ?: ['vertebrate_mammalian', 'vertebrate_other', 'invertebrate'] + ch_diamond_reference_fasta = NCBIREFSEQDOWNLOAD.out.fasta + ch_versions = ch_versions.mix(NCBIREFSEQDOWNLOAD.out.versions.first()) + + DIAMOND_MAKEDB ( + ch_diamond_reference_fasta, + ) + + ch_diamond_db = DIAMOND_MAKEDB.out.db + ch_versions = ch_versions.mix(DIAMOND_MAKEDB.out.versions.first()) + + + //ch_diamond_db = Channel.of( [ [id:"diamond_db"], file(params.diamond_db, checkIfExists: true) ] ) + + DIAMOND_BLASTP ( + ch_fasta, + ch_diamond_db, + params.diamond_outfmt, + params.diamond_blast_columns, + ) + ch_versions = ch_versions.mix(DIAMOND_BLASTP.out.versions.first()) + + // Create a multifasta, with one fasta per entry, add the sequence ID to the meta id + ch_fasta + .map { + meta, fasta -> + [ + [id:"${meta.id}_${fasta.splitFasta(record: [id: true]).id[0].replaceAll(/\|/, '-')}"] , + fasta.splitFasta(file:true) + ] + } + .transpose() + .set { ch_multifasta } + + // + // SUBWORKFLOW: Annotator Name + // + + emit: + // TODO nf-core: edit emitted channels + ch_diamond_tsv = DIAMOND_BLASTP.out.tsv // channel: [ val(meta)] + + multifasta = ch_multifasta + versions = ch_versions // channel: [ versions.yml ] +} diff --git a/subworkflows/local/diamond/meta.yml b/subworkflows/local/diamond/meta.yml new file mode 100644 index 0000000..ad60554 --- /dev/null +++ b/subworkflows/local/diamond/meta.yml @@ -0,0 +1,51 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/subworkflows/yaml-schema.json +name: "diamond" +## TODO nf-core: Add a description of the subworkflow and list keywords +description: Sort SAM/BAM/CRAM file +keywords: + - sort + - bam + - sam + - cram +## TODO nf-core: Add a list of the modules and/or subworkflows used in the subworkflow +components: + - samtools/sort + - samtools/index +## TODO nf-core: List all of the channels used as input with a description and their structure +input: + - ch_bam: + type: file + description: | + The input channel containing the BAM/CRAM/SAM files + Structure: [ val(meta), path(bam) ] + pattern: "*.{bam/cram/sam}" +## TODO nf-core: List all of the channels used as output with a descriptions and their structure +output: + - bam: + type: file + description: | + Channel containing BAM files + Structure: [ val(meta), path(bam) ] + pattern: "*.bam" + - bai: + type: file + description: | + Channel containing indexed BAM (BAI) files + Structure: [ val(meta), path(bai) ] + pattern: "*.bai" + - csi: + type: file + description: | + Channel containing CSI files + Structure: [ val(meta), path(csi) ] + pattern: "*.csi" + - versions: + type: file + description: | + File containing software versions + Structure: [ path(versions.yml) ] + pattern: "versions.yml" +authors: + - "@tracelail" +maintainers: + - "@tracelail" diff --git a/subworkflows/local/diamond/tests/main.nf.test b/subworkflows/local/diamond/tests/main.nf.test new file mode 100644 index 0000000..ea718b1 --- /dev/null +++ b/subworkflows/local/diamond/tests/main.nf.test @@ -0,0 +1,45 @@ +// TODO nf-core: Once you have added the required tests, please run the following command to build this file: +// nf-core subworkflows test diamond +nextflow_workflow { + + name "Test Subworkflow DIAMOND" + script "../main.nf" + workflow "DIAMOND" + + tag "subworkflows" + tag "subworkflows_" + tag "subworkflows/diamond" + // TODO nf-core: Add tags for all modules used within this subworkflow. Example: + tag "samtools" + tag "samtools/sort" + tag "samtools/index" + + + // TODO nf-core: Change the test name preferably indicating the test-data and file-format used + test("sarscov2 - bam - single_end") { + + when { + workflow { + """ + // TODO nf-core: define inputs of the workflow here. Example: + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + ] + input[1] = [ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + ] + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot(workflow.out).match()} + //TODO nf-core: Add all required assertions to verify the test output. + ) + } + } +} From 4f4db82c2525e6a90289af7fc8c0755a855380a7 Mon Sep 17 00:00:00 2001 From: tracelail Date: Tue, 17 Jun 2025 14:08:00 -0400 Subject: [PATCH 09/59] finished up writing the ncbirefseqdownload process for the first draft and wrote an initial main.nf.test for the process --- .nf-test.log | 57 +++++++++++-- modules/local/diamondpreparetaxa/main.nf | 39 ++++----- modules/local/ncbirefseqdownload/main.nf | 84 ++++++------------- .../ncbirefseqdownload/tests/main.nf.test | 68 ++++----------- 4 files changed, 105 insertions(+), 143 deletions(-) diff --git a/.nf-test.log b/.nf-test.log index 4500005..14160f0 100644 --- a/.nf-test.log +++ b/.nf-test.log @@ -1,9 +1,48 @@ -Jun-03 15:45:56.333 [main] INFO com.askimed.nf.test.App - nf-test 0.9.2 -Jun-03 15:45:56.355 [main] INFO com.askimed.nf.test.App - Arguments: [test, modules/nf-core/diamond/makedb/tests/main.nf.test, --verbose] -Jun-03 15:45:57.446 [main] INFO com.askimed.nf.test.App - Nextflow Version: 24.10.6 -Jun-03 15:45:57.448 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Load config from file /home/trace/projects/proteinannotator/nf-test.config... -Jun-03 15:45:58.181 [main] WARN com.askimed.nf.test.nextflow.NextflowScript - Module /home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/main.nf: Dependency '/home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/../../../modules/local/ncbirefseqdownload/main.nf' not found. -Jun-03 15:45:58.229 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Loaded 9 files from directory /home/trace/projects/proteinannotator in 0.074 sec -Jun-03 15:45:58.230 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Found 0 files containing tests. -Jun-03 15:45:58.231 [main] DEBUG com.askimed.nf.test.lang.dependencies.DependencyResolver - Found files: [] -Jun-03 15:45:58.233 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Found 0 tests to execute. +Jun-17 13:16:46.584 [main] INFO com.askimed.nf.test.App - nf-test 0.9.2 +Jun-17 13:16:46.607 [main] INFO com.askimed.nf.test.App - Arguments: [test, modules/local/ncbirefseqdownload/tests/main.nf.test] +Jun-17 13:16:47.649 [main] INFO com.askimed.nf.test.App - Nextflow Version: 24.10.6 +Jun-17 13:16:47.653 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Load config from file /home/trace/projects/proteinannotator/nf-test.config... +Jun-17 13:16:48.206 [main] WARN com.askimed.nf.test.nextflow.NextflowScript - Module /home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/main.nf: Dependency '/home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/../../../modules/nf-core/blast/makeblastdb/main.nf' not found. +Jun-17 13:16:48.252 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Loaded 13 files from directory /home/trace/projects/proteinannotator in 0.063 sec +Jun-17 13:16:48.254 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Found 1 files containing tests. +Jun-17 13:16:48.254 [main] DEBUG com.askimed.nf.test.lang.dependencies.DependencyResolver - Found files: [/home/trace/projects/proteinannotator/modules/local/ncbirefseqdownload/tests/main.nf.test] +Jun-17 13:16:48.385 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Found 1 tests to execute. +Jun-17 13:16:48.386 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Started test plan +Jun-17 13:16:48.386 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Running testsuite 'Test Process NCBIREFSEQDOWNLOAD' from file '/home/trace/projects/proteinannotator/modules/local/ncbirefseqdownload/tests/main.nf.test'. +Jun-17 13:16:48.386 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test '7e996768: Should download ncbi refseq 'other' zipped protein fasta'. type: com.askimed.nf.test.lang.process.ProcessTest +Jun-17 13:16:54.487 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test '7e996768: Should download ncbi refseq 'other' zipped protein fasta' finished. status: FAILED +org.codehaus.groovy.runtime.powerassert.PowerAssertionError: assert process.success + | | + | false + NCBIREFSEQDOWNLOAD + at org.codehaus.groovy.runtime.InvokerHelper.assertFailed(InvokerHelper.java:432) + at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.assertFailed(ScriptBytecodeAdapter.java:670) + at main_nf$_run_closure1$_closure2$_closure4.doCall(main.nf.test:22) + at main_nf$_run_closure1$_closure2$_closure4.doCall(main.nf.test) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:569) + at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107) + at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) + at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:274) + at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1030) + at groovy.lang.Closure.call(Closure.java:427) + at groovy.lang.Closure.call(Closure.java:406) + at com.askimed.nf.test.lang.TestCode.execute(TestCode.java:16) + at com.askimed.nf.test.lang.process.ProcessTest.execute(ProcessTest.java:171) + at com.askimed.nf.test.core.TestExecutionEngine.execute(TestExecutionEngine.java:165) + at com.askimed.nf.test.commands.RunTestsCommand.execute(RunTestsCommand.java:298) + at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:43) + at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:18) + at picocli.CommandLine.executeUserObject(CommandLine.java:1953) + at picocli.CommandLine.access$1300(CommandLine.java:145) + at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2346) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2311) + at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179) + at picocli.CommandLine.execute(CommandLine.java:2078) + at com.askimed.nf.test.App.run(App.java:39) + at com.askimed.nf.test.App.main(App.java:46) +Jun-17 13:16:54.492 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Testsuite 'Test Process NCBIREFSEQDOWNLOAD' finished. snapshot file: false, skipped tests: false, failed tests: true +Jun-17 13:16:54.492 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Executed 1 tests. 1 tests failed. Done! diff --git a/modules/local/diamondpreparetaxa/main.nf b/modules/local/diamondpreparetaxa/main.nf index 3bb3a9b..f2ad253 100644 --- a/modules/local/diamondpreparetaxa/main.nf +++ b/modules/local/diamondpreparetaxa/main.nf @@ -15,6 +15,7 @@ // TODO nf-core: Optional inputs are not currently supported by Nextflow. However, using an empty // list (`[]`) instead of a file can be used to work around this issue. + process DIAMONDPREPARETAXA { // tag "${taxondmp_zip.baseName}" // label "process_low" @@ -33,7 +34,7 @@ process DIAMONDPREPARETAXA { // 7z x ${taxondmp_zip} // """ - tag "$meta.id" + tag "${taxondmp_zip.baseName}" label 'process_low' // TODO nf-core: See section in main README for further information regarding finding and adding container addresses to the section below. @@ -42,18 +43,22 @@ process DIAMONDPREPARETAXA { 'https://depot.galaxyproject.org/singularity/YOUR-TOOL-HERE': 'biocontainers/YOUR-TOOL-HERE' }" - input:// TODO nf-core: Where applicable all sample-specific information e.g. "id", "single_end", "read_group" - // MUST be provided as an input via a Groovy Map called "meta". - // This information may not be required in some instances e.g. indexing reference genome files: - // https://github.com/nf-core/modules/blob/master/modules/nf-core/bwa/index/main.nf - // TODO nf-core: Where applicable please provide/convert compressed files as input/output - // e.g. "*.fastq.gz" and NOT "*.fastq", "*.bam" and NOT "*.sam" etc. - tuple val(meta), path(bam) + + + // write the output files to a user specified directory via an input parameter + publishDir "${params.outdir}/ncbi_refseq/", mode: 'copy' + + input: + // if (params.taxdmp_zip) { + // Channel.fromPath(params.taxdmp_zip, checkIfExists: true) + // .ifEmpty { exit 1, "Diamond taxon dump file not found: ${params.taxdmp_zip}" } + // .set{ ch_diamond_taxdmp_zip } + // } + path taxondmp_zip //from ch_diamond_taxdmp_zip output: - // TODO nf-core: Named file extensions MUST be emitted for ALL output channels - tuple val(meta), path("*.bam"), emit: bam - // TODO nf-core: List additional required output channels/values here + tuple val(meta), path("nodes.dmp"), emit: taxonnodes + tuple val(meta), path("names.dmp"), emit: taxonnames path "versions.yml" , emit: versions when: @@ -62,21 +67,13 @@ process DIAMONDPREPARETAXA { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - // TODO nf-core: Where possible, a command MUST be provided to obtain the version number of the software e.g. 1.10 - // If the software is unable to output a version number on the command-line then it can be manually specified - // e.g. https://github.com/nf-core/modules/blob/master/modules/nf-core/homer/annotatepeaks/main.nf - // Each software used MUST provide the software name and version number in the YAML version file (versions.yml) - // TODO nf-core: It MUST be possible to pass additional parameters to the tool as a command-line string via the "task.ext.args" directive - // TODO nf-core: If the tool supports multi-threading then you MUST provide the appropriate parameter - // using the Nextflow "task" variable e.g. "--threads $task.cpus" - // TODO nf-core: Please replace the example samtools command below with your module's command - // TODO nf-core: Please indent the command appropriately (4 spaces!!) to help with readability ;) + """ diamondpreparetaxa \\ $args \\ -@ $task.cpus \\ -o ${prefix}.bam \\ - $bam + 7z x ${taxondmp_zip} cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/local/ncbirefseqdownload/main.nf b/modules/local/ncbirefseqdownload/main.nf index 3f9cfb4..7ce48e3 100644 --- a/modules/local/ncbirefseqdownload/main.nf +++ b/modules/local/ncbirefseqdownload/main.nf @@ -1,28 +1,7 @@ -// TODO nf-core: If in doubt look at other nf-core/modules to see how we are doing things! :) -// https://github.com/nf-core/modules/tree/master/modules/nf-core/ -// You can also ask for help via your pull request or on the #modules channel on the nf-core Slack workspace: -// https://nf-co.re/join -// TODO nf-core: A module file SHOULD only define input and output files as command-line parameters. -// All other parameters MUST be provided using the "task.ext" directive, see here: -// https://www.nextflow.io/docs/latest/process.html#ext -// where "task.ext" is a string. -// Any parameters that need to be evaluated in the context of a particular sample -// e.g. single-end/paired-end data MUST also be defined and evaluated appropriately. -// TODO nf-core: Software that can be piped together SHOULD be added to separate module files -// unless there is a run-time, storage advantage in implementing in this way -// e.g. it's ok to have a single module for bwa to output BAM instead of SAM: -// bwa mem | samtools view -B -T ref.fasta -// TODO nf-core: Optional inputs are not currently supported by Nextflow. However, using an empty -// list (`[]`) instead of a file can be used to work around this issue. - process NCBIREFSEQDOWNLOAD { label 'process_low' tag "downloand_refseq" - // TODO nf-core: List required Conda package(s). - // Software MUST be pinned to channel (i.e. "bioconda"), version (i.e. "1.10"). - // For Conda, the build (i.e. "h9402c20_2") must be EXCLUDED to support installation on different operating systems. - // TODO nf-core: See section in main README for further information regarding finding and adding container addresses to the section below. conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/YOUR-TOOL-HERE': @@ -31,52 +10,39 @@ process NCBIREFSEQDOWNLOAD { publishDir "${params.outdir}/ncbi_refseq/", mode: 'copy' input: - // TODO nf-core: Where applicable all sample-specific information e.g. "id", "single_end", "read_group" - // MUST be provided as an input via a Groovy Map called "meta". - // This information may not be required in some instances e.g. indexing reference genome files: - // https://github.com/nf-core/modules/blob/master/modules/nf-core/bwa/index/main.nf - // TODO nf-core: Where applicable please provide/convert compressed files as input/output - // e.g. "*.fastq.gz" and NOT "*.fastq", "*.bam" and NOT "*.sam" etc. - val(meta) + tuple val(meta), val(refseq_release) // ncbi refseq release category output: - // TODO nf-core: Named file extensions MUST be emitted for ALL output channels - file("refseq_fastas.fa.gz"), emit: ch_diamond_reference_fasta - // TODO nf-core: List additional required output channels/values here + path "refseq_fastas.fa.gz", emit: ch_diamond_reference_fasta // reference fasta for diamond/makedb path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when script: - // TODO nf-core: Where possible, a command MUST be provided to obtain the version number of the software e.g. 1.10 - // If the software is unable to output a version number on the command-line then it can be manually specified - // e.g. https://github.com/nf-core/modules/blob/master/modules/nf-core/homer/annotatepeaks/main.nf - // Each software used MUST provide the software name and version number in the YAML version file (versions.yml) - // TODO nf-core: It MUST be possible to pass additional parameters to the tool as a command-line string via the "task.ext.args" directive - // TODO nf-core: If the tool supports multi-threading then you MUST provide the appropriate parameter - // using the Nextflow "task" variable e.g. "--threads $task.cpus" - // TODO nf-core: Please replace the example samtools command below with your module's command - // TODO nf-core: Please indent the command appropriately (4 spaces!!) to help with readability ;) - def categories = task.ext.categories ?: ['vertebrate_mammalian', 'vertebrate_other', 'invertebrate'] - def fetch_commands = categories.collect { cat -> + def refseq_releases = task.ext.refseq_releases ?: ['complete'] + def download_release = refseq_releases.collect { release -> """ - mkdir -p refseq/${cat} - rsync -av --include '*protein.faa.gz' --exclude '*' \\ - rsync://ftp.ncbi.nlm.nih.gov/refseq/release/${cat}/ \\ - refseq/${cat}/ + mkdir -p ${release}/ + + rsync \\ + -av \\ + --include '*protein.faa.gz' \\ + --exclude '*' \\ + rsync://ftp.ncbi.nlm.nih.gov/refseq/release/${release}/ \\ + ${release}/ """ }.join("\n") """ set -e - ${fetch_commands} + ${download_release} - zcat refseq/*/*.faa.gz | gzip -c > refseq_fastas.fa.gz + zcat */*.faa.gz | gzip -c > refseq_fastas.fa.gz - echo "All animal RefSeq protein FASTAs aggregated into refseq_fastas.fa.gz" + echo "All RefSeq protein FASTAs aggregated into ncbi_refseq/" cat <<-END_VERSIONS > versions.yml "${task.process}": @@ -84,19 +50,19 @@ process NCBIREFSEQDOWNLOAD { END_VERSIONS """ - stub: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" + // stub: + // def args = task.ext.args ?: '' + // def prefix = task.ext.prefix ?: "${meta.id}" // TODO nf-core: A stub section should mimic the execution of the original module as best as possible // Have a look at the following examples: // Simple example: https://github.com/nf-core/modules/blob/818474a292b4860ae8ff88e149fbcda68814114d/modules/nf-core/bcftools/annotate/main.nf#L47-L63 // Complex example: https://github.com/nf-core/modules/blob/818474a292b4860ae8ff88e149fbcda68814114d/modules/nf-core/bedtools/split/main.nf#L38-L54 - """ - touch refseq_fastas.fa.gz + // """ + // touch refseq_fastas.fa.gz - cat <<-END_VERSIONS > versions.yml - "${task.process}" - rsync: "stub" - END_VERSIONS - """ + // cat <<-END_VERSIONS > versions.yml + // "${task.process}" + // rsync: "stub" + // END_VERSIONS + // """ } \ No newline at end of file diff --git a/modules/local/ncbirefseqdownload/tests/main.nf.test b/modules/local/ncbirefseqdownload/tests/main.nf.test index 4b361cb..af96f8f 100644 --- a/modules/local/ncbirefseqdownload/tests/main.nf.test +++ b/modules/local/ncbirefseqdownload/tests/main.nf.test @@ -1,71 +1,31 @@ -// TODO nf-core: Once you have added the required tests, please run the following command to build this file: -// nf-core modules test downloadfastas nextflow_process { - name "Test Process DOWNLOADFASTAS" + name "Test Process NCBIREFSEQDOWNLOAD" script "../main.nf" - process "DOWNLOADFASTAS" + process "NCBIREFSEQDOWNLOAD" - tag "modules" - tag "modules_" - tag "downloadfastas" - - // TODO nf-core: Change the test name preferably indicating the test-data and file-format used - test("sarscov2 - bam") { - - // TODO nf-core: If you are created a test for a chained module - // (the module requires running more than one process to generate the required output) - // add the 'setup' method here. - // You can find more information about how to use a 'setup' method in the docs (https://nf-co.re/docs/contributing/modules#steps-for-creating-nf-test-for-chained-modules). + test("Should download ncbi refseq 'other' zipped protein fasta") { when { - process { - """ - // TODO nf-core: define inputs of the process here. Example: - - input[0] = [ - [ id:'test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), - ] - """ + params { + // define parameters here. Example: + // outdir = "tests/results" } - } - - then { - assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } - //TODO nf-core: Add all required assertions to verify the test output. - // See https://nf-co.re/docs/contributing/tutorials/nf-test_assertions for more information and examples. - ) - } - - } - - // TODO nf-core: Change the test name preferably indicating the test-data and file-format used but keep the " - stub" suffix. - test("sarscov2 - bam - stub") { - - options "-stub" - - when { process { """ - // TODO nf-core: define inputs of the process here. Example: - - input[0] = [ - [ id:'test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), - ] + input[0] = "other" """ } } then { - assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } - //TODO nf-core: Add all required assertions to verify the test output. - ) + assert process.success + // assert snapshot(process.out).match() + // check ncbi_refseq/ directory was created + // check ${release}/ directory was created + // check other.wp_protein.1.protein.faa.gz file is downloaded/exists + // check that refseq_fastas.fa.gz file was created in ncbi_refseq/ directory + // check for contents?? } } From 3946ba57f51ec29c19e3c2fbdbd1b1cba785721d Mon Sep 17 00:00:00 2001 From: tracelail Date: Wed, 18 Jun 2025 08:57:20 -0400 Subject: [PATCH 10/59] edited ncbirefseqdownload script to a working stated where the nf-test process is successful. --- .nf-test.log | 63 +++++-------------- modules/local/ncbirefseqdownload/main.nf | 26 +++----- .../ncbirefseqdownload/tests/main.nf.test | 7 +-- tests/nextflow.config | 7 +++ 4 files changed, 32 insertions(+), 71 deletions(-) diff --git a/.nf-test.log b/.nf-test.log index 14160f0..5115d68 100644 --- a/.nf-test.log +++ b/.nf-test.log @@ -1,48 +1,15 @@ -Jun-17 13:16:46.584 [main] INFO com.askimed.nf.test.App - nf-test 0.9.2 -Jun-17 13:16:46.607 [main] INFO com.askimed.nf.test.App - Arguments: [test, modules/local/ncbirefseqdownload/tests/main.nf.test] -Jun-17 13:16:47.649 [main] INFO com.askimed.nf.test.App - Nextflow Version: 24.10.6 -Jun-17 13:16:47.653 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Load config from file /home/trace/projects/proteinannotator/nf-test.config... -Jun-17 13:16:48.206 [main] WARN com.askimed.nf.test.nextflow.NextflowScript - Module /home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/main.nf: Dependency '/home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/../../../modules/nf-core/blast/makeblastdb/main.nf' not found. -Jun-17 13:16:48.252 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Loaded 13 files from directory /home/trace/projects/proteinannotator in 0.063 sec -Jun-17 13:16:48.254 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Found 1 files containing tests. -Jun-17 13:16:48.254 [main] DEBUG com.askimed.nf.test.lang.dependencies.DependencyResolver - Found files: [/home/trace/projects/proteinannotator/modules/local/ncbirefseqdownload/tests/main.nf.test] -Jun-17 13:16:48.385 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Found 1 tests to execute. -Jun-17 13:16:48.386 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Started test plan -Jun-17 13:16:48.386 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Running testsuite 'Test Process NCBIREFSEQDOWNLOAD' from file '/home/trace/projects/proteinannotator/modules/local/ncbirefseqdownload/tests/main.nf.test'. -Jun-17 13:16:48.386 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test '7e996768: Should download ncbi refseq 'other' zipped protein fasta'. type: com.askimed.nf.test.lang.process.ProcessTest -Jun-17 13:16:54.487 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test '7e996768: Should download ncbi refseq 'other' zipped protein fasta' finished. status: FAILED -org.codehaus.groovy.runtime.powerassert.PowerAssertionError: assert process.success - | | - | false - NCBIREFSEQDOWNLOAD - at org.codehaus.groovy.runtime.InvokerHelper.assertFailed(InvokerHelper.java:432) - at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.assertFailed(ScriptBytecodeAdapter.java:670) - at main_nf$_run_closure1$_closure2$_closure4.doCall(main.nf.test:22) - at main_nf$_run_closure1$_closure2$_closure4.doCall(main.nf.test) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:569) - at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107) - at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) - at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:274) - at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1030) - at groovy.lang.Closure.call(Closure.java:427) - at groovy.lang.Closure.call(Closure.java:406) - at com.askimed.nf.test.lang.TestCode.execute(TestCode.java:16) - at com.askimed.nf.test.lang.process.ProcessTest.execute(ProcessTest.java:171) - at com.askimed.nf.test.core.TestExecutionEngine.execute(TestExecutionEngine.java:165) - at com.askimed.nf.test.commands.RunTestsCommand.execute(RunTestsCommand.java:298) - at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:43) - at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:18) - at picocli.CommandLine.executeUserObject(CommandLine.java:1953) - at picocli.CommandLine.access$1300(CommandLine.java:145) - at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352) - at picocli.CommandLine$RunLast.handle(CommandLine.java:2346) - at picocli.CommandLine$RunLast.handle(CommandLine.java:2311) - at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179) - at picocli.CommandLine.execute(CommandLine.java:2078) - at com.askimed.nf.test.App.run(App.java:39) - at com.askimed.nf.test.App.main(App.java:46) -Jun-17 13:16:54.492 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Testsuite 'Test Process NCBIREFSEQDOWNLOAD' finished. snapshot file: false, skipped tests: false, failed tests: true -Jun-17 13:16:54.492 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Executed 1 tests. 1 tests failed. Done! +Jun-18 08:53:09.734 [main] INFO com.askimed.nf.test.App - nf-test 0.9.2 +Jun-18 08:53:09.757 [main] INFO com.askimed.nf.test.App - Arguments: [test, modules/local/ncbirefseqdownload/tests/main.nf.test] +Jun-18 08:53:10.829 [main] INFO com.askimed.nf.test.App - Nextflow Version: 24.10.6 +Jun-18 08:53:10.832 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Load config from file /home/trace/projects/proteinannotator/nf-test.config... +Jun-18 08:53:11.387 [main] WARN com.askimed.nf.test.nextflow.NextflowScript - Module /home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/main.nf: Dependency '/home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/../../../modules/nf-core/blast/makeblastdb/main.nf' not found. +Jun-18 08:53:11.417 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Loaded 13 files from directory /home/trace/projects/proteinannotator in 0.044 sec +Jun-18 08:53:11.418 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Found 1 files containing tests. +Jun-18 08:53:11.418 [main] DEBUG com.askimed.nf.test.lang.dependencies.DependencyResolver - Found files: [/home/trace/projects/proteinannotator/modules/local/ncbirefseqdownload/tests/main.nf.test] +Jun-18 08:53:11.528 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Found 1 tests to execute. +Jun-18 08:53:11.529 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Started test plan +Jun-18 08:53:11.529 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Running testsuite 'Test Process NCBIREFSEQDOWNLOAD' from file '/home/trace/projects/proteinannotator/modules/local/ncbirefseqdownload/tests/main.nf.test'. +Jun-18 08:53:11.529 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test '7e996768: Should download ncbi refseq 'other' zipped protein fasta'. type: com.askimed.nf.test.lang.process.ProcessTest +Jun-18 08:53:21.025 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test '7e996768: Should download ncbi refseq 'other' zipped protein fasta' finished. status: PASSED +Jun-18 08:53:21.029 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Testsuite 'Test Process NCBIREFSEQDOWNLOAD' finished. snapshot file: false, skipped tests: false, failed tests: false +Jun-18 08:53:21.029 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Executed 1 tests. 0 tests failed. Done! diff --git a/modules/local/ncbirefseqdownload/main.nf b/modules/local/ncbirefseqdownload/main.nf index 7ce48e3..f988cf8 100644 --- a/modules/local/ncbirefseqdownload/main.nf +++ b/modules/local/ncbirefseqdownload/main.nf @@ -20,25 +20,15 @@ process NCBIREFSEQDOWNLOAD { task.ext.when == null || task.ext.when script: - - def refseq_releases = task.ext.refseq_releases ?: ['complete'] - def download_release = refseq_releases.collect { release -> - """ - mkdir -p ${release}/ - - rsync \\ - -av \\ - --include '*protein.faa.gz' \\ - --exclude '*' \\ - rsync://ftp.ncbi.nlm.nih.gov/refseq/release/${release}/ \\ - ${release}/ - """ - }.join("\n") - """ - set -e - - ${download_release} + mkdir -p refseq/${refseq_release} + + rsync \\ + -av \\ + --include '*protein.faa.gz' \\ + --exclude '*' \\ + rsync://ftp.ncbi.nlm.nih.gov/refseq/release/${refseq_release}/ \\ + ${refseq_release}/ zcat */*.faa.gz | gzip -c > refseq_fastas.fa.gz diff --git a/modules/local/ncbirefseqdownload/tests/main.nf.test b/modules/local/ncbirefseqdownload/tests/main.nf.test index af96f8f..ecdf9fd 100644 --- a/modules/local/ncbirefseqdownload/tests/main.nf.test +++ b/modules/local/ncbirefseqdownload/tests/main.nf.test @@ -7,13 +7,10 @@ nextflow_process { test("Should download ncbi refseq 'other' zipped protein fasta") { when { - params { - // define parameters here. Example: - // outdir = "tests/results" - } + process { """ - input[0] = "other" + input[0] = [['id': 'test'], 'other'] """ } } diff --git a/tests/nextflow.config b/tests/nextflow.config index 341486e..44d9464 100644 --- a/tests/nextflow.config +++ b/tests/nextflow.config @@ -10,3 +10,10 @@ params.modules_testdata_base_path = 'https://raw.githubusercontent.com/nf-core/t params.pipelines_testdata_base_path = 'https://raw.githubusercontent.com/nf-core/test-datasets/refs/heads/proteinannotator' aws.client.anonymous = true // fixes S3 access issues on self-hosted runners + +process { + withName: NCBIREFSEQDOWNLOAD { + cpus= 1 + memory= 4.GB + } +} \ No newline at end of file From 94ebe1bcb4e68ecd94ea27afa637932368eabb28 Mon Sep 17 00:00:00 2001 From: tracelail Date: Thu, 26 Jun 2025 08:59:44 -0400 Subject: [PATCH 11/59] created a working ncbirefseqdownload module with basic nf-test. Also utilized tests/nextflow.config to fix memory error. --- .nf-test.log | 30 +++++++++---------- modules/local/ncbirefseqdownload/main.nf | 14 ++++----- .../ncbirefseqdownload/tests/main.nf.test | 10 ++++++- 3 files changed, 31 insertions(+), 23 deletions(-) diff --git a/.nf-test.log b/.nf-test.log index 5115d68..0b858c2 100644 --- a/.nf-test.log +++ b/.nf-test.log @@ -1,15 +1,15 @@ -Jun-18 08:53:09.734 [main] INFO com.askimed.nf.test.App - nf-test 0.9.2 -Jun-18 08:53:09.757 [main] INFO com.askimed.nf.test.App - Arguments: [test, modules/local/ncbirefseqdownload/tests/main.nf.test] -Jun-18 08:53:10.829 [main] INFO com.askimed.nf.test.App - Nextflow Version: 24.10.6 -Jun-18 08:53:10.832 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Load config from file /home/trace/projects/proteinannotator/nf-test.config... -Jun-18 08:53:11.387 [main] WARN com.askimed.nf.test.nextflow.NextflowScript - Module /home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/main.nf: Dependency '/home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/../../../modules/nf-core/blast/makeblastdb/main.nf' not found. -Jun-18 08:53:11.417 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Loaded 13 files from directory /home/trace/projects/proteinannotator in 0.044 sec -Jun-18 08:53:11.418 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Found 1 files containing tests. -Jun-18 08:53:11.418 [main] DEBUG com.askimed.nf.test.lang.dependencies.DependencyResolver - Found files: [/home/trace/projects/proteinannotator/modules/local/ncbirefseqdownload/tests/main.nf.test] -Jun-18 08:53:11.528 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Found 1 tests to execute. -Jun-18 08:53:11.529 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Started test plan -Jun-18 08:53:11.529 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Running testsuite 'Test Process NCBIREFSEQDOWNLOAD' from file '/home/trace/projects/proteinannotator/modules/local/ncbirefseqdownload/tests/main.nf.test'. -Jun-18 08:53:11.529 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test '7e996768: Should download ncbi refseq 'other' zipped protein fasta'. type: com.askimed.nf.test.lang.process.ProcessTest -Jun-18 08:53:21.025 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test '7e996768: Should download ncbi refseq 'other' zipped protein fasta' finished. status: PASSED -Jun-18 08:53:21.029 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Testsuite 'Test Process NCBIREFSEQDOWNLOAD' finished. snapshot file: false, skipped tests: false, failed tests: false -Jun-18 08:53:21.029 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Executed 1 tests. 0 tests failed. Done! +Jun-26 08:56:30.564 [main] INFO com.askimed.nf.test.App - nf-test 0.9.2 +Jun-26 08:56:30.587 [main] INFO com.askimed.nf.test.App - Arguments: [test, modules/local/ncbirefseqdownload/tests/main.nf.test] +Jun-26 08:56:31.668 [main] INFO com.askimed.nf.test.App - Nextflow Version: 24.10.6 +Jun-26 08:56:31.671 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Load config from file /home/trace/projects/proteinannotator/nf-test.config... +Jun-26 08:56:32.143 [main] WARN com.askimed.nf.test.nextflow.NextflowScript - Module /home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/main.nf: Dependency '/home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/../../../modules/nf-core/blast/makeblastdb/main.nf' not found. +Jun-26 08:56:32.184 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Loaded 13 files from directory /home/trace/projects/proteinannotator in 0.057 sec +Jun-26 08:56:32.185 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Found 1 files containing tests. +Jun-26 08:56:32.186 [main] DEBUG com.askimed.nf.test.lang.dependencies.DependencyResolver - Found files: [/home/trace/projects/proteinannotator/modules/local/ncbirefseqdownload/tests/main.nf.test] +Jun-26 08:56:32.279 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Found 1 tests to execute. +Jun-26 08:56:32.280 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Started test plan +Jun-26 08:56:32.280 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Running testsuite 'Test Process NCBIREFSEQDOWNLOAD' from file '/home/trace/projects/proteinannotator/modules/local/ncbirefseqdownload/tests/main.nf.test'. +Jun-26 08:56:32.280 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test '7e996768: Should download ncbi refseq 'other' zipped protein fasta'. type: com.askimed.nf.test.lang.process.ProcessTest +Jun-26 08:56:41.435 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test '7e996768: Should download ncbi refseq 'other' zipped protein fasta' finished. status: PASSED +Jun-26 08:56:41.438 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Testsuite 'Test Process NCBIREFSEQDOWNLOAD' finished. snapshot file: false, skipped tests: false, failed tests: false +Jun-26 08:56:41.438 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Executed 1 tests. 0 tests failed. Done! diff --git a/modules/local/ncbirefseqdownload/main.nf b/modules/local/ncbirefseqdownload/main.nf index f988cf8..53ca1c0 100644 --- a/modules/local/ncbirefseqdownload/main.nf +++ b/modules/local/ncbirefseqdownload/main.nf @@ -1,19 +1,19 @@ process NCBIREFSEQDOWNLOAD { label 'process_low' - tag "downloand_refseq" + tag "download_refseq" conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/YOUR-TOOL-HERE': 'biocontainers/YOUR-TOOL-HERE' }" - publishDir "${params.outdir}/ncbi_refseq/", mode: 'copy' + // publishDir "${params.outdir}", mode: 'copy' input: - tuple val(meta), val(refseq_release) // ncbi refseq release category + val(refseq_release) // ncbi refseq release category output: - path "refseq_fastas.fa.gz", emit: ch_diamond_reference_fasta // reference fasta for diamond/makedb + path "ncbi_refseq/refseq_fasta.fa.gz", emit: refseq_fasta // reference fasta for diamond/makedb path "versions.yml" , emit: versions when: @@ -21,16 +21,16 @@ process NCBIREFSEQDOWNLOAD { script: """ - mkdir -p refseq/${refseq_release} + mkdir -p ncbi_refseq/${refseq_release}/ rsync \\ -av \\ --include '*protein.faa.gz' \\ --exclude '*' \\ rsync://ftp.ncbi.nlm.nih.gov/refseq/release/${refseq_release}/ \\ - ${refseq_release}/ + ncbi_refseq/${refseq_release}/ - zcat */*.faa.gz | gzip -c > refseq_fastas.fa.gz + zcat ncbi_refseq/*/*.faa.gz | gzip -c > ncbi_refseq/refseq_fasta.fa.gz echo "All RefSeq protein FASTAs aggregated into ncbi_refseq/" diff --git a/modules/local/ncbirefseqdownload/tests/main.nf.test b/modules/local/ncbirefseqdownload/tests/main.nf.test index ecdf9fd..51cccfb 100644 --- a/modules/local/ncbirefseqdownload/tests/main.nf.test +++ b/modules/local/ncbirefseqdownload/tests/main.nf.test @@ -7,18 +7,26 @@ nextflow_process { test("Should download ncbi refseq 'other' zipped protein fasta") { when { + params{ + // outdir = 'results' + } process { """ - input[0] = [['id': 'test'], 'other'] + input[0] = 'other' """ } } then { assert process.success + // Analyze Nextflow trace file + // assert process.trace.tasks().size() == 1 + // assert (process.out.refseq_fasta.exists()) + // assert releaseDir.isDirectory() // assert snapshot(process.out).match() // check ncbi_refseq/ directory was created + // assert file(".nf-test/tests/7e996768b39c55058e88ecdd7a9afa59/results/ncbi_refseq/refseq_fastas.fa.gz").exists() // check ${release}/ directory was created // check other.wp_protein.1.protein.faa.gz file is downloaded/exists // check that refseq_fastas.fa.gz file was created in ncbi_refseq/ directory From 06bf5e8b610dda61e0d021bffbf9b54786992e31 Mon Sep 17 00:00:00 2001 From: tracelail Date: Fri, 27 Jun 2025 09:47:15 -0400 Subject: [PATCH 12/59] added more working tests to ncbirefseqdownload and organized. --- .nf-test.log | 33 +++++++++------- .../ncbirefseqdownload/tests/main.nf.test | 39 ++++++++++++++----- .../tests/main.nf.test.snap | 37 ++++++++++++++++++ 3 files changed, 84 insertions(+), 25 deletions(-) create mode 100644 modules/local/ncbirefseqdownload/tests/main.nf.test.snap diff --git a/.nf-test.log b/.nf-test.log index 0b858c2..8500542 100644 --- a/.nf-test.log +++ b/.nf-test.log @@ -1,15 +1,18 @@ -Jun-26 08:56:30.564 [main] INFO com.askimed.nf.test.App - nf-test 0.9.2 -Jun-26 08:56:30.587 [main] INFO com.askimed.nf.test.App - Arguments: [test, modules/local/ncbirefseqdownload/tests/main.nf.test] -Jun-26 08:56:31.668 [main] INFO com.askimed.nf.test.App - Nextflow Version: 24.10.6 -Jun-26 08:56:31.671 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Load config from file /home/trace/projects/proteinannotator/nf-test.config... -Jun-26 08:56:32.143 [main] WARN com.askimed.nf.test.nextflow.NextflowScript - Module /home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/main.nf: Dependency '/home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/../../../modules/nf-core/blast/makeblastdb/main.nf' not found. -Jun-26 08:56:32.184 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Loaded 13 files from directory /home/trace/projects/proteinannotator in 0.057 sec -Jun-26 08:56:32.185 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Found 1 files containing tests. -Jun-26 08:56:32.186 [main] DEBUG com.askimed.nf.test.lang.dependencies.DependencyResolver - Found files: [/home/trace/projects/proteinannotator/modules/local/ncbirefseqdownload/tests/main.nf.test] -Jun-26 08:56:32.279 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Found 1 tests to execute. -Jun-26 08:56:32.280 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Started test plan -Jun-26 08:56:32.280 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Running testsuite 'Test Process NCBIREFSEQDOWNLOAD' from file '/home/trace/projects/proteinannotator/modules/local/ncbirefseqdownload/tests/main.nf.test'. -Jun-26 08:56:32.280 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test '7e996768: Should download ncbi refseq 'other' zipped protein fasta'. type: com.askimed.nf.test.lang.process.ProcessTest -Jun-26 08:56:41.435 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test '7e996768: Should download ncbi refseq 'other' zipped protein fasta' finished. status: PASSED -Jun-26 08:56:41.438 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Testsuite 'Test Process NCBIREFSEQDOWNLOAD' finished. snapshot file: false, skipped tests: false, failed tests: false -Jun-26 08:56:41.438 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Executed 1 tests. 0 tests failed. Done! +Jun-27 09:41:53.028 [main] INFO com.askimed.nf.test.App - nf-test 0.9.2 +Jun-27 09:41:53.050 [main] INFO com.askimed.nf.test.App - Arguments: [test, modules/local/ncbirefseqdownload/tests/main.nf.test] +Jun-27 09:41:54.013 [main] INFO com.askimed.nf.test.App - Nextflow Version: 24.10.6 +Jun-27 09:41:54.015 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Load config from file /home/trace/projects/proteinannotator/nf-test.config... +Jun-27 09:41:54.521 [main] WARN com.askimed.nf.test.nextflow.NextflowScript - Module /home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/main.nf: Dependency '/home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/../../../modules/nf-core/blast/makeblastdb/main.nf' not found. +Jun-27 09:41:54.580 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Loaded 14 files from directory /home/trace/projects/proteinannotator in 0.078 sec +Jun-27 09:41:54.581 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Found 1 files containing tests. +Jun-27 09:41:54.582 [main] DEBUG com.askimed.nf.test.lang.dependencies.DependencyResolver - Found files: [/home/trace/projects/proteinannotator/modules/local/ncbirefseqdownload/tests/main.nf.test] +Jun-27 09:41:54.729 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Found 1 tests to execute. +Jun-27 09:41:54.730 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Started test plan +Jun-27 09:41:54.730 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Running testsuite 'Test Process NCBIREFSEQDOWNLOAD' from file '/home/trace/projects/proteinannotator/modules/local/ncbirefseqdownload/tests/main.nf.test'. +Jun-27 09:41:54.730 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test '7e996768: Should download ncbi refseq 'other' zipped protein fasta'. type: com.askimed.nf.test.lang.process.ProcessTest +Jun-27 09:42:02.835 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Load snapshots from file '/home/trace/projects/proteinannotator/modules/local/ncbirefseqdownload/tests/main.nf.test.snap' +Jun-27 09:42:02.848 [main] DEBUG com.askimed.nf.test.lang.extensions.Snapshot - Snapshots 'Should download ncbi refseq 'other' zipped protein fasta' match. +Jun-27 09:42:02.861 [main] DEBUG com.askimed.nf.test.lang.extensions.Snapshot - Snapshots 'versions' match. +Jun-27 09:42:02.862 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test '7e996768: Should download ncbi refseq 'other' zipped protein fasta' finished. status: PASSED +Jun-27 09:42:02.865 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Testsuite 'Test Process NCBIREFSEQDOWNLOAD' finished. snapshot file: true, skipped tests: false, failed tests: false +Jun-27 09:42:02.865 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Executed 1 tests. 0 tests failed. Done! diff --git a/modules/local/ncbirefseqdownload/tests/main.nf.test b/modules/local/ncbirefseqdownload/tests/main.nf.test index 51cccfb..9ea8dae 100644 --- a/modules/local/ncbirefseqdownload/tests/main.nf.test +++ b/modules/local/ncbirefseqdownload/tests/main.nf.test @@ -19,18 +19,37 @@ nextflow_process { } then { + // Make sure the process works assert process.success - // Analyze Nextflow trace file - // assert process.trace.tasks().size() == 1 - // assert (process.out.refseq_fasta.exists()) - // assert releaseDir.isDirectory() - // assert snapshot(process.out).match() + + // Check number of tasks and output file sizes + assert process.trace.tasks().size() == 1 + assert process.out.refseq_fasta.size() == 1 + + // Assert that the output file refseq_fasta.fa.gz exists + assert snapshot(process.out).match() + assert file(process.out.get(0).find { file(it).name }).exists() + // Added check for content match + // None working assertions + // assert new File(process.out.refseq_fasta).exists() + // assert process.out.refseq_fasta.exists() + // assert new File("refseq_fasta.fa.gz").exists() + + // troubleshooting print path + // println("refseq_fasta: " + process.out.refseq_fasta[0]) + // assert file(process.out.get(0).find { println(file(it).name) }) + + // assert versioning + assert snapshot(process.out.versions).match("versions") + + // Assert other.wp_protein.1.protein.faa.gz is downloaded -- not sure I can assert if it is not a output variable + // println ("launchDir: $launchDir") + // println ("workDir: $workDir") + // println ("outputDir: $outputDir") + // assert new File("$workDir/*/*/ncbi_refseq/other/other.wp_protein.1.protein.faa.gz").exists() + // check ncbi_refseq/ directory was created - // assert file(".nf-test/tests/7e996768b39c55058e88ecdd7a9afa59/results/ncbi_refseq/refseq_fastas.fa.gz").exists() - // check ${release}/ directory was created - // check other.wp_protein.1.protein.faa.gz file is downloaded/exists - // check that refseq_fastas.fa.gz file was created in ncbi_refseq/ directory - // check for contents?? + // check ${refseq_release}/ directory was created } } diff --git a/modules/local/ncbirefseqdownload/tests/main.nf.test.snap b/modules/local/ncbirefseqdownload/tests/main.nf.test.snap new file mode 100644 index 0000000..2445190 --- /dev/null +++ b/modules/local/ncbirefseqdownload/tests/main.nf.test.snap @@ -0,0 +1,37 @@ +{ + "versions": { + "content": [ + [ + "versions.yml:md5,3799a0b1fc5359fd1bdc1c8f20167431" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.6" + }, + "timestamp": "2025-06-26T10:59:29.378160575" + }, + "Should download ncbi refseq 'other' zipped protein fasta": { + "content": [ + { + "0": [ + "refseq_fasta.fa.gz:md5,f268873781947724d1dbcd450aecd336" + ], + "1": [ + "versions.yml:md5,3799a0b1fc5359fd1bdc1c8f20167431" + ], + "refseq_fasta": [ + "refseq_fasta.fa.gz:md5,f268873781947724d1dbcd450aecd336" + ], + "versions": [ + "versions.yml:md5,3799a0b1fc5359fd1bdc1c8f20167431" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.6" + }, + "timestamp": "2025-06-26T09:38:32.666570109" + } +} \ No newline at end of file From 7681f82d9729fbf33d0ff7224e57c954f7dd2f17 Mon Sep 17 00:00:00 2001 From: tracelail Date: Mon, 30 Jun 2025 10:15:48 -0400 Subject: [PATCH 13/59] Added diamondpreparetaxa main.nf script and a process.success nf-test. --- .nf-test.log | 106 +++++++++++++++--- modules/local/diamondpreparetaxa/main.nf | 98 +++++----------- .../diamondpreparetaxa/tests/main.nf.test | 65 +++++------ .../tests/main.nf.test.snap | 43 +++++++ modules/local/ncbirefseqdownload/main.nf | 2 +- subworkflows/local/diamond/main.nf | 1 + tests/nextflow.config | 7 ++ 7 files changed, 198 insertions(+), 124 deletions(-) create mode 100644 modules/local/diamondpreparetaxa/tests/main.nf.test.snap diff --git a/.nf-test.log b/.nf-test.log index 8500542..ae90a7f 100644 --- a/.nf-test.log +++ b/.nf-test.log @@ -1,18 +1,88 @@ -Jun-27 09:41:53.028 [main] INFO com.askimed.nf.test.App - nf-test 0.9.2 -Jun-27 09:41:53.050 [main] INFO com.askimed.nf.test.App - Arguments: [test, modules/local/ncbirefseqdownload/tests/main.nf.test] -Jun-27 09:41:54.013 [main] INFO com.askimed.nf.test.App - Nextflow Version: 24.10.6 -Jun-27 09:41:54.015 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Load config from file /home/trace/projects/proteinannotator/nf-test.config... -Jun-27 09:41:54.521 [main] WARN com.askimed.nf.test.nextflow.NextflowScript - Module /home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/main.nf: Dependency '/home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/../../../modules/nf-core/blast/makeblastdb/main.nf' not found. -Jun-27 09:41:54.580 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Loaded 14 files from directory /home/trace/projects/proteinannotator in 0.078 sec -Jun-27 09:41:54.581 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Found 1 files containing tests. -Jun-27 09:41:54.582 [main] DEBUG com.askimed.nf.test.lang.dependencies.DependencyResolver - Found files: [/home/trace/projects/proteinannotator/modules/local/ncbirefseqdownload/tests/main.nf.test] -Jun-27 09:41:54.729 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Found 1 tests to execute. -Jun-27 09:41:54.730 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Started test plan -Jun-27 09:41:54.730 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Running testsuite 'Test Process NCBIREFSEQDOWNLOAD' from file '/home/trace/projects/proteinannotator/modules/local/ncbirefseqdownload/tests/main.nf.test'. -Jun-27 09:41:54.730 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test '7e996768: Should download ncbi refseq 'other' zipped protein fasta'. type: com.askimed.nf.test.lang.process.ProcessTest -Jun-27 09:42:02.835 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Load snapshots from file '/home/trace/projects/proteinannotator/modules/local/ncbirefseqdownload/tests/main.nf.test.snap' -Jun-27 09:42:02.848 [main] DEBUG com.askimed.nf.test.lang.extensions.Snapshot - Snapshots 'Should download ncbi refseq 'other' zipped protein fasta' match. -Jun-27 09:42:02.861 [main] DEBUG com.askimed.nf.test.lang.extensions.Snapshot - Snapshots 'versions' match. -Jun-27 09:42:02.862 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test '7e996768: Should download ncbi refseq 'other' zipped protein fasta' finished. status: PASSED -Jun-27 09:42:02.865 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Testsuite 'Test Process NCBIREFSEQDOWNLOAD' finished. snapshot file: true, skipped tests: false, failed tests: false -Jun-27 09:42:02.865 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Executed 1 tests. 0 tests failed. Done! +Jun-30 09:58:17.386 [main] INFO com.askimed.nf.test.App - nf-test 0.9.2 +Jun-30 09:58:17.404 [main] INFO com.askimed.nf.test.App - Arguments: [test, modules/local/diamondpreparetaxa/tests/main.nf.test] +Jun-30 09:58:18.330 [main] INFO com.askimed.nf.test.App - Nextflow Version: 24.10.6 +Jun-30 09:58:18.332 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Load config from file /home/trace/projects/proteinannotator/nf-test.config... +Jun-30 09:58:18.812 [main] WARN com.askimed.nf.test.nextflow.NextflowScript - Module /home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/main.nf: Dependency '/home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/../../../modules/nf-core/blast/makeblastdb/main.nf' not found. +Jun-30 09:58:18.861 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Loaded 15 files from directory /home/trace/projects/proteinannotator in 0.065 sec +Jun-30 09:58:18.862 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Found 1 files containing tests. +Jun-30 09:58:18.863 [main] DEBUG com.askimed.nf.test.lang.dependencies.DependencyResolver - Found files: [/home/trace/projects/proteinannotator/modules/local/diamondpreparetaxa/tests/main.nf.test] +Jun-30 09:58:19.064 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Found 1 tests to execute. +Jun-30 09:58:19.065 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Started test plan +Jun-30 09:58:19.065 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Running testsuite 'Test Process DIAMONDPREPARETAXA' from file '/home/trace/projects/proteinannotator/modules/local/diamondpreparetaxa/tests/main.nf.test'. +Jun-30 09:58:19.066 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test 'd9252286: Test DIAMONDPREPARETAXA creates taxon nodes and names dmp files'. type: com.askimed.nf.test.lang.process.ProcessTest +Jun-30 09:58:32.266 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Load snapshots from file '/home/trace/projects/proteinannotator/modules/local/diamondpreparetaxa/tests/main.nf.test.snap' +Jun-30 09:58:36.031 [main] DEBUG com.askimed.nf.test.lang.extensions.Snapshot - Snapshots 'Test DIAMONDPREPARETAXA creates taxon nodes and names dmp files' do not match. +Jun-30 09:58:36.032 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test 'd9252286: Test DIAMONDPREPARETAXA creates taxon nodes and names dmp files' finished. status: FAILED +java.lang.RuntimeException: Different Snapshot: +[ [ + { { + "0": [ "0": [ + | "nodes.dmp:md5,66d4a0325484b76d7d7dbe8db3682aaf" + ], ], + "1": [ "1": [ + | "names.dmp:md5,f9d14f8ef4c82bc4dca597cdeba1acbb" + ], ], + "2": [ "2": [ + | "versions.yml:md5,32e482f39dd2786ece9329f2a81d0f62" + ], ], + "taxonnames": [ "taxonnames": [ + | "names.dmp:md5,f9d14f8ef4c82bc4dca597cdeba1acbb" + ], ], + "taxonnodes": [ "taxonnodes": [ + | "nodes.dmp:md5,66d4a0325484b76d7d7dbe8db3682aaf" + ], ], + "versions": [ "versions": [ + | "versions.yml:md5,32e482f39dd2786ece9329f2a81d0f62" + ] ] + } } +] ] + + at com.askimed.nf.test.lang.extensions.SnapshotFileItem.equals(SnapshotFileItem.java:69) + at com.askimed.nf.test.lang.extensions.Snapshot.match(Snapshot.java:57) + at com.askimed.nf.test.lang.extensions.Snapshot.match(Snapshot.java:27) + at com.askimed.nf.test.lang.extensions.Snapshot$match.call(Unknown Source) + at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47) + at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125) + at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:130) + at main_nf$_run_closure1$_closure2$_closure4$_closure7.doCall(main.nf.test:31) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:569) + at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107) + at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) + at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:274) + at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1030) + at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:38) + at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47) + at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125) + at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:139) + at main_nf$_run_closure1$_closure2$_closure4.doCall(main.nf.test:31) + at main_nf$_run_closure1$_closure2$_closure4.doCall(main.nf.test) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:569) + at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107) + at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) + at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:274) + at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1030) + at groovy.lang.Closure.call(Closure.java:427) + at groovy.lang.Closure.call(Closure.java:406) + at com.askimed.nf.test.lang.TestCode.execute(TestCode.java:16) + at com.askimed.nf.test.lang.process.ProcessTest.execute(ProcessTest.java:171) + at com.askimed.nf.test.core.TestExecutionEngine.execute(TestExecutionEngine.java:165) + at com.askimed.nf.test.commands.RunTestsCommand.execute(RunTestsCommand.java:298) + at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:43) + at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:18) + at picocli.CommandLine.executeUserObject(CommandLine.java:1953) + at picocli.CommandLine.access$1300(CommandLine.java:145) + at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2346) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2311) + at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179) + at picocli.CommandLine.execute(CommandLine.java:2078) + at com.askimed.nf.test.App.run(App.java:39) + at com.askimed.nf.test.App.main(App.java:46) +Jun-30 09:58:36.036 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Testsuite 'Test Process DIAMONDPREPARETAXA' finished. snapshot file: true, skipped tests: false, failed tests: true +Jun-30 09:58:36.037 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Executed 1 tests. 1 tests failed. Done! diff --git a/modules/local/diamondpreparetaxa/main.nf b/modules/local/diamondpreparetaxa/main.nf index f2ad253..70c5709 100644 --- a/modules/local/diamondpreparetaxa/main.nf +++ b/modules/local/diamondpreparetaxa/main.nf @@ -1,64 +1,22 @@ -// TODO nf-core: If in doubt look at other nf-core/modules to see how we are doing things! :) -// https://github.com/nf-core/modules/tree/master/modules/nf-core/ -// You can also ask for help via your pull request or on the #modules channel on the nf-core Slack workspace: -// https://nf-co.re/join -// TODO nf-core: A module file SHOULD only define input and output files as command-line parameters. -// All other parameters MUST be provided using the "task.ext" directive, see here: -// https://www.nextflow.io/docs/latest/process.html#ext -// where "task.ext" is a string. -// Any parameters that need to be evaluated in the context of a particular sample -// e.g. single-end/paired-end data MUST also be defined and evaluated appropriately. -// TODO nf-core: Software that can be piped together SHOULD be added to separate module files -// unless there is a run-time, storage advantage in implementing in this way -// e.g. it's ok to have a single module for bwa to output BAM instead of SAM: -// bwa mem | samtools view -B -T ref.fasta -// TODO nf-core: Optional inputs are not currently supported by Nextflow. However, using an empty -// list (`[]`) instead of a file can be used to work around this issue. - - process DIAMONDPREPARETAXA { - // tag "${taxondmp_zip.baseName}" - // label "process_low" - - // publishDir "${params.outdir}/ncbi_refseq/", mode: 'copy' - - // input: - // file(taxondmp_zip) from ch_diamond_taxdmp_zip - - // output: - // file("nodes.dmp") into ch_diamond_taxonnodes - // file("names.dmp") into ch_diamond_taxonnames - - // script: - // """ - // 7z x ${taxondmp_zip} - // """ - tag "${taxondmp_zip.baseName}" + // tag "${taxondmp_zip.baseName}" label 'process_low' - // TODO nf-core: See section in main README for further information regarding finding and adding container addresses to the section below. conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/YOUR-TOOL-HERE': 'biocontainers/YOUR-TOOL-HERE' }" - - // write the output files to a user specified directory via an input parameter - publishDir "${params.outdir}/ncbi_refseq/", mode: 'copy' + // publishDir "${params.outdir}/ncbi_refseq/", mode: 'copy' input: - // if (params.taxdmp_zip) { - // Channel.fromPath(params.taxdmp_zip, checkIfExists: true) - // .ifEmpty { exit 1, "Diamond taxon dump file not found: ${params.taxdmp_zip}" } - // .set{ ch_diamond_taxdmp_zip } - // } - path taxondmp_zip //from ch_diamond_taxdmp_zip + val taxondmp_zip // Add default of ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz output: - tuple val(meta), path("nodes.dmp"), emit: taxonnodes - tuple val(meta), path("names.dmp"), emit: taxonnames + path("taxa/nodes.dmp"), emit: taxonnodes + path("taxa/names.dmp"), emit: taxonnames path "versions.yml" , emit: versions when: @@ -66,35 +24,33 @@ process DIAMONDPREPARETAXA { script: def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" - - """ - diamondpreparetaxa \\ - $args \\ - -@ $task.cpus \\ - -o ${prefix}.bam \\ - 7z x ${taxondmp_zip} - - cat <<-END_VERSIONS > versions.yml + // def prefix = task.ext.prefix ?: "${meta.id}" + // Omitting from script portion for now + // # $args \\ + // # -@ $task.cpus \\ + // # -o ${prefix}.bam \\ + + """ + mkdir -p taxa/ + wget -q ${taxondmp_zip} + tar -xzf taxdump.tar.gz -C taxa + + cat <<-END_VERSIONS > versions.yml "${task.process}": diamondpreparetaxa: \$(diamondpreparetaxa --version) END_VERSIONS """ - stub: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" - // TODO nf-core: A stub section should mimic the execution of the original module as best as possible - // Have a look at the following examples: - // Simple example: https://github.com/nf-core/modules/blob/818474a292b4860ae8ff88e149fbcda68814114d/modules/nf-core/bcftools/annotate/main.nf#L47-L63 - // Complex example: https://github.com/nf-core/modules/blob/818474a292b4860ae8ff88e149fbcda68814114d/modules/nf-core/bedtools/split/main.nf#L38-L54 - """ + // stub: + // def args = task.ext.args ?: '' + // def prefix = task.ext.prefix ?: "${meta.id}" + // """ - touch ${prefix}.bam + // touch ${prefix}.bam - cat <<-END_VERSIONS > versions.yml - "${task.process}": - diamondpreparetaxa: \$(diamondpreparetaxa --version) - END_VERSIONS - """ + // cat <<-END_VERSIONS > versions.yml + // "${task.process}": + // diamondpreparetaxa: \$(diamondpreparetaxa --version) + // END_VERSIONS + // """ } diff --git a/modules/local/diamondpreparetaxa/tests/main.nf.test b/modules/local/diamondpreparetaxa/tests/main.nf.test index 45e905f..46d5dca 100644 --- a/modules/local/diamondpreparetaxa/tests/main.nf.test +++ b/modules/local/diamondpreparetaxa/tests/main.nf.test @@ -10,23 +10,17 @@ nextflow_process { tag "modules_" tag "diamondpreparetaxa" - // TODO nf-core: Change the test name preferably indicating the test-data and file-format used - test("sarscov2 - bam") { - - // TODO nf-core: If you are created a test for a chained module - // (the module requires running more than one process to generate the required output) - // add the 'setup' method here. - // You can find more information about how to use a 'setup' method in the docs (https://nf-co.re/docs/contributing/modules#steps-for-creating-nf-test-for-chained-modules). + test("Test DIAMONDPREPARETAXA creates taxon nodes and names dmp files") { when { process { """ - // TODO nf-core: define inputs of the process here. Example: + input[0] = 'ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz' - input[0] = [ - [ id:'test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), - ] + // input[0] = [ + // [ id:'test', single_end:false ], // meta map + // file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + // ] """ } } @@ -34,7 +28,10 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out).match() } + // { assert snapshot(process.out).match() } + // { assert process.out.taxonnodes.exists() } + // { assert process.out.get(0).exists() } + { assert snapshot(process.out.versions).match("versions") } //TODO nf-core: Add all required assertions to verify the test output. // See https://nf-co.re/docs/contributing/tutorials/nf-test_assertions for more information and examples. ) @@ -43,31 +40,31 @@ nextflow_process { } // TODO nf-core: Change the test name preferably indicating the test-data and file-format used but keep the " - stub" suffix. - test("sarscov2 - bam - stub") { +// test("sarscov2 - bam - stub") { - options "-stub" +// options "-stub" - when { - process { - """ - // TODO nf-core: define inputs of the process here. Example: +// when { +// process { +// """ +// // TODO nf-core: define inputs of the process here. Example: - input[0] = [ - [ id:'test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), - ] - """ - } - } +// input[0] = [ +// [ id:'test', single_end:false ], // meta map +// file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), +// ] +// """ +// } +// } - then { - assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } - //TODO nf-core: Add all required assertions to verify the test output. - ) - } +// then { +// assertAll( +// { assert process.success }, +// { assert snapshot(process.out).match() } +// //TODO nf-core: Add all required assertions to verify the test output. +// ) +// } - } +// } } diff --git a/modules/local/diamondpreparetaxa/tests/main.nf.test.snap b/modules/local/diamondpreparetaxa/tests/main.nf.test.snap new file mode 100644 index 0000000..659d073 --- /dev/null +++ b/modules/local/diamondpreparetaxa/tests/main.nf.test.snap @@ -0,0 +1,43 @@ +{ + "Test DIAMONDPREPARETAXA creates taxon nodes and names dmp files": { + "content": [ + { + "0": [ + + ], + "1": [ + + ], + "2": [ + + ], + "taxonnames": [ + + ], + "taxonnodes": [ + + ], + "versions": [ + + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.6" + }, + "timestamp": "2025-06-27T10:42:09.871140552" + }, + "versions": { + "content": [ + [ + "versions.yml:md5,32e482f39dd2786ece9329f2a81d0f62" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.6" + }, + "timestamp": "2025-06-30T09:23:10.987180894" + } +} \ No newline at end of file diff --git a/modules/local/ncbirefseqdownload/main.nf b/modules/local/ncbirefseqdownload/main.nf index 53ca1c0..b2aa136 100644 --- a/modules/local/ncbirefseqdownload/main.nf +++ b/modules/local/ncbirefseqdownload/main.nf @@ -10,7 +10,7 @@ process NCBIREFSEQDOWNLOAD { // publishDir "${params.outdir}", mode: 'copy' input: - val(refseq_release) // ncbi refseq release category + val(refseq_release) // ncbi refseq release category -- add default of 'complete' output: path "ncbi_refseq/refseq_fasta.fa.gz", emit: refseq_fasta // reference fasta for diamond/makedb diff --git a/subworkflows/local/diamond/main.nf b/subworkflows/local/diamond/main.nf index 4ad763c..24125e2 100644 --- a/subworkflows/local/diamond/main.nf +++ b/subworkflows/local/diamond/main.nf @@ -22,6 +22,7 @@ workflow DIAMOND { DIAMOND_MAKEDB ( ch_diamond_reference_fasta, + taxonmap, // make default ftp://ftp.ncbi.nlm.nih.gov/pub/taxonomy/accession2taxid/prot.accession2taxid.gz ) ch_diamond_db = DIAMOND_MAKEDB.out.db diff --git a/tests/nextflow.config b/tests/nextflow.config index 44d9464..0067ed1 100644 --- a/tests/nextflow.config +++ b/tests/nextflow.config @@ -16,4 +16,11 @@ process { cpus= 1 memory= 4.GB } +} + +process { + withName: DIAMONDPREPARETAXA { + cpus= 1 + memory= 4.GB + } } \ No newline at end of file From 92c847c7edb7071ff35d7af98abb13b336538853 Mon Sep 17 00:00:00 2001 From: tracelail Date: Wed, 2 Jul 2025 08:13:08 -0400 Subject: [PATCH 14/59] added working snapshot assertions for process.out match and versions to diamondpreparetaxa module --- .nf-test.log | 106 +++--------------- .../diamondpreparetaxa/tests/main.nf.test | 18 ++- .../tests/main.nf.test.snap | 14 +-- .../ncbirefseqdownload/tests/main.nf.test | 2 +- subworkflows/local/diamond/main.nf | 78 ++++++++----- 5 files changed, 82 insertions(+), 136 deletions(-) diff --git a/.nf-test.log b/.nf-test.log index ae90a7f..ea489aa 100644 --- a/.nf-test.log +++ b/.nf-test.log @@ -1,88 +1,18 @@ -Jun-30 09:58:17.386 [main] INFO com.askimed.nf.test.App - nf-test 0.9.2 -Jun-30 09:58:17.404 [main] INFO com.askimed.nf.test.App - Arguments: [test, modules/local/diamondpreparetaxa/tests/main.nf.test] -Jun-30 09:58:18.330 [main] INFO com.askimed.nf.test.App - Nextflow Version: 24.10.6 -Jun-30 09:58:18.332 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Load config from file /home/trace/projects/proteinannotator/nf-test.config... -Jun-30 09:58:18.812 [main] WARN com.askimed.nf.test.nextflow.NextflowScript - Module /home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/main.nf: Dependency '/home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/../../../modules/nf-core/blast/makeblastdb/main.nf' not found. -Jun-30 09:58:18.861 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Loaded 15 files from directory /home/trace/projects/proteinannotator in 0.065 sec -Jun-30 09:58:18.862 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Found 1 files containing tests. -Jun-30 09:58:18.863 [main] DEBUG com.askimed.nf.test.lang.dependencies.DependencyResolver - Found files: [/home/trace/projects/proteinannotator/modules/local/diamondpreparetaxa/tests/main.nf.test] -Jun-30 09:58:19.064 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Found 1 tests to execute. -Jun-30 09:58:19.065 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Started test plan -Jun-30 09:58:19.065 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Running testsuite 'Test Process DIAMONDPREPARETAXA' from file '/home/trace/projects/proteinannotator/modules/local/diamondpreparetaxa/tests/main.nf.test'. -Jun-30 09:58:19.066 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test 'd9252286: Test DIAMONDPREPARETAXA creates taxon nodes and names dmp files'. type: com.askimed.nf.test.lang.process.ProcessTest -Jun-30 09:58:32.266 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Load snapshots from file '/home/trace/projects/proteinannotator/modules/local/diamondpreparetaxa/tests/main.nf.test.snap' -Jun-30 09:58:36.031 [main] DEBUG com.askimed.nf.test.lang.extensions.Snapshot - Snapshots 'Test DIAMONDPREPARETAXA creates taxon nodes and names dmp files' do not match. -Jun-30 09:58:36.032 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test 'd9252286: Test DIAMONDPREPARETAXA creates taxon nodes and names dmp files' finished. status: FAILED -java.lang.RuntimeException: Different Snapshot: -[ [ - { { - "0": [ "0": [ - | "nodes.dmp:md5,66d4a0325484b76d7d7dbe8db3682aaf" - ], ], - "1": [ "1": [ - | "names.dmp:md5,f9d14f8ef4c82bc4dca597cdeba1acbb" - ], ], - "2": [ "2": [ - | "versions.yml:md5,32e482f39dd2786ece9329f2a81d0f62" - ], ], - "taxonnames": [ "taxonnames": [ - | "names.dmp:md5,f9d14f8ef4c82bc4dca597cdeba1acbb" - ], ], - "taxonnodes": [ "taxonnodes": [ - | "nodes.dmp:md5,66d4a0325484b76d7d7dbe8db3682aaf" - ], ], - "versions": [ "versions": [ - | "versions.yml:md5,32e482f39dd2786ece9329f2a81d0f62" - ] ] - } } -] ] - - at com.askimed.nf.test.lang.extensions.SnapshotFileItem.equals(SnapshotFileItem.java:69) - at com.askimed.nf.test.lang.extensions.Snapshot.match(Snapshot.java:57) - at com.askimed.nf.test.lang.extensions.Snapshot.match(Snapshot.java:27) - at com.askimed.nf.test.lang.extensions.Snapshot$match.call(Unknown Source) - at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47) - at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125) - at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:130) - at main_nf$_run_closure1$_closure2$_closure4$_closure7.doCall(main.nf.test:31) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:569) - at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107) - at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) - at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:274) - at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1030) - at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:38) - at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47) - at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125) - at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:139) - at main_nf$_run_closure1$_closure2$_closure4.doCall(main.nf.test:31) - at main_nf$_run_closure1$_closure2$_closure4.doCall(main.nf.test) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:569) - at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107) - at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) - at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:274) - at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1030) - at groovy.lang.Closure.call(Closure.java:427) - at groovy.lang.Closure.call(Closure.java:406) - at com.askimed.nf.test.lang.TestCode.execute(TestCode.java:16) - at com.askimed.nf.test.lang.process.ProcessTest.execute(ProcessTest.java:171) - at com.askimed.nf.test.core.TestExecutionEngine.execute(TestExecutionEngine.java:165) - at com.askimed.nf.test.commands.RunTestsCommand.execute(RunTestsCommand.java:298) - at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:43) - at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:18) - at picocli.CommandLine.executeUserObject(CommandLine.java:1953) - at picocli.CommandLine.access$1300(CommandLine.java:145) - at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352) - at picocli.CommandLine$RunLast.handle(CommandLine.java:2346) - at picocli.CommandLine$RunLast.handle(CommandLine.java:2311) - at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179) - at picocli.CommandLine.execute(CommandLine.java:2078) - at com.askimed.nf.test.App.run(App.java:39) - at com.askimed.nf.test.App.main(App.java:46) -Jun-30 09:58:36.036 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Testsuite 'Test Process DIAMONDPREPARETAXA' finished. snapshot file: true, skipped tests: false, failed tests: true -Jun-30 09:58:36.037 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Executed 1 tests. 1 tests failed. Done! +Jul-01 10:12:43.803 [main] INFO com.askimed.nf.test.App - nf-test 0.9.2 +Jul-01 10:12:43.824 [main] INFO com.askimed.nf.test.App - Arguments: [test, modules/local/diamondpreparetaxa/tests/main.nf.test] +Jul-01 10:12:44.868 [main] INFO com.askimed.nf.test.App - Nextflow Version: 24.10.6 +Jul-01 10:12:44.871 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Load config from file /home/trace/projects/proteinannotator/nf-test.config... +Jul-01 10:12:45.432 [main] WARN com.askimed.nf.test.nextflow.NextflowScript - Module /home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/main.nf: Dependency '/home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/../../../modules/nf-core/blast/makeblastdb/main.nf' not found. +Jul-01 10:12:45.518 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Loaded 21 files from directory /home/trace/projects/proteinannotator in 0.105 sec +Jul-01 10:12:45.520 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Found 1 files containing tests. +Jul-01 10:12:45.520 [main] DEBUG com.askimed.nf.test.lang.dependencies.DependencyResolver - Found files: [/home/trace/projects/proteinannotator/modules/local/diamondpreparetaxa/tests/main.nf.test] +Jul-01 10:12:45.666 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Found 1 tests to execute. +Jul-01 10:12:45.666 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Started test plan +Jul-01 10:12:45.667 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Running testsuite 'Test Process DIAMONDPREPARETAXA' from file '/home/trace/projects/proteinannotator/modules/local/diamondpreparetaxa/tests/main.nf.test'. +Jul-01 10:12:45.667 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test 'd9252286: Test DIAMONDPREPARETAXA creates taxon nodes and names dmp files'. type: com.askimed.nf.test.lang.process.ProcessTest +Jul-01 10:12:57.831 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Load snapshots from file '/home/trace/projects/proteinannotator/modules/local/diamondpreparetaxa/tests/main.nf.test.snap' +Jul-01 10:12:59.690 [main] DEBUG com.askimed.nf.test.lang.extensions.Snapshot - Snapshots 'Test DIAMONDPREPARETAXA creates taxon nodes and names dmp files' match. +Jul-01 10:12:59.696 [main] DEBUG com.askimed.nf.test.lang.extensions.Snapshot - Snapshots 'versions' match. +Jul-01 10:12:59.696 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test 'd9252286: Test DIAMONDPREPARETAXA creates taxon nodes and names dmp files' finished. status: PASSED +Jul-01 10:12:59.699 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Testsuite 'Test Process DIAMONDPREPARETAXA' finished. snapshot file: true, skipped tests: false, failed tests: false +Jul-01 10:12:59.699 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Executed 1 tests. 0 tests failed. Done! diff --git a/modules/local/diamondpreparetaxa/tests/main.nf.test b/modules/local/diamondpreparetaxa/tests/main.nf.test index 46d5dca..b7272c8 100644 --- a/modules/local/diamondpreparetaxa/tests/main.nf.test +++ b/modules/local/diamondpreparetaxa/tests/main.nf.test @@ -26,16 +26,14 @@ nextflow_process { } then { - assertAll( - { assert process.success }, - // { assert snapshot(process.out).match() } - // { assert process.out.taxonnodes.exists() } - // { assert process.out.get(0).exists() } - { assert snapshot(process.out.versions).match("versions") } - //TODO nf-core: Add all required assertions to verify the test output. - // See https://nf-co.re/docs/contributing/tutorials/nf-test_assertions for more information and examples. - ) - } + assert process.success + assert snapshot(process.out).match() + // assert process.out.taxonnodes.exists() + // { assert process.out.get(0).exists() } + assert snapshot(process.out.versions).match("versions") + //TODO nf-core: Add all required assertions to verify the test output. + // See https://nf-co.re/docs/contributing/tutorials/nf-test_assertions for more information and examples. + } } diff --git a/modules/local/diamondpreparetaxa/tests/main.nf.test.snap b/modules/local/diamondpreparetaxa/tests/main.nf.test.snap index 659d073..0f1094a 100644 --- a/modules/local/diamondpreparetaxa/tests/main.nf.test.snap +++ b/modules/local/diamondpreparetaxa/tests/main.nf.test.snap @@ -3,22 +3,22 @@ "content": [ { "0": [ - + "nodes.dmp:md5,58237c9255b09bd031e9d1ed995c9453" ], "1": [ - + "names.dmp:md5,b35745e96b4322b4d7d412ac5bd60d45" ], "2": [ - + "versions.yml:md5,32e482f39dd2786ece9329f2a81d0f62" ], "taxonnames": [ - + "names.dmp:md5,b35745e96b4322b4d7d412ac5bd60d45" ], "taxonnodes": [ - + "nodes.dmp:md5,58237c9255b09bd031e9d1ed995c9453" ], "versions": [ - + "versions.yml:md5,32e482f39dd2786ece9329f2a81d0f62" ] } ], @@ -26,7 +26,7 @@ "nf-test": "0.9.2", "nextflow": "24.10.6" }, - "timestamp": "2025-06-27T10:42:09.871140552" + "timestamp": "2025-07-01T10:05:00.297747609" }, "versions": { "content": [ diff --git a/modules/local/ncbirefseqdownload/tests/main.nf.test b/modules/local/ncbirefseqdownload/tests/main.nf.test index 9ea8dae..555e7a9 100644 --- a/modules/local/ncbirefseqdownload/tests/main.nf.test +++ b/modules/local/ncbirefseqdownload/tests/main.nf.test @@ -21,7 +21,7 @@ nextflow_process { then { // Make sure the process works assert process.success - + // Check number of tasks and output file sizes assert process.trace.tasks().size() == 1 assert process.out.refseq_fasta.size() == 1 diff --git a/subworkflows/local/diamond/main.nf b/subworkflows/local/diamond/main.nf index 24125e2..1c2c777 100644 --- a/subworkflows/local/diamond/main.nf +++ b/subworkflows/local/diamond/main.nf @@ -4,9 +4,16 @@ // https://nf-co.re/join // TODO nf-core: A subworkflow SHOULD import at least two modules include { NCBIREFSEQDOWNLOAD } from '../../../modules/local/ncbirefseqdownload/main' +include { DIAMONDPREPARETAXA } from '../../../modules/local/diamondpreparetaxa/main' include { DIAMOND_MAKEDB } from '../../../modules/nf-core/diamond/makedb/main' include { DIAMOND_BLASTP } from '../../../modules/nf-core/diamond/blastp/main' +/* +* Pipeline parameters +*/ +// params.refseq_release = 'complete' +// params.taxondmp_zip = 'ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz' + workflow DIAMOND { take: ch_fasta // channel: [ val(meta), [ fasta ] ] @@ -16,49 +23,60 @@ workflow DIAMOND { ch_versions = Channel.empty() // TODO nf-core: substitute modules here for the modules of your subworkflow - NCBIREFSEQDOWNLOAD() // may need to include an input, currently uses default categories def categories = task.ext.categories ?: ['vertebrate_mammalian', 'vertebrate_other', 'invertebrate'] - ch_diamond_reference_fasta = NCBIREFSEQDOWNLOAD.out.fasta + NCBIREFSEQDOWNLOAD( + params.refseq_release + ) + ch_diamond_reference_fasta = NCBIREFSEQDOWNLOAD.out.refseq_fasta ch_versions = ch_versions.mix(NCBIREFSEQDOWNLOAD.out.versions.first()) + DIAMONDPREPARETAXA ( + params.taxondmp_zip + ) + ch_taxonnodes = DIAMONDPREPARETAXA.out.taxonnodes + ch_taxonnames = DIAMONDPREPARETAXA.out.taxonnames + ch_versions = ch_versions.mix(DIAMONDPREPARETAXA.out.versions.first()) + + DIAMOND_MAKEDB ( ch_diamond_reference_fasta, - taxonmap, // make default ftp://ftp.ncbi.nlm.nih.gov/pub/taxonomy/accession2taxid/prot.accession2taxid.gz + params.taxonmap, // make default ftp://ftp.ncbi.nlm.nih.gov/pub/taxonomy/accession2taxid/prot.accession2taxid.gz + ch_taxonnodes, + ch_taxonnames ) - ch_diamond_db = DIAMOND_MAKEDB.out.db ch_versions = ch_versions.mix(DIAMOND_MAKEDB.out.versions.first()) //ch_diamond_db = Channel.of( [ [id:"diamond_db"], file(params.diamond_db, checkIfExists: true) ] ) - DIAMOND_BLASTP ( - ch_fasta, - ch_diamond_db, - params.diamond_outfmt, - params.diamond_blast_columns, - ) - ch_versions = ch_versions.mix(DIAMOND_BLASTP.out.versions.first()) + // DIAMOND_BLASTP ( + // ch_fasta, + // ch_diamond_db, + // params.diamond_outfmt, + // params.diamond_blast_columns, + // ) + // ch_versions = ch_versions.mix(DIAMOND_BLASTP.out.versions.first()) - // Create a multifasta, with one fasta per entry, add the sequence ID to the meta id - ch_fasta - .map { - meta, fasta -> - [ - [id:"${meta.id}_${fasta.splitFasta(record: [id: true]).id[0].replaceAll(/\|/, '-')}"] , - fasta.splitFasta(file:true) - ] - } - .transpose() - .set { ch_multifasta } + // // Create a multifasta, with one fasta per entry, add the sequence ID to the meta id + // ch_fasta + // .map { + // meta, fasta -> + // [ + // [id:"${meta.id}_${fasta.splitFasta(record: [id: true]).id[0].replaceAll(/\|/, '-')}"] , + // fasta.splitFasta(file:true) + // ] + // } + // .transpose() + // .set { ch_multifasta } - // - // SUBWORKFLOW: Annotator Name - // + // // + // // SUBWORKFLOW: Annotator Name + // // - emit: - // TODO nf-core: edit emitted channels - ch_diamond_tsv = DIAMOND_BLASTP.out.tsv // channel: [ val(meta)] + // emit: + // // TODO nf-core: edit emitted channels + // ch_diamond_tsv = DIAMOND_BLASTP.out.tsv // channel: [ val(meta)] - multifasta = ch_multifasta - versions = ch_versions // channel: [ versions.yml ] + // multifasta = ch_multifasta + // versions = ch_versions // channel: [ versions.yml ] } From 043451f2895ff2d71fb80c98ae90391bba6dc61f Mon Sep 17 00:00:00 2001 From: tracelail Date: Mon, 7 Jul 2025 11:02:15 -0400 Subject: [PATCH 15/59] Added output documentation for all seven Diamond subworkflow outputs. --- docs/output.md | 112 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 111 insertions(+), 1 deletion(-) diff --git a/docs/output.md b/docs/output.md index e529664..72a93ef 100644 --- a/docs/output.md +++ b/docs/output.md @@ -14,6 +14,7 @@ The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes d - [Functional Annotation](#functional-annotation) Annotate proteins with functional domains - [InterProScan](#Interproscan) - Search the InterPro database for functional domains + - [Diamond] (#Diamond) - Provide ‘hits’ of potential homologous protein matches between species - [MultiQC](#multiqc) - Aggregate report describing results and QC from the whole pipeline - [SeqKit stats](#seqkit_stats) - Simple statistics for protein FASTA files - [Pipeline information](#pipeline-information) - Report metrics generated during the workflow execution @@ -75,7 +76,7 @@ AKRLERIETINREIIDMAGGAGSSNGTGGMLTKIKAATIATESGVPVYICS -#### JavaScript Object Notation (JSON) Output +##### JavaScript Object Notation (JSON) Output JSON representation of the matches - an alternative to XML format. As new releases are made public, the changes to the expected JSON format are documented in [Change log for InterProScan JSON output format](https://interproscan-docs.readthedocs.io/en/v5/JSONOutputFormatHistory.html#change-log-for-interproscan-json-output-format). @@ -268,6 +269,115 @@ The XML Schema Definition (XSD) is available [here](http://ftp.ebi.ac.uk/pub/sof +#### Diamond + +
+Output files + +- `functional_annotation/diamond` + - `*.blast`: (Basic Local Alignment Search Tool) BLAST pairwise format + - `*.xml`: BLAST Extensible Markup Language (XML) format + - `*.txt`: BLAST tabular format (default). This format can be customized, the 6 may be followed by a space-separated list of the blast_columns keywords, each specifying a field of the output. + - `*.daa`: DIAMOND alignment archive (DAA). The DAA format is a proprietary binary format that can subsequently be used to generate other output formats using the view command. It is also supported by MEGAN and allows a quick import of results. + - `*.sam`: SAM format. + - `*.tsv`: Taxonomic classification. This format will not print alignments but only a taxonomic classification for each query using the LCA algorithm. + - `*.paf`: PAF format. The custom fields in the format are AS (bit score), ZR (raw score) and ZE (e-value) + +
+ +[Diamond](https://github.com/bbuchfink/diamond) provides sensitive protein sequence alignment. The process provides ‘hits’ that are potential homologous protein matches between species, indicating a evolutionary relationship, derived by protein sequence similarity. + +##### Pairwise Alignment Format (.blast) Output + +The pairwise BLAST format is a human readable format that is useful for visual inspection, if one desires to get full alignment details for individual alignments. + +
+Example Pairwise Alignment Format output + +``` + +``` + +
+ +##### BLAST Extensible Markup Language (XML) Output + +XML (Extensible Markup Language) file has the same information as the pairwise file but is suited for bioinformatics software and scripts (machine readable), due to it’s structure and parsing of data. + +
+Example Extensible Markup Language (XML) output + +``` + +``` + +
+ +##### Text File (TXT) Output --default + +The BLAST tabular format is the default output and the output columns can be modified depending on analysis needs. This format is much smaller than the other BLAST formats and compatible with most all forward processing and is easily filtered and analyzed. + +
+Example Text File (TXT) output + +``` + +``` + +
+ +##### DIAMOND Alignment Archive (DAA) Output + +DIAMOND alignment archive (DAA) is a compressed proprietary binary format that is can be converted to any of the other output formats (.blast, .xml, .txt, .sam, .tsv, .paf) with the DIAMOND view command without rerunning the pipeline. It can also be used in some meta-genomic analysis software. + +
+Example DIAMOND Alignment Archive (DAA) output + +``` + +``` + +
+ +##### Sequence Alignment/Map (SAM) Output + +The SAM (Sequence Alignment/Map) file adapts the DIAMOND protein alignment output in a similar fashion to the genomic alignment. This allows for easy integration into SAM/BAM pipelines and protein alignment visualization with IGV browser. + +
+Example Sequence Alignment/Map (SAM) output + +``` + +``` + +
+ +##### Tab-Separated Values (TSV) Output + +The taxonomic classification (.tsv) output provides taxonomic composition and is useful for biological interpretation rather than alignment comparison. + +
+Example Tab-Separated Values (TSV) output + +``` + +``` + +
+ +##### Pairwise Mapping Format (PAF) + +The PAF (Pairwise mApping Format) file that is originally used for long read sequencing. DIAMOND adds three additional variables, AS (bit score), ZR (raw alignment score), and ZE (E-value), to provide statistical evidence for protein alignment. This format is useful if one is looking for positional information and statistical significance. + +
+Example InterProScan GFF output + +``` + +``` + +
+ ### MultiQC
From f59c0b7ee4cdf4ad536d842fc61e89c2480a6d65 Mon Sep 17 00:00:00 2001 From: tracelail Date: Wed, 9 Jul 2025 09:39:40 -0400 Subject: [PATCH 16/59] wrote a potential subworkflow for diamond as well as a test. Copied test1.fasta and test2.fasta to the diamond subworkflow directory for diamond/blastp nf-test input. --- .nf-test.log | 27 +++----- .../diamondpreparetaxa/tests/main.nf.test | 2 + .../tests/main.nf.test.snap | 10 +-- .../ncbirefseqdownload/tests/main.nf.test | 6 ++ subworkflows/local/diamond/main.nf | 19 ++++-- subworkflows/local/diamond/tests/main.nf.test | 66 +++++++++++++++---- subworkflows/local/diamond/tests/test1.fasta | 8 +++ subworkflows/local/diamond/tests/test2.fasta | 8 +++ 8 files changed, 103 insertions(+), 43 deletions(-) create mode 100644 subworkflows/local/diamond/tests/test1.fasta create mode 100644 subworkflows/local/diamond/tests/test2.fasta diff --git a/.nf-test.log b/.nf-test.log index ea489aa..0a95747 100644 --- a/.nf-test.log +++ b/.nf-test.log @@ -1,18 +1,9 @@ -Jul-01 10:12:43.803 [main] INFO com.askimed.nf.test.App - nf-test 0.9.2 -Jul-01 10:12:43.824 [main] INFO com.askimed.nf.test.App - Arguments: [test, modules/local/diamondpreparetaxa/tests/main.nf.test] -Jul-01 10:12:44.868 [main] INFO com.askimed.nf.test.App - Nextflow Version: 24.10.6 -Jul-01 10:12:44.871 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Load config from file /home/trace/projects/proteinannotator/nf-test.config... -Jul-01 10:12:45.432 [main] WARN com.askimed.nf.test.nextflow.NextflowScript - Module /home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/main.nf: Dependency '/home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/../../../modules/nf-core/blast/makeblastdb/main.nf' not found. -Jul-01 10:12:45.518 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Loaded 21 files from directory /home/trace/projects/proteinannotator in 0.105 sec -Jul-01 10:12:45.520 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Found 1 files containing tests. -Jul-01 10:12:45.520 [main] DEBUG com.askimed.nf.test.lang.dependencies.DependencyResolver - Found files: [/home/trace/projects/proteinannotator/modules/local/diamondpreparetaxa/tests/main.nf.test] -Jul-01 10:12:45.666 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Found 1 tests to execute. -Jul-01 10:12:45.666 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Started test plan -Jul-01 10:12:45.667 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Running testsuite 'Test Process DIAMONDPREPARETAXA' from file '/home/trace/projects/proteinannotator/modules/local/diamondpreparetaxa/tests/main.nf.test'. -Jul-01 10:12:45.667 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test 'd9252286: Test DIAMONDPREPARETAXA creates taxon nodes and names dmp files'. type: com.askimed.nf.test.lang.process.ProcessTest -Jul-01 10:12:57.831 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Load snapshots from file '/home/trace/projects/proteinannotator/modules/local/diamondpreparetaxa/tests/main.nf.test.snap' -Jul-01 10:12:59.690 [main] DEBUG com.askimed.nf.test.lang.extensions.Snapshot - Snapshots 'Test DIAMONDPREPARETAXA creates taxon nodes and names dmp files' match. -Jul-01 10:12:59.696 [main] DEBUG com.askimed.nf.test.lang.extensions.Snapshot - Snapshots 'versions' match. -Jul-01 10:12:59.696 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test 'd9252286: Test DIAMONDPREPARETAXA creates taxon nodes and names dmp files' finished. status: PASSED -Jul-01 10:12:59.699 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Testsuite 'Test Process DIAMONDPREPARETAXA' finished. snapshot file: true, skipped tests: false, failed tests: false -Jul-01 10:12:59.699 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Executed 1 tests. 0 tests failed. Done! +Jul-09 09:36:15.278 [main] INFO com.askimed.nf.test.App - nf-test 0.9.2 +Jul-09 09:36:15.294 [main] INFO com.askimed.nf.test.App - Arguments: [test, subworkflows/local/diamond/tests/main.nf.tests] +Jul-09 09:36:16.153 [main] INFO com.askimed.nf.test.App - Nextflow Version: 24.10.6 +Jul-09 09:36:16.155 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Load config from file /home/trace/projects/proteinannotator/nf-test.config... +Jul-09 09:36:16.663 [main] WARN com.askimed.nf.test.nextflow.NextflowScript - Module /home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/main.nf: Dependency '/home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/../../../modules/nf-core/blast/makeblastdb/main.nf' not found. +Jul-09 09:36:16.728 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Loaded 21 files from directory /home/trace/projects/proteinannotator in 0.081 sec +Jul-09 09:36:16.730 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Found 0 files containing tests. +Jul-09 09:36:16.730 [main] DEBUG com.askimed.nf.test.lang.dependencies.DependencyResolver - Found files: [] +Jul-09 09:36:16.732 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Found 0 tests to execute. diff --git a/modules/local/diamondpreparetaxa/tests/main.nf.test b/modules/local/diamondpreparetaxa/tests/main.nf.test index b7272c8..073bd7d 100644 --- a/modules/local/diamondpreparetaxa/tests/main.nf.test +++ b/modules/local/diamondpreparetaxa/tests/main.nf.test @@ -9,6 +9,8 @@ nextflow_process { tag "modules" tag "modules_" tag "diamondpreparetaxa" + tag "diamond" + tag "diamond_local" test("Test DIAMONDPREPARETAXA creates taxon nodes and names dmp files") { diff --git a/modules/local/diamondpreparetaxa/tests/main.nf.test.snap b/modules/local/diamondpreparetaxa/tests/main.nf.test.snap index 0f1094a..c717bb4 100644 --- a/modules/local/diamondpreparetaxa/tests/main.nf.test.snap +++ b/modules/local/diamondpreparetaxa/tests/main.nf.test.snap @@ -3,19 +3,19 @@ "content": [ { "0": [ - "nodes.dmp:md5,58237c9255b09bd031e9d1ed995c9453" + "nodes.dmp:md5,2fdf39608fa7229bf6f005e1917ccf0d" ], "1": [ - "names.dmp:md5,b35745e96b4322b4d7d412ac5bd60d45" + "names.dmp:md5,55b8219881cbe8db60d7a91b8498605f" ], "2": [ "versions.yml:md5,32e482f39dd2786ece9329f2a81d0f62" ], "taxonnames": [ - "names.dmp:md5,b35745e96b4322b4d7d412ac5bd60d45" + "names.dmp:md5,55b8219881cbe8db60d7a91b8498605f" ], "taxonnodes": [ - "nodes.dmp:md5,58237c9255b09bd031e9d1ed995c9453" + "nodes.dmp:md5,2fdf39608fa7229bf6f005e1917ccf0d" ], "versions": [ "versions.yml:md5,32e482f39dd2786ece9329f2a81d0f62" @@ -26,7 +26,7 @@ "nf-test": "0.9.2", "nextflow": "24.10.6" }, - "timestamp": "2025-07-01T10:05:00.297747609" + "timestamp": "2025-07-08T09:36:02.926369952" }, "versions": { "content": [ diff --git a/modules/local/ncbirefseqdownload/tests/main.nf.test b/modules/local/ncbirefseqdownload/tests/main.nf.test index 555e7a9..7d635cf 100644 --- a/modules/local/ncbirefseqdownload/tests/main.nf.test +++ b/modules/local/ncbirefseqdownload/tests/main.nf.test @@ -4,6 +4,12 @@ nextflow_process { script "../main.nf" process "NCBIREFSEQDOWNLOAD" + tag "modules" + tag "modules_" + tag "ncbirefseqdownload" + tag "diamond" + tag "diamond_local" + test("Should download ncbi refseq 'other' zipped protein fasta") { when { diff --git a/subworkflows/local/diamond/main.nf b/subworkflows/local/diamond/main.nf index 1c2c777..835c7e1 100644 --- a/subworkflows/local/diamond/main.nf +++ b/subworkflows/local/diamond/main.nf @@ -13,6 +13,9 @@ include { DIAMOND_BLASTP } from '../../../modules/nf-core/diamond/blastp/main' */ // params.refseq_release = 'complete' // params.taxondmp_zip = 'ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz' +// params.taxonmap = 'ftp://ftp.ncbi.nlm.nih.gov/pub/taxonomy/accession2taxid/prot.accession2taxid.gz' +// params.diamond_outfmt = 6 +// params.diamond_blast_columns = qseqid workflow DIAMOND { take: @@ -49,13 +52,15 @@ workflow DIAMOND { //ch_diamond_db = Channel.of( [ [id:"diamond_db"], file(params.diamond_db, checkIfExists: true) ] ) - // DIAMOND_BLASTP ( - // ch_fasta, - // ch_diamond_db, - // params.diamond_outfmt, - // params.diamond_blast_columns, - // ) - // ch_versions = ch_versions.mix(DIAMOND_BLASTP.out.versions.first()) + DIAMOND_BLASTP ( + ch_fasta, + ch_diamond_db, + params.diamond_outfmt, + params.diamond_blast_columns, + ) + emit: + ch_versions = ch_versions.mix(DIAMOND_BLASTP.out.versions.first()) + ch_diamond_tsv = DIAMOND_BLASTP.out.tsv // // Create a multifasta, with one fasta per entry, add the sequence ID to the meta id // ch_fasta diff --git a/subworkflows/local/diamond/tests/main.nf.test b/subworkflows/local/diamond/tests/main.nf.test index ea718b1..1b8f9b1 100644 --- a/subworkflows/local/diamond/tests/main.nf.test +++ b/subworkflows/local/diamond/tests/main.nf.test @@ -10,26 +10,66 @@ nextflow_workflow { tag "subworkflows_" tag "subworkflows/diamond" // TODO nf-core: Add tags for all modules used within this subworkflow. Example: - tag "samtools" - tag "samtools/sort" - tag "samtools/index" + tag "ncbirefseqdownload" + tag "diamondpreparetaxa" + tag "diamond/makedb" + tag "diamond/blastp" // TODO nf-core: Change the test name preferably indicating the test-data and file-format used - test("sarscov2 - bam - single_end") { + setup { + run("NCBIREFSEQDOWNLOAD") { + script "../../../../modules/local/ncbirefseqdownload/main.nf" + process { + """ + input[0] = 'other' + """ + } + } + run("DIAMONDPREPARETAXA") { + script "../../../../modules/local/diamondpreparetaxa/main.nf" + process { + """ + input[0] = 'ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz' + """ + } + } + run("DIAMOND_MAKEDB") { + script "../../../../modules/nf-core/diamond/makedb/main.nf" + process { + """ + input[0] = [ [id:'test2'], [ NCBIREFSEQDOWNLOAD.out.refseq_fasta ] ] + input[1] = 'ftp://ftp.ncbi.nlm.nih.gov/pub/taxonomy/accession2taxid/prot.accession2taxid.gz' + input[2] = DIAMONDPREPARETAXA.out.taxonnodes + input[3] = DIAMONDPREPARETAXA.out.taxonnames + """ + } + } + run("DIAMOND_BLASTP") { + script "../../../../modules/nf-core/diamond/makedb/main.nf" + process { + """ + input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] + input[1] = DIAMOND_MAKEDB.out.db + input[2] = 6 + input[3] = 'qseqid qlen' + """ + } + } + } + test("Test Diamond subworkflow succeeds") { when { + params { + params.refseq_release = 'complete' + params.taxondmp_zip = 'ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz' + params.taxonmap = 'ftp://ftp.ncbi.nlm.nih.gov/pub/taxonomy/accession2taxid/prot.accession2taxid.gz' + params.diamond_outfmt = 6 + params.diamond_blast_columns = 'qseqid' + } workflow { """ - // TODO nf-core: define inputs of the workflow here. Example: - input[0] = [ - [ id:'test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), - ] - input[1] = [ - [ id:'genome' ], - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), - ] + input[0] = file("test1.fasta", checkIfExists: true) """ } } diff --git a/subworkflows/local/diamond/tests/test1.fasta b/subworkflows/local/diamond/tests/test1.fasta new file mode 100644 index 0000000..0653eaf --- /dev/null +++ b/subworkflows/local/diamond/tests/test1.fasta @@ -0,0 +1,8 @@ +>sp|C1CU66|ARCA_STRZT Arginine deiminase OS=Streptococcus pneumoniae (strain Taiwan19F-14) OX=487213 GN=arcA PE=3 SV=1 +MSSHPIQVFSEIGKLKKVMLHRPGKELENLLPDYLERLLFDDIPFLEDAQKEHDAFAQAL +RDEGIEVLYLEQLAAESLTSPEIRDQFIEEYLDEANIRDRQTKVAIRELLHGIKDNQELV +EKTMAGIQKVELPEIPDEAKDLTDLVESDYPFAIDPMPNLYFTRDPFATIGNAVSLNHMF +ADTRNRETLYGKYIFKYHPIYGGKVDLVYNREEDTRIEGGDELVLSKDVLAVGISQRTDA +ASIEKLLVNIFKKNVGFKKVLAFEFANNRKFMHLDTVFTMVDYDKFTIHPEIEGDLHVYS +VTYENEKLKIVEEKGDLAELLAQNLGVEKVHLIRCGGGNIVAAAREQWNDGSNTLTIAPG +VVVVYDRNTVTNKILEEYGLRLIKIRGSELVRGRGGPRCMSMPFEREEV diff --git a/subworkflows/local/diamond/tests/test2.fasta b/subworkflows/local/diamond/tests/test2.fasta new file mode 100644 index 0000000..3e9dc95 --- /dev/null +++ b/subworkflows/local/diamond/tests/test2.fasta @@ -0,0 +1,8 @@ +>sp|A3CLW6|ARCA_STRSV Arginine deiminase OS=Streptococcus sanguinis (strain SK36) OX=388919 GN=arcA PE=3 SV=1 +MSTHPIRVFSEIGKLKKVMLHRPGKELENLQPDYLERLLFDDIPFLEDAQKEHDNFAQAL +RNEGVEVLYLEQLAAESLTSPEIREQFIEEYLEEANIRGRETKKAIRELLRGIKDNRELV +EKTMAGVQKVELPEIPEEAKGLTDLVESDYPFAIDPMPNLYFTRDPFATIGNAVSLNHMY +ADTRNRETLYGKYIFKHHPVYGGKVDLVYNREEDTRIEGGDELVLSKDVLAVGISQRTDA +ASIEKLLVNIFKKNVGFKKVLAFEFANNRKFMHLDTVFTMVDYDKFTIHPEIEGDLRVYS +VTYVDDKLKIVEEKGDLAEILAENLGVEKVHLIRCGGGNIVAAAREQWNDGSNTLTIAPG +VVVVYDRNTVTNKILEEYGLRLIKIRGSELVRGRGGPRCMSMPFEREEI From cf259d35a7a05444125e243711fbae86ded7e229 Mon Sep 17 00:00:00 2001 From: tracelail Date: Wed, 9 Jul 2025 12:04:53 -0400 Subject: [PATCH 17/59] added stub portion to ncbirefseqdownload. Added all output emits to diamond subworkflow Diamond_blastp output. Included Diamond subworkflow execution in the functional annotation subworkflow. --- modules/local/ncbirefseqdownload/main.nf | 18 ++++---- subworkflows/local/diamond/main.nf | 12 +++++- .../local/functional_annotation/main.nf | 43 ++++--------------- 3 files changed, 28 insertions(+), 45 deletions(-) diff --git a/modules/local/ncbirefseqdownload/main.nf b/modules/local/ncbirefseqdownload/main.nf index b2aa136..f6c9e3b 100644 --- a/modules/local/ncbirefseqdownload/main.nf +++ b/modules/local/ncbirefseqdownload/main.nf @@ -40,19 +40,19 @@ process NCBIREFSEQDOWNLOAD { END_VERSIONS """ - // stub: + stub: // def args = task.ext.args ?: '' // def prefix = task.ext.prefix ?: "${meta.id}" // TODO nf-core: A stub section should mimic the execution of the original module as best as possible // Have a look at the following examples: // Simple example: https://github.com/nf-core/modules/blob/818474a292b4860ae8ff88e149fbcda68814114d/modules/nf-core/bcftools/annotate/main.nf#L47-L63 // Complex example: https://github.com/nf-core/modules/blob/818474a292b4860ae8ff88e149fbcda68814114d/modules/nf-core/bedtools/split/main.nf#L38-L54 - // """ - // touch refseq_fastas.fa.gz - - // cat <<-END_VERSIONS > versions.yml - // "${task.process}" - // rsync: "stub" - // END_VERSIONS - // """ + """ + touch ncbi_refseq/refseq_fastas.fa.gz + + cat <<-END_VERSIONS > versions.yml + "${task.process}" + rsync: "stub" + END_VERSIONS + """ } \ No newline at end of file diff --git a/subworkflows/local/diamond/main.nf b/subworkflows/local/diamond/main.nf index 835c7e1..edebd11 100644 --- a/subworkflows/local/diamond/main.nf +++ b/subworkflows/local/diamond/main.nf @@ -58,9 +58,17 @@ workflow DIAMOND { params.diamond_outfmt, params.diamond_blast_columns, ) - emit: ch_versions = ch_versions.mix(DIAMOND_BLASTP.out.versions.first()) - ch_diamond_tsv = DIAMOND_BLASTP.out.tsv + + emit: + blast = DIAMOND_BLASTP.out.blast + sml = DIAMOND_BLASTP.out.xml + txt = DIAMOND_BLASTP.out.txt + daa = DIAMOND_BLASTP.out.daa + sam = DIAMOND_BLASTP.out.sam + tsv = DIAMOND_BLASTP.out.tsv + paf = DIAMOND_BLASTP.out.paf + versions = ch_versions // // Create a multifasta, with one fasta per entry, add the sequence ID to the meta id // ch_fasta diff --git a/subworkflows/local/functional_annotation/main.nf b/subworkflows/local/functional_annotation/main.nf index 85245d9..cc63ed2 100644 --- a/subworkflows/local/functional_annotation/main.nf +++ b/subworkflows/local/functional_annotation/main.nf @@ -1,8 +1,5 @@ -include { DIAMOND_BLASTP } from '../../../modules/nf-core/diamond/blastp/main' -include { DIAMOND_MAKEDB } from '../../../modules/nf-core/diamond/makedb/main' -// include { BLAST_MAKEBLASTDB } from '../../../modules/nf-core/blast/makeblastdb/main' -include { NCBIREFSEQDOWNLOAD } from '../../../modules/local/ncbirefseqdownload/main' - +// Import Diamond Subworkflow +include { DIAMOND } from '../diamond/main' // Import Annotator Subworfklows include { INTERPROSCAN } from '../interproscan/main' @@ -16,28 +13,11 @@ workflow FUNCTIONAL_ANNOTATION { ch_versions = Channel.empty() // TODO nf-core: substitute modules here for the modules of your subworkflow - NCBIREFSEQDOWNLOAD() // may need to include an input, currently uses default categories def categories = task.ext.categories ?: ['vertebrate_mammalian', 'vertebrate_other', 'invertebrate'] - ch_diamond_reference_fasta = NCBIREFSEQDOWNLOAD.out.fasta - ch_versions = ch_versions.mix(NCBIREFSEQDOWNLOAD.out.versions.first()) - - DIAMOND_MAKEDB ( - ch_diamond_reference_fasta, + DIAMOND( + ch_fasta ) - - ch_diamond_db = DIAMOND_MAKEDB.out.db - ch_versions = ch_versions.mix(DIAMOND_MAKEDB.out.versions.first()) - - - //ch_diamond_db = Channel.of( [ [id:"diamond_db"], file(params.diamond_db, checkIfExists: true) ] ) - - DIAMOND_BLASTP ( - ch_fasta, - ch_diamond_db, - params.diamond_outfmt, - params.diamond_blast_columns, - ) - ch_versions = ch_versions.mix(DIAMOND_BLASTP.out.versions.first()) - + ch_versions = ch_versions.mix(DIAMOND.out.versions.first()) + // Create a multifasta, with one fasta per entry, add the sequence ID to the meta id ch_fasta .map { meta, fasta -> @@ -49,14 +29,6 @@ workflow FUNCTIONAL_ANNOTATION { .transpose() .set { ch_multifasta } - - - emit: - // TODO nf-core: edit emitted channels - ch_diamond_tsv = DIAMOND_BLASTP.out.tsv // channel: [ val(meta)] - emit: - versions = ch_versions // channel: [ versions.yml ] - // // SUBWORKFLOW: Run InterProScan // @@ -67,4 +39,7 @@ workflow FUNCTIONAL_ANNOTATION { ) ch_versions = ch_versions.mix(INTERPROSCAN.out.versions.first()) } + + emit: + versions = ch_versions // channel: [ versions.yml ] } From 9fd5d3fd2fcb7d96e101c3d0d85c9f74e27e764b Mon Sep 17 00:00:00 2001 From: tracelail Date: Wed, 9 Jul 2025 12:07:02 -0400 Subject: [PATCH 18/59] Added stub section to diamondpreparetaxa module. --- modules/local/diamondpreparetaxa/main.nf | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/modules/local/diamondpreparetaxa/main.nf b/modules/local/diamondpreparetaxa/main.nf index 70c5709..b7100c3 100644 --- a/modules/local/diamondpreparetaxa/main.nf +++ b/modules/local/diamondpreparetaxa/main.nf @@ -41,16 +41,17 @@ process DIAMONDPREPARETAXA { END_VERSIONS """ - // stub: + stub: // def args = task.ext.args ?: '' // def prefix = task.ext.prefix ?: "${meta.id}" - // """ + """ - // touch ${prefix}.bam + touch taxa/nodes.dmp + touch taxa/names.dmp - // cat <<-END_VERSIONS > versions.yml - // "${task.process}": - // diamondpreparetaxa: \$(diamondpreparetaxa --version) - // END_VERSIONS - // """ + cat <<-END_VERSIONS > versions.yml + "${task.process}": + diamondpreparetaxa: \$(diamondpreparetaxa --version) + END_VERSIONS + """ } From fa390cea0cdefc27699fb43883f7184ca977970f Mon Sep 17 00:00:00 2001 From: tracelail Date: Wed, 9 Jul 2025 12:34:24 -0400 Subject: [PATCH 19/59] created a simple flow diagram of the diamond subworkflow and it's modules. --- .../local/diamond/diamond.excalidraw.png | Bin 0 -> 99913 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 subworkflows/local/diamond/diamond.excalidraw.png diff --git a/subworkflows/local/diamond/diamond.excalidraw.png b/subworkflows/local/diamond/diamond.excalidraw.png new file mode 100644 index 0000000000000000000000000000000000000000..5da08354c48ee2279af8a0078d4fd1adc0b72163 GIT binary patch literal 99913 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 Date: Mon, 28 Jul 2025 12:21:42 -0400 Subject: [PATCH 20/59] Apply suggestions from code review Co-authored-by: Olga Botvinnik --- CITATIONS.md | 3 --- docs/output.md | 2 +- modules.json | 2 +- modules/local/diamondpreparetaxa/main.nf | 6 +++--- modules/local/ncbirefseqdownload/main.nf | 4 ++-- 5 files changed, 7 insertions(+), 10 deletions(-) diff --git a/CITATIONS.md b/CITATIONS.md index fdda0cc..da80bd8 100644 --- a/CITATIONS.md +++ b/CITATIONS.md @@ -10,9 +10,6 @@ ## Pipeline tools -- [FastQC](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/) - -> Andrews, S. (2010). FastQC: A Quality Control Tool for High Throughput Sequence Data [Online]. - [DIAMOND](https://github.com/bbuchfink/diamond) diff --git a/docs/output.md b/docs/output.md index 72a93ef..6743a11 100644 --- a/docs/output.md +++ b/docs/output.md @@ -14,7 +14,7 @@ The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes d - [Functional Annotation](#functional-annotation) Annotate proteins with functional domains - [InterProScan](#Interproscan) - Search the InterPro database for functional domains - - [Diamond] (#Diamond) - Provide ‘hits’ of potential homologous protein matches between species + - [Diamond] (#Diamond) - Provide potential homologous protein matches between species - [MultiQC](#multiqc) - Aggregate report describing results and QC from the whole pipeline - [SeqKit stats](#seqkit_stats) - Simple statistics for protein FASTA files - [Pipeline information](#pipeline-information) - Report metrics generated during the workflow execution diff --git a/modules.json b/modules.json index e488c96..f577044 100644 --- a/modules.json +++ b/modules.json @@ -28,7 +28,7 @@ }, "seqkit/stats": { "branch": "master", - "git_sha": "81880787133db07d9b4c1febd152c090eb8325dc + "git_sha": "81880787133db07d9b4c1febd152c090eb8325dc", "installed_by": ["modules"] }, "untar": { diff --git a/modules/local/diamondpreparetaxa/main.nf b/modules/local/diamondpreparetaxa/main.nf index b7100c3..a9f178f 100644 --- a/modules/local/diamondpreparetaxa/main.nf +++ b/modules/local/diamondpreparetaxa/main.nf @@ -4,8 +4,9 @@ process DIAMONDPREPARETAXA { label 'process_low' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/YOUR-TOOL-HERE': + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://depot.galaxyproject.org/singularity/diamond:2.1.12--hdb4b4cc_1' + : 'biocontainers/diamond:2.1.12--hdb4b4cc_1'}" 'biocontainers/YOUR-TOOL-HERE' }" // write the output files to a user specified directory via an input parameter @@ -45,7 +46,6 @@ process DIAMONDPREPARETAXA { // def args = task.ext.args ?: '' // def prefix = task.ext.prefix ?: "${meta.id}" """ - touch taxa/nodes.dmp touch taxa/names.dmp diff --git a/modules/local/ncbirefseqdownload/main.nf b/modules/local/ncbirefseqdownload/main.nf index f6c9e3b..7428bb7 100644 --- a/modules/local/ncbirefseqdownload/main.nf +++ b/modules/local/ncbirefseqdownload/main.nf @@ -4,8 +4,8 @@ process NCBIREFSEQDOWNLOAD { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/YOUR-TOOL-HERE': - 'biocontainers/YOUR-TOOL-HERE' }" + 'https://depot.galaxyproject.org/singularity/r-stitch:1.7.3--r44h64f727c_0': + 'biocontainers/r-stitch:1.7.3--r44h64f727c_0' }" // publishDir "${params.outdir}", mode: 'copy' From 71ff9ef1af5e8707a26709cb69c0d4660964a8ba Mon Sep 17 00:00:00 2001 From: tracelail Date: Tue, 29 Jul 2025 09:41:09 -0400 Subject: [PATCH 21/59] Created workflow success tests for diamond subworkflow. Added nextflow config processes for DIAMOND_MAKEDB and DIAMOND_BLASTP. --- .nf-test.log | 56 ++++++++++-- subworkflows/local/diamond/main.nf | 2 +- subworkflows/local/diamond/tests/main.nf.test | 87 ++++++++++--------- .../local/diamond/tests/main.nf.test.snap | 61 +++++++++++++ tests/nextflow.config | 13 +++ 5 files changed, 167 insertions(+), 52 deletions(-) create mode 100644 subworkflows/local/diamond/tests/main.nf.test.snap diff --git a/.nf-test.log b/.nf-test.log index 0a95747..9d46686 100644 --- a/.nf-test.log +++ b/.nf-test.log @@ -1,9 +1,47 @@ -Jul-09 09:36:15.278 [main] INFO com.askimed.nf.test.App - nf-test 0.9.2 -Jul-09 09:36:15.294 [main] INFO com.askimed.nf.test.App - Arguments: [test, subworkflows/local/diamond/tests/main.nf.tests] -Jul-09 09:36:16.153 [main] INFO com.askimed.nf.test.App - Nextflow Version: 24.10.6 -Jul-09 09:36:16.155 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Load config from file /home/trace/projects/proteinannotator/nf-test.config... -Jul-09 09:36:16.663 [main] WARN com.askimed.nf.test.nextflow.NextflowScript - Module /home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/main.nf: Dependency '/home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/../../../modules/nf-core/blast/makeblastdb/main.nf' not found. -Jul-09 09:36:16.728 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Loaded 21 files from directory /home/trace/projects/proteinannotator in 0.081 sec -Jul-09 09:36:16.730 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Found 0 files containing tests. -Jul-09 09:36:16.730 [main] DEBUG com.askimed.nf.test.lang.dependencies.DependencyResolver - Found files: [] -Jul-09 09:36:16.732 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Found 0 tests to execute. +Jul-22 14:13:52.970 [main] INFO com.askimed.nf.test.App - nf-test 0.9.2 +Jul-22 14:13:52.990 [main] INFO com.askimed.nf.test.App - Arguments: [test, modules/local/diamondpreparetaxa/tests/main.nf.test, --profile, docker] +Jul-22 14:13:54.102 [main] INFO com.askimed.nf.test.App - Nextflow Version: 25.04.6 +Jul-22 14:13:54.104 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Load config from file /home/trace/projects/proteinannotator/nf-test.config... +Jul-22 14:13:54.810 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Loaded 22 files from directory /home/trace/projects/proteinannotator in 0.094 sec +Jul-22 14:13:54.811 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Found 1 files containing tests. +Jul-22 14:13:54.811 [main] DEBUG com.askimed.nf.test.lang.dependencies.DependencyResolver - Found files: [/home/trace/projects/proteinannotator/modules/local/diamondpreparetaxa/tests/main.nf.test] +Jul-22 14:13:54.934 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Found 1 tests to execute. +Jul-22 14:13:54.935 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Started test plan +Jul-22 14:13:54.935 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Running testsuite 'Test Process DIAMONDPREPARETAXA' from file '/home/trace/projects/proteinannotator/modules/local/diamondpreparetaxa/tests/main.nf.test'. +Jul-22 14:13:54.935 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test 'd9252286: Test DIAMONDPREPARETAXA creates taxon nodes and names dmp files'. type: com.askimed.nf.test.lang.process.ProcessTest +Jul-22 14:14:01.416 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test 'd9252286: Test DIAMONDPREPARETAXA creates taxon nodes and names dmp files' finished. status: FAILED +org.codehaus.groovy.runtime.powerassert.PowerAssertionError: assert process.success + | | + | false + DIAMONDPREPARETAXA + at org.codehaus.groovy.runtime.InvokerHelper.assertFailed(InvokerHelper.java:432) + at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.assertFailed(ScriptBytecodeAdapter.java:670) + at main_nf$_run_closure1$_closure2$_closure4.doCall(main.nf.test:31) + at main_nf$_run_closure1$_closure2$_closure4.doCall(main.nf.test) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:569) + at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107) + at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) + at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:274) + at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1030) + at groovy.lang.Closure.call(Closure.java:427) + at groovy.lang.Closure.call(Closure.java:406) + at com.askimed.nf.test.lang.TestCode.execute(TestCode.java:16) + at com.askimed.nf.test.lang.process.ProcessTest.execute(ProcessTest.java:171) + at com.askimed.nf.test.core.TestExecutionEngine.execute(TestExecutionEngine.java:165) + at com.askimed.nf.test.commands.RunTestsCommand.execute(RunTestsCommand.java:298) + at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:43) + at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:18) + at picocli.CommandLine.executeUserObject(CommandLine.java:1953) + at picocli.CommandLine.access$1300(CommandLine.java:145) + at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2346) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2311) + at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179) + at picocli.CommandLine.execute(CommandLine.java:2078) + at com.askimed.nf.test.App.run(App.java:39) + at com.askimed.nf.test.App.main(App.java:46) +Jul-22 14:14:01.421 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Testsuite 'Test Process DIAMONDPREPARETAXA' finished. snapshot file: false, skipped tests: false, failed tests: true +Jul-22 14:14:01.422 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Executed 1 tests. 1 tests failed. Done! diff --git a/subworkflows/local/diamond/main.nf b/subworkflows/local/diamond/main.nf index edebd11..2b59c5b 100644 --- a/subworkflows/local/diamond/main.nf +++ b/subworkflows/local/diamond/main.nf @@ -29,7 +29,7 @@ workflow DIAMOND { NCBIREFSEQDOWNLOAD( params.refseq_release ) - ch_diamond_reference_fasta = NCBIREFSEQDOWNLOAD.out.refseq_fasta + ch_diamond_reference_fasta = NCBIREFSEQDOWNLOAD.out.refseq_fasta.map { file -> [ [id: 'refseq'], file ] } ch_versions = ch_versions.mix(NCBIREFSEQDOWNLOAD.out.versions.first()) DIAMONDPREPARETAXA ( diff --git a/subworkflows/local/diamond/tests/main.nf.test b/subworkflows/local/diamond/tests/main.nf.test index 1b8f9b1..61414a3 100644 --- a/subworkflows/local/diamond/tests/main.nf.test +++ b/subworkflows/local/diamond/tests/main.nf.test @@ -17,51 +17,54 @@ nextflow_workflow { // TODO nf-core: Change the test name preferably indicating the test-data and file-format used - setup { - run("NCBIREFSEQDOWNLOAD") { - script "../../../../modules/local/ncbirefseqdownload/main.nf" - process { - """ - input[0] = 'other' - """ - } - } - run("DIAMONDPREPARETAXA") { - script "../../../../modules/local/diamondpreparetaxa/main.nf" - process { - """ - input[0] = 'ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz' - """ - } - } - run("DIAMOND_MAKEDB") { - script "../../../../modules/nf-core/diamond/makedb/main.nf" - process { - """ - input[0] = [ [id:'test2'], [ NCBIREFSEQDOWNLOAD.out.refseq_fasta ] ] - input[1] = 'ftp://ftp.ncbi.nlm.nih.gov/pub/taxonomy/accession2taxid/prot.accession2taxid.gz' - input[2] = DIAMONDPREPARETAXA.out.taxonnodes - input[3] = DIAMONDPREPARETAXA.out.taxonnames - """ - } - } - run("DIAMOND_BLASTP") { - script "../../../../modules/nf-core/diamond/makedb/main.nf" - process { - """ - input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] - input[1] = DIAMOND_MAKEDB.out.db - input[2] = 6 - input[3] = 'qseqid qlen' - """ - } - } - } + // setup { + // run("NCBIREFSEQDOWNLOAD") { + // script "../../../../modules/local/ncbirefseqdownload/main.nf" + // process { + // """ + // input[0] = 'other' + // """ + // } + // } + // run("DIAMONDPREPARETAXA") { + // script "../../../../modules/local/diamondpreparetaxa/main.nf" + // process { + // """ + // input[0] = 'ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz' + // """ + // } + // } + // run("DIAMOND_MAKEDB") { + // script "../../../../modules/nf-core/diamond/makedb/main.nf" + // process { + // """ + // input[0] = [ + // [id:'test2'], + // [ file("${moduleTestDir}/refseq_fasta.fa.gz", checkIfExists: true) ] + // ] + // input[1] = 'ftp://ftp.ncbi.nlm.nih.gov/pub/taxonomy/accession2taxid/prot.accession2taxid.gz' + // input[2] = DIAMONDPREPARETAXA.out.taxonnodes + // input[3] = DIAMONDPREPARETAXA.out.taxonnames + // """ + // } + // } + // run("DIAMOND_BLASTP") { + // script "../../../../modules/nf-core/diamond/blastp/main.nf" + // process { + // """ + // input[0] = [ [id:'test'], file("${moduleTestDir}/test1.fasta", checkIfExists: true) ] + // input[1] = DIAMOND_MAKEDB.out.db + // input[2] = 6 + // input[3] = 'qseqid qlen' + // """ + // } + // } + // } test("Test Diamond subworkflow succeeds") { when { params { - params.refseq_release = 'complete' + params.refseq_release = 'other' params.taxondmp_zip = 'ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz' params.taxonmap = 'ftp://ftp.ncbi.nlm.nih.gov/pub/taxonomy/accession2taxid/prot.accession2taxid.gz' params.diamond_outfmt = 6 @@ -69,7 +72,7 @@ nextflow_workflow { } workflow { """ - input[0] = file("test1.fasta", checkIfExists: true) + input[0] = file("${moduleTestDir}/test1.fasta", checkIfExists: true) """ } } diff --git a/subworkflows/local/diamond/tests/main.nf.test.snap b/subworkflows/local/diamond/tests/main.nf.test.snap new file mode 100644 index 0000000..3b01813 --- /dev/null +++ b/subworkflows/local/diamond/tests/main.nf.test.snap @@ -0,0 +1,61 @@ +{ + "Test Diamond subworkflow succeeds": { + "content": [ + { + "0": [ + + ], + "1": [ + + ], + "2": [ + + ], + "3": [ + + ], + "4": [ + + ], + "5": [ + + ], + "6": [ + + ], + "7": [ + + ], + "blast": [ + + ], + "daa": [ + + ], + "paf": [ + + ], + "sam": [ + + ], + "sml": [ + + ], + "tsv": [ + + ], + "txt": [ + + ], + "versions": [ + + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.6" + }, + "timestamp": "2025-07-15T12:57:57.781672484" + } +} \ No newline at end of file diff --git a/tests/nextflow.config b/tests/nextflow.config index b33740a..79d71a6 100644 --- a/tests/nextflow.config +++ b/tests/nextflow.config @@ -26,3 +26,16 @@ process { } } +process { + withName: DIAMOND_MAKEDB { + cpus= 1 + memory= 4.GB + } +} + +process { + withName: DIAMOND_BLASTP { + cpus= 1 + memory= 4.GB + } +} \ No newline at end of file From c97004153a51483af3d07147ec67c81523d94057 Mon Sep 17 00:00:00 2001 From: tracelail Date: Wed, 30 Jul 2025 10:07:06 -0400 Subject: [PATCH 22/59] corrected typo in diamondpreparetaxa container --- .nf-test.log | 53 +++++++++++-------- modules/local/diamondpreparetaxa/main.nf | 7 ++- .../tests/main.nf.test.snap | 12 ++--- 3 files changed, 40 insertions(+), 32 deletions(-) diff --git a/.nf-test.log b/.nf-test.log index 9d46686..4701e3f 100644 --- a/.nf-test.log +++ b/.nf-test.log @@ -1,22 +1,31 @@ -Jul-22 14:13:52.970 [main] INFO com.askimed.nf.test.App - nf-test 0.9.2 -Jul-22 14:13:52.990 [main] INFO com.askimed.nf.test.App - Arguments: [test, modules/local/diamondpreparetaxa/tests/main.nf.test, --profile, docker] -Jul-22 14:13:54.102 [main] INFO com.askimed.nf.test.App - Nextflow Version: 25.04.6 -Jul-22 14:13:54.104 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Load config from file /home/trace/projects/proteinannotator/nf-test.config... -Jul-22 14:13:54.810 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Loaded 22 files from directory /home/trace/projects/proteinannotator in 0.094 sec -Jul-22 14:13:54.811 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Found 1 files containing tests. -Jul-22 14:13:54.811 [main] DEBUG com.askimed.nf.test.lang.dependencies.DependencyResolver - Found files: [/home/trace/projects/proteinannotator/modules/local/diamondpreparetaxa/tests/main.nf.test] -Jul-22 14:13:54.934 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Found 1 tests to execute. -Jul-22 14:13:54.935 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Started test plan -Jul-22 14:13:54.935 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Running testsuite 'Test Process DIAMONDPREPARETAXA' from file '/home/trace/projects/proteinannotator/modules/local/diamondpreparetaxa/tests/main.nf.test'. -Jul-22 14:13:54.935 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test 'd9252286: Test DIAMONDPREPARETAXA creates taxon nodes and names dmp files'. type: com.askimed.nf.test.lang.process.ProcessTest -Jul-22 14:14:01.416 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test 'd9252286: Test DIAMONDPREPARETAXA creates taxon nodes and names dmp files' finished. status: FAILED -org.codehaus.groovy.runtime.powerassert.PowerAssertionError: assert process.success - | | - | false - DIAMONDPREPARETAXA - at org.codehaus.groovy.runtime.InvokerHelper.assertFailed(InvokerHelper.java:432) - at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.assertFailed(ScriptBytecodeAdapter.java:670) - at main_nf$_run_closure1$_closure2$_closure4.doCall(main.nf.test:31) +Jul-30 09:33:50.172 [main] INFO com.askimed.nf.test.App - nf-test 0.9.2 +Jul-30 09:33:50.193 [main] INFO com.askimed.nf.test.App - Arguments: [test, subworkflows/local/diamond/tests/main.nf.test, --profile, docker] +Jul-30 09:33:51.319 [main] INFO com.askimed.nf.test.App - Nextflow Version: 25.04.6 +Jul-30 09:33:51.322 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Load config from file /home/trace/projects/proteinannotator/nf-test.config... +Jul-30 09:33:53.193 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Loaded 22 files from directory /home/trace/projects/proteinannotator in 0.18 sec +Jul-30 09:33:53.195 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Found 1 files containing tests. +Jul-30 09:33:53.195 [main] DEBUG com.askimed.nf.test.lang.dependencies.DependencyResolver - Found files: [/home/trace/projects/proteinannotator/subworkflows/local/diamond/tests/main.nf.test] +Jul-30 09:33:53.594 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Found 1 tests to execute. +Jul-30 09:33:53.595 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Started test plan +Jul-30 09:33:53.596 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Running testsuite 'Test Subworkflow DIAMOND' from file '/home/trace/projects/proteinannotator/subworkflows/local/diamond/tests/main.nf.test'. +Jul-30 09:33:53.596 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test 'f70c5ebf: Test Diamond subworkflow succeeds'. type: com.askimed.nf.test.lang.workflow.WorkflowTest +Jul-30 09:48:58.535 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Load snapshots from file '/home/trace/projects/proteinannotator/subworkflows/local/diamond/tests/main.nf.test.snap' +Jul-30 09:48:58.570 [main] DEBUG com.askimed.nf.test.lang.extensions.Snapshot - Snapshots 'Test Diamond subworkflow succeeds' do not match. +Jul-30 09:48:58.572 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test 'f70c5ebf: Test Diamond subworkflow succeeds' finished. status: FAILED +org.codehaus.groovy.runtime.powerassert.PowerAssertionError: 2 of 2 assertions failed + at com.askimed.nf.test.lang.extensions.GlobalMethods.assertAll(GlobalMethods.java:48) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:569) + at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107) + at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) + at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.invoke(StaticMetaMethodSite.java:44) + at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.callStatic(StaticMetaMethodSite.java:100) + at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:55) + at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:217) + at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:240) + at main_nf$_run_closure1$_closure2$_closure4.doCall(main.nf.test:80) at main_nf$_run_closure1$_closure2$_closure4.doCall(main.nf.test) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) @@ -29,7 +38,7 @@ org.codehaus.groovy.runtime.powerassert.PowerAssertionError: assert process.succ at groovy.lang.Closure.call(Closure.java:427) at groovy.lang.Closure.call(Closure.java:406) at com.askimed.nf.test.lang.TestCode.execute(TestCode.java:16) - at com.askimed.nf.test.lang.process.ProcessTest.execute(ProcessTest.java:171) + at com.askimed.nf.test.lang.workflow.WorkflowTest.execute(WorkflowTest.java:178) at com.askimed.nf.test.core.TestExecutionEngine.execute(TestExecutionEngine.java:165) at com.askimed.nf.test.commands.RunTestsCommand.execute(RunTestsCommand.java:298) at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:43) @@ -43,5 +52,5 @@ org.codehaus.groovy.runtime.powerassert.PowerAssertionError: assert process.succ at picocli.CommandLine.execute(CommandLine.java:2078) at com.askimed.nf.test.App.run(App.java:39) at com.askimed.nf.test.App.main(App.java:46) -Jul-22 14:14:01.421 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Testsuite 'Test Process DIAMONDPREPARETAXA' finished. snapshot file: false, skipped tests: false, failed tests: true -Jul-22 14:14:01.422 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Executed 1 tests. 1 tests failed. Done! +Jul-30 09:48:58.578 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Testsuite 'Test Subworkflow DIAMOND' finished. snapshot file: true, skipped tests: false, failed tests: true +Jul-30 09:48:58.579 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Executed 1 tests. 1 tests failed. Done! diff --git a/modules/local/diamondpreparetaxa/main.nf b/modules/local/diamondpreparetaxa/main.nf index a9f178f..fbe6c37 100644 --- a/modules/local/diamondpreparetaxa/main.nf +++ b/modules/local/diamondpreparetaxa/main.nf @@ -4,10 +4,9 @@ process DIAMONDPREPARETAXA { label 'process_low' conda "${moduleDir}/environment.yml" - container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container - ? 'https://depot.galaxyproject.org/singularity/diamond:2.1.12--hdb4b4cc_1' - : 'biocontainers/diamond:2.1.12--hdb4b4cc_1'}" - 'biocontainers/YOUR-TOOL-HERE' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/diamond:2.1.12--hdb4b4cc_1' : + 'biocontainers/diamond:2.1.12--hdb4b4cc_1'}" // write the output files to a user specified directory via an input parameter // publishDir "${params.outdir}/ncbi_refseq/", mode: 'copy' diff --git a/modules/local/diamondpreparetaxa/tests/main.nf.test.snap b/modules/local/diamondpreparetaxa/tests/main.nf.test.snap index c717bb4..7a299b5 100644 --- a/modules/local/diamondpreparetaxa/tests/main.nf.test.snap +++ b/modules/local/diamondpreparetaxa/tests/main.nf.test.snap @@ -3,19 +3,19 @@ "content": [ { "0": [ - "nodes.dmp:md5,2fdf39608fa7229bf6f005e1917ccf0d" + "nodes.dmp:md5,1bfa63b09c297eb0fd11fb357d3b89f4" ], "1": [ - "names.dmp:md5,55b8219881cbe8db60d7a91b8498605f" + "names.dmp:md5,53c087be5d811bd7284603fead32d0b1" ], "2": [ "versions.yml:md5,32e482f39dd2786ece9329f2a81d0f62" ], "taxonnames": [ - "names.dmp:md5,55b8219881cbe8db60d7a91b8498605f" + "names.dmp:md5,53c087be5d811bd7284603fead32d0b1" ], "taxonnodes": [ - "nodes.dmp:md5,2fdf39608fa7229bf6f005e1917ccf0d" + "nodes.dmp:md5,1bfa63b09c297eb0fd11fb357d3b89f4" ], "versions": [ "versions.yml:md5,32e482f39dd2786ece9329f2a81d0f62" @@ -24,9 +24,9 @@ ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.6" + "nextflow": "25.04.6" }, - "timestamp": "2025-07-08T09:36:02.926369952" + "timestamp": "2025-07-29T10:33:07.445040564" }, "versions": { "content": [ From 925ed8919db0d2efbfc27c8aa480d65077b7068a Mon Sep 17 00:00:00 2001 From: tracelail Date: Wed, 30 Jul 2025 10:10:15 -0400 Subject: [PATCH 23/59] updated diamond/makedb module --- modules.json | 38 +++++++------- .../nf-core/diamond/makedb/environment.yml | 2 +- modules/nf-core/diamond/makedb/main.nf | 24 ++++----- modules/nf-core/diamond/makedb/meta.yml | 51 ++++++++++--------- .../diamond/makedb/tests/main.nf.test.snap | 42 +++++++-------- 5 files changed, 78 insertions(+), 79 deletions(-) diff --git a/modules.json b/modules.json index f577044..e180944 100644 --- a/modules.json +++ b/modules.json @@ -8,23 +8,27 @@ "diamond/blastp": { "branch": "master", "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "diamond/makedb": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", - "installed_by": [ - "modules" - ] + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", + "installed_by": ["modules"] + }, + "mmseqs/search": { + "branch": "master", + "git_sha": "81880787133db07d9b4c1febd152c090eb8325dc", + "installed_by": ["modules"] + }, + "mtmalign/align": { + "branch": "master", + "git_sha": "c7cfb9446fb3098e525089198ff232d795c20ef2", + "installed_by": ["modules"] }, "multiqc": { "branch": "master", "git_sha": "f0719ae309075ae4a291533883847c3f7c441dad", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "seqkit/stats": { "branch": "master", @@ -43,26 +47,20 @@ "utils_nextflow_pipeline": { "branch": "master", "git_sha": "c2b22d85f30a706a3073387f30380704fcae013b", - "installed_by": [ - "subworkflows" - ] + "installed_by": ["subworkflows"] }, "utils_nfcore_pipeline": { "branch": "master", "git_sha": "51ae5406a030d4da1e49e4dab49756844fdd6c7a", - "installed_by": [ - "subworkflows" - ] + "installed_by": ["subworkflows"] }, "utils_nfschema_plugin": { "branch": "master", "git_sha": "2fd2cd6d0e7b273747f32e465fdc6bcc3ae0814e", - "installed_by": [ - "subworkflows" - ] + "installed_by": ["subworkflows"] } } } } } -} \ No newline at end of file +} diff --git a/modules/nf-core/diamond/makedb/environment.yml b/modules/nf-core/diamond/makedb/environment.yml index 60c71ba..18ad677 100644 --- a/modules/nf-core/diamond/makedb/environment.yml +++ b/modules/nf-core/diamond/makedb/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::diamond=2.1.8 + - bioconda::diamond=2.1.12 diff --git a/modules/nf-core/diamond/makedb/main.nf b/modules/nf-core/diamond/makedb/main.nf index 94011cf..773f203 100644 --- a/modules/nf-core/diamond/makedb/main.nf +++ b/modules/nf-core/diamond/makedb/main.nf @@ -1,11 +1,11 @@ process DIAMOND_MAKEDB { - tag "$meta.id" + tag "${meta.id}" label 'process_medium' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/diamond:2.1.8--h43eeafb_0' : - 'biocontainers/diamond:2.1.8--h43eeafb_0' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://depot.galaxyproject.org/singularity/diamond:2.1.12--hdb4b4cc_1' + : 'biocontainers/diamond:2.1.12--hdb4b4cc_1'}" input: tuple val(meta), path(fasta) @@ -15,19 +15,19 @@ process DIAMOND_MAKEDB { output: tuple val(meta), path("*.dmnd"), emit: db - path "versions.yml" , emit: versions + 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}" - def is_compressed = fasta.getExtension() == "gz" ? true : false - def fasta_name = is_compressed ? fasta.getBaseName() : fasta - def insert_taxonmap = taxonmap ? "--taxonmap $taxonmap" : "" - def insert_taxonnodes = taxonnodes ? "--taxonnodes $taxonnodes" : "" - def insert_taxonnames = taxonnames ? "--taxonnames $taxonnames" : "" + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def is_compressed = fasta.getExtension() == "gz" ? true : false + def fasta_name = is_compressed ? fasta.getBaseName() : fasta + def insert_taxonmap = taxonmap ? "--taxonmap ${taxonmap}" : "" + def insert_taxonnodes = taxonnodes ? "--taxonnodes ${taxonnodes}" : "" + def insert_taxonnames = taxonnames ? "--taxonnames ${taxonnames}" : "" """ if [ "${is_compressed}" == "true" ]; then diff --git a/modules/nf-core/diamond/makedb/meta.yml b/modules/nf-core/diamond/makedb/meta.yml index 822e824..e6ed001 100644 --- a/modules/nf-core/diamond/makedb/meta.yml +++ b/modules/nf-core/diamond/makedb/meta.yml @@ -26,25 +26,26 @@ input: pattern: "*.{fa,fasta,fa.gz,fasta.gz}" ontologies: - edam: http://edamontology.org/format_1929 # FASTA - - - taxonmap: - type: file - description: Optional mapping file of NCBI protein accession numbers to taxon - ids (gzip compressed), required for taxonomy functionality. - pattern: "*.gz" - ontologies: [] - - - taxonnodes: - type: file - description: Optional NCBI taxonomy nodes.dmp file, required for taxonomy functionality. - pattern: "*.dmp" - ontologies: [] - - - taxonnames: - type: file - description: Optional NCBI taxonomy names.dmp file, required for taxonomy functionality. - pattern: "*.dmp" - ontologies: [] + - taxonmap: + type: file + description: Optional mapping file of NCBI protein accession numbers to taxon + ids (gzip compressed), required for taxonomy functionality. + pattern: "*.gz" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + - taxonnodes: + type: file + description: Optional NCBI taxonomy nodes.dmp file, required for taxonomy functionality. + pattern: "*.dmp" + ontologies: [] + - taxonnames: + type: file + description: Optional NCBI taxonomy names.dmp file, required for taxonomy functionality. + pattern: "*.dmp" + ontologies: [] output: - - db: - - meta: + db: + - - meta: type: map description: | Groovy Map containing sample information @@ -54,13 +55,13 @@ output: description: File of the indexed DIAMOND database pattern: "*.dmnd" ontologies: [] - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" - ontologies: - - edam: http://edamontology.org/format_3750 # YAML + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@spficklin" maintainers: diff --git a/modules/nf-core/diamond/makedb/tests/main.nf.test.snap b/modules/nf-core/diamond/makedb/tests/main.nf.test.snap index 5abefce..45bd741 100644 --- a/modules/nf-core/diamond/makedb/tests/main.nf.test.snap +++ b/modules/nf-core/diamond/makedb/tests/main.nf.test.snap @@ -7,30 +7,30 @@ { "id": "test" }, - "test.dmnd:md5,9d57aa88cd1766adfda8360876fc0e4f" + "test.dmnd:md5,e5ad6add77deeebf8100e0300f26c7ee" ] ], "1": [ - "versions.yml:md5,29a8cea287d2206b9a837d2750de00c4" + "versions.yml:md5,6b4c2ac7acfe6a547a1020265b50ed4d" ], "db": [ [ { "id": "test" }, - "test.dmnd:md5,9d57aa88cd1766adfda8360876fc0e4f" + "test.dmnd:md5,e5ad6add77deeebf8100e0300f26c7ee" ] ], "versions": [ - "versions.yml:md5,29a8cea287d2206b9a837d2750de00c4" + "versions.yml:md5,6b4c2ac7acfe6a547a1020265b50ed4d" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.2", + "nextflow": "25.04.2" }, - "timestamp": "2024-07-29T14:35:11.221381" + "timestamp": "2025-06-05T10:57:28.452557995" }, "Should build a DIAMOND db file from a fasta file without taxonomic information": { "content": [ @@ -40,30 +40,30 @@ { "id": "test" }, - "test.dmnd:md5,6039420745dd4db6e761244498460ae1" + "test.dmnd:md5,1b43a1b741e0ad1496123b3cc08907d2" ] ], "1": [ - "versions.yml:md5,29a8cea287d2206b9a837d2750de00c4" + "versions.yml:md5,6b4c2ac7acfe6a547a1020265b50ed4d" ], "db": [ [ { "id": "test" }, - "test.dmnd:md5,6039420745dd4db6e761244498460ae1" + "test.dmnd:md5,1b43a1b741e0ad1496123b3cc08907d2" ] ], "versions": [ - "versions.yml:md5,29a8cea287d2206b9a837d2750de00c4" + "versions.yml:md5,6b4c2ac7acfe6a547a1020265b50ed4d" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.2", + "nextflow": "25.04.2" }, - "timestamp": "2024-07-29T14:35:00.595693" + "timestamp": "2025-06-05T10:57:04.477788623" }, "Should build a DIAMOND db file from a zipped fasta file without taxonomic information": { "content": [ @@ -73,29 +73,29 @@ { "id": "test" }, - "test.dmnd:md5,6039420745dd4db6e761244498460ae1" + "test.dmnd:md5,1b43a1b741e0ad1496123b3cc08907d2" ] ], "1": [ - "versions.yml:md5,29a8cea287d2206b9a837d2750de00c4" + "versions.yml:md5,6b4c2ac7acfe6a547a1020265b50ed4d" ], "db": [ [ { "id": "test" }, - "test.dmnd:md5,6039420745dd4db6e761244498460ae1" + "test.dmnd:md5,1b43a1b741e0ad1496123b3cc08907d2" ] ], "versions": [ - "versions.yml:md5,29a8cea287d2206b9a837d2750de00c4" + "versions.yml:md5,6b4c2ac7acfe6a547a1020265b50ed4d" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" + "nf-test": "0.9.2", + "nextflow": "25.04.2" }, - "timestamp": "2024-07-29T14:35:05.494933" + "timestamp": "2025-06-05T10:57:16.285437842" } } \ No newline at end of file From 7b8a6e171ca77bc383723ef4eec2d22b26d34867 Mon Sep 17 00:00:00 2001 From: tracelail Date: Thu, 31 Jul 2025 09:10:42 -0400 Subject: [PATCH 24/59] removed params.diamond_blast_columns = 'qseqid' to resolve testing conflict. --- .nf-test.log | 32 +++++++++---------- subworkflows/local/diamond/tests/main.nf.test | 1 - .../local/diamond/tests/main.nf.test.snap | 10 +++--- 3 files changed, 22 insertions(+), 21 deletions(-) diff --git a/.nf-test.log b/.nf-test.log index 4701e3f..583b579 100644 --- a/.nf-test.log +++ b/.nf-test.log @@ -1,17 +1,17 @@ -Jul-30 09:33:50.172 [main] INFO com.askimed.nf.test.App - nf-test 0.9.2 -Jul-30 09:33:50.193 [main] INFO com.askimed.nf.test.App - Arguments: [test, subworkflows/local/diamond/tests/main.nf.test, --profile, docker] -Jul-30 09:33:51.319 [main] INFO com.askimed.nf.test.App - Nextflow Version: 25.04.6 -Jul-30 09:33:51.322 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Load config from file /home/trace/projects/proteinannotator/nf-test.config... -Jul-30 09:33:53.193 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Loaded 22 files from directory /home/trace/projects/proteinannotator in 0.18 sec -Jul-30 09:33:53.195 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Found 1 files containing tests. -Jul-30 09:33:53.195 [main] DEBUG com.askimed.nf.test.lang.dependencies.DependencyResolver - Found files: [/home/trace/projects/proteinannotator/subworkflows/local/diamond/tests/main.nf.test] -Jul-30 09:33:53.594 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Found 1 tests to execute. -Jul-30 09:33:53.595 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Started test plan -Jul-30 09:33:53.596 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Running testsuite 'Test Subworkflow DIAMOND' from file '/home/trace/projects/proteinannotator/subworkflows/local/diamond/tests/main.nf.test'. -Jul-30 09:33:53.596 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test 'f70c5ebf: Test Diamond subworkflow succeeds'. type: com.askimed.nf.test.lang.workflow.WorkflowTest -Jul-30 09:48:58.535 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Load snapshots from file '/home/trace/projects/proteinannotator/subworkflows/local/diamond/tests/main.nf.test.snap' -Jul-30 09:48:58.570 [main] DEBUG com.askimed.nf.test.lang.extensions.Snapshot - Snapshots 'Test Diamond subworkflow succeeds' do not match. -Jul-30 09:48:58.572 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test 'f70c5ebf: Test Diamond subworkflow succeeds' finished. status: FAILED +Jul-31 08:39:57.568 [main] INFO com.askimed.nf.test.App - nf-test 0.9.2 +Jul-31 08:39:57.591 [main] INFO com.askimed.nf.test.App - Arguments: [test, subworkflows/local/diamond/tests/main.nf.test, --profile, docker] +Jul-31 08:39:58.714 [main] INFO com.askimed.nf.test.App - Nextflow Version: 25.04.6 +Jul-31 08:39:58.716 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Load config from file /home/trace/projects/proteinannotator/nf-test.config... +Jul-31 08:39:59.466 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Loaded 22 files from directory /home/trace/projects/proteinannotator in 0.099 sec +Jul-31 08:39:59.469 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Found 1 files containing tests. +Jul-31 08:39:59.469 [main] DEBUG com.askimed.nf.test.lang.dependencies.DependencyResolver - Found files: [/home/trace/projects/proteinannotator/subworkflows/local/diamond/tests/main.nf.test] +Jul-31 08:39:59.697 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Found 1 tests to execute. +Jul-31 08:39:59.698 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Started test plan +Jul-31 08:39:59.699 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Running testsuite 'Test Subworkflow DIAMOND' from file '/home/trace/projects/proteinannotator/subworkflows/local/diamond/tests/main.nf.test'. +Jul-31 08:39:59.699 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test 'f70c5ebf: Test Diamond subworkflow succeeds'. type: com.askimed.nf.test.lang.workflow.WorkflowTest +Jul-31 08:53:56.670 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Load snapshots from file '/home/trace/projects/proteinannotator/subworkflows/local/diamond/tests/main.nf.test.snap' +Jul-31 08:53:56.719 [main] DEBUG com.askimed.nf.test.lang.extensions.Snapshot - Snapshots 'Test Diamond subworkflow succeeds' do not match. +Jul-31 08:53:56.722 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test 'f70c5ebf: Test Diamond subworkflow succeeds' finished. status: FAILED org.codehaus.groovy.runtime.powerassert.PowerAssertionError: 2 of 2 assertions failed at com.askimed.nf.test.lang.extensions.GlobalMethods.assertAll(GlobalMethods.java:48) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) @@ -52,5 +52,5 @@ org.codehaus.groovy.runtime.powerassert.PowerAssertionError: 2 of 2 assertions f at picocli.CommandLine.execute(CommandLine.java:2078) at com.askimed.nf.test.App.run(App.java:39) at com.askimed.nf.test.App.main(App.java:46) -Jul-30 09:48:58.578 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Testsuite 'Test Subworkflow DIAMOND' finished. snapshot file: true, skipped tests: false, failed tests: true -Jul-30 09:48:58.579 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Executed 1 tests. 1 tests failed. Done! +Jul-31 08:53:56.737 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Testsuite 'Test Subworkflow DIAMOND' finished. snapshot file: true, skipped tests: false, failed tests: true +Jul-31 08:53:56.738 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Executed 1 tests. 1 tests failed. Done! diff --git a/subworkflows/local/diamond/tests/main.nf.test b/subworkflows/local/diamond/tests/main.nf.test index 61414a3..dc8ec66 100644 --- a/subworkflows/local/diamond/tests/main.nf.test +++ b/subworkflows/local/diamond/tests/main.nf.test @@ -68,7 +68,6 @@ nextflow_workflow { params.taxondmp_zip = 'ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz' params.taxonmap = 'ftp://ftp.ncbi.nlm.nih.gov/pub/taxonomy/accession2taxid/prot.accession2taxid.gz' params.diamond_outfmt = 6 - params.diamond_blast_columns = 'qseqid' } workflow { """ diff --git a/subworkflows/local/diamond/tests/main.nf.test.snap b/subworkflows/local/diamond/tests/main.nf.test.snap index 3b01813..5567f58 100644 --- a/subworkflows/local/diamond/tests/main.nf.test.snap +++ b/subworkflows/local/diamond/tests/main.nf.test.snap @@ -24,7 +24,8 @@ ], "7": [ - + "versions.yml:md5,4b60d5e52704e15aa6a464a001e875a1", + "versions.yml:md5,8ed4d70f88801b4b97aa532c4cd5f1e4" ], "blast": [ @@ -48,14 +49,15 @@ ], "versions": [ - + "versions.yml:md5,4b60d5e52704e15aa6a464a001e875a1", + "versions.yml:md5,8ed4d70f88801b4b97aa532c4cd5f1e4" ] } ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.6" + "nextflow": "25.04.6" }, - "timestamp": "2025-07-15T12:57:57.781672484" + "timestamp": "2025-07-30T10:30:54.59538743" } } \ No newline at end of file From 1f5ba7a950b68701ac7ca52a609b6302a6c004a9 Mon Sep 17 00:00:00 2001 From: tracelail Date: Thu, 31 Jul 2025 09:12:55 -0400 Subject: [PATCH 25/59] updated nf-core module diamond/blastp to match diamond/makedb --- modules.json | 2 +- .../nf-core/diamond/blastp/environment.yml | 2 +- modules/nf-core/diamond/blastp/main.nf | 74 +++++++++------- modules/nf-core/diamond/blastp/meta.yml | 84 +++++++++---------- .../nf-core/diamond/blastp/tests/main.nf.test | 2 +- .../diamond/blastp/tests/main.nf.test.snap | 38 ++++----- 6 files changed, 110 insertions(+), 92 deletions(-) diff --git a/modules.json b/modules.json index e180944..bf41d4b 100644 --- a/modules.json +++ b/modules.json @@ -7,7 +7,7 @@ "nf-core": { "diamond/blastp": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "diamond/makedb": { diff --git a/modules/nf-core/diamond/blastp/environment.yml b/modules/nf-core/diamond/blastp/environment.yml index 6a9b16a..18ad677 100644 --- a/modules/nf-core/diamond/blastp/environment.yml +++ b/modules/nf-core/diamond/blastp/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::diamond=2.1.11 + - bioconda::diamond=2.1.12 diff --git a/modules/nf-core/diamond/blastp/main.nf b/modules/nf-core/diamond/blastp/main.nf index 6dd8d39..060638c 100644 --- a/modules/nf-core/diamond/blastp/main.nf +++ b/modules/nf-core/diamond/blastp/main.nf @@ -1,27 +1,27 @@ process DIAMOND_BLASTP { - 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/diamond:2.1.11--h5ca1c30_0' : - 'biocontainers/diamond:2.1.11--h5ca1c30_0' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://depot.galaxyproject.org/singularity/diamond:2.1.12--hdb4b4cc_1' + : 'biocontainers/diamond:2.1.12--hdb4b4cc_1'}" input: - tuple val(meta) , path(fasta) + tuple val(meta), path(fasta) tuple val(meta2), path(db) val outfmt val blast_columns output: tuple val(meta), path('*.{blast,blast.gz}'), optional: true, emit: blast - tuple val(meta), path('*.{xml,xml.gz}') , optional: true, emit: xml - tuple val(meta), path('*.{txt,txt.gz}') , optional: true, emit: txt - tuple val(meta), path('*.{daa,daa.gz}') , optional: true, emit: daa - tuple val(meta), path('*.{sam,sam.gz}') , optional: true, emit: sam - tuple val(meta), path('*.{tsv,tsv.gz}') , optional: true, emit: tsv - tuple val(meta), path('*.{paf,paf.gz}') , optional: true, emit: paf - path "versions.yml" , emit: versions + tuple val(meta), path('*.{xml,xml.gz}'), optional: true, emit: xml + tuple val(meta), path('*.{txt,txt.gz}'), optional: true, emit: txt + tuple val(meta), path('*.{daa,daa.gz}'), optional: true, emit: daa + tuple val(meta), path('*.{sam,sam.gz}'), optional: true, emit: sam + tuple val(meta), path('*.{tsv,tsv.gz}'), optional: true, emit: tsv + tuple val(meta), path('*.{paf,paf.gz}'), optional: true, emit: paf + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when @@ -35,25 +35,34 @@ process DIAMOND_BLASTP { if (outfmt == 0) { out_ext = "blast" - } else if (outfmt == 5) { + } + else if (outfmt == 5) { out_ext = "xml" - } else if (outfmt == 6) { + } + else if (outfmt == 6) { out_ext = "txt" - } else if (outfmt == 100) { + } + else if (outfmt == 100) { out_ext = "daa" - } else if (outfmt == 101) { + } + else if (outfmt == 101) { out_ext = "sam" - } else if (outfmt == 102) { + } + else if (outfmt == 102) { out_ext = "tsv" - } else if (outfmt == 103) { + } + else if (outfmt == 103) { out_ext = "paf" - } else { + } + else { log.warn("Unknown output file format provided (${outfmt}): selecting DIAMOND default of tabular BLAST output (txt)") outfmt = 6 out_ext = 'txt' } - if ( args =~ /--compress\s+1/ ) out_ext += '.gz' + if (args =~ /--compress\s+1/) { + out_ext += '.gz' + } """ diamond \\ @@ -78,25 +87,34 @@ process DIAMOND_BLASTP { if (outfmt == 0) { out_ext = "blast" - } else if (outfmt == 5) { + } + else if (outfmt == 5) { out_ext = "xml" - } else if (outfmt == 6) { + } + else if (outfmt == 6) { out_ext = "txt" - } else if (outfmt == 100) { + } + else if (outfmt == 100) { out_ext = "daa" - } else if (outfmt == 101) { + } + else if (outfmt == 101) { out_ext = "sam" - } else if (outfmt == 102) { + } + else if (outfmt == 102) { out_ext = "tsv" - } else if (outfmt == 103) { + } + else if (outfmt == 103) { out_ext = "paf" - } else { + } + else { log.warn("Unknown output file format provided (${outfmt}): selecting DIAMOND default of tabular BLAST output (txt)") outfmt = 6 out_ext = 'txt' } - if ( args =~ /--compress\s+1/ ) out_ext += '.gz' + if (args =~ /--compress\s+1/) { + out_ext += '.gz' + } """ touch ${prefix}.${out_ext} diff --git a/modules/nf-core/diamond/blastp/meta.yml b/modules/nf-core/diamond/blastp/meta.yml index 69c0da4..a4ef905 100644 --- a/modules/nf-core/diamond/blastp/meta.yml +++ b/modules/nf-core/diamond/blastp/meta.yml @@ -36,28 +36,28 @@ input: description: File of the indexed DIAMOND database pattern: "*.dmnd" ontologies: [] - - - outfmt: - type: integer - description: | - Specify the type of output file to be generated. - 0, .blast, BLAST pairwise format. - 5, .xml, BLAST XML format. - 6, .txt, BLAST tabular format (default). This format can be customized, the 6 may be followed by a space-separated list of the blast_columns keywords, each specifying a field of the output. - 100, .daa, DIAMOND alignment archive (DAA). The DAA format is a proprietary binary format that can subsequently be used to generate other output formats using the view command. It is also supported by MEGAN and allows a quick import of results. - 101, .sam, SAM format. - 102, .tsv, Taxonomic classification. This format will not print alignments but only a taxonomic classification for each query using the LCA algorithm. - 103, .paf, PAF format. The custom fields in the format are AS (bit score), ZR (raw score) and ZE (e-value). - pattern: "0|5|6|100|101|102|103" - - - blast_columns: - type: string - description: | - Optional space separated list of DIAMOND tabular BLAST output keywords - used in conjunction with the --outfmt 6 option (txt). - Options: - qseqid sseqid pident length mismatch gapopen qstart qend sstart send evalue bitscore + - outfmt: + type: integer + description: | + Specify the type of output file to be generated. + 0, .blast, BLAST pairwise format. + 5, .xml, BLAST XML format. + 6, .txt, BLAST tabular format (default). This format can be customized, the 6 may be followed by a space-separated list of the blast_columns keywords, each specifying a field of the output. + 100, .daa, DIAMOND alignment archive (DAA). The DAA format is a proprietary binary format that can subsequently be used to generate other output formats using the view command. It is also supported by MEGAN and allows a quick import of results. + 101, .sam, SAM format. + 102, .tsv, Taxonomic classification. This format will not print alignments but only a taxonomic classification for each query using the LCA algorithm. + 103, .paf, PAF format. The custom fields in the format are AS (bit score), ZR (raw score) and ZE (e-value). + pattern: "0|5|6|100|101|102|103" + - blast_columns: + type: string + description: | + Optional space separated list of DIAMOND tabular BLAST output keywords + used in conjunction with the --outfmt 6 option (txt). + Options: + qseqid sseqid pident length mismatch gapopen qstart qend sstart send evalue bitscore output: - - blast: - - meta: + blast: + - - meta: type: map description: | Groovy Map containing sample information @@ -68,8 +68,8 @@ output: pattern: "*.{blast,blast.gz}" ontologies: - edam: http://edamontology.org/format_3836 # BLAST XML v2 results format - - xml: - - meta: + xml: + - - meta: type: map description: | Groovy Map containing sample information @@ -80,8 +80,8 @@ output: pattern: "*.{xml,xml.gz}" ontologies: - edam: http://edamontology.org/format_2332 # XML - - txt: - - meta: + txt: + - - meta: type: map description: | Groovy Map containing sample information @@ -90,10 +90,10 @@ output: type: file description: File containing hits in tabular BLAST format. pattern: "*.{txt,txt.gz}" - ontologies: - - edam: http://edamontology.org/format_1333 # BLAST results - - daa: - - meta: + ontologies: + - edam: http://edamontology.org/format_1333 # BLAST results + daa: + - - meta: type: map description: | Groovy Map containing sample information @@ -103,8 +103,8 @@ output: description: File containing hits DAA format pattern: "*.{daa,daa.gz}" ontologies: [] - - sam: - - meta: + sam: + - - meta: type: map description: | Groovy Map containing sample information @@ -115,8 +115,8 @@ output: pattern: "*.{sam,sam.gz}" ontologies: - edam: http://edamontology.org/format_2573 # SAM - - tsv: - - meta: + tsv: + - - meta: type: map description: | Groovy Map containing sample information @@ -127,8 +127,8 @@ output: pattern: "*.{tsv,tsv.gz}" ontologies: - edam: http://edamontology.org/format_3475 # TSV - - paf: - - meta: + paf: + - - meta: type: map description: | Groovy Map containing sample information @@ -138,13 +138,13 @@ output: description: File containing aligned reads in pairwise mapping format format pattern: "*.{paf,paf.gz}" ontologies: [] - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" - ontologies: - - edam: http://edamontology.org/format_3750 # YAML + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@spficklin" - "@jfy133" diff --git a/modules/nf-core/diamond/blastp/tests/main.nf.test b/modules/nf-core/diamond/blastp/tests/main.nf.test index 12dee61..9211915 100644 --- a/modules/nf-core/diamond/blastp/tests/main.nf.test +++ b/modules/nf-core/diamond/blastp/tests/main.nf.test @@ -29,7 +29,7 @@ nextflow_process { process { """ input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] - input[1] = [ [id:'testdb'], DIAMOND_MAKEDB.out.db ] + input[1] = DIAMOND_MAKEDB.out.db input[2] = 6 input[3] = 'qseqid qlen' """ diff --git a/modules/nf-core/diamond/blastp/tests/main.nf.test.snap b/modules/nf-core/diamond/blastp/tests/main.nf.test.snap index 44d5043..36a65df 100644 --- a/modules/nf-core/diamond/blastp/tests/main.nf.test.snap +++ b/modules/nf-core/diamond/blastp/tests/main.nf.test.snap @@ -29,7 +29,7 @@ ], "7": [ - "versions.yml:md5,5f638327037bee3c00e17521c04a652f" + "versions.yml:md5,75db7b2f0c2a5129e5a67e014f19a597" ], "blast": [ @@ -55,7 +55,7 @@ ] ], "versions": [ - "versions.yml:md5,5f638327037bee3c00e17521c04a652f" + "versions.yml:md5,75db7b2f0c2a5129e5a67e014f19a597" ], "xml": [ @@ -64,9 +64,9 @@ ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.2" + "nextflow": "25.04.2" }, - "timestamp": "2025-01-28T10:25:13.48912978" + "timestamp": "2025-06-05T10:51:07.898268369" }, "txt_gz": { "content": [ @@ -98,7 +98,7 @@ ], "7": [ - "versions.yml:md5,5f638327037bee3c00e17521c04a652f" + "versions.yml:md5,75db7b2f0c2a5129e5a67e014f19a597" ], "blast": [ @@ -124,7 +124,7 @@ ] ], "versions": [ - "versions.yml:md5,5f638327037bee3c00e17521c04a652f" + "versions.yml:md5,75db7b2f0c2a5129e5a67e014f19a597" ], "xml": [ @@ -133,9 +133,9 @@ ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.2" + "nextflow": "25.04.2" }, - "timestamp": "2025-01-28T10:36:04.361504205" + "timestamp": "2025-06-05T10:51:29.492044556" }, "gz_txt": { "content": [ @@ -167,7 +167,7 @@ ], "7": [ - "versions.yml:md5,5f638327037bee3c00e17521c04a652f" + "versions.yml:md5,75db7b2f0c2a5129e5a67e014f19a597" ], "blast": [ @@ -193,7 +193,7 @@ ] ], "versions": [ - "versions.yml:md5,5f638327037bee3c00e17521c04a652f" + "versions.yml:md5,75db7b2f0c2a5129e5a67e014f19a597" ], "xml": [ @@ -202,21 +202,21 @@ ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.2" + "nextflow": "25.04.2" }, - "timestamp": "2025-01-28T10:25:20.993203497" + "timestamp": "2025-06-05T10:51:14.828789692" }, "daa": { "content": [ [ - "versions.yml:md5,5f638327037bee3c00e17521c04a652f" + "versions.yml:md5,75db7b2f0c2a5129e5a67e014f19a597" ] ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.2" + "nextflow": "25.04.2" }, - "timestamp": "2025-01-28T10:25:28.126992812" + "timestamp": "2025-06-05T10:51:21.955563644" }, "stub": { "content": [ @@ -248,7 +248,7 @@ ], "7": [ - "versions.yml:md5,5f638327037bee3c00e17521c04a652f" + "versions.yml:md5,75db7b2f0c2a5129e5a67e014f19a597" ], "blast": [ @@ -274,7 +274,7 @@ ] ], "versions": [ - "versions.yml:md5,5f638327037bee3c00e17521c04a652f" + "versions.yml:md5,75db7b2f0c2a5129e5a67e014f19a597" ], "xml": [ @@ -283,8 +283,8 @@ ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.2" + "nextflow": "25.04.2" }, - "timestamp": "2025-01-28T10:25:34.911633513" + "timestamp": "2025-06-05T10:51:36.159126833" } } \ No newline at end of file From 8edc405d80fe64a713bab81b93542c0497b67a3d Mon Sep 17 00:00:00 2001 From: tracelail Date: Wed, 6 Aug 2025 10:25:57 -0400 Subject: [PATCH 26/59] working subworkflow nf-test with large prot.accession2taxid.gz taxonmap. --- .gitignore | 5 ++ .nf-test.log | 70 ++++--------------- subworkflows/local/diamond/main.nf | 1 + subworkflows/local/diamond/tests/main.nf.test | 65 +++-------------- .../local/diamond/tests/main.nf.test.snap | 63 ----------------- 5 files changed, 30 insertions(+), 174 deletions(-) delete mode 100644 subworkflows/local/diamond/tests/main.nf.test.snap diff --git a/.gitignore b/.gitignore index 1989f4d..68bec0b 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,8 @@ null/ .nf-test/tests .nf-test-*.nf .nf-test/* + +# diamond subworkflow test data +subworkflows/diamond/tests/*.fasta +subworkflows/diamond/tests/*.gz +subworkflows/local/diamond/tests/mini_prot.accession2taxid.gz \ No newline at end of file diff --git a/.nf-test.log b/.nf-test.log index 583b579..a950213 100644 --- a/.nf-test.log +++ b/.nf-test.log @@ -1,56 +1,14 @@ -Jul-31 08:39:57.568 [main] INFO com.askimed.nf.test.App - nf-test 0.9.2 -Jul-31 08:39:57.591 [main] INFO com.askimed.nf.test.App - Arguments: [test, subworkflows/local/diamond/tests/main.nf.test, --profile, docker] -Jul-31 08:39:58.714 [main] INFO com.askimed.nf.test.App - Nextflow Version: 25.04.6 -Jul-31 08:39:58.716 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Load config from file /home/trace/projects/proteinannotator/nf-test.config... -Jul-31 08:39:59.466 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Loaded 22 files from directory /home/trace/projects/proteinannotator in 0.099 sec -Jul-31 08:39:59.469 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Found 1 files containing tests. -Jul-31 08:39:59.469 [main] DEBUG com.askimed.nf.test.lang.dependencies.DependencyResolver - Found files: [/home/trace/projects/proteinannotator/subworkflows/local/diamond/tests/main.nf.test] -Jul-31 08:39:59.697 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Found 1 tests to execute. -Jul-31 08:39:59.698 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Started test plan -Jul-31 08:39:59.699 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Running testsuite 'Test Subworkflow DIAMOND' from file '/home/trace/projects/proteinannotator/subworkflows/local/diamond/tests/main.nf.test'. -Jul-31 08:39:59.699 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test 'f70c5ebf: Test Diamond subworkflow succeeds'. type: com.askimed.nf.test.lang.workflow.WorkflowTest -Jul-31 08:53:56.670 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Load snapshots from file '/home/trace/projects/proteinannotator/subworkflows/local/diamond/tests/main.nf.test.snap' -Jul-31 08:53:56.719 [main] DEBUG com.askimed.nf.test.lang.extensions.Snapshot - Snapshots 'Test Diamond subworkflow succeeds' do not match. -Jul-31 08:53:56.722 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test 'f70c5ebf: Test Diamond subworkflow succeeds' finished. status: FAILED -org.codehaus.groovy.runtime.powerassert.PowerAssertionError: 2 of 2 assertions failed - at com.askimed.nf.test.lang.extensions.GlobalMethods.assertAll(GlobalMethods.java:48) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:569) - at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107) - at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) - at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.invoke(StaticMetaMethodSite.java:44) - at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.callStatic(StaticMetaMethodSite.java:100) - at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:55) - at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:217) - at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:240) - at main_nf$_run_closure1$_closure2$_closure4.doCall(main.nf.test:80) - at main_nf$_run_closure1$_closure2$_closure4.doCall(main.nf.test) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:569) - at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107) - at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) - at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:274) - at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1030) - at groovy.lang.Closure.call(Closure.java:427) - at groovy.lang.Closure.call(Closure.java:406) - at com.askimed.nf.test.lang.TestCode.execute(TestCode.java:16) - at com.askimed.nf.test.lang.workflow.WorkflowTest.execute(WorkflowTest.java:178) - at com.askimed.nf.test.core.TestExecutionEngine.execute(TestExecutionEngine.java:165) - at com.askimed.nf.test.commands.RunTestsCommand.execute(RunTestsCommand.java:298) - at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:43) - at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:18) - at picocli.CommandLine.executeUserObject(CommandLine.java:1953) - at picocli.CommandLine.access$1300(CommandLine.java:145) - at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352) - at picocli.CommandLine$RunLast.handle(CommandLine.java:2346) - at picocli.CommandLine$RunLast.handle(CommandLine.java:2311) - at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179) - at picocli.CommandLine.execute(CommandLine.java:2078) - at com.askimed.nf.test.App.run(App.java:39) - at com.askimed.nf.test.App.main(App.java:46) -Jul-31 08:53:56.737 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Testsuite 'Test Subworkflow DIAMOND' finished. snapshot file: true, skipped tests: false, failed tests: true -Jul-31 08:53:56.738 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Executed 1 tests. 1 tests failed. Done! +Aug-06 09:31:23.695 [main] INFO com.askimed.nf.test.App - nf-test 0.9.2 +Aug-06 09:31:23.714 [main] INFO com.askimed.nf.test.App - Arguments: [test, subworkflows/local/diamond/tests/main.nf.test, --profile, docker] +Aug-06 09:31:24.614 [main] INFO com.askimed.nf.test.App - Nextflow Version: 25.04.6 +Aug-06 09:31:24.616 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Load config from file /home/trace/projects/proteinannotator/nf-test.config... +Aug-06 09:31:25.310 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Loaded 21 files from directory /home/trace/projects/proteinannotator in 0.145 sec +Aug-06 09:31:25.311 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Found 1 files containing tests. +Aug-06 09:31:25.312 [main] DEBUG com.askimed.nf.test.lang.dependencies.DependencyResolver - Found files: [/home/trace/projects/proteinannotator/subworkflows/local/diamond/tests/main.nf.test] +Aug-06 09:31:25.508 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Found 1 tests to execute. +Aug-06 09:31:25.510 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Started test plan +Aug-06 09:31:25.510 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Running testsuite 'Test Subworkflow DIAMOND' from file '/home/trace/projects/proteinannotator/subworkflows/local/diamond/tests/main.nf.test'. +Aug-06 09:31:25.510 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test 'f70c5ebf: Test Diamond subworkflow succeeds'. type: com.askimed.nf.test.lang.workflow.WorkflowTest +Aug-06 09:44:35.506 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test 'f70c5ebf: Test Diamond subworkflow succeeds' finished. status: PASSED +Aug-06 09:44:35.510 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Testsuite 'Test Subworkflow DIAMOND' finished. snapshot file: false, skipped tests: false, failed tests: false +Aug-06 09:44:35.510 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Executed 1 tests. 0 tests failed. Done! diff --git a/subworkflows/local/diamond/main.nf b/subworkflows/local/diamond/main.nf index 2b59c5b..a34b8c2 100644 --- a/subworkflows/local/diamond/main.nf +++ b/subworkflows/local/diamond/main.nf @@ -46,6 +46,7 @@ workflow DIAMOND { ch_taxonnodes, ch_taxonnames ) + // ch_diamond_db = DIAMOND_MAKEDB.out.db.map { db -> [ [id: 'diamond_db'], db ]} ch_diamond_db = DIAMOND_MAKEDB.out.db ch_versions = ch_versions.mix(DIAMOND_MAKEDB.out.versions.first()) diff --git a/subworkflows/local/diamond/tests/main.nf.test b/subworkflows/local/diamond/tests/main.nf.test index dc8ec66..5c16d73 100644 --- a/subworkflows/local/diamond/tests/main.nf.test +++ b/subworkflows/local/diamond/tests/main.nf.test @@ -1,5 +1,3 @@ -// TODO nf-core: Once you have added the required tests, please run the following command to build this file: -// nf-core subworkflows test diamond nextflow_workflow { name "Test Subworkflow DIAMOND" @@ -9,78 +7,35 @@ nextflow_workflow { tag "subworkflows" tag "subworkflows_" tag "subworkflows/diamond" - // TODO nf-core: Add tags for all modules used within this subworkflow. Example: tag "ncbirefseqdownload" tag "diamondpreparetaxa" tag "diamond/makedb" tag "diamond/blastp" - - // TODO nf-core: Change the test name preferably indicating the test-data and file-format used - // setup { - // run("NCBIREFSEQDOWNLOAD") { - // script "../../../../modules/local/ncbirefseqdownload/main.nf" - // process { - // """ - // input[0] = 'other' - // """ - // } - // } - // run("DIAMONDPREPARETAXA") { - // script "../../../../modules/local/diamondpreparetaxa/main.nf" - // process { - // """ - // input[0] = 'ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz' - // """ - // } - // } - // run("DIAMOND_MAKEDB") { - // script "../../../../modules/nf-core/diamond/makedb/main.nf" - // process { - // """ - // input[0] = [ - // [id:'test2'], - // [ file("${moduleTestDir}/refseq_fasta.fa.gz", checkIfExists: true) ] - // ] - // input[1] = 'ftp://ftp.ncbi.nlm.nih.gov/pub/taxonomy/accession2taxid/prot.accession2taxid.gz' - // input[2] = DIAMONDPREPARETAXA.out.taxonnodes - // input[3] = DIAMONDPREPARETAXA.out.taxonnames - // """ - // } - // } - // run("DIAMOND_BLASTP") { - // script "../../../../modules/nf-core/diamond/blastp/main.nf" - // process { - // """ - // input[0] = [ [id:'test'], file("${moduleTestDir}/test1.fasta", checkIfExists: true) ] - // input[1] = DIAMOND_MAKEDB.out.db - // input[2] = 6 - // input[3] = 'qseqid qlen' - // """ - // } - // } - // } test("Test Diamond subworkflow succeeds") { when { params { - params.refseq_release = 'other' - params.taxondmp_zip = 'ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz' - params.taxonmap = 'ftp://ftp.ncbi.nlm.nih.gov/pub/taxonomy/accession2taxid/prot.accession2taxid.gz' - params.diamond_outfmt = 6 + refseq_release = 'other' + taxondmp_zip = 'ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz' + taxonmap = 'ftp://ftp.ncbi.nlm.nih.gov/pub/taxonomy/accession2taxid/prot.accession2taxid.gz' + diamond_outfmt = 6 } workflow { """ - input[0] = file("${moduleTestDir}/test1.fasta", checkIfExists: true) + input[0] = [ [id:'test'], file("${moduleTestDir}/test1.fasta", checkIfExists: true)] """ } } then { + println "module test directory: ${moduleTestDir}" + println "expected module test directory: subworkflows/local/diamond/tests/" + println "taxon map parameter: file('${moduleTestDir}/mini_prot.accession2taxid.gz'" + assertAll( { assert workflow.success}, - { assert snapshot(workflow.out).match()} - //TODO nf-core: Add all required assertions to verify the test output. + // { assert snapshot(workflow.out).match()} ) } } diff --git a/subworkflows/local/diamond/tests/main.nf.test.snap b/subworkflows/local/diamond/tests/main.nf.test.snap deleted file mode 100644 index 5567f58..0000000 --- a/subworkflows/local/diamond/tests/main.nf.test.snap +++ /dev/null @@ -1,63 +0,0 @@ -{ - "Test Diamond subworkflow succeeds": { - "content": [ - { - "0": [ - - ], - "1": [ - - ], - "2": [ - - ], - "3": [ - - ], - "4": [ - - ], - "5": [ - - ], - "6": [ - - ], - "7": [ - "versions.yml:md5,4b60d5e52704e15aa6a464a001e875a1", - "versions.yml:md5,8ed4d70f88801b4b97aa532c4cd5f1e4" - ], - "blast": [ - - ], - "daa": [ - - ], - "paf": [ - - ], - "sam": [ - - ], - "sml": [ - - ], - "tsv": [ - - ], - "txt": [ - - ], - "versions": [ - "versions.yml:md5,4b60d5e52704e15aa6a464a001e875a1", - "versions.yml:md5,8ed4d70f88801b4b97aa532c4cd5f1e4" - ] - } - ], - "meta": { - "nf-test": "0.9.2", - "nextflow": "25.04.6" - }, - "timestamp": "2025-07-30T10:30:54.59538743" - } -} \ No newline at end of file From a3e661c970f0c8c4564099de1f7ccdd49188d1c1 Mon Sep 17 00:00:00 2001 From: tracelail Date: Thu, 7 Aug 2025 13:43:13 -0400 Subject: [PATCH 27/59] Updated diamond subworkflow main.nf.test with a smaller taxonmap for testing --- .nf-test.log | 32 ++++---- .../tests/main.nf.test.snap | 18 ++--- subworkflows/local/diamond/tests/main.nf.test | 10 +-- .../local/diamond/tests/main.nf.test.snap | 77 +++++++++++++++++++ 4 files changed, 109 insertions(+), 28 deletions(-) create mode 100644 subworkflows/local/diamond/tests/main.nf.test.snap diff --git a/.nf-test.log b/.nf-test.log index a950213..6b76c0c 100644 --- a/.nf-test.log +++ b/.nf-test.log @@ -1,14 +1,18 @@ -Aug-06 09:31:23.695 [main] INFO com.askimed.nf.test.App - nf-test 0.9.2 -Aug-06 09:31:23.714 [main] INFO com.askimed.nf.test.App - Arguments: [test, subworkflows/local/diamond/tests/main.nf.test, --profile, docker] -Aug-06 09:31:24.614 [main] INFO com.askimed.nf.test.App - Nextflow Version: 25.04.6 -Aug-06 09:31:24.616 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Load config from file /home/trace/projects/proteinannotator/nf-test.config... -Aug-06 09:31:25.310 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Loaded 21 files from directory /home/trace/projects/proteinannotator in 0.145 sec -Aug-06 09:31:25.311 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Found 1 files containing tests. -Aug-06 09:31:25.312 [main] DEBUG com.askimed.nf.test.lang.dependencies.DependencyResolver - Found files: [/home/trace/projects/proteinannotator/subworkflows/local/diamond/tests/main.nf.test] -Aug-06 09:31:25.508 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Found 1 tests to execute. -Aug-06 09:31:25.510 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Started test plan -Aug-06 09:31:25.510 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Running testsuite 'Test Subworkflow DIAMOND' from file '/home/trace/projects/proteinannotator/subworkflows/local/diamond/tests/main.nf.test'. -Aug-06 09:31:25.510 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test 'f70c5ebf: Test Diamond subworkflow succeeds'. type: com.askimed.nf.test.lang.workflow.WorkflowTest -Aug-06 09:44:35.506 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test 'f70c5ebf: Test Diamond subworkflow succeeds' finished. status: PASSED -Aug-06 09:44:35.510 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Testsuite 'Test Subworkflow DIAMOND' finished. snapshot file: false, skipped tests: false, failed tests: false -Aug-06 09:44:35.510 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Executed 1 tests. 0 tests failed. Done! +Aug-07 13:41:51.128 [main] INFO com.askimed.nf.test.App - nf-test 0.9.2 +Aug-07 13:41:51.151 [main] INFO com.askimed.nf.test.App - Arguments: [test, subworkflows/local/diamond/tests/main.nf.test, --profile, docker, --update-snapshot] +Aug-07 13:41:52.251 [main] INFO com.askimed.nf.test.App - Nextflow Version: 25.04.6 +Aug-07 13:41:52.254 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Load config from file /home/trace/projects/proteinannotator/nf-test.config... +Aug-07 13:41:52.911 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Loaded 21 files from directory /home/trace/projects/proteinannotator in 0.103 sec +Aug-07 13:41:52.912 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Found 1 files containing tests. +Aug-07 13:41:52.912 [main] DEBUG com.askimed.nf.test.lang.dependencies.DependencyResolver - Found files: [/home/trace/projects/proteinannotator/subworkflows/local/diamond/tests/main.nf.test] +Aug-07 13:41:53.102 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Found 1 tests to execute. +Aug-07 13:41:53.103 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Started test plan +Aug-07 13:41:53.104 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Running testsuite 'Test Subworkflow DIAMOND' from file '/home/trace/projects/proteinannotator/subworkflows/local/diamond/tests/main.nf.test'. +Aug-07 13:41:53.104 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test 'f70c5ebf: Test Diamond subworkflow succeeds'. type: com.askimed.nf.test.lang.workflow.WorkflowTest +Aug-07 13:42:12.851 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Init new snapshot file '/home/trace/projects/proteinannotator/subworkflows/local/diamond/tests/main.nf.test.snap' +Aug-07 13:42:12.854 [main] DEBUG com.askimed.nf.test.lang.extensions.Snapshot - Snapshot 'Test Diamond subworkflow succeeds' not found. +Aug-07 13:42:12.855 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Created snapshot 'Test Diamond subworkflow succeeds' +Aug-07 13:42:12.881 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Wrote snapshots to file '/home/trace/projects/proteinannotator/subworkflows/local/diamond/tests/main.nf.test.snap' +Aug-07 13:42:12.882 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test 'f70c5ebf: Test Diamond subworkflow succeeds' finished. status: PASSED +Aug-07 13:42:12.884 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Testsuite 'Test Subworkflow DIAMOND' finished. snapshot file: true, skipped tests: false, failed tests: false +Aug-07 13:42:12.888 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Executed 1 tests. 0 tests failed. Done! diff --git a/modules/local/ncbirefseqdownload/tests/main.nf.test.snap b/modules/local/ncbirefseqdownload/tests/main.nf.test.snap index 2445190..50681db 100644 --- a/modules/local/ncbirefseqdownload/tests/main.nf.test.snap +++ b/modules/local/ncbirefseqdownload/tests/main.nf.test.snap @@ -2,36 +2,36 @@ "versions": { "content": [ [ - "versions.yml:md5,3799a0b1fc5359fd1bdc1c8f20167431" + "versions.yml:md5,9fabe17275a444ef94e5e2dedcac4f32" ] ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.6" + "nextflow": "25.04.6" }, - "timestamp": "2025-06-26T10:59:29.378160575" + "timestamp": "2025-08-07T11:39:03.033767638" }, "Should download ncbi refseq 'other' zipped protein fasta": { "content": [ { "0": [ - "refseq_fasta.fa.gz:md5,f268873781947724d1dbcd450aecd336" + "refseq_fasta.fa.gz:md5,05b2f82e0366f27ddfdbd9e7f51880c3" ], "1": [ - "versions.yml:md5,3799a0b1fc5359fd1bdc1c8f20167431" + "versions.yml:md5,9fabe17275a444ef94e5e2dedcac4f32" ], "refseq_fasta": [ - "refseq_fasta.fa.gz:md5,f268873781947724d1dbcd450aecd336" + "refseq_fasta.fa.gz:md5,05b2f82e0366f27ddfdbd9e7f51880c3" ], "versions": [ - "versions.yml:md5,3799a0b1fc5359fd1bdc1c8f20167431" + "versions.yml:md5,9fabe17275a444ef94e5e2dedcac4f32" ] } ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.6" + "nextflow": "25.04.6" }, - "timestamp": "2025-06-26T09:38:32.666570109" + "timestamp": "2025-08-07T11:39:03.00481177" } } \ No newline at end of file diff --git a/subworkflows/local/diamond/tests/main.nf.test b/subworkflows/local/diamond/tests/main.nf.test index 5c16d73..94a9b92 100644 --- a/subworkflows/local/diamond/tests/main.nf.test +++ b/subworkflows/local/diamond/tests/main.nf.test @@ -18,7 +18,7 @@ nextflow_workflow { params { refseq_release = 'other' taxondmp_zip = 'ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz' - taxonmap = 'ftp://ftp.ncbi.nlm.nih.gov/pub/taxonomy/accession2taxid/prot.accession2taxid.gz' + taxonmap = "${moduleTestDir}/mini_prot.accession2taxid.gz" //'ftp://ftp.ncbi.nlm.nih.gov/pub/taxonomy/accession2taxid/prot.accession2taxid.gz' diamond_outfmt = 6 } workflow { @@ -29,13 +29,13 @@ nextflow_workflow { } then { - println "module test directory: ${moduleTestDir}" - println "expected module test directory: subworkflows/local/diamond/tests/" - println "taxon map parameter: file('${moduleTestDir}/mini_prot.accession2taxid.gz'" + // view ("module test directory: ${moduleTestDir}") + // view ("expected module test directory: subworkflows/local/diamond/tests/") + // view ("taxon map parameter: ${file("${moduleTestDir}/mini_prot.accession2taxid.gz")}") assertAll( { assert workflow.success}, - // { assert snapshot(workflow.out).match()} + { assert snapshot(workflow.out).match()} ) } } diff --git a/subworkflows/local/diamond/tests/main.nf.test.snap b/subworkflows/local/diamond/tests/main.nf.test.snap new file mode 100644 index 0000000..33468d1 --- /dev/null +++ b/subworkflows/local/diamond/tests/main.nf.test.snap @@ -0,0 +1,77 @@ +{ + "Test Diamond subworkflow succeeds": { + "content": [ + { + "0": [ + + ], + "1": [ + + ], + "2": [ + [ + { + "id": "test" + }, + "test.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + + ], + "4": [ + + ], + "5": [ + + ], + "6": [ + + ], + "7": [ + "versions.yml:md5,4b60d5e52704e15aa6a464a001e875a1", + "versions.yml:md5,88882983f101071ff12ab9ad8862946c", + "versions.yml:md5,8ed4d70f88801b4b97aa532c4cd5f1e4", + "versions.yml:md5,af268b7575a939dcbb762d66f0d34775" + ], + "blast": [ + + ], + "daa": [ + + ], + "paf": [ + + ], + "sam": [ + + ], + "sml": [ + + ], + "tsv": [ + + ], + "txt": [ + [ + { + "id": "test" + }, + "test.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,4b60d5e52704e15aa6a464a001e875a1", + "versions.yml:md5,88882983f101071ff12ab9ad8862946c", + "versions.yml:md5,8ed4d70f88801b4b97aa532c4cd5f1e4", + "versions.yml:md5,af268b7575a939dcbb762d66f0d34775" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "25.04.6" + }, + "timestamp": "2025-08-07T13:42:12.855204927" + } +} \ No newline at end of file From 3fbcc6a0a18970738e1a2b428f4deac6ae00da40 Mon Sep 17 00:00:00 2001 From: tracelail Date: Thu, 21 Aug 2025 09:44:28 -0400 Subject: [PATCH 28/59] created a local diamond subworkflow that produces a diamond/blastp output --- .gitignore | 7 +--- .nf-test.log | 36 +++++++++--------- subworkflows/local/diamond/tests/main.nf.test | 2 +- .../local/diamond/tests/main.nf.test.snap | 6 +-- .../tests/mini_prot.accession2taxid.gz | Bin 0 -> 156 bytes .../local/diamond/tests/test_refseq.fasta | 32 ++++++++++++++++ 6 files changed, 55 insertions(+), 28 deletions(-) create mode 100644 subworkflows/local/diamond/tests/mini_prot.accession2taxid.gz create mode 100644 subworkflows/local/diamond/tests/test_refseq.fasta diff --git a/.gitignore b/.gitignore index 68bec0b..c01766e 100644 --- a/.gitignore +++ b/.gitignore @@ -12,9 +12,4 @@ null/ .nf-test.log .nf-test/tests .nf-test-*.nf -.nf-test/* - -# diamond subworkflow test data -subworkflows/diamond/tests/*.fasta -subworkflows/diamond/tests/*.gz -subworkflows/local/diamond/tests/mini_prot.accession2taxid.gz \ No newline at end of file +.nf-test/* \ No newline at end of file diff --git a/.nf-test.log b/.nf-test.log index 6b76c0c..06cb472 100644 --- a/.nf-test.log +++ b/.nf-test.log @@ -1,18 +1,18 @@ -Aug-07 13:41:51.128 [main] INFO com.askimed.nf.test.App - nf-test 0.9.2 -Aug-07 13:41:51.151 [main] INFO com.askimed.nf.test.App - Arguments: [test, subworkflows/local/diamond/tests/main.nf.test, --profile, docker, --update-snapshot] -Aug-07 13:41:52.251 [main] INFO com.askimed.nf.test.App - Nextflow Version: 25.04.6 -Aug-07 13:41:52.254 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Load config from file /home/trace/projects/proteinannotator/nf-test.config... -Aug-07 13:41:52.911 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Loaded 21 files from directory /home/trace/projects/proteinannotator in 0.103 sec -Aug-07 13:41:52.912 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Found 1 files containing tests. -Aug-07 13:41:52.912 [main] DEBUG com.askimed.nf.test.lang.dependencies.DependencyResolver - Found files: [/home/trace/projects/proteinannotator/subworkflows/local/diamond/tests/main.nf.test] -Aug-07 13:41:53.102 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Found 1 tests to execute. -Aug-07 13:41:53.103 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Started test plan -Aug-07 13:41:53.104 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Running testsuite 'Test Subworkflow DIAMOND' from file '/home/trace/projects/proteinannotator/subworkflows/local/diamond/tests/main.nf.test'. -Aug-07 13:41:53.104 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test 'f70c5ebf: Test Diamond subworkflow succeeds'. type: com.askimed.nf.test.lang.workflow.WorkflowTest -Aug-07 13:42:12.851 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Init new snapshot file '/home/trace/projects/proteinannotator/subworkflows/local/diamond/tests/main.nf.test.snap' -Aug-07 13:42:12.854 [main] DEBUG com.askimed.nf.test.lang.extensions.Snapshot - Snapshot 'Test Diamond subworkflow succeeds' not found. -Aug-07 13:42:12.855 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Created snapshot 'Test Diamond subworkflow succeeds' -Aug-07 13:42:12.881 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Wrote snapshots to file '/home/trace/projects/proteinannotator/subworkflows/local/diamond/tests/main.nf.test.snap' -Aug-07 13:42:12.882 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test 'f70c5ebf: Test Diamond subworkflow succeeds' finished. status: PASSED -Aug-07 13:42:12.884 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Testsuite 'Test Subworkflow DIAMOND' finished. snapshot file: true, skipped tests: false, failed tests: false -Aug-07 13:42:12.888 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Executed 1 tests. 0 tests failed. Done! +Aug-21 09:41:14.312 [main] INFO com.askimed.nf.test.App - nf-test 0.9.2 +Aug-21 09:41:14.334 [main] INFO com.askimed.nf.test.App - Arguments: [test, subworkflows/local/diamond/tests/main.nf.test, --profile, docker, --update-snapshot] +Aug-21 09:41:15.411 [main] INFO com.askimed.nf.test.App - Nextflow Version: 25.04.6 +Aug-21 09:41:15.413 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Load config from file /home/trace/projects/proteinannotator/nf-test.config... +Aug-21 09:41:15.971 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Loaded 22 files from directory /home/trace/projects/proteinannotator in 0.079 sec +Aug-21 09:41:15.972 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Found 1 files containing tests. +Aug-21 09:41:15.973 [main] DEBUG com.askimed.nf.test.lang.dependencies.DependencyResolver - Found files: [/home/trace/projects/proteinannotator/subworkflows/local/diamond/tests/main.nf.test] +Aug-21 09:41:16.202 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Found 1 tests to execute. +Aug-21 09:41:16.203 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Started test plan +Aug-21 09:41:16.203 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Running testsuite 'Test Subworkflow DIAMOND' from file '/home/trace/projects/proteinannotator/subworkflows/local/diamond/tests/main.nf.test'. +Aug-21 09:41:16.203 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test 'f70c5ebf: Test Diamond subworkflow succeeds'. type: com.askimed.nf.test.lang.workflow.WorkflowTest +Aug-21 09:41:35.669 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Load snapshots from file '/home/trace/projects/proteinannotator/subworkflows/local/diamond/tests/main.nf.test.snap' +Aug-21 09:41:35.699 [main] DEBUG com.askimed.nf.test.lang.extensions.Snapshot - Snapshots 'Test Diamond subworkflow succeeds' do not match. Update snapshots flag set. +Aug-21 09:41:35.699 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Updated snapshot 'Test Diamond subworkflow succeeds' +Aug-21 09:41:35.716 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Wrote snapshots to file '/home/trace/projects/proteinannotator/subworkflows/local/diamond/tests/main.nf.test.snap' +Aug-21 09:41:35.718 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test 'f70c5ebf: Test Diamond subworkflow succeeds' finished. status: PASSED +Aug-21 09:41:35.721 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Testsuite 'Test Subworkflow DIAMOND' finished. snapshot file: true, skipped tests: false, failed tests: false +Aug-21 09:41:35.725 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Executed 1 tests. 0 tests failed. Done! diff --git a/subworkflows/local/diamond/tests/main.nf.test b/subworkflows/local/diamond/tests/main.nf.test index 94a9b92..f83f05d 100644 --- a/subworkflows/local/diamond/tests/main.nf.test +++ b/subworkflows/local/diamond/tests/main.nf.test @@ -23,7 +23,7 @@ nextflow_workflow { } workflow { """ - input[0] = [ [id:'test'], file("${moduleTestDir}/test1.fasta", checkIfExists: true)] + input[0] = [ [id:'test'], file("${moduleTestDir}/test_refseq.fasta", checkIfExists: true)] """ } } diff --git a/subworkflows/local/diamond/tests/main.nf.test.snap b/subworkflows/local/diamond/tests/main.nf.test.snap index 33468d1..b83fa66 100644 --- a/subworkflows/local/diamond/tests/main.nf.test.snap +++ b/subworkflows/local/diamond/tests/main.nf.test.snap @@ -13,7 +13,7 @@ { "id": "test" }, - "test.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.txt:md5,f58fdf4044f9e4bf42da7e2c05f581f5" ] ], "3": [ @@ -57,7 +57,7 @@ { "id": "test" }, - "test.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.txt:md5,f58fdf4044f9e4bf42da7e2c05f581f5" ] ], "versions": [ @@ -72,6 +72,6 @@ "nf-test": "0.9.2", "nextflow": "25.04.6" }, - "timestamp": "2025-08-07T13:42:12.855204927" + "timestamp": "2025-08-21T09:41:35.699742832" } } \ No newline at end of file diff --git a/subworkflows/local/diamond/tests/mini_prot.accession2taxid.gz b/subworkflows/local/diamond/tests/mini_prot.accession2taxid.gz new file mode 100644 index 0000000000000000000000000000000000000000..2a4ed3c6235c5ebc65fadfc62c01732c17e5d4e3 GIT binary patch literal 156 zcmV;N0Av3jiwFouA*W~n18r$;XWP_031942563.1 tetracycline efflux MFS transporter Tet(B) [Transposon Tn10] +MNSSTKIALVITLLDAMGIGLIMPVLPTLLREFIASEDIANHFGVLLALYALMQVIFAPWLGKMSDRFGRRPVLLLSLIG +ASLDYLLLAFSSALWMLYLGRLLSGITGATGAVAASVIADTTSASQRVKWFGWLGASFGLGLIAGPIIGGFAGEISPHSP +FFIAALLNIVTFLVVMFWFRETKNTRDNTDTEVGVETQSNSVYITLFKTMPILLIIYFSAQLIGQIPATVWVLFTENRFG +WNSMMVGFSLAGLGLLHSVFQAFVAGRIATKWGEKTAVLLEFIADSSAFAFLAFISEGWLDFPVLILLAGGGIALPALQG +VMSIQTKSHEQGALQGLLVSLTNATGVIGPLLFTVIYNHSLPIWDGWIWIIGLAFYCIIILLSMTFMLTPQAQGSKQETS +A +>WP_430799656.1 class D beta-lactamase OXA-1379 [medical waste metagenome] +MNKYLALLILLVYSQVSMAESIRENKSWNEVFAQESVEGVFVLCKSSKNDCITNNKERALLAFIPASTFKIANALIALET +GVVKSEHQIFKWGGEPRDMKQWEQDFTLRGAMQASAVPVFQQFAREIGEKRMQSYLGEFAYGNSNIDGGIDLFWLEGGLR +ISAINQIGFLESLYENKLPISERNQLIVKDALISEATPAYLIRSKTGYTGIKGKIQPGIAWWVGWVEKGTEVYFFAFNMN +IDNESKLPARKSIPTKIMQSEGVLNGS +>WP_148044478.1 phosphoethanolamine--lipid A transferase MCR-5.4 [hospital metagenome] +MRLSAFITFLKMRPQVRTEFLTLFISLVFTLLCNGVFWNALLAGRDSLTSGTWLMLLCTGLLITGLQWLLLLLVATRWSV +KPLLILLAVMTPAAVYFMRNYGVYFDKAMLRNLMETDVREASELLQWRMLPYLLVAAVSVWWIARVRVLRTGWKQAVMMR +SACLAGALAMISMGLWPVMDVLIPTLRENKPLRYLITPANYVISGIRVLTEQASSSADEAREVVAADAHRGPQEQGRRPR +ALVLVVGETVRAANWGLSGYERQTTPELAARDVINFSDVTSCGTDTATSLPCMFSLNGRRDYDERQIRRRESVLHVLNRS +DVNILWRDNQSGCKGVCDGLPFENLSSAGHPTLCHGERCLDEILLEGLAEKITTSRSDMLIVLHMLGNHGPAYFQRYPAS +YRRWSPTCDTTDLASCSHEALVNTYDNAVLYTDHVLARTIDLLSGIRSHDTALLYVSDHGESLGEKGLYLHGIPYVIAPD +EQIKVPMIWWQSSQVYADQACMQTHASRAPVSHDHLFHTLLGMFDVKTAAYTPELDLLATCRKGQPQ +>WP_168247882.1 extended-spectrum class C beta-lactamase IDC-2 [sediment metagenome] +MPRTESVPSKSLVVRTLLLVFACLFPMAVPAVEDTSRVRTTVDAAILPLMSQHDIPGMVVGLILDGQPYVVTYGVASKEA +NVPVAEATLFEIGSVSKVFTATLAAYAQTTGKLSLDDHPGKYLPQLKGTPIDQATLLHLGTYTAGGLPLQFPDEVTGEVA +VMDYFRNWTPLAPPGTRREYSNASPGLLGLVAASALDDDFATLMQSTVFPAFGMTDSFIHVPDRKMPDYAWGYRKDRPVR +VNEGPLDEQAYGVKTTVSDLLRFVQANIDPSSLEPSMRRAVEATQVGYFRAGTLVQGLGWEKYPYPVSREWLLGGNAKEM +LFDPQPAYRLTDQTAGERYLFNKTGSTGGFATYVAFVPARKIGIVMLANRSYPIPDRVEAAWIILEQLASGTDSN +>WP_168247881.1 extended-spectrum class C beta-lactamase IDC-1 [sediment metagenome] +MPRTESVPSKSLVVRTLLLVFACLFPMAVPAVEDSSRVRAAVDAAILPLMSQHDIPGMAVGLILDGQPYVVTYGVASKET +NVPVAEATLFEIGSVSKVFTATLATYAQATGKLSLDDHPGKYLPHLKGAPIDQATLLHLGTYTAGGLPLQFPDEVTGEAA +VMNYFRNWTPLAPPGTRREYSNASPGLLGVVAASALDDDFATLMQTTVFPAFGMTDSFIHVPDRKMPDYAWGYRKDRRVR +VNEGPLDEQAYGVKTTVSDLLRFVQANIDPNSLEPSMRHAVEATQVGYFRAGTLVQGLGWEKYPYPVSREWLLGGNAKEM +LFDPQPAYRLTDQTAGGQYLFNKTGSTGGFATYVAFVPARKIGIVMLANRSYPIPDRVEAAWMILEQLASGTDSN From a4911fcceef35fd0b974372b885fa21f97a5dd3a Mon Sep 17 00:00:00 2001 From: tracelail Date: Tue, 26 Aug 2025 09:50:48 -0400 Subject: [PATCH 29/59] Added example outputs for DIAMOND subworkflow. Added default parameters for DIAMOND subworkflow to nextflow.config. --- .nf-test.log | 36 ++--- docs/output.md | 151 +++++++++++++++--- modules/local/diamondpreparetaxa/main.nf | 14 +- modules/local/ncbirefseqdownload/main.nf | 12 +- nextflow.config | 9 +- subworkflows/local/diamond/main.nf | 42 +---- subworkflows/local/diamond/tests/main.nf.test | 9 +- .../local/diamond/tests/main.nf.test.snap | 4 +- subworkflows/local/diamond/tests/test1.fasta | 8 - subworkflows/local/diamond/tests/test2.fasta | 8 - 10 files changed, 167 insertions(+), 126 deletions(-) delete mode 100644 subworkflows/local/diamond/tests/test1.fasta delete mode 100644 subworkflows/local/diamond/tests/test2.fasta diff --git a/.nf-test.log b/.nf-test.log index 06cb472..1b2672a 100644 --- a/.nf-test.log +++ b/.nf-test.log @@ -1,18 +1,18 @@ -Aug-21 09:41:14.312 [main] INFO com.askimed.nf.test.App - nf-test 0.9.2 -Aug-21 09:41:14.334 [main] INFO com.askimed.nf.test.App - Arguments: [test, subworkflows/local/diamond/tests/main.nf.test, --profile, docker, --update-snapshot] -Aug-21 09:41:15.411 [main] INFO com.askimed.nf.test.App - Nextflow Version: 25.04.6 -Aug-21 09:41:15.413 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Load config from file /home/trace/projects/proteinannotator/nf-test.config... -Aug-21 09:41:15.971 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Loaded 22 files from directory /home/trace/projects/proteinannotator in 0.079 sec -Aug-21 09:41:15.972 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Found 1 files containing tests. -Aug-21 09:41:15.973 [main] DEBUG com.askimed.nf.test.lang.dependencies.DependencyResolver - Found files: [/home/trace/projects/proteinannotator/subworkflows/local/diamond/tests/main.nf.test] -Aug-21 09:41:16.202 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Found 1 tests to execute. -Aug-21 09:41:16.203 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Started test plan -Aug-21 09:41:16.203 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Running testsuite 'Test Subworkflow DIAMOND' from file '/home/trace/projects/proteinannotator/subworkflows/local/diamond/tests/main.nf.test'. -Aug-21 09:41:16.203 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test 'f70c5ebf: Test Diamond subworkflow succeeds'. type: com.askimed.nf.test.lang.workflow.WorkflowTest -Aug-21 09:41:35.669 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Load snapshots from file '/home/trace/projects/proteinannotator/subworkflows/local/diamond/tests/main.nf.test.snap' -Aug-21 09:41:35.699 [main] DEBUG com.askimed.nf.test.lang.extensions.Snapshot - Snapshots 'Test Diamond subworkflow succeeds' do not match. Update snapshots flag set. -Aug-21 09:41:35.699 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Updated snapshot 'Test Diamond subworkflow succeeds' -Aug-21 09:41:35.716 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Wrote snapshots to file '/home/trace/projects/proteinannotator/subworkflows/local/diamond/tests/main.nf.test.snap' -Aug-21 09:41:35.718 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test 'f70c5ebf: Test Diamond subworkflow succeeds' finished. status: PASSED -Aug-21 09:41:35.721 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Testsuite 'Test Subworkflow DIAMOND' finished. snapshot file: true, skipped tests: false, failed tests: false -Aug-21 09:41:35.725 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Executed 1 tests. 0 tests failed. Done! +Aug-26 09:47:37.596 [main] INFO com.askimed.nf.test.App - nf-test 0.9.2 +Aug-26 09:47:37.614 [main] INFO com.askimed.nf.test.App - Arguments: [test, subworkflows/local/diamond/tests/main.nf.test, --profile, docker, --update-snapshot] +Aug-26 09:47:38.464 [main] INFO com.askimed.nf.test.App - Nextflow Version: 25.04.6 +Aug-26 09:47:38.465 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Load config from file /home/trace/projects/proteinannotator/nf-test.config... +Aug-26 09:47:40.014 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Loaded 21 files from directory /home/trace/projects/proteinannotator in 0.122 sec +Aug-26 09:47:40.016 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Found 1 files containing tests. +Aug-26 09:47:40.016 [main] DEBUG com.askimed.nf.test.lang.dependencies.DependencyResolver - Found files: [/home/trace/projects/proteinannotator/subworkflows/local/diamond/tests/main.nf.test] +Aug-26 09:47:40.239 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Found 1 tests to execute. +Aug-26 09:47:40.240 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Started test plan +Aug-26 09:47:40.241 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Running testsuite 'Test Subworkflow DIAMOND' from file '/home/trace/projects/proteinannotator/subworkflows/local/diamond/tests/main.nf.test'. +Aug-26 09:47:40.241 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test '18fd3d6c: Test Diamond subworkflow success -- 6 - TXT output - no columns specified'. type: com.askimed.nf.test.lang.workflow.WorkflowTest +Aug-26 09:47:59.556 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Init new snapshot file '/home/trace/projects/proteinannotator/subworkflows/local/diamond/tests/main.nf.test.snap' +Aug-26 09:47:59.558 [main] DEBUG com.askimed.nf.test.lang.extensions.Snapshot - Snapshot 'Test Diamond subworkflow success -- 6 - TXT output - no columns specified' not found. +Aug-26 09:47:59.559 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Created snapshot 'Test Diamond subworkflow success -- 6 - TXT output - no columns specified' +Aug-26 09:47:59.580 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Wrote snapshots to file '/home/trace/projects/proteinannotator/subworkflows/local/diamond/tests/main.nf.test.snap' +Aug-26 09:47:59.580 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test '18fd3d6c: Test Diamond subworkflow success -- 6 - TXT output - no columns specified' finished. status: PASSED +Aug-26 09:47:59.582 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Testsuite 'Test Subworkflow DIAMOND' finished. snapshot file: true, skipped tests: false, failed tests: false +Aug-26 09:47:59.586 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Executed 1 tests. 0 tests failed. Done! diff --git a/docs/output.md b/docs/output.md index 6743a11..b959499 100644 --- a/docs/output.md +++ b/docs/output.md @@ -275,13 +275,13 @@ The XML Schema Definition (XSD) is available [here](http://ftp.ebi.ac.uk/pub/sof Output files - `functional_annotation/diamond` - - `*.blast`: (Basic Local Alignment Search Tool) BLAST pairwise format - - `*.xml`: BLAST Extensible Markup Language (XML) format - - `*.txt`: BLAST tabular format (default). This format can be customized, the 6 may be followed by a space-separated list of the blast_columns keywords, each specifying a field of the output. - - `*.daa`: DIAMOND alignment archive (DAA). The DAA format is a proprietary binary format that can subsequently be used to generate other output formats using the view command. It is also supported by MEGAN and allows a quick import of results. - - `*.sam`: SAM format. - - `*.tsv`: Taxonomic classification. This format will not print alignments but only a taxonomic classification for each query using the LCA algorithm. - - `*.paf`: PAF format. The custom fields in the format are AS (bit score), ZR (raw score) and ZE (e-value) + - `*.blast (0)`: (Basic Local Alignment Search Tool) BLAST pairwise format + - `*.xml (5)`: BLAST Extensible Markup Language (XML) format + - `*.txt (6)`: BLAST tabular format (default). This format can be customized, the 6 may be followed by a space-separated list of the blast_columns keywords, each specifying a field of the output. + - `*.daa (100)`: DIAMOND alignment archive (DAA). The DAA format is a proprietary binary format that can subsequently be used to generate other output formats using the view command. It is also supported by MEGAN and allows a quick import of results. + - `*.sam (101)`: SAM format. + - `*.tsv (102)`: Taxonomic classification. This format will not print alignments but only a taxonomic classification for each query using the LCA algorithm. + - `*.paf (103)`: PAF format. The custom fields in the format are AS (bit score), ZR (raw score) and ZE (e-value)
@@ -295,7 +295,46 @@ The pairwise BLAST format is a human readable format that is useful for visual i Example Pairwise Alignment Format output ``` +BLASTP 2.3.0+ + +Query= WP_031942563.1 tetracycline efflux MFS transporter Tet(B) [Transposon Tn10] + +Length=401 + +>WP_031942563.1 tetracycline efflux MFS transporter Tet(B) [Transposon Tn10] +Length=401 + + Score = 771 bits (1991), Expect = 1.53e-288 + Identities = 401/401 (100%), Positives = 401/401 (100%), Gaps = 0/401 (0%) + +Query 1 MNSSTKIALVITLLDAMGIGLIMPVLPTLLREFIASEDIANHFGVLLALYALMQVIFAPW 60 + MNSSTKIALVITLLDAMGIGLIMPVLPTLLREFIASEDIANHFGVLLALYALMQVIFAPW +Sbjct 1 MNSSTKIALVITLLDAMGIGLIMPVLPTLLREFIASEDIANHFGVLLALYALMQVIFAPW 60 + +Query 61 LGKMSDRFGRRPVLLLSLIGASLDYLLLAFSSALWMLYLGRLLSGITGATGAVAASVIAD 120 + LGKMSDRFGRRPVLLLSLIGASLDYLLLAFSSALWMLYLGRLLSGITGATGAVAASVIAD +Sbjct 61 LGKMSDRFGRRPVLLLSLIGASLDYLLLAFSSALWMLYLGRLLSGITGATGAVAASVIAD 120 + +Query 121 TTSASQRVKWFGWLGASFGLGLIAGPIIGGFAGEISPHSPFFIAALLNIVTFLVVMFWFR 180 + TTSASQRVKWFGWLGASFGLGLIAGPIIGGFAGEISPHSPFFIAALLNIVTFLVVMFWFR +Sbjct 121 TTSASQRVKWFGWLGASFGLGLIAGPIIGGFAGEISPHSPFFIAALLNIVTFLVVMFWFR 180 + +Query 181 ETKNTRDNTDTEVGVETQSNSVYITLFKTMPILLIIYFSAQLIGQIPATVWVLFTENRFG 240 + ETKNTRDNTDTEVGVETQSNSVYITLFKTMPILLIIYFSAQLIGQIPATVWVLFTENRFG +Sbjct 181 ETKNTRDNTDTEVGVETQSNSVYITLFKTMPILLIIYFSAQLIGQIPATVWVLFTENRFG 240 + +Query 241 WNSMMVGFSLAGLGLLHSVFQAFVAGRIATKWGEKTAVLLEFIADSSAFAFLAFISEGWL 300 + WNSMMVGFSLAGLGLLHSVFQAFVAGRIATKWGEKTAVLLEFIADSSAFAFLAFISEGWL +Sbjct 241 WNSMMVGFSLAGLGLLHSVFQAFVAGRIATKWGEKTAVLLEFIADSSAFAFLAFISEGWL 300 + +Query 301 DFPVLILLAGGGIALPALQGVMSIQTKSHEQGALQGLLVSLTNATGVIGPLLFTVIYNHS 360 + DFPVLILLAGGGIALPALQGVMSIQTKSHEQGALQGLLVSLTNATGVIGPLLFTVIYNHS +Sbjct 301 DFPVLILLAGGGIALPALQGVMSIQTKSHEQGALQGLLVSLTNATGVIGPLLFTVIYNHS 360 + +Query 361 LPIWDGWIWIIGLAFYCIIILLSMTFMLTPQAQGSKQETSA 401 + LPIWDGWIWIIGLAFYCIIILLSMTFMLTPQAQGSKQETSA +Sbjct 361 LPIWDGWIWIIGLAFYCIIILLSMTFMLTPQAQGSKQETSA 401 ``` @@ -308,7 +347,59 @@ XML (Extensible Markup Language) file has the same information as the pairwise f Example Extensible Markup Language (XML) output ``` - + + + + blastp + diamond 2.1.12 + Benjamin Buchfink, Xie Chao, and Daniel Huson (2015), "Fast and sensitive protein alignment using DIAMOND", Nature Methods 12:59-60. + refseq.dmnd + Query_1 + WP_031942563.1 tetracycline efflux MFS transporter Tet(B) [Transposon Tn10] + 401 + + + blosum62 + 0.001 + 11 + 1 + F + + + + + 1 + Query_1 + WP_031942563.1 tetracycline efflux MFS transporter Tet(B) [Transposon Tn10] + 401 + + + 1 + WP_031942563.1 + tetracycline efflux MFS transporter Tet(B) [Transposon Tn10] + WP_031942563 + 401 + + + 1 + 771 + 1991 + 1.53e-288 + 1 + 401 + 1 + 401 + 0 + 0 + 401 + 401 + 0 + 401 + MNSSTKIALVITLLDAMGIGLIMPVLPTLLREFIASEDIANHFGVLLALYALMQVIFAPWLGKMSDRFGRRPVLLLSLIGASLDYLLLAFSSALWMLYLGRLLSGITGATGAVAASVIADTTSASQRVKWFGWLGASFGLGLIAGPIIGGFAGEISPHSPFFIAALLNIVTFLVVMFWFRETKNTRDNTDTEVGVETQSNSVYITLFKTMPILLIIYFSAQLIGQIPATVWVLFTENRFGWNSMMVGFSLAGLGLLHSVFQAFVAGRIATKWGEKTAVLLEFIADSSAFAFLAFISEGWLDFPVLILLAGGGIALPALQGVMSIQTKSHEQGALQGLLVSLTNATGVIGPLLFTVIYNHSLPIWDGWIWIIGLAFYCIIILLSMTFMLTPQAQGSKQETSA + MNSSTKIALVITLLDAMGIGLIMPVLPTLLREFIASEDIANHFGVLLALYALMQVIFAPWLGKMSDRFGRRPVLLLSLIGASLDYLLLAFSSALWMLYLGRLLSGITGATGAVAASVIADTTSASQRVKWFGWLGASFGLGLIAGPIIGGFAGEISPHSPFFIAALLNIVTFLVVMFWFRETKNTRDNTDTEVGVETQSNSVYITLFKTMPILLIIYFSAQLIGQIPATVWVLFTENRFGWNSMMVGFSLAGLGLLHSVFQAFVAGRIATKWGEKTAVLLEFIADSSAFAFLAFISEGWLDFPVLILLAGGGIALPALQGVMSIQTKSHEQGALQGLLVSLTNATGVIGPLLFTVIYNHSLPIWDGWIWIIGLAFYCIIILLSMTFMLTPQAQGSKQETSA + MNSSTKIALVITLLDAMGIGLIMPVLPTLLREFIASEDIANHFGVLLALYALMQVIFAPWLGKMSDRFGRRPVLLLSLIGASLDYLLLAFSSALWMLYLGRLLSGITGATGAVAASVIADTTSASQRVKWFGWLGASFGLGLIAGPIIGGFAGEISPHSPFFIAALLNIVTFLVVMFWFRETKNTRDNTDTEVGVETQSNSVYITLFKTMPILLIIYFSAQLIGQIPATVWVLFTENRFGWNSMMVGFSLAGLGLLHSVFQAFVAGRIATKWGEKTAVLLEFIADSSAFAFLAFISEGWLDFPVLILLAGGGIALPALQGVMSIQTKSHEQGALQGLLVSLTNATGVIGPLLFTVIYNHSLPIWDGWIWIIGLAFYCIIILLSMTFMLTPQAQGSKQETSA + + ``` @@ -321,7 +412,13 @@ The BLAST tabular format is the default output and the output columns can be mod Example Text File (TXT) output ``` - +WP_031942563.1 WP_031942563.1 100 401 0 0 1 401 1 401 1.53e-288 771 +WP_430799656.1 WP_430799656.1 100 267 0 0 1 267 1 267 4.90e-197 528 +WP_148044478.1 WP_148044478.1 100 547 0 0 1 547 1 547 0.0 1087 +WP_168247882.1 WP_168247882.1 100 395 0 0 1 395 1 395 4.62e-296 790 +WP_168247882.1 WP_168247881.1 95.2 395 19 0 1 395 1 395 8.43e-283 756 +WP_168247881.1 WP_168247881.1 100 395 0 0 1 395 1 395 7.99e-297 791 +WP_168247881.1 WP_168247882.1 95.2 395 19 0 1 395 1 395 1.20e-282 756 ``` @@ -330,15 +427,6 @@ The BLAST tabular format is the default output and the output columns can be mod DIAMOND alignment archive (DAA) is a compressed proprietary binary format that is can be converted to any of the other output formats (.blast, .xml, .txt, .sam, .tsv, .paf) with the DIAMOND view command without rerunning the pipeline. It can also be used in some meta-genomic analysis software. -
-Example DIAMOND Alignment Archive (DAA) output - -``` - -``` - -
- ##### Sequence Alignment/Map (SAM) Output The SAM (Sequence Alignment/Map) file adapts the DIAMOND protein alignment output in a similar fashion to the genomic alignment. This allows for easy integration into SAM/BAM pipelines and protein alignment visualization with IGV browser. @@ -347,7 +435,18 @@ The SAM (Sequence Alignment/Map) file adapts the DIAMOND protein alignment outpu Example Sequence Alignment/Map (SAM) output ``` - +@HD VN:1.5 SO:query +@PG PN:DIAMOND VN:2.1.12 CL:diamond blastp --threads 1 --db refseq.dmnd --query test_refseq.fasta --outfmt 101 --out test.sam +@mm BlastP +@CO BlastP-like alignments +@CO Reporting AS: bitScore, ZR: rawScore, ZE: expected, ZI: percent identity, ZL: reference length, ZF: frame, ZS: query start DNA coordinate +WP_031942563.1 0 WP_031942563.1 1 255 401M * 0 0 MNSSTKIALVITLLDAMGIGLIMPVLPTLLREFIASEDIANHFGVLLALYALMQVIFAPWLGKMSDRFGRRPVLLLSLIGASLDYLLLAFSSALWMLYLGRLLSGITGATGAVAASVIADTTSASQRVKWFGWLGASFGLGLIAGPIIGGFAGEISPHSPFFIAALLNIVTFLVVMFWFRETKNTRDNTDTEVGVETQSNSVYITLFKTMPILLIIYFSAQLIGQIPATVWVLFTENRFGWNSMMVGFSLAGLGLLHSVFQAFVAGRIATKWGEKTAVLLEFIADSSAFAFLAFISEGWLDFPVLILLAGGGIALPALQGVMSIQTKSHEQGALQGLLVSLTNATGVIGPLLFTVIYNHSLPIWDGWIWIIGLAFYCIIILLSMTFMLTPQAQGSKQETSA * AS:i:771 NM:i:0 ZL:i:401 ZR:i:1991 ZE:f:1.53e-288 ZI:i:100 ZF:i:1 ZS:i:1 MD:Z:401 +WP_430799656.1 0 WP_430799656.1 1 255 267M * 0 0 MNKYLALLILLVYSQVSMAESIRENKSWNEVFAQESVEGVFVLCKSSKNDCITNNKERALLAFIPASTFKIANALIALETGVVKSEHQIFKWGGEPRDMKQWEQDFTLRGAMQASAVPVFQQFAREIGEKRMQSYLGEFAYGNSNIDGGIDLFWLEGGLRISAINQIGFLESLYENKLPISERNQLIVKDALISEATPAYLIRSKTGYTGIKGKIQPGIAWWVGWVEKGTEVYFFAFNMNIDNESKLPARKSIPTKIMQSEGVLNGS * AS:i:528 NM:i:0 ZL:i:267 ZR:i:1361 ZE:f:4.90e-197 ZI:i:100 ZF:i:1 ZS:i:1 MD:Z:267 +WP_148044478.1 0 WP_148044478.1 1 255 547M * 0 0 MRLSAFITFLKMRPQVRTEFLTLFISLVFTLLCNGVFWNALLAGRDSLTSGTWLMLLCTGLLITGLQWLLLLLVATRWSVKPLLILLAVMTPAAVYFMRNYGVYFDKAMLRNLMETDVREASELLQWRMLPYLLVAAVSVWWIARVRVLRTGWKQAVMMRSACLAGALAMISMGLWPVMDVLIPTLRENKPLRYLITPANYVISGIRVLTEQASSSADEAREVVAADAHRGPQEQGRRPRALVLVVGETVRAANWGLSGYERQTTPELAARDVINFSDVTSCGTDTATSLPCMFSLNGRRDYDERQIRRRESVLHVLNRSDVNILWRDNQSGCKGVCDGLPFENLSSAGHPTLCHGERCLDEILLEGLAEKITTSRSDMLIVLHMLGNHGPAYFQRYPASYRRWSPTCDTTDLASCSHEALVNTYDNAVLYTDHVLARTIDLLSGIRSHDTALLYVSDHGESLGEKGLYLHGIPYVIAPDEQIKVPMIWWQSSQVYADQACMQTHASRAPVSHDHLFHTLLGMFDVKTAAYTPELDLLATCRKGQPQ * AS:i:1087 NM:i:0 ZL:i:547 ZR:i:2812 ZE:f:0.0 ZI:i:100 ZF:i:1 ZS:i:1 MD:Z:547 +WP_168247882.1 0 WP_168247882.1 1 255 395M * 0 0 MPRTESVPSKSLVVRTLLLVFACLFPMAVPAVEDTSRVRTTVDAAILPLMSQHDIPGMVVGLILDGQPYVVTYGVASKEANVPVAEATLFEIGSVSKVFTATLAAYAQTTGKLSLDDHPGKYLPQLKGTPIDQATLLHLGTYTAGGLPLQFPDEVTGEVAVMDYFRNWTPLAPPGTRREYSNASPGLLGLVAASALDDDFATLMQSTVFPAFGMTDSFIHVPDRKMPDYAWGYRKDRPVRVNEGPLDEQAYGVKTTVSDLLRFVQANIDPSSLEPSMRRAVEATQVGYFRAGTLVQGLGWEKYPYPVSREWLLGGNAKEMLFDPQPAYRLTDQTAGERYLFNKTGSTGGFATYVAFVPARKIGIVMLANRSYPIPDRVEAAWIILEQLASGTDSN * AS:i:790 NM:i:0 ZL:i:395 ZR:i:2039 ZE:f:4.62e-296 ZI:i:100 ZF:i:1 ZS:i:1 MD:Z:395 +WP_168247882.1 0 WP_168247881.1 1 255 395M * 0 0 MPRTESVPSKSLVVRTLLLVFACLFPMAVPAVEDTSRVRTTVDAAILPLMSQHDIPGMVVGLILDGQPYVVTYGVASKEANVPVAEATLFEIGSVSKVFTATLAAYAQTTGKLSLDDHPGKYLPQLKGTPIDQATLLHLGTYTAGGLPLQFPDEVTGEVAVMDYFRNWTPLAPPGTRREYSNASPGLLGLVAASALDDDFATLMQSTVFPAFGMTDSFIHVPDRKMPDYAWGYRKDRPVRVNEGPLDEQAYGVKTTVSDLLRFVQANIDPSSLEPSMRRAVEATQVGYFRAGTLVQGLGWEKYPYPVSREWLLGGNAKEMLFDPQPAYRLTDQTAGERYLFNKTGSTGGFATYVAFVPARKIGIVMLANRSYPIPDRVEAAWIILEQLASGTDSN * AS:i:756 NM:i:19 ZL:i:395 ZR:i:1952 ZE:f:8.43e-283 ZI:i:95 ZF:i:1 ZS:i:1 MD:Z:34S4AA17A20T24T3A15H3A29A3N26V15T31R32N7H57GQ44M12 +WP_168247881.1 0 WP_168247881.1 1 255 395M * 0 0 MPRTESVPSKSLVVRTLLLVFACLFPMAVPAVEDSSRVRAAVDAAILPLMSQHDIPGMAVGLILDGQPYVVTYGVASKETNVPVAEATLFEIGSVSKVFTATLATYAQATGKLSLDDHPGKYLPHLKGAPIDQATLLHLGTYTAGGLPLQFPDEVTGEAAVMNYFRNWTPLAPPGTRREYSNASPGLLGVVAASALDDDFATLMQTTVFPAFGMTDSFIHVPDRKMPDYAWGYRKDRRVRVNEGPLDEQAYGVKTTVSDLLRFVQANIDPNSLEPSMRHAVEATQVGYFRAGTLVQGLGWEKYPYPVSREWLLGGNAKEMLFDPQPAYRLTDQTAGGQYLFNKTGSTGGFATYVAFVPARKIGIVMLANRSYPIPDRVEAAWMILEQLASGTDSN * AS:i:791 NM:i:0 ZL:i:395 ZR:i:2044 ZE:f:7.99e-297 ZI:i:100 ZF:i:1 ZS:i:1 MD:Z:395 +WP_168247881.1 0 WP_168247882.1 1 255 395M * 0 0 MPRTESVPSKSLVVRTLLLVFACLFPMAVPAVEDSSRVRAAVDAAILPLMSQHDIPGMAVGLILDGQPYVVTYGVASKETNVPVAEATLFEIGSVSKVFTATLATYAQATGKLSLDDHPGKYLPHLKGAPIDQATLLHLGTYTAGGLPLQFPDEVTGEAAVMNYFRNWTPLAPPGTRREYSNASPGLLGVVAASALDDDFATLMQTTVFPAFGMTDSFIHVPDRKMPDYAWGYRKDRRVRVNEGPLDEQAYGVKTTVSDLLRFVQANIDPNSLEPSMRHAVEATQVGYFRAGTLVQGLGWEKYPYPVSREWLLGGNAKEMLFDPQPAYRLTDQTAGGQYLFNKTGSTGGFATYVAFVPARKIGIVMLANRSYPIPDRVEAAWMILEQLASGTDSN * AS:i:756 NM:i:19 ZL:i:395 ZR:i:1951 ZE:f:1.20e-282 ZI:i:95 ZF:i:1 ZS:i:1 MD:Z:34T4TT17V20A24A3T15Q3T29V3D26L15S31P32S7R57ER44I12 ``` @@ -360,7 +459,11 @@ The taxonomic classification (.tsv) output provides taxonomic composition and is Example Tab-Separated Values (TSV) output ``` - +WP_031942563.1 2389 1.53e-288 +WP_430799656.1 2931384 4.90e-197 +WP_148044478.1 1755691 0.0 +WP_168247882.1 0 0 +WP_168247881.1 0 0 ``` @@ -373,7 +476,13 @@ The PAF (Pairwise mApping Format) file that is originally used for long read seq Example InterProScan GFF output ``` - +WP_031942563.1 401 +WP_430799656.1 267 +WP_148044478.1 547 +WP_168247882.1 395 +WP_168247882.1 395 +WP_168247881.1 395 +WP_168247881.1 395 ``` diff --git a/modules/local/diamondpreparetaxa/main.nf b/modules/local/diamondpreparetaxa/main.nf index fbe6c37..747d008 100644 --- a/modules/local/diamondpreparetaxa/main.nf +++ b/modules/local/diamondpreparetaxa/main.nf @@ -8,11 +8,8 @@ process DIAMONDPREPARETAXA { 'https://depot.galaxyproject.org/singularity/diamond:2.1.12--hdb4b4cc_1' : 'biocontainers/diamond:2.1.12--hdb4b4cc_1'}" - // write the output files to a user specified directory via an input parameter - // publishDir "${params.outdir}/ncbi_refseq/", mode: 'copy' - input: - val taxondmp_zip // Add default of ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz + val taxondmp_zip // default of ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz output: path("taxa/nodes.dmp"), emit: taxonnodes @@ -23,13 +20,6 @@ process DIAMONDPREPARETAXA { task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' - // def prefix = task.ext.prefix ?: "${meta.id}" - // Omitting from script portion for now - // # $args \\ - // # -@ $task.cpus \\ - // # -o ${prefix}.bam \\ - """ mkdir -p taxa/ wget -q ${taxondmp_zip} @@ -42,8 +32,6 @@ process DIAMONDPREPARETAXA { """ stub: - // def args = task.ext.args ?: '' - // def prefix = task.ext.prefix ?: "${meta.id}" """ touch taxa/nodes.dmp touch taxa/names.dmp diff --git a/modules/local/ncbirefseqdownload/main.nf b/modules/local/ncbirefseqdownload/main.nf index 7428bb7..ac6d96f 100644 --- a/modules/local/ncbirefseqdownload/main.nf +++ b/modules/local/ncbirefseqdownload/main.nf @@ -7,13 +7,11 @@ process NCBIREFSEQDOWNLOAD { 'https://depot.galaxyproject.org/singularity/r-stitch:1.7.3--r44h64f727c_0': 'biocontainers/r-stitch:1.7.3--r44h64f727c_0' }" - // publishDir "${params.outdir}", mode: 'copy' - input: - val(refseq_release) // ncbi refseq release category -- add default of 'complete' + val(refseq_release) // ncbi refseq release category -- default of 'complete' output: - path "ncbi_refseq/refseq_fasta.fa.gz", emit: refseq_fasta // reference fasta for diamond/makedb + path "ncbi_refseq/refseq_fasta.fa.gz", emit: refseq_fasta // reference fasta for diamond/makedb nf-core module path "versions.yml" , emit: versions when: @@ -41,12 +39,6 @@ process NCBIREFSEQDOWNLOAD { """ stub: - // def args = task.ext.args ?: '' - // def prefix = task.ext.prefix ?: "${meta.id}" - // TODO nf-core: A stub section should mimic the execution of the original module as best as possible - // Have a look at the following examples: - // Simple example: https://github.com/nf-core/modules/blob/818474a292b4860ae8ff88e149fbcda68814114d/modules/nf-core/bcftools/annotate/main.nf#L47-L63 - // Complex example: https://github.com/nf-core/modules/blob/818474a292b4860ae8ff88e149fbcda68814114d/modules/nf-core/bedtools/split/main.nf#L38-L54 """ touch ncbi_refseq/refseq_fastas.fa.gz diff --git a/nextflow.config b/nextflow.config index a565a2c..5c56b3d 100644 --- a/nextflow.config +++ b/nextflow.config @@ -25,9 +25,12 @@ params { igenomes_ignore = false // DIAMOND options - diamond_db = null - diamond_outfmt = 102 - diamond_blast_columns = '' + refseq_release = 'complete' + taxondmp_zip = 'ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz' + taxonmap = 'ftp://ftp.ncbi.nlm.nih.gov/pub/taxonomy/accession2taxid/prot.accession2taxid.gz' + ch_diamond_db = null + diamond_outfmt = 6 + diamond_blast_columns = 'qseqid qlen' // MultiQC options multiqc_config = null diff --git a/subworkflows/local/diamond/main.nf b/subworkflows/local/diamond/main.nf index a34b8c2..ba29a59 100644 --- a/subworkflows/local/diamond/main.nf +++ b/subworkflows/local/diamond/main.nf @@ -1,15 +1,10 @@ -// TODO nf-core: If in doubt look at other nf-core/subworkflows to see how we are doing things! :) -// https://github.com/nf-core/modules/tree/master/subworkflows -// You can also ask for help via your pull request or on the #subworkflows channel on the nf-core Slack workspace: -// https://nf-co.re/join -// TODO nf-core: A subworkflow SHOULD import at least two modules include { NCBIREFSEQDOWNLOAD } from '../../../modules/local/ncbirefseqdownload/main' include { DIAMONDPREPARETAXA } from '../../../modules/local/diamondpreparetaxa/main' include { DIAMOND_MAKEDB } from '../../../modules/nf-core/diamond/makedb/main' include { DIAMOND_BLASTP } from '../../../modules/nf-core/diamond/blastp/main' /* -* Pipeline parameters +* Default Pipeline parameters */ // params.refseq_release = 'complete' // params.taxondmp_zip = 'ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz' @@ -25,15 +20,15 @@ workflow DIAMOND { ch_versions = Channel.empty() - // TODO nf-core: substitute modules here for the modules of your subworkflow + // Modules of Diamond subworkflow NCBIREFSEQDOWNLOAD( - params.refseq_release + params.refseq_release // ncbi refseq release category ) ch_diamond_reference_fasta = NCBIREFSEQDOWNLOAD.out.refseq_fasta.map { file -> [ [id: 'refseq'], file ] } ch_versions = ch_versions.mix(NCBIREFSEQDOWNLOAD.out.versions.first()) DIAMONDPREPARETAXA ( - params.taxondmp_zip + params.taxondmp_zip // default ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz ) ch_taxonnodes = DIAMONDPREPARETAXA.out.taxonnodes ch_taxonnames = DIAMONDPREPARETAXA.out.taxonnames @@ -42,17 +37,13 @@ workflow DIAMOND { DIAMOND_MAKEDB ( ch_diamond_reference_fasta, - params.taxonmap, // make default ftp://ftp.ncbi.nlm.nih.gov/pub/taxonomy/accession2taxid/prot.accession2taxid.gz + params.taxonmap, // default ftp://ftp.ncbi.nlm.nih.gov/pub/taxonomy/accession2taxid/prot.accession2taxid.gz ch_taxonnodes, ch_taxonnames ) - // ch_diamond_db = DIAMOND_MAKEDB.out.db.map { db -> [ [id: 'diamond_db'], db ]} ch_diamond_db = DIAMOND_MAKEDB.out.db ch_versions = ch_versions.mix(DIAMOND_MAKEDB.out.versions.first()) - - //ch_diamond_db = Channel.of( [ [id:"diamond_db"], file(params.diamond_db, checkIfExists: true) ] ) - DIAMOND_BLASTP ( ch_fasta, ch_diamond_db, @@ -70,27 +61,4 @@ workflow DIAMOND { tsv = DIAMOND_BLASTP.out.tsv paf = DIAMOND_BLASTP.out.paf versions = ch_versions - - // // Create a multifasta, with one fasta per entry, add the sequence ID to the meta id - // ch_fasta - // .map { - // meta, fasta -> - // [ - // [id:"${meta.id}_${fasta.splitFasta(record: [id: true]).id[0].replaceAll(/\|/, '-')}"] , - // fasta.splitFasta(file:true) - // ] - // } - // .transpose() - // .set { ch_multifasta } - - // // - // // SUBWORKFLOW: Annotator Name - // // - - // emit: - // // TODO nf-core: edit emitted channels - // ch_diamond_tsv = DIAMOND_BLASTP.out.tsv // channel: [ val(meta)] - - // multifasta = ch_multifasta - // versions = ch_versions // channel: [ versions.yml ] } diff --git a/subworkflows/local/diamond/tests/main.nf.test b/subworkflows/local/diamond/tests/main.nf.test index f83f05d..e5e630f 100644 --- a/subworkflows/local/diamond/tests/main.nf.test +++ b/subworkflows/local/diamond/tests/main.nf.test @@ -12,14 +12,15 @@ nextflow_workflow { tag "diamond/makedb" tag "diamond/blastp" - test("Test Diamond subworkflow succeeds") { + test("Test Diamond subworkflow success -- 6 - TXT output - no columns specified") { when { params { refseq_release = 'other' taxondmp_zip = 'ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz' - taxonmap = "${moduleTestDir}/mini_prot.accession2taxid.gz" //'ftp://ftp.ncbi.nlm.nih.gov/pub/taxonomy/accession2taxid/prot.accession2taxid.gz' + taxonmap = "${moduleTestDir}/mini_prot.accession2taxid.gz" diamond_outfmt = 6 + diamond_blast_columns = '' } workflow { """ @@ -29,10 +30,6 @@ nextflow_workflow { } then { - // view ("module test directory: ${moduleTestDir}") - // view ("expected module test directory: subworkflows/local/diamond/tests/") - // view ("taxon map parameter: ${file("${moduleTestDir}/mini_prot.accession2taxid.gz")}") - assertAll( { assert workflow.success}, { assert snapshot(workflow.out).match()} diff --git a/subworkflows/local/diamond/tests/main.nf.test.snap b/subworkflows/local/diamond/tests/main.nf.test.snap index b83fa66..d3452f4 100644 --- a/subworkflows/local/diamond/tests/main.nf.test.snap +++ b/subworkflows/local/diamond/tests/main.nf.test.snap @@ -1,5 +1,5 @@ { - "Test Diamond subworkflow succeeds": { + "Test Diamond subworkflow success -- 6 - TXT output - no columns specified": { "content": [ { "0": [ @@ -72,6 +72,6 @@ "nf-test": "0.9.2", "nextflow": "25.04.6" }, - "timestamp": "2025-08-21T09:41:35.699742832" + "timestamp": "2025-08-26T09:47:59.559089213" } } \ No newline at end of file diff --git a/subworkflows/local/diamond/tests/test1.fasta b/subworkflows/local/diamond/tests/test1.fasta deleted file mode 100644 index 0653eaf..0000000 --- a/subworkflows/local/diamond/tests/test1.fasta +++ /dev/null @@ -1,8 +0,0 @@ ->sp|C1CU66|ARCA_STRZT Arginine deiminase OS=Streptococcus pneumoniae (strain Taiwan19F-14) OX=487213 GN=arcA PE=3 SV=1 -MSSHPIQVFSEIGKLKKVMLHRPGKELENLLPDYLERLLFDDIPFLEDAQKEHDAFAQAL -RDEGIEVLYLEQLAAESLTSPEIRDQFIEEYLDEANIRDRQTKVAIRELLHGIKDNQELV -EKTMAGIQKVELPEIPDEAKDLTDLVESDYPFAIDPMPNLYFTRDPFATIGNAVSLNHMF -ADTRNRETLYGKYIFKYHPIYGGKVDLVYNREEDTRIEGGDELVLSKDVLAVGISQRTDA -ASIEKLLVNIFKKNVGFKKVLAFEFANNRKFMHLDTVFTMVDYDKFTIHPEIEGDLHVYS -VTYENEKLKIVEEKGDLAELLAQNLGVEKVHLIRCGGGNIVAAAREQWNDGSNTLTIAPG -VVVVYDRNTVTNKILEEYGLRLIKIRGSELVRGRGGPRCMSMPFEREEV diff --git a/subworkflows/local/diamond/tests/test2.fasta b/subworkflows/local/diamond/tests/test2.fasta deleted file mode 100644 index 3e9dc95..0000000 --- a/subworkflows/local/diamond/tests/test2.fasta +++ /dev/null @@ -1,8 +0,0 @@ ->sp|A3CLW6|ARCA_STRSV Arginine deiminase OS=Streptococcus sanguinis (strain SK36) OX=388919 GN=arcA PE=3 SV=1 -MSTHPIRVFSEIGKLKKVMLHRPGKELENLQPDYLERLLFDDIPFLEDAQKEHDNFAQAL -RNEGVEVLYLEQLAAESLTSPEIREQFIEEYLEEANIRGRETKKAIRELLRGIKDNRELV -EKTMAGVQKVELPEIPEEAKGLTDLVESDYPFAIDPMPNLYFTRDPFATIGNAVSLNHMY -ADTRNRETLYGKYIFKHHPVYGGKVDLVYNREEDTRIEGGDELVLSKDVLAVGISQRTDA -ASIEKLLVNIFKKNVGFKKVLAFEFANNRKFMHLDTVFTMVDYDKFTIHPEIEGDLRVYS -VTYVDDKLKIVEEKGDLAEILAENLGVEKVHLIRCGGGNIVAAAREQWNDGSNTLTIAPG -VVVVYDRNTVTNKILEEYGLRLIKIRGSELVRGRGGPRCMSMPFEREEI From 64ed6dc8b392c47fd70fe384f6183675d9341422 Mon Sep 17 00:00:00 2001 From: tracelail Date: Tue, 26 Aug 2025 10:29:29 -0400 Subject: [PATCH 30/59] Added usage documentation for DIAMOND subworkflow. --- docs/output.md | 4 ++-- docs/usage.md | 19 ++++++++++++++++++- nextflow.config | 2 +- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/docs/output.md b/docs/output.md index b959499..eb6e27d 100644 --- a/docs/output.md +++ b/docs/output.md @@ -285,7 +285,7 @@ The XML Schema Definition (XSD) is available [here](http://ftp.ebi.ac.uk/pub/sof -[Diamond](https://github.com/bbuchfink/diamond) provides sensitive protein sequence alignment. The process provides ‘hits’ that are potential homologous protein matches between species, indicating a evolutionary relationship, derived by protein sequence similarity. +[Diamond](https://github.com/bbuchfink/diamond) provides sensitive protein sequence alignment. The process provides potential homologous protein matches between species, indicating a evolutionary relationship, derived by protein sequence similarity. ##### Pairwise Alignment Format (.blast) Output @@ -473,7 +473,7 @@ WP_168247881.1 0 0 The PAF (Pairwise mApping Format) file that is originally used for long read sequencing. DIAMOND adds three additional variables, AS (bit score), ZR (raw alignment score), and ZE (E-value), to provide statistical evidence for protein alignment. This format is useful if one is looking for positional information and statistical significance.
-Example InterProScan GFF output +Example Pairwise Mapping Format (PAF) output ``` WP_031942563.1 401 diff --git a/docs/usage.md b/docs/usage.md index 78273e5..7604815 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -80,13 +80,30 @@ You can also generate such `YAML`/`JSON` files via [nf-core/launch](https://nf-c ### InterProScan -Running [InterProScan](https://interproscan-docs.readthedocs.io/) requires a pre-prepared input database. You can provided this as oe of two options: +Running [InterProScan](https://interproscan-docs.readthedocs.io/) requires a pre-prepared input database. You can provided this as one of two options: - `--interproscan_tar_gz`: This is the raw `*.tar.gz` file exactly from InterProScan https://www.ebi.ac.uk/interpro/download/InterProScan/, OR - `--interproscan_database`: The decompressed version of the above folder, pointing to the `/data` subfolder For reproducibility and explicitness, `--interproscan_database_version` is a required parameter. InterProScan is quite resource-intensive and you can also choose to not run InterProScan with `--skip_interproscan`. +### DIAMOND + +Running [Diamond](https://github.com/bbuchfink/diamond) requires five inputs parameters. + +- `--refseq_release`: NCBI refseq release category of protein fastas for creation of a protein reference database using [`diamond/makedb`](https://nf-co.re/modules/diamond_makedb) +- `--taxondmp_zip`: Compressed taxon dmp file path to provide taxon names and nodes files for creation of a protein reference database using [`diamond/makedb`] +- `--taxonmap`: Compressed taxon map file path to provide taxon mapping file for creation of a protein reference database using [`diamond/makedb`] +- `--diamond_outfmt`: One of seven optional output formats for [`diamond/blastp`](https://nf-co.re/modules/diamond_blastp/), indicated by a digit code. Options include: + - `*.blast (0)`: (Basic Local Alignment Search Tool) BLAST pairwise format + - `*.xml (5)`: BLAST Extensible Markup Language (XML) format + - `*.txt (6)`: BLAST tabular format (default). This format can be customized, the 6 may be followed by a space-separated list of the blast_columns keywords, each specifying a field of the output. + - `*.daa (100)`: DIAMOND alignment archive (DAA). The DAA format is a proprietary binary format that can subsequently be used to generate other output formats using the view command. It is also supported by MEGAN and allows a quick import of results. + - `*.sam (101)`: SAM format. + - `*.tsv (102)`: Taxonomic classification. This format will not print alignments but only a taxonomic classification for each query using the LCA algorithm. + - `*.paf (103)`: PAF format. The custom fields in the format are AS (bit score), ZR (raw score) and ZE (e-value) +- `--diamond_blast_columns`: Accompanied optional input parameter to `diamond_outfmt`: `*.txt (6)` output format. Space separated list of columns to be included. Options: qseqid sseqid pident length mismatch gapopen qstart qend sstart send evalue bitscore. + ### Updating the pipeline When you run the above command, Nextflow automatically pulls the pipeline code from GitHub and stores it as a cached version. When running the pipeline after this, it will always use the cached version if available - even if the pipeline has been updated since. To make sure that you're running the latest version of the pipeline, make sure that you regularly update the cached version of the pipeline: diff --git a/nextflow.config b/nextflow.config index 5c56b3d..d8916c0 100644 --- a/nextflow.config +++ b/nextflow.config @@ -30,7 +30,7 @@ params { taxonmap = 'ftp://ftp.ncbi.nlm.nih.gov/pub/taxonomy/accession2taxid/prot.accession2taxid.gz' ch_diamond_db = null diamond_outfmt = 6 - diamond_blast_columns = 'qseqid qlen' + diamond_blast_columns = '' // MultiQC options multiqc_config = null From 556b3e3c1f7702e3d284d2707897fffd4b1fa4ea Mon Sep 17 00:00:00 2001 From: tracelail Date: Tue, 26 Aug 2025 13:20:16 -0400 Subject: [PATCH 31/59] Updated nextflow_schema and readme. --- CHANGELOG.md | 1 + README.md | 2 +- nextflow_schema.json | 38 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 40 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a02b6f6..472690c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ Initial release of nf-core/proteinannotator, created with the [nf-core](https:// - [[PR #52](https://github.com/nf-core/proteinannotator/pull/52)] Add option to turn off InterProScan for testing - [[PR #51](https://github.com/nf-core/proteinannotator/pull/51)] Update to nf-core/tools v3.3.1 +- [[PR #50](https://github.com/nf-core/proteinannotator/pull/50)] Add DIAMOND subworkflow to run [Diamond](https://github.com/bbuchfink/diamond) - [[PR #47](https://github.com/nf-core/proteinannotator/pull/47)] Update metromap with more tools added from [May 2025 Hackathon](https://nf-co.re/events/2025/hackathon-boston) - [[PR #43](https://github.com/nf-core/proteinannotator/pull/44)] Add [mTM-Align](https://nf-co.re/modules/mtmalign_align/) and [MMseqs2 Search](https://nf-co.re/modules/mmseqs_search/) modules - [[PR #42](https://github.com/nf-core/proteinannotator/pull/42)] Updated to `nf-test` on GitHub Actions and in the `PULL_REQUEST_TEMPLATE.md` diff --git a/README.md b/README.md index d5579cf..dcce38e 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ 1. Run ([`seqkit stats`](https://bioinf.shenwei.me/seqkit/usage/#stats)) to summarize input protein fasta files 2. Functional Annotation: 1. ([`InterProScan`](https://interproscan-docs.readthedocs.io/en/v5/)) a software tool used to analyze protein sequences by scanning them against the signatures of protein families, domains, and sites in the [InterPro](https://www.ebi.ac.uk/interpro/) database, helping to identify their functional characteristics. - 2. ([`DIAMOND`](https://github.com/bbuchfink/diamond)) + 2. ([`DIAMOND`](https://github.com/bbuchfink/diamond)) tool used for sensitive protein sequence alignment, comparing to a reference database created from combined protein fastas and taxonic information (taxon names, nodes, and map). 3. Present QC for raw reads ([`MultiQC`](http://multiqc.info/)) diff --git a/nextflow_schema.json b/nextflow_schema.json index 5aac74f..76d0968 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -70,6 +70,44 @@ } } }, + "diamond_options": { + "title": "DIAMOND Options", + "type": "object", + "description": "Options for DIAMOND blastp subworkflow for protein homology searches", + "default": "", + "properties": { + "refseq_release": { + "type": "string", + "description": "NCBI refseq release category of protein fastas from ftp.ncbi.nlm.nih.gov/refseq/release/", + "default": "complete" + }, + "taxondmp_zip": { + "type": "string", + "mimetype": "text/plain", + "pattern": "^.*\\.(tar\\.gz|gz)$", + "description": "Path to a compressed taxon dmp file", + "default": "ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz" + }, + "taxonmap": { + "type": "string", + "mimetype": "text/plain", + "pattern": "^.*\\.(tar\\.gz|gz)$", + "description": "Path to a compressed taxon map file", + "default": "ftp://ftp.ncbi.nlm.nih.gov/pub/taxonomy/accession2taxid/prot.accession2taxid.gz" + }, + "diamond_outfmt": { + "type": "integer", + "description": "One of seven optional output formats for [`diamond/blastp`](https://nf-co.re/modules/diamond_blastp/), indicated by a digit code.", + "enum": [0, 5, 6, 100, 101, 102, 103], + "default": 6 + }, + "diamond_blast_columns": { + "type": "string", + "description": "Accompanied optional input parameter to `diamond_outfmt`: `*.txt (6)` output format. Space separated list of columns to be included. Options: qseqid sseqid pident length mismatch gapopen qstart qend sstart send evalue bitscore.", + "default": false + } + } + }, "institutional_config_options": { "title": "Institutional config options", "type": "object", From f5b63c2fd21577c7e6e56c9f2baf0246b10de5c8 Mon Sep 17 00:00:00 2001 From: tracelail Date: Tue, 26 Aug 2025 13:26:50 -0400 Subject: [PATCH 32/59] minimal label edit to functional annotation workflow. --- subworkflows/local/functional_annotation/main.nf | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/subworkflows/local/functional_annotation/main.nf b/subworkflows/local/functional_annotation/main.nf index cc63ed2..f5943cf 100644 --- a/subworkflows/local/functional_annotation/main.nf +++ b/subworkflows/local/functional_annotation/main.nf @@ -12,7 +12,10 @@ workflow FUNCTIONAL_ANNOTATION { ch_versions = Channel.empty() - // TODO nf-core: substitute modules here for the modules of your subworkflow + // + // SUBWORKFLOW: Run Diamond + // + DIAMOND( ch_fasta ) From 6cd3a20da487f517bbc2dc39a1e7ef93973c15d4 Mon Sep 17 00:00:00 2001 From: tracelail Date: Tue, 26 Aug 2025 13:49:57 -0400 Subject: [PATCH 33/59] updated nextflow_schema and nextflow.config --- nextflow.config | 1 - nextflow_schema.json | 3 +++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/nextflow.config b/nextflow.config index d8916c0..e61b8f6 100644 --- a/nextflow.config +++ b/nextflow.config @@ -28,7 +28,6 @@ params { refseq_release = 'complete' taxondmp_zip = 'ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz' taxonmap = 'ftp://ftp.ncbi.nlm.nih.gov/pub/taxonomy/accession2taxid/prot.accession2taxid.gz' - ch_diamond_db = null diamond_outfmt = 6 diamond_blast_columns = '' diff --git a/nextflow_schema.json b/nextflow_schema.json index 76d0968..9cd9215 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -265,6 +265,9 @@ { "$ref": "#/$defs/interproscan_options" }, + { + "$ref": "#/$defs/diamond_options" + }, { "$ref": "#/$defs/institutional_config_options" }, From 3ffbc1a5208ff960f003dad0a18f6d795f12c45d Mon Sep 17 00:00:00 2001 From: tracelail Date: Thu, 2 Oct 2025 13:51:47 -0400 Subject: [PATCH 34/59] changed diamond_blast_columns values to null for string inputs --- nextflow.config | 2 +- nextflow_schema.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/nextflow.config b/nextflow.config index e61b8f6..9639938 100644 --- a/nextflow.config +++ b/nextflow.config @@ -29,7 +29,7 @@ params { taxondmp_zip = 'ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz' taxonmap = 'ftp://ftp.ncbi.nlm.nih.gov/pub/taxonomy/accession2taxid/prot.accession2taxid.gz' diamond_outfmt = 6 - diamond_blast_columns = '' + diamond_blast_columns = null // MultiQC options multiqc_config = null diff --git a/nextflow_schema.json b/nextflow_schema.json index 9cd9215..17782c0 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -104,7 +104,7 @@ "diamond_blast_columns": { "type": "string", "description": "Accompanied optional input parameter to `diamond_outfmt`: `*.txt (6)` output format. Space separated list of columns to be included. Options: qseqid sseqid pident length mismatch gapopen qstart qend sstart send evalue bitscore.", - "default": false + "default": null } } }, From 0b1df662b0651badbbf77673f190b42b7cded821 Mon Sep 17 00:00:00 2001 From: tracelail Date: Thu, 2 Oct 2025 14:35:46 -0400 Subject: [PATCH 35/59] added meta.yml info and some tags for functional annotation subworkflow --- modules/local/diamondpreparetaxa/meta.yml | 84 ++++++++---------- modules/local/ncbirefseqdownload/meta.yml | 82 ++++++------------ subworkflows/local/diamond/meta.yml | 85 +++++++++++++------ .../local/functional_annotation/main.nf | 4 +- .../local/functional_annotation/meta.yml | 15 +++- .../functional_annotation/tests/main.nf.test | 5 ++ 6 files changed, 139 insertions(+), 136 deletions(-) diff --git a/modules/local/diamondpreparetaxa/meta.yml b/modules/local/diamondpreparetaxa/meta.yml index 3339002..e7176d2 100644 --- a/modules/local/diamondpreparetaxa/meta.yml +++ b/modules/local/diamondpreparetaxa/meta.yml @@ -1,61 +1,47 @@ --- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json name: "diamondpreparetaxa" -## TODO nf-core: Add a description of the module and list keywords -description: write your description here +description: Downloads and extracts NCBI taxonomy database files (nodes.dmp and names.dmp) required for DIAMOND taxonomic classification keywords: - - sort - - example - - genomics + - taxonomy + - ncbi + - diamond + - database + - classification tools: - - "diamondpreparetaxa": - ## TODO nf-core: Add a description and other details for the software below - description: "" - homepage: "" - documentation: "" - tool_dev_url: "" - doi: "" - licence: - identifier: + - "wget": + description: Network downloader that retrieves files from the web + homepage: "https://www.gnu.org/software/wget/" + documentation: "https://www.gnu.org/software/wget/manual/" + tool_dev_url: "https://git.savannah.gnu.org/cgit/wget.git" + licence: ["GPL-3.0-or-later"] + - "diamond": + description: Accelerated BLAST-compatible local sequence aligner + homepage: "https://github.com/bbuchfink/diamond" + documentation: "https://github.com/bbuchfink/diamond/wiki" + tool_dev_url: "https://github.com/bbuchfink/diamond" + doi: "10.1038/s41592-021-01101-x" + licence: ["GPL-3.0-or-later"] -## TODO nf-core: Add a description of all of the variables used as input input: - # Only when we have meta - - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. `[ id:'sample1' ]` + - taxondmp_zip: + type: string + description: URL to NCBI taxonomy dump archive (taxdump.tar.gz) + pattern: ".*taxdump.tar.gz" - ## TODO nf-core: Delete / customise this example input - - bam: - type: file - description: Sorted BAM/CRAM/SAM file - pattern: "*.{bam,cram,sam}" - ontologies: - - edam: "http://edamontology.org/format_2572" # BAM - - edam: "http://edamontology.org/format_2573" # CRAM - - edam: "http://edamontology.org/format_3462" # SAM - -## TODO nf-core: Add a description of all of the variables used as output output: - - bam: - #Only when we have meta - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. `[ id:'sample1' ]` - ## TODO nf-core: Delete / customise this example output - - "*.bam": + - taxonnodes: + - "taxa/nodes.dmp": type: file - description: Sorted BAM/CRAM/SAM file - pattern: "*.{bam,cram,sam}" - ontologies: - - edam: "http://edamontology.org/format_2572" # BAM - - edam: "http://edamontology.org/format_2573" # CRAM - - edam: "http://edamontology.org/format_3462" # SAM - + description: NCBI taxonomy nodes file containing taxonomic hierarchy + pattern: "nodes.dmp" + + - taxonnames: + - "taxa/names.dmp": + type: file + description: NCBI taxonomy names file containing taxon names + pattern: "names.dmp" + - versions: - "versions.yml": type: file @@ -65,4 +51,4 @@ output: authors: - "@tracelail" maintainers: - - "@tracelail" + - "@tracelail" \ No newline at end of file diff --git a/modules/local/ncbirefseqdownload/meta.yml b/modules/local/ncbirefseqdownload/meta.yml index 6848e32..25e0f43 100644 --- a/modules/local/ncbirefseqdownload/meta.yml +++ b/modules/local/ncbirefseqdownload/meta.yml @@ -1,69 +1,41 @@ --- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json -name: "downloadfastas" -## TODO nf-core: Add a description of the module and list keywords -description: write your description here +name: "ncbirefseqdownload" +description: Downloads NCBI RefSeq protein sequences for a specified release category and aggregates them into a single compressed FASTA file keywords: - - sort - - example - - genomics + - download + - refseq + - ncbi + - protein + - database tools: - - "downloadfastas": - ## TODO nf-core: Add a description and other details for the software below - description: "" - homepage: "" - documentation: "" - tool_dev_url: "" - doi: "" - licence: - identifier: + - "rsync": + description: Fast and versatile file copying tool for remote and local files + homepage: "https://rsync.samba.org/" + documentation: "https://download.samba.org/pub/rsync/rsync.1" + tool_dev_url: "https://github.com/WayneD/rsync" + licence: ["GPL-3.0-or-later"] -## TODO nf-core: Add a description of all of the variables used as input input: - # Only when we have meta - - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. `[ id:'sample1', single_end:false ]` - - ## TODO nf-core: Delete / customise this example input - - bam: - type: file - description: Sorted BAM/CRAM/SAM file - pattern: "*.{bam,cram,sam}" - ontologies: - - edam: "http://edamontology.org/format_25722" - - edam: "http://edamontology.org/format_2573" - - edam: "http://edamontology.org/format_3462" - + - refseq_release: + type: string + description: NCBI RefSeq release category (e.g., 'complete', 'other', 'viral', 'bacteria') + pattern: ".*" -## TODO nf-core: Add a description of all of the variables used as output output: - - bam: - #Only when we have meta - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. `[ id:'sample1', single_end:false ]` - ## TODO nf-core: Delete / customise this example output - - "*.bam": - type: file - description: Sorted BAM/CRAM/SAM file - pattern: "*.{bam,cram,sam}" - ontologies: - - edam: "http://edamontology.org/format_25722" - - edam: "http://edamontology.org/format_2573" - - edam: "http://edamontology.org/format_3462" + - refseq_fasta: + - "ncbi_refseq/refseq_fasta.fa.gz": + type: file + description: Aggregated and compressed protein FASTA file from RefSeq release + pattern: "*.fa.gz" - versions: - - "versions.yml": - type: file - description: File containing software versions - pattern: "versions.yml" + - "versions.yml": + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@tracelail" maintainers: - - "@tracelail" + - "@tracelail" \ No newline at end of file diff --git a/subworkflows/local/diamond/meta.yml b/subworkflows/local/diamond/meta.yml index ad60554..6410dc5 100644 --- a/subworkflows/local/diamond/meta.yml +++ b/subworkflows/local/diamond/meta.yml @@ -1,51 +1,80 @@ +--- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/subworkflows/yaml-schema.json name: "diamond" -## TODO nf-core: Add a description of the subworkflow and list keywords -description: Sort SAM/BAM/CRAM file +description: Downloads NCBI RefSeq and taxonomy databases, builds a DIAMOND database, and performs protein sequence alignment using DIAMOND BLASTP keywords: - - sort - - bam - - sam - - cram -## TODO nf-core: Add a list of the modules and/or subworkflows used in the subworkflow + - alignment + - diamond + - blastp + - protein + - refseq + - taxonomy + components: - - samtools/sort - - samtools/index -## TODO nf-core: List all of the channels used as input with a description and their structure + - ncbirefseqdownload + - diamondpreparetaxa + - diamond/makedb + - diamond/blastp + input: - - ch_bam: + - ch_fasta: type: file description: | - The input channel containing the BAM/CRAM/SAM files - Structure: [ val(meta), path(bam) ] - pattern: "*.{bam/cram/sam}" -## TODO nf-core: List all of the channels used as output with a descriptions and their structure + The input channel containing the protein FASTA files + Structure: [ val(meta), path(fasta) ] + pattern: "*.{fa,fasta,fa.gz,fasta.gz}" + output: - - bam: + - blast: type: file description: | - Channel containing BAM files - Structure: [ val(meta), path(bam) ] - pattern: "*.bam" - - bai: + Channel containing BLAST output files + Structure: [ val(meta), path(blast) ] + pattern: "*" + - xml: type: file description: | - Channel containing indexed BAM (BAI) files - Structure: [ val(meta), path(bai) ] - pattern: "*.bai" - - csi: + Channel containing XML output files + Structure: [ val(meta), path(xml) ] + pattern: "*.xml" + - txt: type: file description: | - Channel containing CSI files - Structure: [ val(meta), path(csi) ] - pattern: "*.csi" + Channel containing TXT output files + Structure: [ val(meta), path(txt) ] + pattern: "*.txt" + - daa: + type: file + description: | + Channel containing DIAMOND archive output files + Structure: [ val(meta), path(daa) ] + pattern: "*.daa" + - sam: + type: file + description: | + Channel containing SAM alignment files + Structure: [ val(meta), path(sam) ] + pattern: "*.sam" + - tsv: + type: file + description: | + Channel containing TSV output files + Structure: [ val(meta), path(tsv) ] + pattern: "*.tsv" + - paf: + type: file + description: | + Channel containing PAF alignment files + Structure: [ val(meta), path(paf) ] + pattern: "*.paf" - versions: type: file description: | File containing software versions Structure: [ path(versions.yml) ] pattern: "versions.yml" + authors: - "@tracelail" maintainers: - - "@tracelail" + - "@tracelail" \ No newline at end of file diff --git a/subworkflows/local/functional_annotation/main.nf b/subworkflows/local/functional_annotation/main.nf index f5943cf..9ebe32a 100644 --- a/subworkflows/local/functional_annotation/main.nf +++ b/subworkflows/local/functional_annotation/main.nf @@ -19,6 +19,7 @@ workflow FUNCTIONAL_ANNOTATION { DIAMOND( ch_fasta ) + ch_diamond_tsv = DIAMOND.out.tsv ch_versions = ch_versions.mix(DIAMOND.out.versions.first()) // Create a multifasta, with one fasta per entry, add the sequence ID to the meta id @@ -44,5 +45,6 @@ workflow FUNCTIONAL_ANNOTATION { } emit: - versions = ch_versions // channel: [ versions.yml ] + diamond_tsv = ch_diamond_tsv // channel: [ val(meta), path(tsv) ] + versions = ch_versions // channel: [ versions.yml ] } diff --git a/subworkflows/local/functional_annotation/meta.yml b/subworkflows/local/functional_annotation/meta.yml index 9fce546..fe57513 100644 --- a/subworkflows/local/functional_annotation/meta.yml +++ b/subworkflows/local/functional_annotation/meta.yml @@ -2,9 +2,16 @@ name: "functional_annotation" description: Functional annotation of proteins keywords: - - fasta + - annotation + - functional + - protein + - diamond + - interproscan + - blastp + components: - - diamond/blastp + - diamond + - interproscan input: - ch_fasta: type: file @@ -13,7 +20,7 @@ input: Structure: [ val(meta), path(fasta) ] pattern: "*.{fa,fasta,fa.gz,fasta.gz}" output: - - tsv: + - diamond_tsv: - meta: type: map description: | @@ -33,5 +40,7 @@ output: pattern: "versions.yml" authors: - "@eweizy" + - "@tracelail" maintainers: - "@eweizy" + - "@tracelail" diff --git a/subworkflows/local/functional_annotation/tests/main.nf.test b/subworkflows/local/functional_annotation/tests/main.nf.test index d80b3e7..bf0be2d 100644 --- a/subworkflows/local/functional_annotation/tests/main.nf.test +++ b/subworkflows/local/functional_annotation/tests/main.nf.test @@ -9,6 +9,11 @@ nextflow_workflow { tag "subworkflows" tag "subworkflows_" tag "subworkflows/functional_annotation" + tag "diamond" + tag "ncbirefseqdownload" + tag "diamondpreparetaxa" + tag "diamond/makedb" + tag "diamond/blastp" // TODO nf-core: Add tags for all modules used within this subworkflow. Example: // tag "samtools" From 2257719c46ebd8eb7657c2aaab0ea51605ec509a Mon Sep 17 00:00:00 2001 From: tracelail Date: Thu, 2 Oct 2025 15:05:53 -0400 Subject: [PATCH 36/59] made stub updates to diamondpreparetaxa and ncbirefseqdownload and added diamond test to functional annotation main.nf.test. copied test data to functional annotation as well. --- .nf-test.log | 167 ++++++++++++++++-- modules/local/diamondpreparetaxa/main.nf | 1 + modules/local/ncbirefseqdownload/main.nf | 5 +- .../local/functional_annotation/main.nf | 22 +-- .../functional_annotation/tests/main.nf.test | 54 ++++++ .../tests/main.nf.test.snap | 48 +++++ .../tests/mini_prot.accession2taxid.gz | Bin 0 -> 156 bytes .../tests/test_refseq.fasta | 32 ++++ 8 files changed, 298 insertions(+), 31 deletions(-) create mode 100644 subworkflows/local/functional_annotation/tests/main.nf.test.snap create mode 100644 subworkflows/local/functional_annotation/tests/mini_prot.accession2taxid.gz create mode 100644 subworkflows/local/functional_annotation/tests/test_refseq.fasta diff --git a/.nf-test.log b/.nf-test.log index 1b2672a..0a8067d 100644 --- a/.nf-test.log +++ b/.nf-test.log @@ -1,18 +1,149 @@ -Aug-26 09:47:37.596 [main] INFO com.askimed.nf.test.App - nf-test 0.9.2 -Aug-26 09:47:37.614 [main] INFO com.askimed.nf.test.App - Arguments: [test, subworkflows/local/diamond/tests/main.nf.test, --profile, docker, --update-snapshot] -Aug-26 09:47:38.464 [main] INFO com.askimed.nf.test.App - Nextflow Version: 25.04.6 -Aug-26 09:47:38.465 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Load config from file /home/trace/projects/proteinannotator/nf-test.config... -Aug-26 09:47:40.014 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Loaded 21 files from directory /home/trace/projects/proteinannotator in 0.122 sec -Aug-26 09:47:40.016 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Found 1 files containing tests. -Aug-26 09:47:40.016 [main] DEBUG com.askimed.nf.test.lang.dependencies.DependencyResolver - Found files: [/home/trace/projects/proteinannotator/subworkflows/local/diamond/tests/main.nf.test] -Aug-26 09:47:40.239 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Found 1 tests to execute. -Aug-26 09:47:40.240 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Started test plan -Aug-26 09:47:40.241 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Running testsuite 'Test Subworkflow DIAMOND' from file '/home/trace/projects/proteinannotator/subworkflows/local/diamond/tests/main.nf.test'. -Aug-26 09:47:40.241 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test '18fd3d6c: Test Diamond subworkflow success -- 6 - TXT output - no columns specified'. type: com.askimed.nf.test.lang.workflow.WorkflowTest -Aug-26 09:47:59.556 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Init new snapshot file '/home/trace/projects/proteinannotator/subworkflows/local/diamond/tests/main.nf.test.snap' -Aug-26 09:47:59.558 [main] DEBUG com.askimed.nf.test.lang.extensions.Snapshot - Snapshot 'Test Diamond subworkflow success -- 6 - TXT output - no columns specified' not found. -Aug-26 09:47:59.559 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Created snapshot 'Test Diamond subworkflow success -- 6 - TXT output - no columns specified' -Aug-26 09:47:59.580 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Wrote snapshots to file '/home/trace/projects/proteinannotator/subworkflows/local/diamond/tests/main.nf.test.snap' -Aug-26 09:47:59.580 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test '18fd3d6c: Test Diamond subworkflow success -- 6 - TXT output - no columns specified' finished. status: PASSED -Aug-26 09:47:59.582 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Testsuite 'Test Subworkflow DIAMOND' finished. snapshot file: true, skipped tests: false, failed tests: false -Aug-26 09:47:59.586 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Executed 1 tests. 0 tests failed. Done! +Oct-02 15:01:08.675 [main] INFO com.askimed.nf.test.App - nf-test 0.9.2 +Oct-02 15:01:08.692 [main] INFO com.askimed.nf.test.App - Arguments: [test, subworkflows/local/functional_annotation/tests/main.nf.test, --profile, docker, --update-snapshot] +Oct-02 15:01:09.526 [main] INFO com.askimed.nf.test.App - Nextflow Version: 25.04.6 +Oct-02 15:01:09.528 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Load config from file /home/trace/projects/proteinannotator/nf-test.config... +Oct-02 15:01:10.156 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Loaded 23 files from directory /home/trace/projects/proteinannotator in 0.139 sec +Oct-02 15:01:10.158 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Found 1 files containing tests. +Oct-02 15:01:10.158 [main] DEBUG com.askimed.nf.test.lang.dependencies.DependencyResolver - Found files: [/home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/tests/main.nf.test] +Oct-02 15:01:10.515 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Found 5 tests to execute. +Oct-02 15:01:10.516 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Started test plan +Oct-02 15:01:10.516 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Running testsuite 'Test Subworkflow FUNCTIONAL_ANNOTATION' from file '/home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/tests/main.nf.test'. +Oct-02 15:01:10.516 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test '11bbaabe: Test two input channels, one fasta record each'. type: com.askimed.nf.test.lang.workflow.WorkflowTest +Oct-02 15:01:17.832 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test '11bbaabe: Test two input channels, one fasta record each' finished. status: FAILED +org.codehaus.groovy.runtime.powerassert.PowerAssertionError: 1 of 1 assertions failed + at com.askimed.nf.test.lang.extensions.GlobalMethods.assertAll(GlobalMethods.java:48) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:569) + at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107) + at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) + at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.invoke(StaticMetaMethodSite.java:44) + at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.callStatic(StaticMetaMethodSite.java:100) + at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:55) + at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:217) + at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:231) + at main_nf$_run_closure1$_closure2$_closure8.doCall(main.nf.test:49) + at main_nf$_run_closure1$_closure2$_closure8.doCall(main.nf.test) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:569) + at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107) + at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) + at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:274) + at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1030) + at groovy.lang.Closure.call(Closure.java:427) + at groovy.lang.Closure.call(Closure.java:406) + at com.askimed.nf.test.lang.TestCode.execute(TestCode.java:16) + at com.askimed.nf.test.lang.workflow.WorkflowTest.execute(WorkflowTest.java:178) + at com.askimed.nf.test.core.TestExecutionEngine.execute(TestExecutionEngine.java:165) + at com.askimed.nf.test.commands.RunTestsCommand.execute(RunTestsCommand.java:298) + at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:43) + at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:18) + at picocli.CommandLine.executeUserObject(CommandLine.java:1953) + at picocli.CommandLine.access$1300(CommandLine.java:145) + at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2346) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2311) + at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179) + at picocli.CommandLine.execute(CommandLine.java:2078) + at com.askimed.nf.test.App.run(App.java:39) + at com.askimed.nf.test.App.main(App.java:46) +Oct-02 15:01:17.836 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test 'e65f62ca: Test two input channels, one fasta record each -- stub'. type: com.askimed.nf.test.lang.workflow.WorkflowTest +Oct-02 15:01:25.455 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test 'e65f62ca: Test two input channels, one fasta record each -- stub' finished. status: FAILED +org.codehaus.groovy.runtime.powerassert.PowerAssertionError: 1 of 1 assertions failed + at com.askimed.nf.test.lang.extensions.GlobalMethods.assertAll(GlobalMethods.java:48) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:569) + at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107) + at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) + at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.invoke(StaticMetaMethodSite.java:44) + at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.callStatic(StaticMetaMethodSite.java:100) + at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:55) + at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:217) + at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:231) + at main_nf$_run_closure1$_closure3$_closure13.doCall(main.nf.test:87) + at main_nf$_run_closure1$_closure3$_closure13.doCall(main.nf.test) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:569) + at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107) + at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) + at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:274) + at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1030) + at groovy.lang.Closure.call(Closure.java:427) + at groovy.lang.Closure.call(Closure.java:406) + at com.askimed.nf.test.lang.TestCode.execute(TestCode.java:16) + at com.askimed.nf.test.lang.workflow.WorkflowTest.execute(WorkflowTest.java:178) + at com.askimed.nf.test.core.TestExecutionEngine.execute(TestExecutionEngine.java:165) + at com.askimed.nf.test.commands.RunTestsCommand.execute(RunTestsCommand.java:298) + at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:43) + at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:18) + at picocli.CommandLine.executeUserObject(CommandLine.java:1953) + at picocli.CommandLine.access$1300(CommandLine.java:145) + at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2346) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2311) + at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179) + at picocli.CommandLine.execute(CommandLine.java:2078) + at com.askimed.nf.test.App.run(App.java:39) + at com.askimed.nf.test.App.main(App.java:46) +Oct-02 15:01:25.455 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test 'ba1e7e9c: Test single input fasta with 4 fasta records: snap25 isoforms - bcl2 - ced9'. type: com.askimed.nf.test.lang.workflow.WorkflowTest +Oct-02 15:01:32.638 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test 'ba1e7e9c: Test single input fasta with 4 fasta records: snap25 isoforms - bcl2 - ced9' finished. status: FAILED +org.codehaus.groovy.runtime.powerassert.PowerAssertionError: 2 of 2 assertions failed + at com.askimed.nf.test.lang.extensions.GlobalMethods.assertAll(GlobalMethods.java:48) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:569) + at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107) + at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) + at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.invoke(StaticMetaMethodSite.java:44) + at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.callStatic(StaticMetaMethodSite.java:100) + at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:55) + at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:217) + at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:240) + at main_nf$_run_closure1$_closure4$_closure18.doCall(main.nf.test:116) + at main_nf$_run_closure1$_closure4$_closure18.doCall(main.nf.test) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:569) + at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107) + at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) + at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:274) + at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1030) + at groovy.lang.Closure.call(Closure.java:427) + at groovy.lang.Closure.call(Closure.java:406) + at com.askimed.nf.test.lang.TestCode.execute(TestCode.java:16) + at com.askimed.nf.test.lang.workflow.WorkflowTest.execute(WorkflowTest.java:178) + at com.askimed.nf.test.core.TestExecutionEngine.execute(TestExecutionEngine.java:165) + at com.askimed.nf.test.commands.RunTestsCommand.execute(RunTestsCommand.java:298) + at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:43) + at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:18) + at picocli.CommandLine.executeUserObject(CommandLine.java:1953) + at picocli.CommandLine.access$1300(CommandLine.java:145) + at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2346) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2311) + at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179) + at picocli.CommandLine.execute(CommandLine.java:2078) + at com.askimed.nf.test.App.run(App.java:39) + at com.askimed.nf.test.App.main(App.java:46) +Oct-02 15:01:32.638 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test '3eb16961: Test FUNCTIONAL_ANNOTATION subworkflow success - simple protein fasta'. type: com.askimed.nf.test.lang.workflow.WorkflowTest +Oct-02 15:01:50.931 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Load snapshots from file '/home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/tests/main.nf.test.snap' +Oct-02 15:01:50.950 [main] DEBUG com.askimed.nf.test.lang.extensions.Snapshot - Snapshots 'Test FUNCTIONAL_ANNOTATION subworkflow success - simple protein fasta' do not match. Update snapshots flag set. +Oct-02 15:01:50.951 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Updated snapshot 'Test FUNCTIONAL_ANNOTATION subworkflow success - simple protein fasta' +Oct-02 15:01:50.957 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Wrote snapshots to file '/home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/tests/main.nf.test.snap' +Oct-02 15:01:50.958 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test '3eb16961: Test FUNCTIONAL_ANNOTATION subworkflow success - simple protein fasta' finished. status: PASSED +Oct-02 15:01:50.958 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test 'a10d6e9f: Test FUNCTIONAL_ANNOTATION subworkflow success - simple protein fasta - stub'. type: com.askimed.nf.test.lang.workflow.WorkflowTest +Oct-02 15:02:01.341 [main] DEBUG com.askimed.nf.test.lang.extensions.Snapshot - Snapshots 'Test FUNCTIONAL_ANNOTATION subworkflow success - simple protein fasta - stub' do not match. Update snapshots flag set. +Oct-02 15:02:01.341 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Updated snapshot 'Test FUNCTIONAL_ANNOTATION subworkflow success - simple protein fasta - stub' +Oct-02 15:02:01.347 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Wrote snapshots to file '/home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/tests/main.nf.test.snap' +Oct-02 15:02:01.347 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test 'a10d6e9f: Test FUNCTIONAL_ANNOTATION subworkflow success - simple protein fasta - stub' finished. status: PASSED +Oct-02 15:02:01.348 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Testsuite 'Test Subworkflow FUNCTIONAL_ANNOTATION' finished. snapshot file: true, skipped tests: false, failed tests: true +Oct-02 15:02:01.350 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Executed 5 tests. 3 tests failed. Done! diff --git a/modules/local/diamondpreparetaxa/main.nf b/modules/local/diamondpreparetaxa/main.nf index 747d008..7fb4b64 100644 --- a/modules/local/diamondpreparetaxa/main.nf +++ b/modules/local/diamondpreparetaxa/main.nf @@ -33,6 +33,7 @@ process DIAMONDPREPARETAXA { stub: """ + mkdir -p taxa/ touch taxa/nodes.dmp touch taxa/names.dmp diff --git a/modules/local/ncbirefseqdownload/main.nf b/modules/local/ncbirefseqdownload/main.nf index ac6d96f..7115c70 100644 --- a/modules/local/ncbirefseqdownload/main.nf +++ b/modules/local/ncbirefseqdownload/main.nf @@ -40,10 +40,11 @@ process NCBIREFSEQDOWNLOAD { stub: """ - touch ncbi_refseq/refseq_fastas.fa.gz + mkdir -p ncbi_refseq + touch ncbi_refseq/refseq_fasta.fa.gz cat <<-END_VERSIONS > versions.yml - "${task.process}" + "${task.process}": rsync: "stub" END_VERSIONS """ diff --git a/subworkflows/local/functional_annotation/main.nf b/subworkflows/local/functional_annotation/main.nf index 9ebe32a..1dd7392 100644 --- a/subworkflows/local/functional_annotation/main.nf +++ b/subworkflows/local/functional_annotation/main.nf @@ -21,23 +21,23 @@ workflow FUNCTIONAL_ANNOTATION { ) ch_diamond_tsv = DIAMOND.out.tsv ch_versions = ch_versions.mix(DIAMOND.out.versions.first()) - - // Create a multifasta, with one fasta per entry, add the sequence ID to the meta id - ch_fasta - .map { meta, fasta -> - [ - [id: "${meta.id}_${fasta.splitFasta(record: [id: true]).id[0].replaceAll(/\|/, '-')}"], - fasta.splitFasta(file: true), - ] - } - .transpose() - .set { ch_multifasta } // // SUBWORKFLOW: Run InterProScan // if (!params.skip_interproscan) { + // Create a multifasta, with one fasta per entry, add the sequence ID to the meta id + ch_fasta + .map { meta, fasta -> + [ + [id: "${meta.id}_${fasta.splitFasta(record: [id: true]).id[0].replaceAll(/\|/, '-')}"], + fasta.splitFasta(file: true), + ] + } + .transpose() + .set { ch_multifasta } + INTERPROSCAN( ch_multifasta ) diff --git a/subworkflows/local/functional_annotation/tests/main.nf.test b/subworkflows/local/functional_annotation/tests/main.nf.test index bf0be2d..29d01fc 100644 --- a/subworkflows/local/functional_annotation/tests/main.nf.test +++ b/subworkflows/local/functional_annotation/tests/main.nf.test @@ -120,4 +120,58 @@ nextflow_workflow { ) } } + test("Test FUNCTIONAL_ANNOTATION subworkflow success - simple protein fasta") { + + when { + params { + refseq_release = 'other' + taxondmp_zip = 'ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz' + taxonmap = "${moduleTestDir}/mini_prot.accession2taxid.gz" + diamond_outfmt = 6 + diamond_blast_columns = '' + skip_interproscan = true + } + workflow { + """ + input[0] = [ [id:'test'], file("${moduleTestDir}/test_refseq.fasta", checkIfExists: true)] + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + } + + test("Test FUNCTIONAL_ANNOTATION subworkflow success - simple protein fasta - stub") { + tag "stub" + + options "-stub" + + when { + params { + refseq_release = 'other' + taxondmp_zip = 'ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz' + taxonmap = "${moduleTestDir}/mini_prot.accession2taxid.gz" + diamond_outfmt = 6 + diamond_blast_columns = '' + skip_interproscan = true + } + workflow { + """ + input[0] = [ [id:'test'], file("${moduleTestDir}/test_refseq.fasta", checkIfExists: true)] + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + } } diff --git a/subworkflows/local/functional_annotation/tests/main.nf.test.snap b/subworkflows/local/functional_annotation/tests/main.nf.test.snap new file mode 100644 index 0000000..520b604 --- /dev/null +++ b/subworkflows/local/functional_annotation/tests/main.nf.test.snap @@ -0,0 +1,48 @@ +{ + "Test FUNCTIONAL_ANNOTATION subworkflow success - simple protein fasta": { + "content": [ + { + "0": [ + + ], + "1": [ + "versions.yml:md5,a7c2e489f7420594e92efbbc61cb22f7" + ], + "diamond_tsv": [ + + ], + "versions": [ + "versions.yml:md5,a7c2e489f7420594e92efbbc61cb22f7" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "25.04.6" + }, + "timestamp": "2025-10-02T15:01:50.951164221" + }, + "Test FUNCTIONAL_ANNOTATION subworkflow success - simple protein fasta - stub": { + "content": [ + { + "0": [ + + ], + "1": [ + "versions.yml:md5,fd24ea3d2a1506fd14f5212e104d8fd5" + ], + "diamond_tsv": [ + + ], + "versions": [ + "versions.yml:md5,fd24ea3d2a1506fd14f5212e104d8fd5" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "25.04.6" + }, + "timestamp": "2025-10-02T15:02:01.341422546" + } +} \ No newline at end of file diff --git a/subworkflows/local/functional_annotation/tests/mini_prot.accession2taxid.gz b/subworkflows/local/functional_annotation/tests/mini_prot.accession2taxid.gz new file mode 100644 index 0000000000000000000000000000000000000000..2a4ed3c6235c5ebc65fadfc62c01732c17e5d4e3 GIT binary patch literal 156 zcmV;N0Av3jiwFouA*W~n18r$;XWP_031942563.1 tetracycline efflux MFS transporter Tet(B) [Transposon Tn10] +MNSSTKIALVITLLDAMGIGLIMPVLPTLLREFIASEDIANHFGVLLALYALMQVIFAPWLGKMSDRFGRRPVLLLSLIG +ASLDYLLLAFSSALWMLYLGRLLSGITGATGAVAASVIADTTSASQRVKWFGWLGASFGLGLIAGPIIGGFAGEISPHSP +FFIAALLNIVTFLVVMFWFRETKNTRDNTDTEVGVETQSNSVYITLFKTMPILLIIYFSAQLIGQIPATVWVLFTENRFG +WNSMMVGFSLAGLGLLHSVFQAFVAGRIATKWGEKTAVLLEFIADSSAFAFLAFISEGWLDFPVLILLAGGGIALPALQG +VMSIQTKSHEQGALQGLLVSLTNATGVIGPLLFTVIYNHSLPIWDGWIWIIGLAFYCIIILLSMTFMLTPQAQGSKQETS +A +>WP_430799656.1 class D beta-lactamase OXA-1379 [medical waste metagenome] +MNKYLALLILLVYSQVSMAESIRENKSWNEVFAQESVEGVFVLCKSSKNDCITNNKERALLAFIPASTFKIANALIALET +GVVKSEHQIFKWGGEPRDMKQWEQDFTLRGAMQASAVPVFQQFAREIGEKRMQSYLGEFAYGNSNIDGGIDLFWLEGGLR +ISAINQIGFLESLYENKLPISERNQLIVKDALISEATPAYLIRSKTGYTGIKGKIQPGIAWWVGWVEKGTEVYFFAFNMN +IDNESKLPARKSIPTKIMQSEGVLNGS +>WP_148044478.1 phosphoethanolamine--lipid A transferase MCR-5.4 [hospital metagenome] +MRLSAFITFLKMRPQVRTEFLTLFISLVFTLLCNGVFWNALLAGRDSLTSGTWLMLLCTGLLITGLQWLLLLLVATRWSV +KPLLILLAVMTPAAVYFMRNYGVYFDKAMLRNLMETDVREASELLQWRMLPYLLVAAVSVWWIARVRVLRTGWKQAVMMR +SACLAGALAMISMGLWPVMDVLIPTLRENKPLRYLITPANYVISGIRVLTEQASSSADEAREVVAADAHRGPQEQGRRPR +ALVLVVGETVRAANWGLSGYERQTTPELAARDVINFSDVTSCGTDTATSLPCMFSLNGRRDYDERQIRRRESVLHVLNRS +DVNILWRDNQSGCKGVCDGLPFENLSSAGHPTLCHGERCLDEILLEGLAEKITTSRSDMLIVLHMLGNHGPAYFQRYPAS +YRRWSPTCDTTDLASCSHEALVNTYDNAVLYTDHVLARTIDLLSGIRSHDTALLYVSDHGESLGEKGLYLHGIPYVIAPD +EQIKVPMIWWQSSQVYADQACMQTHASRAPVSHDHLFHTLLGMFDVKTAAYTPELDLLATCRKGQPQ +>WP_168247882.1 extended-spectrum class C beta-lactamase IDC-2 [sediment metagenome] +MPRTESVPSKSLVVRTLLLVFACLFPMAVPAVEDTSRVRTTVDAAILPLMSQHDIPGMVVGLILDGQPYVVTYGVASKEA +NVPVAEATLFEIGSVSKVFTATLAAYAQTTGKLSLDDHPGKYLPQLKGTPIDQATLLHLGTYTAGGLPLQFPDEVTGEVA +VMDYFRNWTPLAPPGTRREYSNASPGLLGLVAASALDDDFATLMQSTVFPAFGMTDSFIHVPDRKMPDYAWGYRKDRPVR +VNEGPLDEQAYGVKTTVSDLLRFVQANIDPSSLEPSMRRAVEATQVGYFRAGTLVQGLGWEKYPYPVSREWLLGGNAKEM +LFDPQPAYRLTDQTAGERYLFNKTGSTGGFATYVAFVPARKIGIVMLANRSYPIPDRVEAAWIILEQLASGTDSN +>WP_168247881.1 extended-spectrum class C beta-lactamase IDC-1 [sediment metagenome] +MPRTESVPSKSLVVRTLLLVFACLFPMAVPAVEDSSRVRAAVDAAILPLMSQHDIPGMAVGLILDGQPYVVTYGVASKET +NVPVAEATLFEIGSVSKVFTATLATYAQATGKLSLDDHPGKYLPHLKGAPIDQATLLHLGTYTAGGLPLQFPDEVTGEAA +VMNYFRNWTPLAPPGTRREYSNASPGLLGVVAASALDDDFATLMQTTVFPAFGMTDSFIHVPDRKMPDYAWGYRKDRRVR +VNEGPLDEQAYGVKTTVSDLLRFVQANIDPNSLEPSMRHAVEATQVGYFRAGTLVQGLGWEKYPYPVSREWLLGGNAKEM +LFDPQPAYRLTDQTAGGQYLFNKTGSTGGFATYVAFVPARKIGIVMLANRSYPIPDRVEAAWMILEQLASGTDSN From 7632328138f48ba69d285988819cec82dbec01ac Mon Sep 17 00:00:00 2001 From: tracelail Date: Fri, 3 Oct 2025 09:37:17 -0400 Subject: [PATCH 37/59] Addeded diamond_blast_columns = "" back as being null caused issues. Fixed functional annotiation diamond_tsv output type error. --- nextflow.config | 2 +- nextflow_schema.json | 2 +- .../local/functional_annotation/meta.yml | 16 +++++----------- .../functional_annotation/tests/main.nf.test | 16 ++-------------- 4 files changed, 9 insertions(+), 27 deletions(-) diff --git a/nextflow.config b/nextflow.config index 9639938..9f1e2af 100644 --- a/nextflow.config +++ b/nextflow.config @@ -29,7 +29,7 @@ params { taxondmp_zip = 'ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz' taxonmap = 'ftp://ftp.ncbi.nlm.nih.gov/pub/taxonomy/accession2taxid/prot.accession2taxid.gz' diamond_outfmt = 6 - diamond_blast_columns = null + diamond_blast_columns = "" // MultiQC options multiqc_config = null diff --git a/nextflow_schema.json b/nextflow_schema.json index 17782c0..e4f2ce8 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -104,7 +104,7 @@ "diamond_blast_columns": { "type": "string", "description": "Accompanied optional input parameter to `diamond_outfmt`: `*.txt (6)` output format. Space separated list of columns to be included. Options: qseqid sseqid pident length mismatch gapopen qstart qend sstart send evalue bitscore.", - "default": null + "default": "" } } }, diff --git a/subworkflows/local/functional_annotation/meta.yml b/subworkflows/local/functional_annotation/meta.yml index fe57513..4ccde30 100644 --- a/subworkflows/local/functional_annotation/meta.yml +++ b/subworkflows/local/functional_annotation/meta.yml @@ -21,17 +21,11 @@ input: pattern: "*.{fa,fasta,fa.gz,fasta.gz}" output: - diamond_tsv: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - "*.{tsv,tsv.gz}": - type: file - description: Tab separated file containing taxonomic classification of hits - pattern: "*.{tsv,tsv.gz}" - ontologies: - - edam: http://edamontology.org/format_3475 # TSV + type: file + description: | + Channel containing TSV files with taxonomic classification of DIAMOND hits + Structure: [ val(meta), path(tsv) ] + pattern: "*.{tsv,tsv.gz}" - versions: type: file description: | diff --git a/subworkflows/local/functional_annotation/tests/main.nf.test b/subworkflows/local/functional_annotation/tests/main.nf.test index 29d01fc..b54d8e8 100644 --- a/subworkflows/local/functional_annotation/tests/main.nf.test +++ b/subworkflows/local/functional_annotation/tests/main.nf.test @@ -1,4 +1,3 @@ -// TODO nf-core: Once you have added the required tests, please run the following command to build this file: // nf-core subworkflows test functional_annotation nextflow_workflow { @@ -14,14 +13,8 @@ nextflow_workflow { tag "diamondpreparetaxa" tag "diamond/makedb" tag "diamond/blastp" - // TODO nf-core: Add tags for all modules used within this subworkflow. Example: - // tag "samtools" - // tag "samtools/sort" - // tag "samtools/index" - - // TODO nf-core: Change the test name preferably indicating the test-data and file-format used test("Test two input channels, one fasta record each") { when { @@ -49,12 +42,10 @@ nextflow_workflow { assertAll( // { assert snapshot(workflow.out).match()}, { assert workflow.success}, - //TODO nf-core: Add all required assertions to verify the test output. ) } } - // TODO nf-core: Change the test name preferably indicating the test-data and file-format used test("Test two input channels, one fasta record each -- stub") { tag "stub" // Run this test in the GitHub Actions Continuous Integration (CI), instead of the other one @@ -87,12 +78,10 @@ nextflow_workflow { assertAll( // { assert snapshot(workflow.out).match()}, { assert workflow.success}, - //TODO nf-core: Add all required assertions to verify the test output. ) } } - // TODO nf-core: Change the test name preferably indicating the test-data and file-format used test("Test single input fasta with 4 fasta records: snap25 isoforms - bcl2 - ced9") { when { @@ -116,11 +105,10 @@ nextflow_workflow { assertAll( { assert workflow.success}, { assert snapshot(workflow.out).match()} - //TODO nf-core: Add all required assertions to verify the test output. ) } } - test("Test FUNCTIONAL_ANNOTATION subworkflow success - simple protein fasta") { + test("Test FUNCTIONAL_ANNOTATION subworkflow success") { when { params { @@ -146,7 +134,7 @@ nextflow_workflow { } } - test("Test FUNCTIONAL_ANNOTATION subworkflow success - simple protein fasta - stub") { + test("Test FUNCTIONAL_ANNOTATION subworkflow success - stub") { tag "stub" options "-stub" From c1f0c63a32e6bd1ab136ecb73bf10cbc5d95820e Mon Sep 17 00:00:00 2001 From: tracelail Date: Fri, 3 Oct 2025 09:39:11 -0400 Subject: [PATCH 38/59] deleted interproscan functional annotation subworkflow tests to removed placeholder, todo lint warnings. --- .../functional_annotation/tests/main.nf.test | 98 +------------------ 1 file changed, 2 insertions(+), 96 deletions(-) diff --git a/subworkflows/local/functional_annotation/tests/main.nf.test b/subworkflows/local/functional_annotation/tests/main.nf.test index b54d8e8..999a47c 100644 --- a/subworkflows/local/functional_annotation/tests/main.nf.test +++ b/subworkflows/local/functional_annotation/tests/main.nf.test @@ -14,101 +14,7 @@ nextflow_workflow { tag "diamond/makedb" tag "diamond/blastp" - - test("Test two input channels, one fasta record each") { - - when { - params { - pipelines_testdata_base_path = "https://raw.githubusercontent.com/nf-core/test-datasets/refs/heads/" - } - workflow { - """ - // TODO nf-core: define inputs of the workflow here. Example: - input[0] = Channel.fromList([ - [ - [ id:'T1024' ], // meta map - file(params.pipelines_testdata_base_path + 'proteinfold/testdata/sequences/T1024.fasta', checkIfExists: true) - ], - [ - [ id:'T1026' ], // meta map - file(params.pipelines_testdata_base_path + 'proteinfold/testdata/sequences/T1026.fasta', checkIfExists: true) - ] - ]) - """ - } - } - - then { - assertAll( - // { assert snapshot(workflow.out).match()}, - { assert workflow.success}, - ) - } - } - - test("Test two input channels, one fasta record each -- stub") { - tag "stub" - // Run this test in the GitHub Actions Continuous Integration (CI), instead of the other one - tag "CI" - - options "-stub" - - when { - params { - pipelines_testdata_base_path = "https://raw.githubusercontent.com/nf-core/test-datasets/refs/heads/" - } - workflow { - """ - // TODO nf-core: define inputs of the workflow here. Example: - input[0] = Channel.fromList([ - [ - [ id:'T1024' ], // meta map - file(params.pipelines_testdata_base_path + 'proteinfold/testdata/sequences/T1024.fasta', checkIfExists: true) - ], - [ - [ id:'T1026' ], // meta map - file(params.pipelines_testdata_base_path + 'proteinfold/testdata/sequences/T1026.fasta', checkIfExists: true) - ] - ]) - """ - } - } - - then { - assertAll( - // { assert snapshot(workflow.out).match()}, - { assert workflow.success}, - ) - } - } - - test("Test single input fasta with 4 fasta records: snap25 isoforms - bcl2 - ced9") { - - when { - params { - pipelines_testdata_base_path = "https://raw.githubusercontent.com/nf-core/test-datasets/refs/heads/" - } - workflow { - """ - // TODO nf-core: define inputs of the workflow here. Example: - input[0] = Channel.fromList([ - [ - [ id:'test' ], // meta map - file(params.pipelines_testdata_base_path + 'proteinannotator/reference/snap25_isoforms_bcl2_ced9.fasta', checkIfExists: true) - ] - ]) - """ - } - } - - then { - assertAll( - { assert workflow.success}, - { assert snapshot(workflow.out).match()} - ) - } - } - test("Test FUNCTIONAL_ANNOTATION subworkflow success") { + test("Test FUNCTIONAL_ANNOTATION Diamond execution subworkflow success") { when { params { @@ -134,7 +40,7 @@ nextflow_workflow { } } - test("Test FUNCTIONAL_ANNOTATION subworkflow success - stub") { + test("Test FUNCTIONAL_ANNOTATION Diamond execution subworkflow success - stub") { tag "stub" options "-stub" From b58e6f23954840b3a97d1fa516e9db6357a61805 Mon Sep 17 00:00:00 2001 From: tracelail Date: Mon, 30 Mar 2026 19:41:29 -0400 Subject: [PATCH 39/59] manually resolved functional_annotation test merge preparation --- .../functional_annotation/tests/main.nf.test | 58 +++++++++++++++++-- 1 file changed, 52 insertions(+), 6 deletions(-) diff --git a/subworkflows/local/functional_annotation/tests/main.nf.test b/subworkflows/local/functional_annotation/tests/main.nf.test index 999a47c..34177ed 100644 --- a/subworkflows/local/functional_annotation/tests/main.nf.test +++ b/subworkflows/local/functional_annotation/tests/main.nf.test @@ -1,13 +1,14 @@ // nf-core subworkflows test functional_annotation nextflow_workflow { - name "Test Subworkflow FUNCTIONAL_ANNOTATION" script "../main.nf" workflow "FUNCTIONAL_ANNOTATION" tag "subworkflows" tag "subworkflows_" + tag "subworkflows_local" tag "subworkflows/functional_annotation" + tag "functional_annotation" tag "diamond" tag "ncbirefseqdownload" tag "diamondpreparetaxa" @@ -15,7 +16,6 @@ nextflow_workflow { tag "diamond/blastp" test("Test FUNCTIONAL_ANNOTATION Diamond execution subworkflow success") { - when { params { refseq_release = 'other' @@ -31,7 +31,6 @@ nextflow_workflow { """ } } - then { assertAll( { assert workflow.success }, @@ -42,9 +41,7 @@ nextflow_workflow { test("Test FUNCTIONAL_ANNOTATION Diamond execution subworkflow success - stub") { tag "stub" - options "-stub" - when { params { refseq_release = 'other' @@ -60,12 +57,61 @@ nextflow_workflow { """ } } + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + } + test("l_asparaginase - faa - functional annotation") { + config "./nextflow.config" + when { + workflow { + """ + input[0] = channel.of([ + [ id:'test_sample' ], + file(params.modules_testdata_base_path + 'proteomics/interproscan/l_arginase.faa', checkIfExists: true) + ]) + input[1] = false + input[2] = params.pipelines_testdata_base_path + '/testdata/interproscan/interproscan_test.tar.gz' + input[3] = [] + """ + } + } then { assertAll( { assert workflow.success }, + { assert snapshot( + path(workflow.out.interproscan_tsv[0][1]).readLines()[0] + .contains("GI|225038609|EFDID|719595|FULL 079fff43a0270e432d339ea71b6f0acf 350 SFLD SFLDS00057 Glutaminase/Asparaginase 17 347 0.0 T"), + workflow.out.versions.collect{ path(it).yaml }.unique() + ).match()} + ) + } + } + + test("faa - functional annotation - stub") { + options "-stub" + when { + workflow { + """ + input[0] = channel.of([ + [ id:'test_sample' ], + file(params.pipelines_testdata_base_path + '/testdata/sequences/test_proteins.faa', checkIfExists: true) + ]) + input[1] = true + input[2] = [] + input[3] = [] + """ + } + } + then { + assert workflow.success + assertAll( { assert snapshot(workflow.out).match() } ) } } -} +} \ No newline at end of file From 4dcba98047cc9fac1282cc723e83310964ac816c Mon Sep 17 00:00:00 2001 From: tracelail Date: Tue, 31 Mar 2026 10:08:34 -0400 Subject: [PATCH 40/59] updated missed merge conflict --- nextflow_schema.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index 2a5a658..24b2307 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -433,15 +433,12 @@ "$ref": "#/$defs/input_output_options" }, { -<<<<<<< HEAD "$ref": "#/$defs/interproscan_options" }, { "$ref": "#/$defs/diamond_options" }, { -======= ->>>>>>> dev "$ref": "#/$defs/institutional_config_options" }, { From 6a39985ef6bd29fe8f5c1e8c265d7b3f2a574c4f Mon Sep 17 00:00:00 2001 From: tracelail Date: Fri, 3 Apr 2026 18:47:42 -0400 Subject: [PATCH 41/59] minor updates for cleaning and future version implementation in local modules and subworkflows. Added some tests and confirmed updated snapshots. --- .nf-test.log | 168 +------ modules/local/diamondpreparetaxa/main.nf | 34 +- .../diamondpreparetaxa/tests/main.nf.test | 58 +-- .../tests/main.nf.test.snap | 59 ++- modules/local/ncbirefseqdownload/main.nf | 7 +- .../ncbirefseqdownload/tests/main.nf.test | 52 +- .../tests/main.nf.test.snap | 61 ++- subworkflows/local/diamond/main.nf | 23 +- subworkflows/local/diamond/tests/main.nf.test | 106 ++++- .../local/diamond/tests/main.nf.test.snap | 448 +++++++++++++++++- .../local/functional_annotation/main.nf | 39 +- .../functional_annotation/tests/main.nf.test | 31 +- .../tests/main.nf.test.snap | 73 ++- 13 files changed, 774 insertions(+), 385 deletions(-) diff --git a/.nf-test.log b/.nf-test.log index 0a8067d..b2dc8d6 100644 --- a/.nf-test.log +++ b/.nf-test.log @@ -1,149 +1,19 @@ -Oct-02 15:01:08.675 [main] INFO com.askimed.nf.test.App - nf-test 0.9.2 -Oct-02 15:01:08.692 [main] INFO com.askimed.nf.test.App - Arguments: [test, subworkflows/local/functional_annotation/tests/main.nf.test, --profile, docker, --update-snapshot] -Oct-02 15:01:09.526 [main] INFO com.askimed.nf.test.App - Nextflow Version: 25.04.6 -Oct-02 15:01:09.528 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Load config from file /home/trace/projects/proteinannotator/nf-test.config... -Oct-02 15:01:10.156 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Loaded 23 files from directory /home/trace/projects/proteinannotator in 0.139 sec -Oct-02 15:01:10.158 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Found 1 files containing tests. -Oct-02 15:01:10.158 [main] DEBUG com.askimed.nf.test.lang.dependencies.DependencyResolver - Found files: [/home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/tests/main.nf.test] -Oct-02 15:01:10.515 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Found 5 tests to execute. -Oct-02 15:01:10.516 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Started test plan -Oct-02 15:01:10.516 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Running testsuite 'Test Subworkflow FUNCTIONAL_ANNOTATION' from file '/home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/tests/main.nf.test'. -Oct-02 15:01:10.516 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test '11bbaabe: Test two input channels, one fasta record each'. type: com.askimed.nf.test.lang.workflow.WorkflowTest -Oct-02 15:01:17.832 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test '11bbaabe: Test two input channels, one fasta record each' finished. status: FAILED -org.codehaus.groovy.runtime.powerassert.PowerAssertionError: 1 of 1 assertions failed - at com.askimed.nf.test.lang.extensions.GlobalMethods.assertAll(GlobalMethods.java:48) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:569) - at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107) - at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) - at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.invoke(StaticMetaMethodSite.java:44) - at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.callStatic(StaticMetaMethodSite.java:100) - at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:55) - at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:217) - at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:231) - at main_nf$_run_closure1$_closure2$_closure8.doCall(main.nf.test:49) - at main_nf$_run_closure1$_closure2$_closure8.doCall(main.nf.test) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:569) - at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107) - at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) - at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:274) - at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1030) - at groovy.lang.Closure.call(Closure.java:427) - at groovy.lang.Closure.call(Closure.java:406) - at com.askimed.nf.test.lang.TestCode.execute(TestCode.java:16) - at com.askimed.nf.test.lang.workflow.WorkflowTest.execute(WorkflowTest.java:178) - at com.askimed.nf.test.core.TestExecutionEngine.execute(TestExecutionEngine.java:165) - at com.askimed.nf.test.commands.RunTestsCommand.execute(RunTestsCommand.java:298) - at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:43) - at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:18) - at picocli.CommandLine.executeUserObject(CommandLine.java:1953) - at picocli.CommandLine.access$1300(CommandLine.java:145) - at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352) - at picocli.CommandLine$RunLast.handle(CommandLine.java:2346) - at picocli.CommandLine$RunLast.handle(CommandLine.java:2311) - at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179) - at picocli.CommandLine.execute(CommandLine.java:2078) - at com.askimed.nf.test.App.run(App.java:39) - at com.askimed.nf.test.App.main(App.java:46) -Oct-02 15:01:17.836 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test 'e65f62ca: Test two input channels, one fasta record each -- stub'. type: com.askimed.nf.test.lang.workflow.WorkflowTest -Oct-02 15:01:25.455 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test 'e65f62ca: Test two input channels, one fasta record each -- stub' finished. status: FAILED -org.codehaus.groovy.runtime.powerassert.PowerAssertionError: 1 of 1 assertions failed - at com.askimed.nf.test.lang.extensions.GlobalMethods.assertAll(GlobalMethods.java:48) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:569) - at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107) - at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) - at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.invoke(StaticMetaMethodSite.java:44) - at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.callStatic(StaticMetaMethodSite.java:100) - at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:55) - at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:217) - at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:231) - at main_nf$_run_closure1$_closure3$_closure13.doCall(main.nf.test:87) - at main_nf$_run_closure1$_closure3$_closure13.doCall(main.nf.test) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:569) - at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107) - at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) - at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:274) - at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1030) - at groovy.lang.Closure.call(Closure.java:427) - at groovy.lang.Closure.call(Closure.java:406) - at com.askimed.nf.test.lang.TestCode.execute(TestCode.java:16) - at com.askimed.nf.test.lang.workflow.WorkflowTest.execute(WorkflowTest.java:178) - at com.askimed.nf.test.core.TestExecutionEngine.execute(TestExecutionEngine.java:165) - at com.askimed.nf.test.commands.RunTestsCommand.execute(RunTestsCommand.java:298) - at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:43) - at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:18) - at picocli.CommandLine.executeUserObject(CommandLine.java:1953) - at picocli.CommandLine.access$1300(CommandLine.java:145) - at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352) - at picocli.CommandLine$RunLast.handle(CommandLine.java:2346) - at picocli.CommandLine$RunLast.handle(CommandLine.java:2311) - at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179) - at picocli.CommandLine.execute(CommandLine.java:2078) - at com.askimed.nf.test.App.run(App.java:39) - at com.askimed.nf.test.App.main(App.java:46) -Oct-02 15:01:25.455 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test 'ba1e7e9c: Test single input fasta with 4 fasta records: snap25 isoforms - bcl2 - ced9'. type: com.askimed.nf.test.lang.workflow.WorkflowTest -Oct-02 15:01:32.638 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test 'ba1e7e9c: Test single input fasta with 4 fasta records: snap25 isoforms - bcl2 - ced9' finished. status: FAILED -org.codehaus.groovy.runtime.powerassert.PowerAssertionError: 2 of 2 assertions failed - at com.askimed.nf.test.lang.extensions.GlobalMethods.assertAll(GlobalMethods.java:48) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:569) - at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107) - at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) - at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.invoke(StaticMetaMethodSite.java:44) - at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.callStatic(StaticMetaMethodSite.java:100) - at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:55) - at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:217) - at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:240) - at main_nf$_run_closure1$_closure4$_closure18.doCall(main.nf.test:116) - at main_nf$_run_closure1$_closure4$_closure18.doCall(main.nf.test) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:569) - at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107) - at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) - at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:274) - at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1030) - at groovy.lang.Closure.call(Closure.java:427) - at groovy.lang.Closure.call(Closure.java:406) - at com.askimed.nf.test.lang.TestCode.execute(TestCode.java:16) - at com.askimed.nf.test.lang.workflow.WorkflowTest.execute(WorkflowTest.java:178) - at com.askimed.nf.test.core.TestExecutionEngine.execute(TestExecutionEngine.java:165) - at com.askimed.nf.test.commands.RunTestsCommand.execute(RunTestsCommand.java:298) - at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:43) - at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:18) - at picocli.CommandLine.executeUserObject(CommandLine.java:1953) - at picocli.CommandLine.access$1300(CommandLine.java:145) - at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352) - at picocli.CommandLine$RunLast.handle(CommandLine.java:2346) - at picocli.CommandLine$RunLast.handle(CommandLine.java:2311) - at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179) - at picocli.CommandLine.execute(CommandLine.java:2078) - at com.askimed.nf.test.App.run(App.java:39) - at com.askimed.nf.test.App.main(App.java:46) -Oct-02 15:01:32.638 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test '3eb16961: Test FUNCTIONAL_ANNOTATION subworkflow success - simple protein fasta'. type: com.askimed.nf.test.lang.workflow.WorkflowTest -Oct-02 15:01:50.931 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Load snapshots from file '/home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/tests/main.nf.test.snap' -Oct-02 15:01:50.950 [main] DEBUG com.askimed.nf.test.lang.extensions.Snapshot - Snapshots 'Test FUNCTIONAL_ANNOTATION subworkflow success - simple protein fasta' do not match. Update snapshots flag set. -Oct-02 15:01:50.951 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Updated snapshot 'Test FUNCTIONAL_ANNOTATION subworkflow success - simple protein fasta' -Oct-02 15:01:50.957 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Wrote snapshots to file '/home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/tests/main.nf.test.snap' -Oct-02 15:01:50.958 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test '3eb16961: Test FUNCTIONAL_ANNOTATION subworkflow success - simple protein fasta' finished. status: PASSED -Oct-02 15:01:50.958 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test 'a10d6e9f: Test FUNCTIONAL_ANNOTATION subworkflow success - simple protein fasta - stub'. type: com.askimed.nf.test.lang.workflow.WorkflowTest -Oct-02 15:02:01.341 [main] DEBUG com.askimed.nf.test.lang.extensions.Snapshot - Snapshots 'Test FUNCTIONAL_ANNOTATION subworkflow success - simple protein fasta - stub' do not match. Update snapshots flag set. -Oct-02 15:02:01.341 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Updated snapshot 'Test FUNCTIONAL_ANNOTATION subworkflow success - simple protein fasta - stub' -Oct-02 15:02:01.347 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Wrote snapshots to file '/home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/tests/main.nf.test.snap' -Oct-02 15:02:01.347 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test 'a10d6e9f: Test FUNCTIONAL_ANNOTATION subworkflow success - simple protein fasta - stub' finished. status: PASSED -Oct-02 15:02:01.348 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Testsuite 'Test Subworkflow FUNCTIONAL_ANNOTATION' finished. snapshot file: true, skipped tests: false, failed tests: true -Oct-02 15:02:01.350 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Executed 5 tests. 3 tests failed. Done! +Apr-03 18:44:36.535 [main] INFO com.askimed.nf.test.App - nf-test 0.9.4 +Apr-03 18:44:36.560 [main] INFO com.askimed.nf.test.App - Arguments: [test, subworkflows/local/functional_annotation/tests/main.nf.test, --tag, stub] +Apr-03 18:44:37.530 [main] INFO com.askimed.nf.test.App - Nextflow Version: 25.10.4 +Apr-03 18:44:37.532 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Load config from file /home/trace/projects/proteinannotator/nf-test.config... +Apr-03 18:44:38.505 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Loaded 37 files from directory /home/trace/projects/proteinannotator in 0.245 sec +Apr-03 18:44:38.507 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Found 1 files containing tests. +Apr-03 18:44:38.507 [main] DEBUG com.askimed.nf.test.lang.dependencies.DependencyResolver - Found files: [/home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/tests/main.nf.test] +Apr-03 18:44:38.886 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Found 4 tests to execute. +Apr-03 18:44:38.887 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Started test plan +Apr-03 18:44:38.888 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Running testsuite 'Test Subworkflow FUNCTIONAL_ANNOTATION' from file '/home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/tests/main.nf.test'. +Apr-03 18:44:38.888 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test 'c3e153a5: Test FUNCTIONAL_ANNOTATION Diamond execution subworkflow success' skipped. +Apr-03 18:44:38.889 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test '45132abc: Test FUNCTIONAL_ANNOTATION Diamond execution subworkflow success - stub'. type: com.askimed.nf.test.lang.workflow.WorkflowTest +Apr-03 18:44:50.347 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Load snapshots from file '/home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/tests/main.nf.test.snap' +Apr-03 18:44:50.359 [main] DEBUG com.askimed.nf.test.lang.extensions.Snapshot - Snapshots 'Test FUNCTIONAL_ANNOTATION Diamond execution subworkflow success - stub' match. +Apr-03 18:44:50.360 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test '45132abc: Test FUNCTIONAL_ANNOTATION Diamond execution subworkflow success - stub' finished. status: PASSED +Apr-03 18:44:50.362 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test '4dcdc77b: l_asparaginase - faa - functional annotation' skipped. +Apr-03 18:44:50.362 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test '810a2a59: faa - functional annotation - stub' skipped. +Apr-03 18:44:50.363 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Testsuite 'Test Subworkflow FUNCTIONAL_ANNOTATION' finished. snapshot file: true, skipped tests: true, failed tests: false +Apr-03 18:44:50.363 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Executed 1 tests. 0 tests failed. Done! diff --git a/modules/local/diamondpreparetaxa/main.nf b/modules/local/diamondpreparetaxa/main.nf index 7fb4b64..6a2153e 100644 --- a/modules/local/diamondpreparetaxa/main.nf +++ b/modules/local/diamondpreparetaxa/main.nf @@ -1,33 +1,39 @@ process DIAMONDPREPARETAXA { - - // tag "${taxondmp_zip.baseName}" + + tag "taxdump" label 'process_low' conda "${moduleDir}/environment.yml" - container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/diamond:2.1.12--hdb4b4cc_1' : + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/diamond:2.1.12--hdb4b4cc_1' : 'biocontainers/diamond:2.1.12--hdb4b4cc_1'}" + // Note: diamond container is used here for convenience (includes wget/tar); + // a minimal linux container would be more correct for this download-only process. input: - val taxondmp_zip // default of ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz + val taxondmp_zip // NCBI taxonomy dump URL; default: ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz output: - path("taxa/nodes.dmp"), emit: taxonnodes - path("taxa/names.dmp"), emit: taxonnames - path "versions.yml" , emit: versions + path "taxa/nodes.dmp" , emit: taxonnodes + path "taxa/names.dmp" , emit: taxonnames + path "versions.yml" , emit: versions + // updated versioning method to be implemented + // tuple val("${task.process}"), val('wget'), + // eval('wget --version | head -n1 | sed "s/GNU Wget //" | sed "s/ .*//"'), + // emit: versions, topic: versions when: task.ext.when == null || task.ext.when script: - """ + """ mkdir -p taxa/ wget -q ${taxondmp_zip} - tar -xzf taxdump.tar.gz -C taxa + tar -xzf taxdump.tar.gz -C taxa/ - cat <<-END_VERSIONS > versions.yml + cat <<-END_VERSIONS > versions.yml "${task.process}": - diamondpreparetaxa: \$(diamondpreparetaxa --version) + wget: \$(wget --version | head -n1 | sed 's/GNU Wget //' | sed 's/ .*//') END_VERSIONS """ @@ -39,7 +45,7 @@ process DIAMONDPREPARETAXA { cat <<-END_VERSIONS > versions.yml "${task.process}": - diamondpreparetaxa: \$(diamondpreparetaxa --version) + wget: "stub" END_VERSIONS """ -} +} \ No newline at end of file diff --git a/modules/local/diamondpreparetaxa/tests/main.nf.test b/modules/local/diamondpreparetaxa/tests/main.nf.test index 073bd7d..d845a55 100644 --- a/modules/local/diamondpreparetaxa/tests/main.nf.test +++ b/modules/local/diamondpreparetaxa/tests/main.nf.test @@ -1,4 +1,3 @@ -// TODO nf-core: Once you have added the required tests, please run the following command to build this file: // nf-core modules test diamondpreparetaxa nextflow_process { @@ -18,53 +17,42 @@ nextflow_process { process { """ input[0] = 'ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz' - - // input[0] = [ - // [ id:'test', single_end:false ], // meta map - // file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), - // ] """ } } then { assert process.success + assert process.out.taxonnodes.size() == 1 + assert process.out.taxonnames.size() == 1 assert snapshot(process.out).match() - // assert process.out.taxonnodes.exists() - // { assert process.out.get(0).exists() } assert snapshot(process.out.versions).match("versions") - //TODO nf-core: Add all required assertions to verify the test output. - // See https://nf-co.re/docs/contributing/tutorials/nf-test_assertions for more information and examples. - } + } } - // TODO nf-core: Change the test name preferably indicating the test-data and file-format used but keep the " - stub" suffix. -// test("sarscov2 - bam - stub") { + test("Test DIAMONDPREPARETAXA creates taxon nodes and names dmp files -- stub") { + tag "stub" + tag "CI" -// options "-stub" + options "-stub" -// when { -// process { -// """ -// // TODO nf-core: define inputs of the process here. Example: - -// input[0] = [ -// [ id:'test', single_end:false ], // meta map -// file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), -// ] -// """ -// } -// } + when { + process { + """ + input[0] = 'ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz' + """ + } + } -// then { -// assertAll( -// { assert process.success }, -// { assert snapshot(process.out).match() } -// //TODO nf-core: Add all required assertions to verify the test output. -// ) -// } + then { + assert process.success + assert process.out.taxonnodes.size() == 1 + assert process.out.taxonnames.size() == 1 + assert snapshot(process.out).match() + assert snapshot(process.out.versions).match("versions_stub") + } -// } + } -} +} \ No newline at end of file diff --git a/modules/local/diamondpreparetaxa/tests/main.nf.test.snap b/modules/local/diamondpreparetaxa/tests/main.nf.test.snap index 7a299b5..365bfda 100644 --- a/modules/local/diamondpreparetaxa/tests/main.nf.test.snap +++ b/modules/local/diamondpreparetaxa/tests/main.nf.test.snap @@ -1,43 +1,72 @@ { + "Test DIAMONDPREPARETAXA creates taxon nodes and names dmp files -- stub": { + "content": [ + { + "0": [ + "nodes.dmp:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "1": [ + "names.dmp:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "2": [ + "versions.yml:md5,be0d7739d57b5d477b474b357352dab0" + ], + "taxonnames": [ + "names.dmp:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "taxonnodes": [ + "nodes.dmp:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "versions": [ + "versions.yml:md5,be0d7739d57b5d477b474b357352dab0" + ] + } + ], + "timestamp": "2026-03-31T10:30:49.787632184", + "meta": { + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } + }, "Test DIAMONDPREPARETAXA creates taxon nodes and names dmp files": { "content": [ { "0": [ - "nodes.dmp:md5,1bfa63b09c297eb0fd11fb357d3b89f4" + "nodes.dmp:md5,f2e815cd1d59cde3ddecfee69cf5efa2" ], "1": [ - "names.dmp:md5,53c087be5d811bd7284603fead32d0b1" + "names.dmp:md5,aee11a2c577ee4a82bc3ffd3e73e58cb" ], "2": [ - "versions.yml:md5,32e482f39dd2786ece9329f2a81d0f62" + "versions.yml:md5,4b9270df8cf486eeb865561ab70f12e7" ], "taxonnames": [ - "names.dmp:md5,53c087be5d811bd7284603fead32d0b1" + "names.dmp:md5,aee11a2c577ee4a82bc3ffd3e73e58cb" ], "taxonnodes": [ - "nodes.dmp:md5,1bfa63b09c297eb0fd11fb357d3b89f4" + "nodes.dmp:md5,f2e815cd1d59cde3ddecfee69cf5efa2" ], "versions": [ - "versions.yml:md5,32e482f39dd2786ece9329f2a81d0f62" + "versions.yml:md5,4b9270df8cf486eeb865561ab70f12e7" ] } ], + "timestamp": "2026-03-31T10:28:19.285395333", "meta": { - "nf-test": "0.9.2", - "nextflow": "25.04.6" - }, - "timestamp": "2025-07-29T10:33:07.445040564" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } }, "versions": { "content": [ [ - "versions.yml:md5,32e482f39dd2786ece9329f2a81d0f62" + "versions.yml:md5,be0d7739d57b5d477b474b357352dab0" ] ], + "timestamp": "2026-03-31T10:31:14.224256905", "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.6" - }, - "timestamp": "2025-06-30T09:23:10.987180894" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } } } \ No newline at end of file diff --git a/modules/local/ncbirefseqdownload/main.nf b/modules/local/ncbirefseqdownload/main.nf index 7115c70..f6f5207 100644 --- a/modules/local/ncbirefseqdownload/main.nf +++ b/modules/local/ncbirefseqdownload/main.nf @@ -14,6 +14,11 @@ process NCBIREFSEQDOWNLOAD { path "ncbi_refseq/refseq_fasta.fa.gz", emit: refseq_fasta // reference fasta for diamond/makedb nf-core module path "versions.yml" , emit: versions + // updated versioning method to be implemented + // tuple val("${task.process}"), val('rsync'), + // eval('rsync --version | head -n1 | sed \'s/rsync version //\''), + // emit: versions, topic: versions + when: task.ext.when == null || task.ext.when @@ -41,7 +46,7 @@ process NCBIREFSEQDOWNLOAD { stub: """ mkdir -p ncbi_refseq - touch ncbi_refseq/refseq_fasta.fa.gz + echo "" | gzip > ncbi_refseq/refseq_fasta.fa.gz cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/local/ncbirefseqdownload/tests/main.nf.test b/modules/local/ncbirefseqdownload/tests/main.nf.test index 7d635cf..6cf6e6b 100644 --- a/modules/local/ncbirefseqdownload/tests/main.nf.test +++ b/modules/local/ncbirefseqdownload/tests/main.nf.test @@ -13,10 +13,6 @@ nextflow_process { test("Should download ncbi refseq 'other' zipped protein fasta") { when { - params{ - // outdir = 'results' - } - process { """ input[0] = 'other' @@ -25,39 +21,37 @@ nextflow_process { } then { - // Make sure the process works assert process.success - - // Check number of tasks and output file sizes assert process.trace.tasks().size() == 1 assert process.out.refseq_fasta.size() == 1 - - // Assert that the output file refseq_fasta.fa.gz exists assert snapshot(process.out).match() - assert file(process.out.get(0).find { file(it).name }).exists() - // Added check for content match - // None working assertions - // assert new File(process.out.refseq_fasta).exists() - // assert process.out.refseq_fasta.exists() - // assert new File("refseq_fasta.fa.gz").exists() - - // troubleshooting print path - // println("refseq_fasta: " + process.out.refseq_fasta[0]) - // assert file(process.out.get(0).find { println(file(it).name) }) - - // assert versioning assert snapshot(process.out.versions).match("versions") + } + + } + + test("Should download ncbi refseq 'other' zipped protein fasta -- stub") { + tag "stub" + tag "CI" + + options "-stub" - // Assert other.wp_protein.1.protein.faa.gz is downloaded -- not sure I can assert if it is not a output variable - // println ("launchDir: $launchDir") - // println ("workDir: $workDir") - // println ("outputDir: $outputDir") - // assert new File("$workDir/*/*/ncbi_refseq/other/other.wp_protein.1.protein.faa.gz").exists() + when { + process { + """ + input[0] = 'other' + """ + } + } - // check ncbi_refseq/ directory was created - // check ${refseq_release}/ directory was created + then { + assert process.success + assert process.trace.tasks().size() == 1 + assert process.out.refseq_fasta.size() == 1 + assert snapshot(process.out).match() + assert snapshot(process.out.versions).match("versions_stub") } } -} +} \ No newline at end of file diff --git a/modules/local/ncbirefseqdownload/tests/main.nf.test.snap b/modules/local/ncbirefseqdownload/tests/main.nf.test.snap index 50681db..b1587ed 100644 --- a/modules/local/ncbirefseqdownload/tests/main.nf.test.snap +++ b/modules/local/ncbirefseqdownload/tests/main.nf.test.snap @@ -1,37 +1,72 @@ { + "versions_stub": { + "content": [ + [ + "versions.yml:md5,21b64f64575fb928a9829f198ffbb8e1" + ] + ], + "timestamp": "2026-03-31T10:47:47.583755748", + "meta": { + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } + }, "versions": { "content": [ [ - "versions.yml:md5,9fabe17275a444ef94e5e2dedcac4f32" + "versions.yml:md5,3799a0b1fc5359fd1bdc1c8f20167431" ] ], + "timestamp": "2026-03-31T10:44:07.054453638", + "meta": { + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } + }, + "Should download ncbi refseq 'other' zipped protein fasta -- stub": { + "content": [ + { + "0": [ + "refseq_fasta.fa.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ], + "1": [ + "versions.yml:md5,21b64f64575fb928a9829f198ffbb8e1" + ], + "refseq_fasta": [ + "refseq_fasta.fa.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ], + "versions": [ + "versions.yml:md5,21b64f64575fb928a9829f198ffbb8e1" + ] + } + ], + "timestamp": "2026-03-31T10:42:34.738664449", "meta": { - "nf-test": "0.9.2", - "nextflow": "25.04.6" - }, - "timestamp": "2025-08-07T11:39:03.033767638" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } }, "Should download ncbi refseq 'other' zipped protein fasta": { "content": [ { "0": [ - "refseq_fasta.fa.gz:md5,05b2f82e0366f27ddfdbd9e7f51880c3" + "refseq_fasta.fa.gz:md5,af9fbb4c725173a9286979c7f1c6a67e" ], "1": [ - "versions.yml:md5,9fabe17275a444ef94e5e2dedcac4f32" + "versions.yml:md5,3799a0b1fc5359fd1bdc1c8f20167431" ], "refseq_fasta": [ - "refseq_fasta.fa.gz:md5,05b2f82e0366f27ddfdbd9e7f51880c3" + "refseq_fasta.fa.gz:md5,af9fbb4c725173a9286979c7f1c6a67e" ], "versions": [ - "versions.yml:md5,9fabe17275a444ef94e5e2dedcac4f32" + "versions.yml:md5,3799a0b1fc5359fd1bdc1c8f20167431" ] } ], + "timestamp": "2026-03-31T10:44:07.029739562", "meta": { - "nf-test": "0.9.2", - "nextflow": "25.04.6" - }, - "timestamp": "2025-08-07T11:39:03.00481177" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } } } \ No newline at end of file diff --git a/subworkflows/local/diamond/main.nf b/subworkflows/local/diamond/main.nf index ba29a59..4892d46 100644 --- a/subworkflows/local/diamond/main.nf +++ b/subworkflows/local/diamond/main.nf @@ -3,41 +3,32 @@ include { DIAMONDPREPARETAXA } from '../../../modules/local/diamondpreparetaxa/m include { DIAMOND_MAKEDB } from '../../../modules/nf-core/diamond/makedb/main' include { DIAMOND_BLASTP } from '../../../modules/nf-core/diamond/blastp/main' -/* -* Default Pipeline parameters -*/ -// params.refseq_release = 'complete' -// params.taxondmp_zip = 'ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz' -// params.taxonmap = 'ftp://ftp.ncbi.nlm.nih.gov/pub/taxonomy/accession2taxid/prot.accession2taxid.gz' -// params.diamond_outfmt = 6 -// params.diamond_blast_columns = qseqid - workflow DIAMOND { take: ch_fasta // channel: [ val(meta), [ fasta ] ] main: - ch_versions = Channel.empty() + ch_versions = channel.empty() - // Modules of Diamond subworkflow + // Local modules of Diamond subworkflow NCBIREFSEQDOWNLOAD( - params.refseq_release // ncbi refseq release category + params.refseq_release ) ch_diamond_reference_fasta = NCBIREFSEQDOWNLOAD.out.refseq_fasta.map { file -> [ [id: 'refseq'], file ] } ch_versions = ch_versions.mix(NCBIREFSEQDOWNLOAD.out.versions.first()) DIAMONDPREPARETAXA ( - params.taxondmp_zip // default ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz + params.taxondmp_zip ) ch_taxonnodes = DIAMONDPREPARETAXA.out.taxonnodes ch_taxonnames = DIAMONDPREPARETAXA.out.taxonnames ch_versions = ch_versions.mix(DIAMONDPREPARETAXA.out.versions.first()) - + // Local modules of Diamond subworkflow DIAMOND_MAKEDB ( ch_diamond_reference_fasta, - params.taxonmap, // default ftp://ftp.ncbi.nlm.nih.gov/pub/taxonomy/accession2taxid/prot.accession2taxid.gz + params.taxonmap, ch_taxonnodes, ch_taxonnames ) @@ -54,7 +45,7 @@ workflow DIAMOND { emit: blast = DIAMOND_BLASTP.out.blast - sml = DIAMOND_BLASTP.out.xml + xml = DIAMOND_BLASTP.out.xml txt = DIAMOND_BLASTP.out.txt daa = DIAMOND_BLASTP.out.daa sam = DIAMOND_BLASTP.out.sam diff --git a/subworkflows/local/diamond/tests/main.nf.test b/subworkflows/local/diamond/tests/main.nf.test index e5e630f..7f7a245 100644 --- a/subworkflows/local/diamond/tests/main.nf.test +++ b/subworkflows/local/diamond/tests/main.nf.test @@ -16,10 +16,10 @@ nextflow_workflow { when { params { - refseq_release = 'other' - taxondmp_zip = 'ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz' - taxonmap = "${moduleTestDir}/mini_prot.accession2taxid.gz" - diamond_outfmt = 6 + refseq_release = 'other' + taxondmp_zip = 'ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz' + taxonmap = "${moduleTestDir}/mini_prot.accession2taxid.gz" + diamond_outfmt = 6 diamond_blast_columns = '' } workflow { @@ -31,9 +31,101 @@ nextflow_workflow { then { assertAll( - { assert workflow.success}, - { assert snapshot(workflow.out).match()} + { assert workflow.success }, + { assert workflow.out.tsv.size() > 0 }, + { assert snapshot(workflow.out).match() }, + { assert snapshot(workflow.out.versions).match("versions") } ) } } -} + + test("Test Diamond subworkflow success -- 6 - TXT output - no columns specified -- stub") { + tag "stub" + tag "CI" + + options "-stub" + + when { + params { + refseq_release = 'other' + taxondmp_zip = 'ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz' + taxonmap = "${moduleTestDir}/mini_prot.accession2taxid.gz" + diamond_outfmt = 6 + diamond_blast_columns = '' + } + workflow { + """ + input[0] = [ [id:'test'], file("${moduleTestDir}/test_refseq.fasta", checkIfExists: false)] + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() }, + { assert snapshot(workflow.out.versions).match("versions_stub") } + ) + } + } + + test("Test Diamond subworkflow -- 6 - TXT output - with columns -- stub") { + tag "stub" + tag "CI" + + options "-stub" + + when { + params { + refseq_release = 'other' + taxondmp_zip = 'ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz' + taxonmap = "${moduleTestDir}/mini_prot.accession2taxid.gz" + diamond_outfmt = 6 + diamond_blast_columns = 'qseqid sseqid pident length evalue bitscore' + } + workflow { + """ + input[0] = [ [id:'test'], file("${moduleTestDir}/test_refseq.fasta", checkIfExists: false)] + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() }, + { assert snapshot(workflow.out.versions).match("versions_stub_columns") } + ) + } + } + + test("Test Diamond subworkflow -- 0 - BLAST output -- stub") { + tag "stub" + tag "CI" + + options "-stub" + + when { + params { + refseq_release = 'other' + taxondmp_zip = 'ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz' + taxonmap = "${moduleTestDir}/mini_prot.accession2taxid.gz" + diamond_outfmt = 0 + diamond_blast_columns = '' + } + workflow { + """ + input[0] = [ [id:'test'], file("${moduleTestDir}/test_refseq.fasta", checkIfExists: false)] + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() }, + { assert snapshot(workflow.out.versions).match("versions_stub_outfmt0") } + ) + } + } +} \ No newline at end of file diff --git a/subworkflows/local/diamond/tests/main.nf.test.snap b/subworkflows/local/diamond/tests/main.nf.test.snap index d3452f4..933bd6f 100644 --- a/subworkflows/local/diamond/tests/main.nf.test.snap +++ b/subworkflows/local/diamond/tests/main.nf.test.snap @@ -1,5 +1,212 @@ { - "Test Diamond subworkflow success -- 6 - TXT output - no columns specified": { + "Test Diamond subworkflow -- 0 - BLAST output -- stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.blast:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + + ], + "2": [ + + ], + "3": [ + + ], + "4": [ + + ], + "5": [ + + ], + "6": [ + + ], + "7": [ + "versions.yml:md5,53b86451bee819efedb455d7bd8bd2a5", + "versions.yml:md5,6c46e8a04372f0048f288e03353de562", + "versions.yml:md5,aacdcbf79da04117d0786d0423161380", + "versions.yml:md5,fd77953bb9df9417c91759e312630970" + ], + "blast": [ + [ + { + "id": "test" + }, + "test.blast:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "daa": [ + + ], + "paf": [ + + ], + "sam": [ + + ], + "tsv": [ + + ], + "txt": [ + + ], + "versions": [ + "versions.yml:md5,53b86451bee819efedb455d7bd8bd2a5", + "versions.yml:md5,6c46e8a04372f0048f288e03353de562", + "versions.yml:md5,aacdcbf79da04117d0786d0423161380", + "versions.yml:md5,fd77953bb9df9417c91759e312630970" + ], + "xml": [ + + ] + } + ], + "timestamp": "2026-03-31T11:17:47.028848668", + "meta": { + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } + }, + "versions_stub_outfmt0": { + "content": [ + [ + "versions.yml:md5,53b86451bee819efedb455d7bd8bd2a5", + "versions.yml:md5,6c46e8a04372f0048f288e03353de562", + "versions.yml:md5,aacdcbf79da04117d0786d0423161380", + "versions.yml:md5,fd77953bb9df9417c91759e312630970" + ] + ], + "timestamp": "2026-03-31T11:17:47.051691701", + "meta": { + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } + }, + "versions_stub": { + "content": [ + [ + "versions.yml:md5,0da1ee778f7b0ccbc62dd24020972b77", + "versions.yml:md5,aacdcbf79da04117d0786d0423161380", + "versions.yml:md5,b1ae909b07e5f96fd8cd79edd252e646", + "versions.yml:md5,fd77953bb9df9417c91759e312630970" + ] + ], + "timestamp": "2026-03-31T11:17:28.036343244", + "meta": { + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } + }, + "versions_stub_columns": { + "content": [ + [ + "versions.yml:md5,a785f36de1bd7aa15d01bc930a0bc23a", + "versions.yml:md5,aacdcbf79da04117d0786d0423161380", + "versions.yml:md5,ce6903e9ca95d75f4127535cd1c74ed1", + "versions.yml:md5,fd77953bb9df9417c91759e312630970" + ] + ], + "timestamp": "2026-03-31T11:17:37.687766408", + "meta": { + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } + }, + "versions": { + "content": [ + [ + "versions.yml:md5,18b26dfd7fcc28591d0eaa7af3edc227" + ] + ], + "timestamp": "2026-03-31T11:07:46.657569172", + "meta": { + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } + }, + "Test Diamond subworkflow success -- 6 - TXT output - no columns specified -- stub": { + "content": [ + { + "0": [ + + ], + "1": [ + + ], + "2": [ + [ + { + "id": "test" + }, + "test.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + + ], + "4": [ + + ], + "5": [ + + ], + "6": [ + + ], + "7": [ + "versions.yml:md5,0da1ee778f7b0ccbc62dd24020972b77", + "versions.yml:md5,aacdcbf79da04117d0786d0423161380", + "versions.yml:md5,b1ae909b07e5f96fd8cd79edd252e646", + "versions.yml:md5,fd77953bb9df9417c91759e312630970" + ], + "blast": [ + + ], + "daa": [ + + ], + "paf": [ + + ], + "sam": [ + + ], + "tsv": [ + + ], + "txt": [ + [ + { + "id": "test" + }, + "test.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,0da1ee778f7b0ccbc62dd24020972b77", + "versions.yml:md5,aacdcbf79da04117d0786d0423161380", + "versions.yml:md5,b1ae909b07e5f96fd8cd79edd252e646", + "versions.yml:md5,fd77953bb9df9417c91759e312630970" + ], + "xml": [ + + ] + } + ], + "timestamp": "2026-03-31T11:17:28.00381889", + "meta": { + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } + }, + "Test Diamond subworkflow -- outfmt 6 with columns -- stub": { "content": [ { "0": [ @@ -13,8 +220,153 @@ { "id": "test" }, - "test.txt:md5,f58fdf4044f9e4bf42da7e2c05f581f5" + "test.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + + ], + "4": [ + + ], + "5": [ + + ], + "6": [ + + ], + "7": [ + "versions.yml:md5,1391f8cce96fafd55bdede8ec85c39c7", + "versions.yml:md5,80e189917535cac95750651a49f69858", + "versions.yml:md5,aacdcbf79da04117d0786d0423161380", + "versions.yml:md5,fd77953bb9df9417c91759e312630970" + ], + "blast": [ + + ], + "daa": [ + + ], + "paf": [ + + ], + "sam": [ + + ], + "tsv": [ + + ], + "txt": [ + [ + { + "id": "test" + }, + "test.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,1391f8cce96fafd55bdede8ec85c39c7", + "versions.yml:md5,80e189917535cac95750651a49f69858", + "versions.yml:md5,aacdcbf79da04117d0786d0423161380", + "versions.yml:md5,fd77953bb9df9417c91759e312630970" + ], + "xml": [ + + ] + } + ], + "timestamp": "2026-03-31T11:15:15.991809553", + "meta": { + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } + }, + "Test Diamond subworkflow -- outfmt 0 txt output -- stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.blast:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + + ], + "2": [ + + ], + "3": [ + + ], + "4": [ + + ], + "5": [ + + ], + "6": [ + + ], + "7": [ + "versions.yml:md5,840f3993fa9f5a9a676d5308554e4cc0", + "versions.yml:md5,aacdcbf79da04117d0786d0423161380", + "versions.yml:md5,d820aab4674fbcc2483c9fcc7f03e48c", + "versions.yml:md5,fd77953bb9df9417c91759e312630970" + ], + "blast": [ + [ + { + "id": "test" + }, + "test.blast:md5,d41d8cd98f00b204e9800998ecf8427e" ] + ], + "daa": [ + + ], + "paf": [ + + ], + "sam": [ + + ], + "tsv": [ + + ], + "txt": [ + + ], + "versions": [ + "versions.yml:md5,840f3993fa9f5a9a676d5308554e4cc0", + "versions.yml:md5,aacdcbf79da04117d0786d0423161380", + "versions.yml:md5,d820aab4674fbcc2483c9fcc7f03e48c", + "versions.yml:md5,fd77953bb9df9417c91759e312630970" + ], + "xml": [ + + ] + } + ], + "timestamp": "2026-03-31T11:15:25.063735348", + "meta": { + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } + }, + "Test Diamond subworkflow success -- 6 - TXT output - no columns specified": { + "content": [ + { + "0": [ + + ], + "1": [ + + ], + "2": [ + ], "3": [ @@ -29,10 +381,7 @@ ], "7": [ - "versions.yml:md5,4b60d5e52704e15aa6a464a001e875a1", - "versions.yml:md5,88882983f101071ff12ab9ad8862946c", - "versions.yml:md5,8ed4d70f88801b4b97aa532c4cd5f1e4", - "versions.yml:md5,af268b7575a939dcbb762d66f0d34775" + "versions.yml:md5,18b26dfd7fcc28591d0eaa7af3edc227" ], "blast": [ @@ -46,7 +395,71 @@ "sam": [ ], - "sml": [ + "tsv": [ + + ], + "txt": [ + + ], + "versions": [ + "versions.yml:md5,18b26dfd7fcc28591d0eaa7af3edc227" + ], + "xml": [ + + ] + } + ], + "timestamp": "2026-03-31T11:09:29.20457463", + "meta": { + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } + }, + "Test Diamond subworkflow -- 6 - TXT output - with columns -- stub": { + "content": [ + { + "0": [ + + ], + "1": [ + + ], + "2": [ + [ + { + "id": "test" + }, + "test.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + + ], + "4": [ + + ], + "5": [ + + ], + "6": [ + + ], + "7": [ + "versions.yml:md5,a785f36de1bd7aa15d01bc930a0bc23a", + "versions.yml:md5,aacdcbf79da04117d0786d0423161380", + "versions.yml:md5,ce6903e9ca95d75f4127535cd1c74ed1", + "versions.yml:md5,fd77953bb9df9417c91759e312630970" + ], + "blast": [ + + ], + "daa": [ + + ], + "paf": [ + + ], + "sam": [ ], "tsv": [ @@ -57,21 +470,24 @@ { "id": "test" }, - "test.txt:md5,f58fdf4044f9e4bf42da7e2c05f581f5" + "test.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "versions": [ - "versions.yml:md5,4b60d5e52704e15aa6a464a001e875a1", - "versions.yml:md5,88882983f101071ff12ab9ad8862946c", - "versions.yml:md5,8ed4d70f88801b4b97aa532c4cd5f1e4", - "versions.yml:md5,af268b7575a939dcbb762d66f0d34775" + "versions.yml:md5,a785f36de1bd7aa15d01bc930a0bc23a", + "versions.yml:md5,aacdcbf79da04117d0786d0423161380", + "versions.yml:md5,ce6903e9ca95d75f4127535cd1c74ed1", + "versions.yml:md5,fd77953bb9df9417c91759e312630970" + ], + "xml": [ + ] } ], + "timestamp": "2026-03-31T11:17:37.667622348", "meta": { - "nf-test": "0.9.2", - "nextflow": "25.04.6" - }, - "timestamp": "2025-08-26T09:47:59.559089213" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } } } \ No newline at end of file diff --git a/subworkflows/local/functional_annotation/main.nf b/subworkflows/local/functional_annotation/main.nf index 32ba2e4..6d74aef 100644 --- a/subworkflows/local/functional_annotation/main.nf +++ b/subworkflows/local/functional_annotation/main.nf @@ -1,14 +1,9 @@ -<<<<<<< HEAD // Import Diamond Subworkflow include { DIAMOND } from '../diamond/main' -// Import Annotator Subworfklows -include { INTERPROSCAN } from '../interproscan/main' -======= include { ARIA2 } from '../../../modules/nf-core/aria2/main' include { UNTAR } from '../../../modules/nf-core/untar/main' include { INTERPROSCAN } from '../../../modules/nf-core/interproscan/main' ->>>>>>> dev workflow FUNCTIONAL_ANNOTATION { take: @@ -21,9 +16,6 @@ workflow FUNCTIONAL_ANNOTATION { ch_interproscan_tsv = channel.empty() ch_versions = channel.empty() -<<<<<<< HEAD - ch_versions = Channel.empty() - // // SUBWORKFLOW: Run Diamond // @@ -33,7 +25,10 @@ workflow FUNCTIONAL_ANNOTATION { ) ch_diamond_tsv = DIAMOND.out.tsv ch_versions = ch_versions.mix(DIAMOND.out.versions.first()) -======= + + // + // SUBWORKFLOW: Run Interproscan + // if (!skip_interproscan) { if (interproscan_db) { ch_interproscan_db = channel.fromPath(interproscan_db).first() @@ -41,41 +36,17 @@ workflow FUNCTIONAL_ANNOTATION { else { ARIA2( [ [ id:'interproscan_db' ], interproscan_db_url ] ) ch_versions = ch_versions.mix(ARIA2.out.versions.first()) ->>>>>>> dev UNTAR( ARIA2.out.downloaded_file ) ch_interproscan_db = UNTAR.out.untar.map{ f -> f[1] } } -<<<<<<< HEAD - if (!params.skip_interproscan) { - // Create a multifasta, with one fasta per entry, add the sequence ID to the meta id - ch_fasta - .map { meta, fasta -> - [ - [id: "${meta.id}_${fasta.splitFasta(record: [id: true]).id[0].replaceAll(/\|/, '-')}"], - fasta.splitFasta(file: true), - ] - } - .transpose() - .set { ch_multifasta } - - INTERPROSCAN( - ch_multifasta - ) - ch_versions = ch_versions.mix(INTERPROSCAN.out.versions.first()) - } - - emit: - diamond_tsv = ch_diamond_tsv // channel: [ val(meta), path(tsv) ] - versions = ch_versions // channel: [ versions.yml ] -======= INTERPROSCAN( ch_fasta, ch_interproscan_db ) ch_interproscan_tsv = ch_interproscan_tsv.mix(INTERPROSCAN.out.tsv) } emit: + diamond_tsv = ch_diamond_tsv interproscan_tsv = ch_interproscan_tsv versions = ch_versions // channel: [ versions.yml ] ->>>>>>> dev } diff --git a/subworkflows/local/functional_annotation/tests/main.nf.test b/subworkflows/local/functional_annotation/tests/main.nf.test index 34177ed..018107c 100644 --- a/subworkflows/local/functional_annotation/tests/main.nf.test +++ b/subworkflows/local/functional_annotation/tests/main.nf.test @@ -18,16 +18,19 @@ nextflow_workflow { test("Test FUNCTIONAL_ANNOTATION Diamond execution subworkflow success") { when { params { - refseq_release = 'other' - taxondmp_zip = 'ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz' - taxonmap = "${moduleTestDir}/mini_prot.accession2taxid.gz" - diamond_outfmt = 6 + refseq_release = 'other' + taxondmp_zip = 'ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz' + taxonmap = "${moduleTestDir}/mini_prot.accession2taxid.gz" + diamond_outfmt = 6 diamond_blast_columns = '' - skip_interproscan = true + skip_interproscan = true } workflow { """ input[0] = [ [id:'test'], file("${moduleTestDir}/test_refseq.fasta", checkIfExists: true)] + input[1] = true + input[2] = [] + input[3] = [] """ } } @@ -41,19 +44,25 @@ nextflow_workflow { test("Test FUNCTIONAL_ANNOTATION Diamond execution subworkflow success - stub") { tag "stub" + tag "CI" + options "-stub" + when { params { - refseq_release = 'other' - taxondmp_zip = 'ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz' - taxonmap = "${moduleTestDir}/mini_prot.accession2taxid.gz" - diamond_outfmt = 6 + refseq_release = 'other' + taxondmp_zip = 'ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz' + taxonmap = "${moduleTestDir}/mini_prot.accession2taxid.gz" + diamond_outfmt = 6 diamond_blast_columns = '' - skip_interproscan = true + skip_interproscan = true } workflow { """ - input[0] = [ [id:'test'], file("${moduleTestDir}/test_refseq.fasta", checkIfExists: true)] + input[0] = [ [id:'test'], file("${moduleTestDir}/test_refseq.fasta", checkIfExists: false)] + input[1] = true + input[2] = [] + input[3] = [] """ } } diff --git a/subworkflows/local/functional_annotation/tests/main.nf.test.snap b/subworkflows/local/functional_annotation/tests/main.nf.test.snap index ad175ea..82fb872 100644 --- a/subworkflows/local/functional_annotation/tests/main.nf.test.snap +++ b/subworkflows/local/functional_annotation/tests/main.nf.test.snap @@ -1,77 +1,60 @@ { - "Test FUNCTIONAL_ANNOTATION subworkflow success - simple protein fasta": { + "Test FUNCTIONAL_ANNOTATION Diamond execution subworkflow success": { "content": [ { "0": [ - + ], "1": [ - "versions.yml:md5,a7c2e489f7420594e92efbbc61cb22f7" + + ], + "2": [ + "versions.yml:md5,360c40011f1cc989e92af5ec14d367c8" ], "diamond_tsv": [ - + + ], + "interproscan_tsv": [ + ], "versions": [ - "versions.yml:md5,a7c2e489f7420594e92efbbc61cb22f7" + "versions.yml:md5,360c40011f1cc989e92af5ec14d367c8" ] } ], + "timestamp": "2026-04-03T15:44:57.103678793", "meta": { - "nf-test": "0.9.2", - "nextflow": "25.04.6" - }, - "timestamp": "2025-10-02T15:01:50.951164221" - }, - "Test FUNCTIONAL_ANNOTATION subworkflow success - simple protein fasta - stub": { - "l_asparaginase - faa - functional annotation": { - "content": [ - true, - [ - { - "FUNCTIONAL_ANNOTATION:ARIA2": { - "aria2": "1.36.0" - } - } - ] - ], - "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.2" - }, - "timestamp": "2026-03-30T08:43:09.611782169" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } }, - "faa - functional annotation - stub": { + "Test FUNCTIONAL_ANNOTATION Diamond execution subworkflow success - stub": { "content": [ { "0": [ - + ], "1": [ - "versions.yml:md5,fd24ea3d2a1506fd14f5212e104d8fd5" + ], - "diamond_tsv": [ - + "2": [ + "versions.yml:md5,3679418d0b849be38d10435e4272ea4d" ], - "versions": [ - "versions.yml:md5,fd24ea3d2a1506fd14f5212e104d8fd5" - + "diamond_tsv": [ + ], "interproscan_tsv": [ - + ], "versions": [ - + "versions.yml:md5,3679418d0b849be38d10435e4272ea4d" ] } ], + "timestamp": "2026-04-03T15:45:09.695642071", "meta": { - "nf-test": "0.9.2", - "nextflow": "25.04.6" - }, - "timestamp": "2025-10-02T15:02:01.341422546" - "nf-test": "0.9.3", - "nextflow": "25.10.2" - }, - "timestamp": "2026-03-30T08:32:05.103561412" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } } } \ No newline at end of file From 8dfc3eaeb36a915aeb7453a9cc6c998947cd4a06 Mon Sep 17 00:00:00 2001 From: tracelail Date: Fri, 3 Apr 2026 19:11:23 -0400 Subject: [PATCH 42/59] Updated modules.json to remove mmseqs/search that would break. Can be merged back in if needed or fixed if requested. updated docs.md with some breaks in markdown and output examples of PAF. Fixed some dev merging issues in functional_annotation/meta.yml. --- docs/output.md | 26 +++++++------------ modules.json | 1 - .../local/functional_annotation/meta.yml | 4 --- 3 files changed, 10 insertions(+), 21 deletions(-) diff --git a/docs/output.md b/docs/output.md index e1080a9..3ef3b27 100644 --- a/docs/output.md +++ b/docs/output.md @@ -10,11 +10,6 @@ The directories listed below will be created in the results directory after the The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes data using the following steps: -<<<<<<< HEAD -- [Functional Annotation](#functional-annotation) Annotate proteins with functional domains - - [InterProScan](#Interproscan) - Search the InterPro database for functional domains - - [Diamond] (#Diamond) - Provide potential homologous protein matches between species -======= - [Quality control and preprocessing](#quality-control-and-preprocessing) - [SeqFu](#seqfu) for input amino acid sequences quality control (QC) - [SeqKit](#seqkit) for preprocessing input amino acid sequences (i.e., gap removal, convert to upper case, validate, filter by length, replace special characters such as `/`, and remove duplicate sequences) @@ -23,9 +18,9 @@ The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes d - [Domain annotation](#domain-annotation) Annotate proteins with domains from established repositories. - [hmmer](#hmmer) - To optionally match the input sequence to known Pfam, FunFam and/or NMPFams domains through `hmmer/hmmsearch` - [Functional annotation](#functional-annotation) Annotate proteins with functional domains + - [Diamond](#Diamond) - Provide potential homologous protein matches between species - [InterProScan](#Interproscan) - Search the InterProScan database for functional domains - [s4pred](#s4pred) - Predict secondary structures of sequences, producing amino acid level probabilities of forming an α-helix, a β-strand or a coil. ->>>>>>> dev - [MultiQC](#multiqc) - Aggregate report describing results and QC from the whole pipeline - [Pipeline information](#pipeline-information) - Report metrics generated during the workflow execution @@ -361,7 +356,6 @@ The XML Schema Definition (XSD) is available [here](http://ftp.ebi.ac.uk/pub/sof
#### Diamond -#### s4pred
Output files @@ -566,18 +560,19 @@ The PAF (Pairwise mApping Format) file that is originally used for long read seq
Example Pairwise Mapping Format (PAF) output - ``` -WP_031942563.1 401 -WP_430799656.1 267 -WP_148044478.1 547 -WP_168247882.1 395 -WP_168247882.1 395 -WP_168247881.1 395 -WP_168247881.1 395 +WP_031942563.1 401 0 401 + WP_031942563.1 401 0 401 401 401 255 AS:i:771 ZR:i:1991 ZE:f:1.53e-288 +WP_430799656.1 267 0 267 + WP_430799656.1 267 0 267 267 267 255 AS:i:528 ZR:i:1361 ZE:f:4.90e-197 +WP_148044478.1 547 0 547 + WP_148044478.1 547 0 547 547 547 255 AS:i:1087 ZR:i:2812 ZE:f:0.0 ```
+ +#### s4pred + +
+Output files + - `s4pred/` - `/` - `/` @@ -588,7 +583,6 @@ WP_168247881.1 395 The `s4pred` module is used to predict secondary structures of amino acid sequences. [s4pred](https://github.com/psipred/s4pred) is a tool for accurate prediction of a protein's secondary structure from only it's amino acid sequence. - ### MultiQC
diff --git a/modules.json b/modules.json index b7e4e49..59d42ad 100644 --- a/modules.json +++ b/modules.json @@ -15,7 +15,6 @@ "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, - "mmseqs/search": { "aria2": { "branch": "master", "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", diff --git a/subworkflows/local/functional_annotation/meta.yml b/subworkflows/local/functional_annotation/meta.yml index 9be673f..c4ff2de 100644 --- a/subworkflows/local/functional_annotation/meta.yml +++ b/subworkflows/local/functional_annotation/meta.yml @@ -18,8 +18,6 @@ components: - interproscan - proteins - fasta - -components: - aria2 - untar - interproscan @@ -77,5 +75,3 @@ maintainers: - "@tracelail" - "@vagkaratzas" - "@Muskan-2464" -maintainers: - - "@vagkaratzas" From 0c9ba7dcd9e378947dc3706ff39736992c579664 Mon Sep 17 00:00:00 2001 From: tracelail Date: Mon, 6 Apr 2026 09:43:59 -0400 Subject: [PATCH 43/59] Addressed some liniting issues in modules and schema json --- modules.json | 6 ++--- nextflow_schema.json | 50 +++++++++++++++--------------------------- ro-crate-metadata.json | 2 +- 3 files changed, 22 insertions(+), 36 deletions(-) diff --git a/modules.json b/modules.json index 59d42ad..b0984eb 100644 --- a/modules.json +++ b/modules.json @@ -5,17 +5,17 @@ "https://github.com/nf-core/modules.git": { "modules": { "nf-core": { - "diamond/blastp": { + "aria2": { "branch": "master", "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, - "diamond/makedb": { + "diamond/blastp": { "branch": "master", "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, - "aria2": { + "diamond/makedb": { "branch": "master", "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] diff --git a/nextflow_schema.json b/nextflow_schema.json index 24b2307..2f45e11 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -43,33 +43,6 @@ } } }, - "interproscan_options": { - "title": "InterProScan Options", - "type": "object", - "description": "Options for best-practices domain annotation tool from EBI, InterProScan", - "default": "", - "properties": { - "skip_interproscan": { - "type": "boolean", - "description": "Run InterProScan", - "default": false - }, - "interproscan_tar_gz": { - "type": "string", - "default": "https://ftp.ebi.ac.uk/pub/software/unix/iprscan/5/5.74-105.0/interproscan-5.74-105.0-64-bit.tar.gz", - "description": "Tar.gz file exactly from InterProScan https://www.ebi.ac.uk/interpro/download/InterProScan/" - }, - "interproscan_database": { - "type": "string", - "description": "Path to the InterProScan database, as downloaded from https://www.ebi.ac.uk/interpro/download/InterProScan/, uncompressed, and the `/data` subfolder", - "help_text": "interproscan_database_version must be provided! Exiting." - }, - "interproscan_database_version": { - "type": "string", - "description": "Version number of the InterProScan database, e.g. \"5.73-104.0\"" - } - } - }, "diamond_options": { "title": "DIAMOND Options", "type": "object", @@ -358,6 +331,23 @@ "default": "https://pavlopoulos-lab.org/envofams/databases/hmmer/nmpfamsdb.hmm.gz", "description": "" }, + "skip_metagroot": { + "type": "boolean", + "fa_icon": "fas fa-ban", + "description": "Skip the domain annotation with the metagRoot database.", + "help": "Skips the domain annotation of input sequence against a metagRoot database." + }, + "metagroot_db": { + "type": "string", + "format": "file-path", + "description": "Path to an already installed metagRoot HMM database (.hmm.gz).", + "help_text": "If left null and skip_metagroot is false, the pipeline will start downloading the latest metagRoot HMM library." + }, + "metagroot_latest_link": { + "type": "string", + "default": "https://pavlopoulos-lab.org/envofams/databases/hmmer/metagroot.hmm.gz", + "description": "metagRoot hosted link to the latest available metagRoot HMM database file." + }, "hmmsearch_evalue_cutoff": { "type": "number", "default": 0.001, @@ -432,9 +422,6 @@ { "$ref": "#/$defs/input_output_options" }, - { - "$ref": "#/$defs/interproscan_options" - }, { "$ref": "#/$defs/diamond_options" }, @@ -450,7 +437,6 @@ { "$ref": "#/$defs/domain_annotation_params" }, - { "$ref": "#/$defs/functional_annotation_options" }, @@ -458,4 +444,4 @@ "$ref": "#/$defs/prediction_params" } ] -} +} \ No newline at end of file diff --git a/ro-crate-metadata.json b/ro-crate-metadata.json index 5028582..64d5b21 100644 --- a/ro-crate-metadata.json +++ b/ro-crate-metadata.json @@ -23,7 +23,7 @@ "@type": "Dataset", "creativeWorkStatus": "InProgress", "datePublished": "2026-02-09T13:54:13+00:00", - "description": "

\n \n \n \"nf-core/proteinannotator\"\n \n

\n\n[![Open in GitHub Codespaces](https://img.shields.io/badge/Open_In_GitHub_Codespaces-black?labelColor=grey&logo=github)](https://github.com/codespaces/new/nf-core/proteinannotator)\n[![GitHub Actions CI Status](https://github.com/nf-core/proteinannotator/actions/workflows/nf-test.yml/badge.svg)](https://github.com/nf-core/proteinannotator/actions/workflows/nf-test.yml)\n[![GitHub Actions Linting Status](https://github.com/nf-core/proteinannotator/actions/workflows/linting.yml/badge.svg)](https://github.com/nf-core/proteinannotator/actions/workflows/linting.yml)[![AWS CI](https://img.shields.io/badge/CI%20tests-full%20size-FF9900?labelColor=000000&logo=Amazon%20AWS)](https://nf-co.re/proteinannotator/results)[![Cite with Zenodo](http://img.shields.io/badge/DOI-10.5281/zenodo.18547735-1073c8?labelColor=000000)](https://doi.org/10.5281/zenodo.18547735)\n[![nf-test](https://img.shields.io/badge/unit_tests-nf--test-337ab7.svg)](https://www.nf-test.com)\n\n[![Nextflow](https://img.shields.io/badge/version-%E2%89%A525.10.0-green?style=flat&logo=nextflow&logoColor=white&color=%230DC09D&link=https%3A%2F%2Fnextflow.io)](https://www.nextflow.io/)\n[![nf-core template version](https://img.shields.io/badge/nf--core_template-3.5.2-green?style=flat&logo=nfcore&logoColor=white&color=%2324B064&link=https%3A%2F%2Fnf-co.re)](https://github.com/nf-core/tools/releases/tag/3.5.2)\n[![run with conda](http://img.shields.io/badge/run%20with-conda-3EB049?labelColor=000000&logo=anaconda)](https://docs.conda.io/en/latest/)\n[![run with docker](https://img.shields.io/badge/run%20with-docker-0db7ed?labelColor=000000&logo=docker)](https://www.docker.com/)\n[![run with singularity](https://img.shields.io/badge/run%20with-singularity-1d355c.svg?labelColor=000000)](https://sylabs.io/docs/)\n[![Launch on Seqera Platform](https://img.shields.io/badge/Launch%20%F0%9F%9A%80-Seqera%20Platform-%234256e7)](https://cloud.seqera.io/launch?pipeline=https://github.com/nf-core/proteinannotator)\n\n[![Get help on Slack](http://img.shields.io/badge/slack-nf--core%20%23proteinannotator-4A154B?labelColor=000000&logo=slack)](https://nfcore.slack.com/channels/proteinannotator)[![Follow on Bluesky](https://img.shields.io/badge/bluesky-%40nf__core-1185fe?labelColor=000000&logo=bluesky)](https://bsky.app/profile/nf-co.re)[![Follow on Mastodon](https://img.shields.io/badge/mastodon-nf__core-6364ff?labelColor=FFFFFF&logo=mastodon)](https://mstdn.science/@nf_core)[![Watch on YouTube](http://img.shields.io/badge/youtube-nf--core-FF0000?labelColor=000000&logo=youtube)](https://www.youtube.com/c/nf-core)\n\n## Introduction\n\n**nf-core/proteinannotator** is a bioinformatics pipeline that computes statistics for protein FASTA inputs and produces protein annotations based on predicted sequence features, including conserved domains, functions, and secondary structure.\n\n

\n \n \n \"nf-core/proteinannotator\"\n \n

\n\n### Check quality and pre-process\n\nGenerate input amino acid sequence statistics with ([`SeqFu`](https://github.com/telatin/seqfu2/)) and pre-process them (i.e., gap removal, convert to upper case, validate, filter by length, replace special characters such as `/`, and remove duplicate sequences) with ([`SeqKit`](https://github.com/shenwei356/seqkit/))\n\n### Annotate sequences\n\n1. Conserved domain annotation with ([`hmmer`](https://github.com/EddyRivasLab/hmmer/)) against databases\n such as [Pfam](https://ftp.ebi.ac.uk/pub/databases/Pfam/), [FunFam](https://download.cathdb.info/cath/releases/all-releases/), and [NMPFams](https://pavlopoulos-lab.org/envofams/databases/hmmer/)\n2. Functional annotation:\n - ([`InterProScan`](https://interproscan-docs.readthedocs.io/en/v5/)) a software tool used to analyze protein sequences by scanning them against the signatures of protein families, domains, and sites in the [InterPro](https://www.ebi.ac.uk/interpro/) database, helping to identify their functional characteristics.\n3. Predict secondary structure compositional features such as \u03b1-helices, \u03b2-strands and coils with ([`s4pred`](https://github.com/psipred/s4pred))\n4. Present QC stats for input sequences before and after initial pre-processing with ([`MultiQC`](http://multiqc.info/))\n\n## Usage\n\n> [!NOTE]\n> If you are new to Nextflow and nf-core, please refer to [this page](https://nf-co.re/docs/usage/installation) on how to set-up Nextflow. Make sure to [test your setup](https://nf-co.re/docs/usage/introduction#how-to-run-a-pipeline) with `-profile test` before running the workflow on actual data.\n\nFirst, prepare a samplesheet with your input data that looks as follows:\n\n`samplesheet.csv`:\n\n```csv\nid,fasta\nspecies1,species1_proteins.fasta\nspecies2,species2_proteins.fasta\n```\n\nEach row represents a FASTA file of proteins from a single species.\n\nNow, you can run the pipeline using:\n\n```bash\nnextflow run nf-core/proteinannotator \\\n -profile \\\n --input samplesheet.csv \\\n --outdir \n```\n\n> [!WARNING]\n> Please provide pipeline parameters via the CLI or Nextflow `-params-file` option. Custom config files including those provided by the `-c` Nextflow option can be used to provide any configuration _**except for parameters**_; see [docs](https://nf-co.re/docs/usage/getting_started/configuration#custom-configuration-files).\n\nFor more details and further functionality, please refer to the [usage documentation](https://nf-co.re/proteinannotator/usage) and the [parameter documentation](https://nf-co.re/proteinannotator/parameters).\n\n## Pipeline output\n\nTo see the results of an example test run with a full size dataset refer to the [results](https://nf-co.re/proteinannotator/results) tab on the nf-core website pipeline page.\nFor more details about the output files and reports, please refer to the\n[output documentation](https://nf-co.re/proteinannotator/output).\n\n## Credits\n\nnf-core/proteinannotator was originally written by Olga Botvinnik and Evangelos Karatzas.\n\nWe thank the following people for their extensive assistance in the development of this pipeline:\n\n- [Michael L Heuer](https://github.com/heuermh)\n- [Edmund Miller](https://github.com/edmundmiller)\n- [Eric Wei](https://github.com/eweizy)\n- [Martin Beracochea](https://github.com/mberacochea)\n\n## Contributions and Support\n\nIf you would like to contribute to this pipeline, please see the [contributing guidelines](.github/CONTRIBUTING.md).\n\nFor further information or help, don't hesitate to get in touch on the [Slack `#proteinannotator` channel](https://nfcore.slack.com/channels/proteinannotator) (you can join with [this invite](https://nf-co.re/join/slack)).\n\n## Citations\n\nIf you use nf-core/proteinannotator for your analysis, please cite it using the following doi: [10.5281/zenodo.18547735](https://doi.org/10.5281/zenodo.18547735)\n\nAn extensive list of references for the tools used by the pipeline can be found in the [`CITATIONS.md`](CITATIONS.md) file.\n\nYou can cite the `nf-core` publication as follows:\n\n> **The nf-core framework for community-curated bioinformatics pipelines.**\n>\n> Philip Ewels, Alexander Peltzer, Sven Fillinger, Harshil Patel, Johannes Alneberg, Andreas Wilm, Maxime Ulysse Garcia, Paolo Di Tommaso & Sven Nahnsen.\n>\n> _Nat Biotechnol._ 2020 Feb 13. doi: [10.1038/s41587-020-0439-x](https://dx.doi.org/10.1038/s41587-020-0439-x).\n", + "description": "

\n \n \n \"nf-core/proteinannotator\"\n \n

\n\n[![Open in GitHub Codespaces](https://img.shields.io/badge/Open_In_GitHub_Codespaces-black?labelColor=grey&logo=github)](https://github.com/codespaces/new/nf-core/proteinannotator)\n[![GitHub Actions CI Status](https://github.com/nf-core/proteinannotator/actions/workflows/nf-test.yml/badge.svg)](https://github.com/nf-core/proteinannotator/actions/workflows/nf-test.yml)\n[![GitHub Actions Linting Status](https://github.com/nf-core/proteinannotator/actions/workflows/linting.yml/badge.svg)](https://github.com/nf-core/proteinannotator/actions/workflows/linting.yml)[![AWS CI](https://img.shields.io/badge/CI%20tests-full%20size-FF9900?labelColor=000000&logo=Amazon%20AWS)](https://nf-co.re/proteinannotator/results)[![Cite with Zenodo](http://img.shields.io/badge/DOI-10.5281/zenodo.18547735-1073c8?labelColor=000000)](https://doi.org/10.5281/zenodo.18547735)\n[![nf-test](https://img.shields.io/badge/unit_tests-nf--test-337ab7.svg)](https://www.nf-test.com)\n\n[![Nextflow](https://img.shields.io/badge/version-%E2%89%A525.10.0-green?style=flat&logo=nextflow&logoColor=white&color=%230DC09D&link=https%3A%2F%2Fnextflow.io)](https://www.nextflow.io/)\n[![nf-core template version](https://img.shields.io/badge/nf--core_template-3.5.2-green?style=flat&logo=nfcore&logoColor=white&color=%2324B064&link=https%3A%2F%2Fnf-co.re)](https://github.com/nf-core/tools/releases/tag/3.5.2)\n[![run with conda](http://img.shields.io/badge/run%20with-conda-3EB049?labelColor=000000&logo=anaconda)](https://docs.conda.io/en/latest/)\n[![run with docker](https://img.shields.io/badge/run%20with-docker-0db7ed?labelColor=000000&logo=docker)](https://www.docker.com/)\n[![run with singularity](https://img.shields.io/badge/run%20with-singularity-1d355c.svg?labelColor=000000)](https://sylabs.io/docs/)\n[![Launch on Seqera Platform](https://img.shields.io/badge/Launch%20%F0%9F%9A%80-Seqera%20Platform-%234256e7)](https://cloud.seqera.io/launch?pipeline=https://github.com/nf-core/proteinannotator)\n\n[![Get help on Slack](http://img.shields.io/badge/slack-nf--core%20%23proteinannotator-4A154B?labelColor=000000&logo=slack)](https://nfcore.slack.com/channels/proteinannotator)[![Follow on Bluesky](https://img.shields.io/badge/bluesky-%40nf__core-1185fe?labelColor=000000&logo=bluesky)](https://bsky.app/profile/nf-co.re)[![Follow on Mastodon](https://img.shields.io/badge/mastodon-nf__core-6364ff?labelColor=FFFFFF&logo=mastodon)](https://mstdn.science/@nf_core)[![Watch on YouTube](http://img.shields.io/badge/youtube-nf--core-FF0000?labelColor=000000&logo=youtube)](https://www.youtube.com/c/nf-core)\n\n## Introduction\n\n**nf-core/proteinannotator** is a bioinformatics pipeline that computes statistics for protein FASTA inputs and produces protein annotations based on predicted sequence features, including conserved domains, functions, and secondary structure.\n\n1. Run ([`seqkit stats`](https://bioinf.shenwei.me/seqkit/usage/#stats)) to summarize input protein fasta files\n2. Functional Annotation:\n 1. ([`InterProScan`](https://interproscan-docs.readthedocs.io/en/v5/)) a software tool used to analyze protein sequences by scanning them against the signatures of protein families, domains, and sites in the [InterPro](https://www.ebi.ac.uk/interpro/) database, helping to identify their functional characteristics.\n 2. ([`DIAMOND`](https://github.com/bbuchfink/diamond)) tool used for sensitive protein sequence alignment, comparing to a reference database created from combined protein fastas and taxonic information (taxon names, nodes, and map).\n3. Present QC for raw reads ([`MultiQC`](http://multiqc.info/))\n\n\n

\n

\n \n \n \"nf-core/proteinannotator\"\n \n

\n\n### Check quality and pre-process\n\nGenerate input amino acid sequence statistics with ([`SeqFu`](https://github.com/telatin/seqfu2/)) and pre-process them (i.e., gap removal, convert to upper case, validate, filter by length, replace special characters such as `/`, and remove duplicate sequences) with ([`SeqKit`](https://github.com/shenwei356/seqkit/))\n\n### Annotate sequences\n\n1. Conserved domain annotation with ([`hmmer`](https://github.com/EddyRivasLab/hmmer/)) against databases\n such as [Pfam](https://ftp.ebi.ac.uk/pub/databases/Pfam/), [FunFam](https://download.cathdb.info/cath/releases/all-releases/), and [NMPFams](https://pavlopoulos-lab.org/envofams/databases/hmmer/)\n2. Functional annotation:\n - ([`InterProScan`](https://interproscan-docs.readthedocs.io/en/v5/)) a software tool used to analyze protein sequences by scanning them against the signatures of protein families, domains, and sites in the [InterPro](https://www.ebi.ac.uk/interpro/) database, helping to identify their functional characteristics.\n3. Predict secondary structure compositional features such as \u03b1-helices, \u03b2-strands and coils with ([`s4pred`](https://github.com/psipred/s4pred))\n4. Present QC stats for input sequences before and after initial pre-processing with ([`MultiQC`](http://multiqc.info/))\n\n## Usage\n\n> [!NOTE]\n> If you are new to Nextflow and nf-core, please refer to [this page](https://nf-co.re/docs/usage/installation) on how to set-up Nextflow. Make sure to [test your setup](https://nf-co.re/docs/usage/introduction#how-to-run-a-pipeline) with `-profile test` before running the workflow on actual data.\n\nFirst, prepare a samplesheet with your input data that looks as follows:\n\n`samplesheet.csv`:\n\n```csv\nid,fasta\nspecies1,species1_proteins.fasta\nspecies2,species2_proteins.fasta\n```\n\nEach row represents a FASTA file of proteins from a single species.\n\nNow, you can run the pipeline using:\n\n```bash\nnextflow run nf-core/proteinannotator \\\n -profile \\\n --input samplesheet.csv \\\n --outdir \n```\n\n> [!WARNING]\n> Please provide pipeline parameters via the CLI or Nextflow `-params-file` option. Custom config files including those provided by the `-c` Nextflow option can be used to provide any configuration _**except for parameters**_; see [docs](https://nf-co.re/docs/usage/getting_started/configuration#custom-configuration-files).\n\nFor more details and further functionality, please refer to the [usage documentation](https://nf-co.re/proteinannotator/usage) and the [parameter documentation](https://nf-co.re/proteinannotator/parameters).\n\n## Pipeline output\n\nTo see the results of an example test run with a full size dataset refer to the [results](https://nf-co.re/proteinannotator/results) tab on the nf-core website pipeline page.\nFor more details about the output files and reports, please refer to the\n[output documentation](https://nf-co.re/proteinannotator/output).\n\n## Credits\n\nnf-core/proteinannotator was originally written by Olga Botvinnik and Evangelos Karatzas.\n\nWe thank the following people for their extensive assistance in the development of this pipeline:\n\n- [Michael L Heuer](https://github.com/heuermh)\n- [Edmund Miller](https://github.com/edmundmiller)\n- [Eric Wei](https://github.com/eweizy)\n- [Martin Beracochea](https://github.com/mberacochea)\n\n## Contributions and Support\n\nIf you would like to contribute to this pipeline, please see the [contributing guidelines](.github/CONTRIBUTING.md).\n\nFor further information or help, don't hesitate to get in touch on the [Slack `#proteinannotator` channel](https://nfcore.slack.com/channels/proteinannotator) (you can join with [this invite](https://nf-co.re/join/slack)).\n\n## Citations\n\nIf you use nf-core/proteinannotator for your analysis, please cite it using the following doi: [10.5281/zenodo.18547735](https://doi.org/10.5281/zenodo.18547735)\n\nAn extensive list of references for the tools used by the pipeline can be found in the [`CITATIONS.md`](CITATIONS.md) file.\n\nYou can cite the `nf-core` publication as follows:\n\n> **The nf-core framework for community-curated bioinformatics pipelines.**\n>\n> Philip Ewels, Alexander Peltzer, Sven Fillinger, Harshil Patel, Johannes Alneberg, Andreas Wilm, Maxime Ulysse Garcia, Paolo Di Tommaso & Sven Nahnsen.\n>\n> _Nat Biotechnol._ 2020 Feb 13. doi: [10.1038/s41587-020-0439-x](https://dx.doi.org/10.1038/s41587-020-0439-x).\n", "hasPart": [ { "@id": "main.nf" From 60e36fa5022e972f0bf5c8be41efe1ea3acc5127 Mon Sep 17 00:00:00 2001 From: tracelail Date: Mon, 6 Apr 2026 13:19:54 -0400 Subject: [PATCH 44/59] Updated schema and config to fix lint error. Updated readme with diamand annotation information. --- README.md | 1 + nextflow.config | 13 +++++++------ nextflow_schema.json | 3 +-- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 1629f48..daeb3c5 100644 --- a/README.md +++ b/README.md @@ -48,6 +48,7 @@ Generate input amino acid sequence statistics with ([`SeqFu`](https://github.com such as [Pfam](https://ftp.ebi.ac.uk/pub/databases/Pfam/), [FunFam](https://download.cathdb.info/cath/releases/all-releases/), and [NMPFams](https://pavlopoulos-lab.org/envofams/databases/hmmer/) 2. Functional annotation: - ([`InterProScan`](https://interproscan-docs.readthedocs.io/en/v5/)) a software tool used to analyze protein sequences by scanning them against the signatures of protein families, domains, and sites in the [InterPro](https://www.ebi.ac.uk/interpro/) database, helping to identify their functional characteristics. + - ([`DIAMOND`](https://github.com/bbuchfink/diamond)) a rapid and sensitive protein sequence aligner used to search input sequences against a reference database built from NCBI RefSeq protein sequences with taxonomic information, providing potential homologous protein matches across species. 3. Predict secondary structure compositional features such as α-helices, β-strands and coils with ([`s4pred`](https://github.com/psipred/s4pred)) 4. Present QC stats for input sequences before and after initial pre-processing with ([`MultiQC`](http://multiqc.info/)) diff --git a/nextflow.config b/nextflow.config index a251f42..d11b17f 100644 --- a/nextflow.config +++ b/nextflow.config @@ -37,6 +37,13 @@ params { interproscan_applications = 'Hamap,PANTHER,PIRSF,TIGRFAM,sfld' interproscan_enableprecalc = false + // DIAMOND options + refseq_release = 'complete' + taxondmp_zip = 'ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz' + taxonmap = 'ftp://ftp.ncbi.nlm.nih.gov/pub/taxonomy/accession2taxid/prot.accession2taxid.gz' + diamond_outfmt = 6 + diamond_blast_columns = null + // Secondary structure prediction (s4pred) skip_s4pred = false s4pred_outfmt = 'ss2' // ["ss2", "fas", "horiz"] @@ -46,12 +53,6 @@ params { igenomes_base = 's3://ngi-igenomes/igenomes/' igenomes_ignore = false - // DIAMOND options - refseq_release = 'complete' - taxondmp_zip = 'ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz' - taxonmap = 'ftp://ftp.ncbi.nlm.nih.gov/pub/taxonomy/accession2taxid/prot.accession2taxid.gz' - diamond_outfmt = 6 - diamond_blast_columns = "" // MultiQC options multiqc_config = null diff --git a/nextflow_schema.json b/nextflow_schema.json index 2f45e11..5e4ec8f 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -76,8 +76,7 @@ }, "diamond_blast_columns": { "type": "string", - "description": "Accompanied optional input parameter to `diamond_outfmt`: `*.txt (6)` output format. Space separated list of columns to be included. Options: qseqid sseqid pident length mismatch gapopen qstart qend sstart send evalue bitscore.", - "default": "" + "description": "Accompanied optional input parameter to `diamond_outfmt`: `*.txt (6)` output format. Space separated list of columns to be included. Options: qseqid sseqid pident length mismatch gapopen qstart qend sstart send evalue bitscore." } } }, From a2e2c02ce2fa5056cd4a4e5c235a6a3ffee472b5 Mon Sep 17 00:00:00 2001 From: tracelail Date: Thu, 9 Apr 2026 09:57:06 -0400 Subject: [PATCH 45/59] diamond subworkflow needed a default with elvis operator and the diamond test had a typo of tsv output when it should have been txt. Updated snapshots are also included. --- .nf-test.log | 284 ++++++++++++++++-- CITATIONS.md | 1 - .../tests/main.nf.test.snap | 30 +- .../tests/main.nf.test.snap | 10 +- subworkflows/local/diamond/main.nf | 2 +- subworkflows/local/diamond/tests/main.nf.test | 2 +- .../local/diamond/tests/main.nf.test.snap | 81 +++-- .../domain_annotation/tests/main.nf.test.snap | 56 +--- .../tests/main.nf.test.snap | 12 +- 9 files changed, 358 insertions(+), 120 deletions(-) diff --git a/.nf-test.log b/.nf-test.log index b2dc8d6..9b33b31 100644 --- a/.nf-test.log +++ b/.nf-test.log @@ -1,19 +1,265 @@ -Apr-03 18:44:36.535 [main] INFO com.askimed.nf.test.App - nf-test 0.9.4 -Apr-03 18:44:36.560 [main] INFO com.askimed.nf.test.App - Arguments: [test, subworkflows/local/functional_annotation/tests/main.nf.test, --tag, stub] -Apr-03 18:44:37.530 [main] INFO com.askimed.nf.test.App - Nextflow Version: 25.10.4 -Apr-03 18:44:37.532 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Load config from file /home/trace/projects/proteinannotator/nf-test.config... -Apr-03 18:44:38.505 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Loaded 37 files from directory /home/trace/projects/proteinannotator in 0.245 sec -Apr-03 18:44:38.507 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Found 1 files containing tests. -Apr-03 18:44:38.507 [main] DEBUG com.askimed.nf.test.lang.dependencies.DependencyResolver - Found files: [/home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/tests/main.nf.test] -Apr-03 18:44:38.886 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Found 4 tests to execute. -Apr-03 18:44:38.887 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Started test plan -Apr-03 18:44:38.888 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Running testsuite 'Test Subworkflow FUNCTIONAL_ANNOTATION' from file '/home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/tests/main.nf.test'. -Apr-03 18:44:38.888 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test 'c3e153a5: Test FUNCTIONAL_ANNOTATION Diamond execution subworkflow success' skipped. -Apr-03 18:44:38.889 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test '45132abc: Test FUNCTIONAL_ANNOTATION Diamond execution subworkflow success - stub'. type: com.askimed.nf.test.lang.workflow.WorkflowTest -Apr-03 18:44:50.347 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Load snapshots from file '/home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/tests/main.nf.test.snap' -Apr-03 18:44:50.359 [main] DEBUG com.askimed.nf.test.lang.extensions.Snapshot - Snapshots 'Test FUNCTIONAL_ANNOTATION Diamond execution subworkflow success - stub' match. -Apr-03 18:44:50.360 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test '45132abc: Test FUNCTIONAL_ANNOTATION Diamond execution subworkflow success - stub' finished. status: PASSED -Apr-03 18:44:50.362 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test '4dcdc77b: l_asparaginase - faa - functional annotation' skipped. -Apr-03 18:44:50.362 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test '810a2a59: faa - functional annotation - stub' skipped. -Apr-03 18:44:50.363 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Testsuite 'Test Subworkflow FUNCTIONAL_ANNOTATION' finished. snapshot file: true, skipped tests: true, failed tests: false -Apr-03 18:44:50.363 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Executed 1 tests. 0 tests failed. Done! +Apr-06 17:41:34.778 [main] INFO com.askimed.nf.test.App - nf-test 0.9.4 +Apr-06 17:41:34.797 [main] INFO com.askimed.nf.test.App - Arguments: [test, modules/local, subworkflows/local, --profile, test,docker,debug, --update-snapshot] +Apr-06 17:41:35.661 [main] INFO com.askimed.nf.test.App - Nextflow Version: 25.10.4 +Apr-06 17:41:35.663 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Load config from file /home/trace/projects/proteinannotator/nf-test.config... +Apr-06 17:41:36.654 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Loaded 37 files from directory /home/trace/projects/proteinannotator in 0.255 sec +Apr-06 17:41:36.657 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Found 5 files containing tests. +Apr-06 17:41:36.657 [main] DEBUG com.askimed.nf.test.lang.dependencies.DependencyResolver - Found files: [/home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/tests/main.nf.test, /home/trace/projects/proteinannotator/modules/local/ncbirefseqdownload/tests/main.nf.test, /home/trace/projects/proteinannotator/subworkflows/local/diamond/tests/main.nf.test, /home/trace/projects/proteinannotator/subworkflows/local/domain_annotation/tests/main.nf.test, /home/trace/projects/proteinannotator/modules/local/diamondpreparetaxa/tests/main.nf.test] +Apr-06 17:41:37.452 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Found 16 tests to execute. +Apr-06 17:41:37.453 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Started test plan +Apr-06 17:41:37.453 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Running testsuite 'Test Process DIAMONDPREPARETAXA' from file '/home/trace/projects/proteinannotator/modules/local/diamondpreparetaxa/tests/main.nf.test'. +Apr-06 17:41:37.453 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test 'd9252286: Test DIAMONDPREPARETAXA creates taxon nodes and names dmp files'. type: com.askimed.nf.test.lang.process.ProcessTest +Apr-06 17:41:53.469 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Load snapshots from file '/home/trace/projects/proteinannotator/modules/local/diamondpreparetaxa/tests/main.nf.test.snap' +Apr-06 17:41:57.013 [main] DEBUG com.askimed.nf.test.lang.extensions.Snapshot - Snapshots 'Test DIAMONDPREPARETAXA creates taxon nodes and names dmp files' do not match. Update snapshots flag set. +Apr-06 17:41:57.014 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Updated snapshot 'Test DIAMONDPREPARETAXA creates taxon nodes and names dmp files' +Apr-06 17:42:01.996 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Wrote snapshots to file '/home/trace/projects/proteinannotator/modules/local/diamondpreparetaxa/tests/main.nf.test.snap' +Apr-06 17:42:01.998 [main] DEBUG com.askimed.nf.test.lang.extensions.Snapshot - Snapshots 'versions' match. +Apr-06 17:42:01.999 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test 'd9252286: Test DIAMONDPREPARETAXA creates taxon nodes and names dmp files' finished. status: PASSED +Apr-06 17:42:02.001 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test 'e7bfeb3d: Test DIAMONDPREPARETAXA creates taxon nodes and names dmp files -- stub'. type: com.askimed.nf.test.lang.process.ProcessTest +Apr-06 17:42:10.999 [main] DEBUG com.askimed.nf.test.lang.extensions.Snapshot - Snapshots 'Test DIAMONDPREPARETAXA creates taxon nodes and names dmp files -- stub' match. +Apr-06 17:42:11.003 [main] DEBUG com.askimed.nf.test.lang.extensions.Snapshot - Snapshots 'versions_stub' match. +Apr-06 17:42:11.004 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test 'e7bfeb3d: Test DIAMONDPREPARETAXA creates taxon nodes and names dmp files -- stub' finished. status: PASSED +Apr-06 17:42:11.004 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Testsuite 'Test Process DIAMONDPREPARETAXA' finished. snapshot file: true, skipped tests: false, failed tests: false +Apr-06 17:42:11.008 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Running testsuite 'Test Process NCBIREFSEQDOWNLOAD' from file '/home/trace/projects/proteinannotator/modules/local/ncbirefseqdownload/tests/main.nf.test'. +Apr-06 17:42:11.008 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test '7e996768: Should download ncbi refseq 'other' zipped protein fasta'. type: com.askimed.nf.test.lang.process.ProcessTest +Apr-06 17:42:21.013 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Load snapshots from file '/home/trace/projects/proteinannotator/modules/local/ncbirefseqdownload/tests/main.nf.test.snap' +Apr-06 17:42:21.016 [main] DEBUG com.askimed.nf.test.lang.extensions.Snapshot - Snapshots 'Should download ncbi refseq 'other' zipped protein fasta' match. +Apr-06 17:42:21.018 [main] DEBUG com.askimed.nf.test.lang.extensions.Snapshot - Snapshots 'versions' match. +Apr-06 17:42:21.018 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test '7e996768: Should download ncbi refseq 'other' zipped protein fasta' finished. status: PASSED +Apr-06 17:42:21.019 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test 'f4bf5c95: Should download ncbi refseq 'other' zipped protein fasta -- stub'. type: com.askimed.nf.test.lang.process.ProcessTest +Apr-06 17:42:30.634 [main] DEBUG com.askimed.nf.test.lang.extensions.Snapshot - Snapshots 'Should download ncbi refseq 'other' zipped protein fasta -- stub' match. +Apr-06 17:42:30.636 [main] DEBUG com.askimed.nf.test.lang.extensions.Snapshot - Snapshots 'versions_stub' match. +Apr-06 17:42:30.637 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test 'f4bf5c95: Should download ncbi refseq 'other' zipped protein fasta -- stub' finished. status: PASSED +Apr-06 17:42:30.638 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Testsuite 'Test Process NCBIREFSEQDOWNLOAD' finished. snapshot file: true, skipped tests: false, failed tests: false +Apr-06 17:42:30.638 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Running testsuite 'Test Subworkflow DIAMOND' from file '/home/trace/projects/proteinannotator/subworkflows/local/diamond/tests/main.nf.test'. +Apr-06 17:42:30.638 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test '18fd3d6c: Test Diamond subworkflow success -- 6 - TXT output - no columns specified'. type: com.askimed.nf.test.lang.workflow.WorkflowTest +Apr-06 17:42:55.234 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Load snapshots from file '/home/trace/projects/proteinannotator/subworkflows/local/diamond/tests/main.nf.test.snap' +Apr-06 17:42:55.239 [main] DEBUG com.askimed.nf.test.lang.extensions.Snapshot - Snapshots 'Test Diamond subworkflow success -- 6 - TXT output - no columns specified' match. +Apr-06 17:42:55.244 [main] DEBUG com.askimed.nf.test.lang.extensions.Snapshot - Snapshots 'versions' match. +Apr-06 17:42:55.245 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test '18fd3d6c: Test Diamond subworkflow success -- 6 - TXT output - no columns specified' finished. status: PASSED +Apr-06 17:42:55.245 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test '64dc6960: Test Diamond subworkflow success -- 6 - TXT output - no columns specified -- stub'. type: com.askimed.nf.test.lang.workflow.WorkflowTest +Apr-06 17:43:08.355 [main] DEBUG com.askimed.nf.test.lang.extensions.Snapshot - Snapshots 'Test Diamond subworkflow success -- 6 - TXT output - no columns specified -- stub' match. +Apr-06 17:43:08.358 [main] DEBUG com.askimed.nf.test.lang.extensions.Snapshot - Snapshots 'versions_stub' match. +Apr-06 17:43:08.358 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test '64dc6960: Test Diamond subworkflow success -- 6 - TXT output - no columns specified -- stub' finished. status: PASSED +Apr-06 17:43:08.359 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test '2a989f7d: Test Diamond subworkflow -- 6 - TXT output - with columns -- stub'. type: com.askimed.nf.test.lang.workflow.WorkflowTest +Apr-06 17:43:20.682 [main] DEBUG com.askimed.nf.test.lang.extensions.Snapshot - Snapshots 'Test Diamond subworkflow -- 6 - TXT output - with columns -- stub' match. +Apr-06 17:43:20.686 [main] DEBUG com.askimed.nf.test.lang.extensions.Snapshot - Snapshots 'versions_stub_columns' match. +Apr-06 17:43:20.687 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test '2a989f7d: Test Diamond subworkflow -- 6 - TXT output - with columns -- stub' finished. status: PASSED +Apr-06 17:43:20.687 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test '589b1f4f: Test Diamond subworkflow -- 0 - BLAST output -- stub'. type: com.askimed.nf.test.lang.workflow.WorkflowTest +Apr-06 17:43:32.780 [main] DEBUG com.askimed.nf.test.lang.extensions.Snapshot - Snapshots 'Test Diamond subworkflow -- 0 - BLAST output -- stub' match. +Apr-06 17:43:32.783 [main] DEBUG com.askimed.nf.test.lang.extensions.Snapshot - Snapshots 'versions_stub_outfmt0' match. +Apr-06 17:43:32.784 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test '589b1f4f: Test Diamond subworkflow -- 0 - BLAST output -- stub' finished. status: PASSED +Apr-06 17:43:32.784 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Testsuite 'Test Subworkflow DIAMOND' finished. snapshot file: true, skipped tests: false, failed tests: false +Apr-06 17:43:32.785 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Running testsuite 'Test Subworkflow DOMAIN_ANNOTATION' from file '/home/trace/projects/proteinannotator/subworkflows/local/domain_annotation/tests/main.nf.test'. +Apr-06 17:43:32.785 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test '4f09c656: faa - domain annotation'. type: com.askimed.nf.test.lang.workflow.WorkflowTest +Apr-06 17:43:44.458 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test '4f09c656: faa - domain annotation' finished. status: FAILED +org.codehaus.groovy.runtime.powerassert.PowerAssertionError: 2 of 2 assertions failed + at com.askimed.nf.test.lang.extensions.GlobalMethods.assertAll(GlobalMethods.java:47) + at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) + at main_nf$_run_closure1$_closure2$_closure7.doCall(main.nf.test:30) + at main_nf$_run_closure1$_closure2$_closure7.doCall(main.nf.test) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:569) + at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343) + at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:328) + at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:280) + at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1009) + at groovy.lang.Closure.call(Closure.java:433) + at groovy.lang.Closure.call(Closure.java:412) + at com.askimed.nf.test.lang.TestCode.execute(TestCode.java:16) + at com.askimed.nf.test.lang.workflow.WorkflowTest.execute(WorkflowTest.java:178) + at com.askimed.nf.test.core.TestExecutionEngine.execute(TestExecutionEngine.java:172) + at com.askimed.nf.test.commands.RunTestsCommand.execute(RunTestsCommand.java:322) + at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:43) + at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:18) + at picocli.CommandLine.executeUserObject(CommandLine.java:1953) + at picocli.CommandLine.access$1300(CommandLine.java:145) + at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2346) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2311) + at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179) + at picocli.CommandLine.execute(CommandLine.java:2078) + at com.askimed.nf.test.App.run(App.java:39) + at com.askimed.nf.test.App.main(App.java:46) +Apr-06 17:43:44.462 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test '5511e671: faa - pfam_db - skip_funfam'. type: com.askimed.nf.test.lang.workflow.WorkflowTest +Apr-06 17:43:55.266 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test '5511e671: faa - pfam_db - skip_funfam' finished. status: FAILED +org.codehaus.groovy.runtime.powerassert.PowerAssertionError: 2 of 2 assertions failed + at com.askimed.nf.test.lang.extensions.GlobalMethods.assertAll(GlobalMethods.java:47) + at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) + at main_nf$_run_closure1$_closure3$_closure13.doCall(main.nf.test:64) + at main_nf$_run_closure1$_closure3$_closure13.doCall(main.nf.test) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:569) + at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343) + at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:328) + at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:280) + at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1009) + at groovy.lang.Closure.call(Closure.java:433) + at groovy.lang.Closure.call(Closure.java:412) + at com.askimed.nf.test.lang.TestCode.execute(TestCode.java:16) + at com.askimed.nf.test.lang.workflow.WorkflowTest.execute(WorkflowTest.java:178) + at com.askimed.nf.test.core.TestExecutionEngine.execute(TestExecutionEngine.java:172) + at com.askimed.nf.test.commands.RunTestsCommand.execute(RunTestsCommand.java:322) + at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:43) + at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:18) + at picocli.CommandLine.executeUserObject(CommandLine.java:1953) + at picocli.CommandLine.access$1300(CommandLine.java:145) + at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2346) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2311) + at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179) + at picocli.CommandLine.execute(CommandLine.java:2078) + at com.askimed.nf.test.App.run(App.java:39) + at com.askimed.nf.test.App.main(App.java:46) +Apr-06 17:43:55.267 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test '89f90a04: faa - nmpfams'. type: com.askimed.nf.test.lang.workflow.WorkflowTest +Apr-06 17:44:05.910 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test '89f90a04: faa - nmpfams' finished. status: FAILED +org.codehaus.groovy.runtime.powerassert.PowerAssertionError: 2 of 2 assertions failed + at com.askimed.nf.test.lang.extensions.GlobalMethods.assertAll(GlobalMethods.java:47) + at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) + at main_nf$_run_closure1$_closure4$_closure19.doCall(main.nf.test:97) + at main_nf$_run_closure1$_closure4$_closure19.doCall(main.nf.test) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:569) + at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343) + at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:328) + at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:280) + at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1009) + at groovy.lang.Closure.call(Closure.java:433) + at groovy.lang.Closure.call(Closure.java:412) + at com.askimed.nf.test.lang.TestCode.execute(TestCode.java:16) + at com.askimed.nf.test.lang.workflow.WorkflowTest.execute(WorkflowTest.java:178) + at com.askimed.nf.test.core.TestExecutionEngine.execute(TestExecutionEngine.java:172) + at com.askimed.nf.test.commands.RunTestsCommand.execute(RunTestsCommand.java:322) + at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:43) + at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:18) + at picocli.CommandLine.executeUserObject(CommandLine.java:1953) + at picocli.CommandLine.access$1300(CommandLine.java:145) + at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2346) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2311) + at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179) + at picocli.CommandLine.execute(CommandLine.java:2078) + at com.askimed.nf.test.App.run(App.java:39) + at com.askimed.nf.test.App.main(App.java:46) +Apr-06 17:44:05.912 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test 'cfa44dbb: faa - domain annotation - stub'. type: com.askimed.nf.test.lang.workflow.WorkflowTest +Apr-06 17:44:17.571 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Load snapshots from file '/home/trace/projects/proteinannotator/subworkflows/local/domain_annotation/tests/main.nf.test.snap' +Apr-06 17:44:17.578 [main] DEBUG com.askimed.nf.test.lang.extensions.Snapshot - Snapshots 'faa - domain annotation - stub' do not match. Update snapshots flag set. +Apr-06 17:44:17.579 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Updated snapshot 'faa - domain annotation - stub' +Apr-06 17:44:17.589 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Wrote snapshots to file '/home/trace/projects/proteinannotator/subworkflows/local/domain_annotation/tests/main.nf.test.snap' +Apr-06 17:44:17.591 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test 'cfa44dbb: faa - domain annotation - stub' finished. status: FAILED +org.codehaus.groovy.runtime.powerassert.PowerAssertionError: 1 of 2 assertions failed + at com.askimed.nf.test.lang.extensions.GlobalMethods.assertAll(GlobalMethods.java:47) + at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) + at main_nf$_run_closure1$_closure5$_closure25.doCall(main.nf.test:132) + at main_nf$_run_closure1$_closure5$_closure25.doCall(main.nf.test) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:569) + at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343) + at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:328) + at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:280) + at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1009) + at groovy.lang.Closure.call(Closure.java:433) + at groovy.lang.Closure.call(Closure.java:412) + at com.askimed.nf.test.lang.TestCode.execute(TestCode.java:16) + at com.askimed.nf.test.lang.workflow.WorkflowTest.execute(WorkflowTest.java:178) + at com.askimed.nf.test.core.TestExecutionEngine.execute(TestExecutionEngine.java:172) + at com.askimed.nf.test.commands.RunTestsCommand.execute(RunTestsCommand.java:322) + at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:43) + at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:18) + at picocli.CommandLine.executeUserObject(CommandLine.java:1953) + at picocli.CommandLine.access$1300(CommandLine.java:145) + at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2346) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2311) + at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179) + at picocli.CommandLine.execute(CommandLine.java:2078) + at com.askimed.nf.test.App.run(App.java:39) + at com.askimed.nf.test.App.main(App.java:46) +Apr-06 17:44:17.592 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Testsuite 'Test Subworkflow DOMAIN_ANNOTATION' finished. snapshot file: true, skipped tests: false, failed tests: true +Apr-06 17:44:17.592 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Running testsuite 'Test Subworkflow FUNCTIONAL_ANNOTATION' from file '/home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/tests/main.nf.test'. +Apr-06 17:44:17.593 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test 'c3e153a5: Test FUNCTIONAL_ANNOTATION Diamond execution subworkflow success'. type: com.askimed.nf.test.lang.workflow.WorkflowTest +Apr-06 17:44:46.462 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Load snapshots from file '/home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/tests/main.nf.test.snap' +Apr-06 17:44:46.474 [main] DEBUG com.askimed.nf.test.lang.extensions.Snapshot - Snapshots 'Test FUNCTIONAL_ANNOTATION Diamond execution subworkflow success' do not match. Update snapshots flag set. +Apr-06 17:44:46.474 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Updated snapshot 'Test FUNCTIONAL_ANNOTATION Diamond execution subworkflow success' +Apr-06 17:44:46.477 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Wrote snapshots to file '/home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/tests/main.nf.test.snap' +Apr-06 17:44:46.478 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test 'c3e153a5: Test FUNCTIONAL_ANNOTATION Diamond execution subworkflow success' finished. status: PASSED +Apr-06 17:44:46.478 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test '45132abc: Test FUNCTIONAL_ANNOTATION Diamond execution subworkflow success - stub'. type: com.askimed.nf.test.lang.workflow.WorkflowTest +Apr-06 17:45:00.005 [main] DEBUG com.askimed.nf.test.lang.extensions.Snapshot - Snapshots 'Test FUNCTIONAL_ANNOTATION Diamond execution subworkflow success - stub' do not match. Update snapshots flag set. +Apr-06 17:45:00.005 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Updated snapshot 'Test FUNCTIONAL_ANNOTATION Diamond execution subworkflow success - stub' +Apr-06 17:45:00.009 [main] DEBUG com.askimed.nf.test.lang.extensions.SnapshotFile - Wrote snapshots to file '/home/trace/projects/proteinannotator/subworkflows/local/functional_annotation/tests/main.nf.test.snap' +Apr-06 17:45:00.009 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test '45132abc: Test FUNCTIONAL_ANNOTATION Diamond execution subworkflow success - stub' finished. status: PASSED +Apr-06 17:45:00.010 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test '4dcdc77b: l_asparaginase - faa - functional annotation'. type: com.askimed.nf.test.lang.workflow.WorkflowTest +Apr-06 18:12:15.496 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test '4dcdc77b: l_asparaginase - faa - functional annotation' finished. status: FAILED +org.codehaus.groovy.runtime.powerassert.PowerAssertionError: 2 of 2 assertions failed + at com.askimed.nf.test.lang.extensions.GlobalMethods.assertAll(GlobalMethods.java:47) + at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) + at main_nf$_run_closure1$_closure4$_closure19.doCall(main.nf.test:93) + at main_nf$_run_closure1$_closure4$_closure19.doCall(main.nf.test) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:569) + at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343) + at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:328) + at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:280) + at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1009) + at groovy.lang.Closure.call(Closure.java:433) + at groovy.lang.Closure.call(Closure.java:412) + at com.askimed.nf.test.lang.TestCode.execute(TestCode.java:16) + at com.askimed.nf.test.lang.workflow.WorkflowTest.execute(WorkflowTest.java:178) + at com.askimed.nf.test.core.TestExecutionEngine.execute(TestExecutionEngine.java:172) + at com.askimed.nf.test.commands.RunTestsCommand.execute(RunTestsCommand.java:322) + at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:43) + at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:18) + at picocli.CommandLine.executeUserObject(CommandLine.java:1953) + at picocli.CommandLine.access$1300(CommandLine.java:145) + at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2346) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2311) + at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179) + at picocli.CommandLine.execute(CommandLine.java:2078) + at com.askimed.nf.test.App.run(App.java:39) + at com.askimed.nf.test.App.main(App.java:46) +Apr-06 18:12:15.500 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Run test '810a2a59: faa - functional annotation - stub'. type: com.askimed.nf.test.lang.workflow.WorkflowTest +Apr-06 18:12:43.528 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Test '810a2a59: faa - functional annotation - stub' finished. status: FAILED +org.codehaus.groovy.runtime.powerassert.PowerAssertionError: assert workflow.success + | | + workflow false + at org.codehaus.groovy.runtime.InvokerHelper.createAssertError(InvokerHelper.java:414) + at main_nf$_run_closure1$_closure5$_closure25.doCall(main.nf.test:120) + at main_nf$_run_closure1$_closure5$_closure25.doCall(main.nf.test) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:569) + at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:343) + at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:328) + at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:280) + at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1009) + at groovy.lang.Closure.call(Closure.java:433) + at groovy.lang.Closure.call(Closure.java:412) + at com.askimed.nf.test.lang.TestCode.execute(TestCode.java:16) + at com.askimed.nf.test.lang.workflow.WorkflowTest.execute(WorkflowTest.java:178) + at com.askimed.nf.test.core.TestExecutionEngine.execute(TestExecutionEngine.java:172) + at com.askimed.nf.test.commands.RunTestsCommand.execute(RunTestsCommand.java:322) + at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:43) + at com.askimed.nf.test.commands.AbstractCommand.call(AbstractCommand.java:18) + at picocli.CommandLine.executeUserObject(CommandLine.java:1953) + at picocli.CommandLine.access$1300(CommandLine.java:145) + at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2346) + at picocli.CommandLine$RunLast.handle(CommandLine.java:2311) + at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179) + at picocli.CommandLine.execute(CommandLine.java:2078) + at com.askimed.nf.test.App.run(App.java:39) + at com.askimed.nf.test.App.main(App.java:46) +Apr-06 18:12:43.529 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Testsuite 'Test Subworkflow FUNCTIONAL_ANNOTATION' finished. snapshot file: true, skipped tests: false, failed tests: true +Apr-06 18:12:43.530 [main] INFO com.askimed.nf.test.core.TestExecutionEngine - Executed 16 tests. 6 tests failed. Done! diff --git a/CITATIONS.md b/CITATIONS.md index da27ba5..9f834de 100644 --- a/CITATIONS.md +++ b/CITATIONS.md @@ -15,7 +15,6 @@ > Buchfink B, Xie C, Huson DH, "Fast and sensitive protein alignment using DIAMOND", Nature Methods 12, 59-60 (2015). doi:10.1038/nmeth.3176 -- [MultiQC](https://pubmed.ncbi.nlm.nih.gov/27312411/) - [SeqFu](https://pubmed.ncbi.nlm.nih.gov/34066939/) > Telatin A, Fariselli P, Birolo G. SeqFu: a suite of utilities for the robust and reproducible manipulation of sequence files. Bioengineering. 2021 May 7;8(5):59. doi: 10.3390/bioengineering8050059. PubMed PMID: 34066939; PubMed Central PMCID: PMC8148589. diff --git a/modules/local/diamondpreparetaxa/tests/main.nf.test.snap b/modules/local/diamondpreparetaxa/tests/main.nf.test.snap index 365bfda..331b9fb 100644 --- a/modules/local/diamondpreparetaxa/tests/main.nf.test.snap +++ b/modules/local/diamondpreparetaxa/tests/main.nf.test.snap @@ -28,30 +28,42 @@ "nextflow": "25.10.4" } }, + "versions_stub": { + "content": [ + [ + "versions.yml:md5,be0d7739d57b5d477b474b357352dab0" + ] + ], + "timestamp": "2026-04-06T13:29:32.794272399", + "meta": { + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } + }, "Test DIAMONDPREPARETAXA creates taxon nodes and names dmp files": { "content": [ { "0": [ - "nodes.dmp:md5,f2e815cd1d59cde3ddecfee69cf5efa2" + "nodes.dmp:md5,7c21b70339999dfd85f459a5ae187cf0" ], "1": [ - "names.dmp:md5,aee11a2c577ee4a82bc3ffd3e73e58cb" + "names.dmp:md5,4eaa51c0606a0660d5a011a90d6affb7" ], "2": [ - "versions.yml:md5,4b9270df8cf486eeb865561ab70f12e7" + "versions.yml:md5,24c6cd07f2d7c7f03cf23a4bba0a1b94" ], "taxonnames": [ - "names.dmp:md5,aee11a2c577ee4a82bc3ffd3e73e58cb" + "names.dmp:md5,4eaa51c0606a0660d5a011a90d6affb7" ], "taxonnodes": [ - "nodes.dmp:md5,f2e815cd1d59cde3ddecfee69cf5efa2" + "nodes.dmp:md5,7c21b70339999dfd85f459a5ae187cf0" ], "versions": [ - "versions.yml:md5,4b9270df8cf486eeb865561ab70f12e7" + "versions.yml:md5,24c6cd07f2d7c7f03cf23a4bba0a1b94" ] } ], - "timestamp": "2026-03-31T10:28:19.285395333", + "timestamp": "2026-04-06T17:41:57.014062501", "meta": { "nf-test": "0.9.4", "nextflow": "25.10.4" @@ -60,10 +72,10 @@ "versions": { "content": [ [ - "versions.yml:md5,be0d7739d57b5d477b474b357352dab0" + "versions.yml:md5,24c6cd07f2d7c7f03cf23a4bba0a1b94" ] ], - "timestamp": "2026-03-31T10:31:14.224256905", + "timestamp": "2026-04-06T13:39:28.606614998", "meta": { "nf-test": "0.9.4", "nextflow": "25.10.4" diff --git a/modules/local/ncbirefseqdownload/tests/main.nf.test.snap b/modules/local/ncbirefseqdownload/tests/main.nf.test.snap index b1587ed..bad3165 100644 --- a/modules/local/ncbirefseqdownload/tests/main.nf.test.snap +++ b/modules/local/ncbirefseqdownload/tests/main.nf.test.snap @@ -14,10 +14,10 @@ "versions": { "content": [ [ - "versions.yml:md5,3799a0b1fc5359fd1bdc1c8f20167431" + "versions.yml:md5,9fabe17275a444ef94e5e2dedcac4f32" ] ], - "timestamp": "2026-03-31T10:44:07.054453638", + "timestamp": "2026-04-06T13:39:51.888472042", "meta": { "nf-test": "0.9.4", "nextflow": "25.10.4" @@ -53,17 +53,17 @@ "refseq_fasta.fa.gz:md5,af9fbb4c725173a9286979c7f1c6a67e" ], "1": [ - "versions.yml:md5,3799a0b1fc5359fd1bdc1c8f20167431" + "versions.yml:md5,9fabe17275a444ef94e5e2dedcac4f32" ], "refseq_fasta": [ "refseq_fasta.fa.gz:md5,af9fbb4c725173a9286979c7f1c6a67e" ], "versions": [ - "versions.yml:md5,3799a0b1fc5359fd1bdc1c8f20167431" + "versions.yml:md5,9fabe17275a444ef94e5e2dedcac4f32" ] } ], - "timestamp": "2026-03-31T10:44:07.029739562", + "timestamp": "2026-04-06T13:39:51.876586473", "meta": { "nf-test": "0.9.4", "nextflow": "25.10.4" diff --git a/subworkflows/local/diamond/main.nf b/subworkflows/local/diamond/main.nf index 4892d46..54a33cd 100644 --- a/subworkflows/local/diamond/main.nf +++ b/subworkflows/local/diamond/main.nf @@ -39,7 +39,7 @@ workflow DIAMOND { ch_fasta, ch_diamond_db, params.diamond_outfmt, - params.diamond_blast_columns, + params.diamond_blast_columns ?: '', ) ch_versions = ch_versions.mix(DIAMOND_BLASTP.out.versions.first()) diff --git a/subworkflows/local/diamond/tests/main.nf.test b/subworkflows/local/diamond/tests/main.nf.test index 7f7a245..662c94b 100644 --- a/subworkflows/local/diamond/tests/main.nf.test +++ b/subworkflows/local/diamond/tests/main.nf.test @@ -32,7 +32,7 @@ nextflow_workflow { then { assertAll( { assert workflow.success }, - { assert workflow.out.tsv.size() > 0 }, + { assert workflow.out.txt.size() > 0 }, { assert snapshot(workflow.out).match() }, { assert snapshot(workflow.out.versions).match("versions") } ) diff --git a/subworkflows/local/diamond/tests/main.nf.test.snap b/subworkflows/local/diamond/tests/main.nf.test.snap index 933bd6f..74a860e 100644 --- a/subworkflows/local/diamond/tests/main.nf.test.snap +++ b/subworkflows/local/diamond/tests/main.nf.test.snap @@ -29,9 +29,9 @@ ], "7": [ - "versions.yml:md5,53b86451bee819efedb455d7bd8bd2a5", - "versions.yml:md5,6c46e8a04372f0048f288e03353de562", + "versions.yml:md5,88882983f101071ff12ab9ad8862946c", "versions.yml:md5,aacdcbf79da04117d0786d0423161380", + "versions.yml:md5,af268b7575a939dcbb762d66f0d34775", "versions.yml:md5,fd77953bb9df9417c91759e312630970" ], "blast": [ @@ -58,9 +58,9 @@ ], "versions": [ - "versions.yml:md5,53b86451bee819efedb455d7bd8bd2a5", - "versions.yml:md5,6c46e8a04372f0048f288e03353de562", + "versions.yml:md5,88882983f101071ff12ab9ad8862946c", "versions.yml:md5,aacdcbf79da04117d0786d0423161380", + "versions.yml:md5,af268b7575a939dcbb762d66f0d34775", "versions.yml:md5,fd77953bb9df9417c91759e312630970" ], "xml": [ @@ -68,7 +68,7 @@ ] } ], - "timestamp": "2026-03-31T11:17:47.028848668", + "timestamp": "2026-04-06T13:40:55.485333522", "meta": { "nf-test": "0.9.4", "nextflow": "25.10.4" @@ -77,13 +77,13 @@ "versions_stub_outfmt0": { "content": [ [ - "versions.yml:md5,53b86451bee819efedb455d7bd8bd2a5", - "versions.yml:md5,6c46e8a04372f0048f288e03353de562", + "versions.yml:md5,88882983f101071ff12ab9ad8862946c", "versions.yml:md5,aacdcbf79da04117d0786d0423161380", + "versions.yml:md5,af268b7575a939dcbb762d66f0d34775", "versions.yml:md5,fd77953bb9df9417c91759e312630970" ] ], - "timestamp": "2026-03-31T11:17:47.051691701", + "timestamp": "2026-04-06T13:40:55.505482355", "meta": { "nf-test": "0.9.4", "nextflow": "25.10.4" @@ -92,13 +92,13 @@ "versions_stub": { "content": [ [ - "versions.yml:md5,0da1ee778f7b0ccbc62dd24020972b77", + "versions.yml:md5,88882983f101071ff12ab9ad8862946c", "versions.yml:md5,aacdcbf79da04117d0786d0423161380", - "versions.yml:md5,b1ae909b07e5f96fd8cd79edd252e646", + "versions.yml:md5,af268b7575a939dcbb762d66f0d34775", "versions.yml:md5,fd77953bb9df9417c91759e312630970" ] ], - "timestamp": "2026-03-31T11:17:28.036343244", + "timestamp": "2026-04-06T13:40:32.043632868", "meta": { "nf-test": "0.9.4", "nextflow": "25.10.4" @@ -107,13 +107,13 @@ "versions_stub_columns": { "content": [ [ - "versions.yml:md5,a785f36de1bd7aa15d01bc930a0bc23a", + "versions.yml:md5,88882983f101071ff12ab9ad8862946c", "versions.yml:md5,aacdcbf79da04117d0786d0423161380", - "versions.yml:md5,ce6903e9ca95d75f4127535cd1c74ed1", + "versions.yml:md5,af268b7575a939dcbb762d66f0d34775", "versions.yml:md5,fd77953bb9df9417c91759e312630970" ] ], - "timestamp": "2026-03-31T11:17:37.687766408", + "timestamp": "2026-04-06T13:40:43.827166513", "meta": { "nf-test": "0.9.4", "nextflow": "25.10.4" @@ -122,10 +122,13 @@ "versions": { "content": [ [ - "versions.yml:md5,18b26dfd7fcc28591d0eaa7af3edc227" + "versions.yml:md5,4b60d5e52704e15aa6a464a001e875a1", + "versions.yml:md5,88882983f101071ff12ab9ad8862946c", + "versions.yml:md5,af268b7575a939dcbb762d66f0d34775", + "versions.yml:md5,be8e9e782750442e8150f83181c2b96d" ] ], - "timestamp": "2026-03-31T11:07:46.657569172", + "timestamp": "2026-04-06T13:40:20.319529478", "meta": { "nf-test": "0.9.4", "nextflow": "25.10.4" @@ -161,9 +164,9 @@ ], "7": [ - "versions.yml:md5,0da1ee778f7b0ccbc62dd24020972b77", + "versions.yml:md5,88882983f101071ff12ab9ad8862946c", "versions.yml:md5,aacdcbf79da04117d0786d0423161380", - "versions.yml:md5,b1ae909b07e5f96fd8cd79edd252e646", + "versions.yml:md5,af268b7575a939dcbb762d66f0d34775", "versions.yml:md5,fd77953bb9df9417c91759e312630970" ], "blast": [ @@ -190,9 +193,9 @@ ] ], "versions": [ - "versions.yml:md5,0da1ee778f7b0ccbc62dd24020972b77", + "versions.yml:md5,88882983f101071ff12ab9ad8862946c", "versions.yml:md5,aacdcbf79da04117d0786d0423161380", - "versions.yml:md5,b1ae909b07e5f96fd8cd79edd252e646", + "versions.yml:md5,af268b7575a939dcbb762d66f0d34775", "versions.yml:md5,fd77953bb9df9417c91759e312630970" ], "xml": [ @@ -200,7 +203,7 @@ ] } ], - "timestamp": "2026-03-31T11:17:28.00381889", + "timestamp": "2026-04-06T13:40:32.025632768", "meta": { "nf-test": "0.9.4", "nextflow": "25.10.4" @@ -366,7 +369,12 @@ ], "2": [ - + [ + { + "id": "test" + }, + "test.txt:md5,f58fdf4044f9e4bf42da7e2c05f581f5" + ] ], "3": [ @@ -381,7 +389,10 @@ ], "7": [ - "versions.yml:md5,18b26dfd7fcc28591d0eaa7af3edc227" + "versions.yml:md5,4b60d5e52704e15aa6a464a001e875a1", + "versions.yml:md5,88882983f101071ff12ab9ad8862946c", + "versions.yml:md5,af268b7575a939dcbb762d66f0d34775", + "versions.yml:md5,be8e9e782750442e8150f83181c2b96d" ], "blast": [ @@ -399,17 +410,25 @@ ], "txt": [ - + [ + { + "id": "test" + }, + "test.txt:md5,f58fdf4044f9e4bf42da7e2c05f581f5" + ] ], "versions": [ - "versions.yml:md5,18b26dfd7fcc28591d0eaa7af3edc227" + "versions.yml:md5,4b60d5e52704e15aa6a464a001e875a1", + "versions.yml:md5,88882983f101071ff12ab9ad8862946c", + "versions.yml:md5,af268b7575a939dcbb762d66f0d34775", + "versions.yml:md5,be8e9e782750442e8150f83181c2b96d" ], "xml": [ ] } ], - "timestamp": "2026-03-31T11:09:29.20457463", + "timestamp": "2026-04-06T13:40:20.297573872", "meta": { "nf-test": "0.9.4", "nextflow": "25.10.4" @@ -445,9 +464,9 @@ ], "7": [ - "versions.yml:md5,a785f36de1bd7aa15d01bc930a0bc23a", + "versions.yml:md5,88882983f101071ff12ab9ad8862946c", "versions.yml:md5,aacdcbf79da04117d0786d0423161380", - "versions.yml:md5,ce6903e9ca95d75f4127535cd1c74ed1", + "versions.yml:md5,af268b7575a939dcbb762d66f0d34775", "versions.yml:md5,fd77953bb9df9417c91759e312630970" ], "blast": [ @@ -474,9 +493,9 @@ ] ], "versions": [ - "versions.yml:md5,a785f36de1bd7aa15d01bc930a0bc23a", + "versions.yml:md5,88882983f101071ff12ab9ad8862946c", "versions.yml:md5,aacdcbf79da04117d0786d0423161380", - "versions.yml:md5,ce6903e9ca95d75f4127535cd1c74ed1", + "versions.yml:md5,af268b7575a939dcbb762d66f0d34775", "versions.yml:md5,fd77953bb9df9417c91759e312630970" ], "xml": [ @@ -484,7 +503,7 @@ ] } ], - "timestamp": "2026-03-31T11:17:37.667622348", + "timestamp": "2026-04-06T13:40:43.806148521", "meta": { "nf-test": "0.9.4", "nextflow": "25.10.4" diff --git a/subworkflows/local/domain_annotation/tests/main.nf.test.snap b/subworkflows/local/domain_annotation/tests/main.nf.test.snap index 80ce69a..4114d5e 100644 --- a/subworkflows/local/domain_annotation/tests/main.nf.test.snap +++ b/subworkflows/local/domain_annotation/tests/main.nf.test.snap @@ -111,72 +111,34 @@ "content": [ { "0": [ - [ - { - "id": "test" - }, - "test.domtbl.gz:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "1": [ - [ - { - "id": "test" - }, - "test.domtbl.gz:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "2": [ - [ - { - "id": "test" - }, - "test.domtbl.gz:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "3": [ - "versions.yml:md5,160d4c5a5001cfb4ff57b94fc52b67d9", - "versions.yml:md5,1b7d208e42364fb87160693faa4e83b9", - "versions.yml:md5,35e41735706132967dd94bb636833a4a", "versions.yml:md5,9045f482d64e7666e62932b0578b665e", - "versions.yml:md5,a74a0c8fcb741e59bc14424f612b8d09", - "versions.yml:md5,f1d8a406d3dcb97a7c15e9c810926de1" + "versions.yml:md5,a74a0c8fcb741e59bc14424f612b8d09" ], "funfam_domains": [ - [ - { - "id": "test" - }, - "test.domtbl.gz:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "nmpfams_domains": [ - [ - { - "id": "test" - }, - "test.domtbl.gz:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "pfam_domains": [ - [ - { - "id": "test" - }, - "test.domtbl.gz:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "versions": [ - "versions.yml:md5,160d4c5a5001cfb4ff57b94fc52b67d9", - "versions.yml:md5,1b7d208e42364fb87160693faa4e83b9", - "versions.yml:md5,35e41735706132967dd94bb636833a4a", "versions.yml:md5,9045f482d64e7666e62932b0578b665e", - "versions.yml:md5,a74a0c8fcb741e59bc14424f612b8d09", - "versions.yml:md5,f1d8a406d3dcb97a7c15e9c810926de1" + "versions.yml:md5,a74a0c8fcb741e59bc14424f612b8d09" ] } ], - "timestamp": "2026-03-13T09:45:07.520815", + "timestamp": "2026-04-06T17:44:17.579152411", "meta": { "nf-test": "0.9.4", "nextflow": "25.10.4" diff --git a/subworkflows/local/functional_annotation/tests/main.nf.test.snap b/subworkflows/local/functional_annotation/tests/main.nf.test.snap index 82fb872..f79baa3 100644 --- a/subworkflows/local/functional_annotation/tests/main.nf.test.snap +++ b/subworkflows/local/functional_annotation/tests/main.nf.test.snap @@ -9,7 +9,7 @@ ], "2": [ - "versions.yml:md5,360c40011f1cc989e92af5ec14d367c8" + "versions.yml:md5,a7c2e489f7420594e92efbbc61cb22f7" ], "diamond_tsv": [ @@ -18,11 +18,11 @@ ], "versions": [ - "versions.yml:md5,360c40011f1cc989e92af5ec14d367c8" + "versions.yml:md5,a7c2e489f7420594e92efbbc61cb22f7" ] } ], - "timestamp": "2026-04-03T15:44:57.103678793", + "timestamp": "2026-04-06T17:44:46.474415007", "meta": { "nf-test": "0.9.4", "nextflow": "25.10.4" @@ -38,7 +38,7 @@ ], "2": [ - "versions.yml:md5,3679418d0b849be38d10435e4272ea4d" + "versions.yml:md5,0f07f649936a9d30bb0203870dc9c256" ], "diamond_tsv": [ @@ -47,11 +47,11 @@ ], "versions": [ - "versions.yml:md5,3679418d0b849be38d10435e4272ea4d" + "versions.yml:md5,0f07f649936a9d30bb0203870dc9c256" ] } ], - "timestamp": "2026-04-03T15:45:09.695642071", + "timestamp": "2026-04-06T17:45:00.005789225", "meta": { "nf-test": "0.9.4", "nextflow": "25.10.4" From ac1a9c88bb20895d81891f17b984ffaf4a22d3b8 Mon Sep 17 00:00:00 2001 From: tracelail Date: Thu, 9 Apr 2026 10:00:51 -0400 Subject: [PATCH 46/59] updated diamond nf-core modules --- modules.json | 4 +- .../nf-core/diamond/blastp/environment.yml | 2 +- modules/nf-core/diamond/blastp/main.nf | 25 +- modules/nf-core/diamond/blastp/meta.yml | 55 ++-- .../nf-core/diamond/blastp/tests/main.nf.test | 63 +++- .../diamond/blastp/tests/main.nf.test.snap | 291 ++++++++++++++---- .../nf-core/diamond/makedb/environment.yml | 2 +- modules/nf-core/diamond/makedb/main.nf | 17 +- modules/nf-core/diamond/makedb/meta.yml | 41 ++- .../diamond/makedb/tests/main.nf.test.snap | 78 +++-- 10 files changed, 424 insertions(+), 154 deletions(-) diff --git a/modules.json b/modules.json index b0984eb..892a0f5 100644 --- a/modules.json +++ b/modules.json @@ -12,12 +12,12 @@ }, "diamond/blastp": { "branch": "master", - "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", + "git_sha": "422966026b45f2852cbe1a919dadc52082bf62f1", "installed_by": ["modules"] }, "diamond/makedb": { "branch": "master", - "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", + "git_sha": "96595d56273108853c872fb90bbefc675af7911a", "installed_by": ["modules"] }, "hmmer/hmmsearch": { diff --git a/modules/nf-core/diamond/blastp/environment.yml b/modules/nf-core/diamond/blastp/environment.yml index 18ad677..677c14d 100644 --- a/modules/nf-core/diamond/blastp/environment.yml +++ b/modules/nf-core/diamond/blastp/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::diamond=2.1.12 + - bioconda::diamond=2.1.23 diff --git a/modules/nf-core/diamond/blastp/main.nf b/modules/nf-core/diamond/blastp/main.nf index 060638c..2e1b365 100644 --- a/modules/nf-core/diamond/blastp/main.nf +++ b/modules/nf-core/diamond/blastp/main.nf @@ -1,11 +1,11 @@ process DIAMOND_BLASTP { - tag "${meta.id}" + tag "${meta.id}.${meta2.id}" label 'process_high' conda "${moduleDir}/environment.yml" container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container - ? 'https://depot.galaxyproject.org/singularity/diamond:2.1.12--hdb4b4cc_1' - : 'biocontainers/diamond:2.1.12--hdb4b4cc_1'}" + ? 'https://depot.galaxyproject.org/singularity/diamond:2.1.23--hf93d47f_0' + : 'biocontainers/diamond:2.1.23--hf93d47f_0'}" input: tuple val(meta), path(fasta) @@ -21,14 +21,16 @@ process DIAMOND_BLASTP { tuple val(meta), path('*.{sam,sam.gz}'), optional: true, emit: sam tuple val(meta), path('*.{tsv,tsv.gz}'), optional: true, emit: tsv tuple val(meta), path('*.{paf,paf.gz}'), optional: true, emit: paf - path "versions.yml", emit: versions + tuple val("${task.process}"), val('diamond'), eval('diamond --version 2>&1 | tail -n 1 | sed "s/^diamond version //"'), emit: versions_diamond, topic: versions when: task.ext.when == null || task.ext.when script: + meta = meta + [ db: meta2.id ] + def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" + def prefix = task.ext.prefix ?: "${meta.id}.${meta2.id}" def columns = blast_columns ? "${blast_columns}" : '' def out_ext = "" @@ -73,14 +75,12 @@ process DIAMOND_BLASTP { --outfmt ${outfmt} ${columns} \\ ${args} \\ --out ${prefix}.${out_ext} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - diamond: \$(diamond --version 2>&1 | tail -n 1 | sed 's/^diamond version //') - END_VERSIONS """ stub: + meta = meta + [ db: meta2.id ] + + def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" def out_ext = "" @@ -118,10 +118,5 @@ process DIAMOND_BLASTP { """ touch ${prefix}.${out_ext} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - diamond: \$(diamond --version 2>&1 | tail -n 1 | sed 's/^diamond version //') - END_VERSIONS """ } diff --git a/modules/nf-core/diamond/blastp/meta.yml b/modules/nf-core/diamond/blastp/meta.yml index a4ef905..edda8ab 100644 --- a/modules/nf-core/diamond/blastp/meta.yml +++ b/modules/nf-core/diamond/blastp/meta.yml @@ -12,14 +12,15 @@ tools: documentation: https://github.com/bbuchfink/diamond/wiki tool_dev_url: https://github.com/bbuchfink/diamond doi: "10.1038/s41592-021-01101-x" - licence: ["GPL v3.0"] + licence: + - "GPL v3.0" identifier: biotools:diamond input: - - meta: type: map description: | Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] + e.g. [ id:'test' ] - fasta: type: file description: Input fasta file containing query sequences @@ -30,7 +31,7 @@ input: type: map description: | Groovy Map containing db information - e.g. [ id:'test2', single_end:false ] + e.g. [ id:'test2' ] - db: type: file description: File of the indexed DIAMOND database @@ -61,7 +62,7 @@ output: type: map description: | Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] + e.g. [ id:'test', db:'ncbi-refseq' ] - "*.{blast,blast.gz}": type: file description: File containing blastp hits @@ -73,7 +74,7 @@ output: type: map description: | Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] + e.g. [ id:'test', db:'ncbi-refseq' ] - "*.{xml,xml.gz}": type: file description: File containing blastp hits @@ -85,7 +86,7 @@ output: type: map description: | Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] + e.g. [ id:'test', db:'ncbi-refseq' ] - "*.{txt,txt.gz}": type: file description: File containing hits in tabular BLAST format. @@ -97,7 +98,7 @@ output: type: map description: | Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] + e.g. [ id:'test', db:'ncbi-refseq' ] - "*.{daa,daa.gz}": type: file description: File containing hits DAA format @@ -108,22 +109,23 @@ output: type: map description: | Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] + e.g. [ id:'test', db:'ncbi-refseq' ] - "*.{sam,sam.gz}": type: file description: File containing aligned reads in SAM format pattern: "*.{sam,sam.gz}" ontologies: - - edam: http://edamontology.org/format_2573 # SAM + - edam: http://edamontology.org/format_2573 tsv: - - meta: type: map description: | Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] + e.g. [ id:'test', db:'ncbi-refseq' ] - "*.{tsv,tsv.gz}": type: file - description: Tab separated file containing taxonomic classification of hits + description: Tab separated file containing taxonomic classification of + hits pattern: "*.{tsv,tsv.gz}" ontologies: - edam: http://edamontology.org/format_3475 # TSV @@ -132,19 +134,34 @@ output: type: map description: | Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] + e.g. [ id:'test', db:'ncbi-refseq' ] - "*.{paf,paf.gz}": type: file - description: File containing aligned reads in pairwise mapping format format + description: File containing aligned reads in pairwise mapping format + format pattern: "*.{paf,paf.gz}" ontologies: [] + versions_diamond: + - - ${task.process}: + type: string + description: The name of the process + - diamond: + type: string + description: The name of the tool + - diamond --version 2>&1 | tail -n 1 | sed "s/^diamond version //": + type: eval + description: The expression to obtain the version of the tool +topics: versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" - ontologies: - - edam: http://edamontology.org/format_3750 # YAML + - - ${task.process}: + type: string + description: The name of the process + - diamond: + type: string + description: The name of the tool + - diamond --version 2>&1 | tail -n 1 | sed "s/^diamond version //": + type: eval + description: The expression to obtain the version of the tool authors: - "@spficklin" - "@jfy133" diff --git a/modules/nf-core/diamond/blastp/tests/main.nf.test b/modules/nf-core/diamond/blastp/tests/main.nf.test index 9211915..a2f886a 100644 --- a/modules/nf-core/diamond/blastp/tests/main.nf.test +++ b/modules/nf-core/diamond/blastp/tests/main.nf.test @@ -10,11 +10,11 @@ nextflow_process { tag "diamond/blastp" setup { - run("DIAMOND_MAKEDB") { + run("DIAMOND_MAKEDB", alias: "FIRST_DB") { script "../../makedb/main.nf" process { """ - input[0] = [ [id:'test2'], [ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] ] + input[0] = [ [id:'db1'], [ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta.gz', checkIfExists: true) ] ] input[1] = [] input[2] = [] input[3] = [] @@ -28,8 +28,8 @@ nextflow_process { when { process { """ - input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] - input[1] = DIAMOND_MAKEDB.out.db + input[0] = [ [id:'txt'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta.gz', checkIfExists: true) ] + input[1] = FIRST_DB.out.db input[2] = 6 input[3] = 'qseqid qlen' """ @@ -50,8 +50,8 @@ nextflow_process { when { process { """ - input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta.gz', checkIfExists: true) ] - input[1] = DIAMOND_MAKEDB.out.db + input[0] = [ [id:'txt.gz'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta.gz', checkIfExists: true) ] + input[1] = FIRST_DB.out.db input[2] = 6 input[3] = 'qseqid qlen' """ @@ -72,8 +72,8 @@ nextflow_process { when { process { """ - input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] - input[1] = DIAMOND_MAKEDB.out.db + input[0] = [ [id:'daa'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] + input[1] = FIRST_DB.out.db input[2] = 100 input[3] = [] """ @@ -97,8 +97,8 @@ nextflow_process { when { process { """ - input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] - input[1] = DIAMOND_MAKEDB.out.db + input[0] = [ [id:'txt.gz'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] + input[1] = FIRST_DB.out.db input[2] = 6 input[3] = 'qseqid qlen' """ @@ -114,6 +114,45 @@ nextflow_process { } + test("sarscov2 - proteome - double fasta/double db input") { + + when { + run("DIAMOND_MAKEDB", alias: "SECOND_DB") { + script "../../makedb/main.nf" + process { + """ + input[0] = [ [id:'db2'], [ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome_test.faa', checkIfExists: true) ] ] + input[1] = [] + input[2] = [] + input[3] = [] + """ + } + } + + process { + """ + input[0] = channel.of( + [ [id:'fasta1'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta.gz', checkIfExists: true) ], + [ [id:'fasta1'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta.gz', checkIfExists: true) ], + [ [id:'fasta2'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome_test.faa', checkIfExists: true) ], + [ [id:'fasta2'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome_test.faa', checkIfExists: true) ] + ) + input[1] = FIRST_DB.out.db.concat(SECOND_DB.out.db).concat(FIRST_DB.out.db).concat(SECOND_DB.out.db) + input[2] = 6 + input[3] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.toSorted()).match() } + ) + } + + } + test("sarscov2 - proteome - stub") { options "-stub" @@ -121,8 +160,8 @@ nextflow_process { when { process { """ - input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] - input[1] = DIAMOND_MAKEDB.out.db + input[0] = [ [id:'stub'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] + input[1] = FIRST_DB.out.db input[2] = 6 input[3] = 'qseqid qlen' """ diff --git a/modules/nf-core/diamond/blastp/tests/main.nf.test.snap b/modules/nf-core/diamond/blastp/tests/main.nf.test.snap index 36a65df..c559401 100644 --- a/modules/nf-core/diamond/blastp/tests/main.nf.test.snap +++ b/modules/nf-core/diamond/blastp/tests/main.nf.test.snap @@ -11,9 +11,10 @@ "2": [ [ { - "id": "test" + "id": "txt", + "db": "db1" }, - "test.txt:md5,8131b1afd717f3d5f2f2417c5b562e6e" + "txt.db1.txt:md5,8131b1afd717f3d5f2f2417c5b562e6e" ] ], "3": [ @@ -29,7 +30,11 @@ ], "7": [ - "versions.yml:md5,75db7b2f0c2a5129e5a67e014f19a597" + [ + "DIAMOND_BLASTP", + "diamond", + "2.1.23" + ] ], "blast": [ @@ -49,24 +54,29 @@ "txt": [ [ { - "id": "test" + "id": "txt", + "db": "db1" }, - "test.txt:md5,8131b1afd717f3d5f2f2417c5b562e6e" + "txt.db1.txt:md5,8131b1afd717f3d5f2f2417c5b562e6e" ] ], - "versions": [ - "versions.yml:md5,75db7b2f0c2a5129e5a67e014f19a597" + "versions_diamond": [ + [ + "DIAMOND_BLASTP", + "diamond", + "2.1.23" + ] ], "xml": [ ] } ], + "timestamp": "2026-03-10T18:29:43.631582451", "meta": { - "nf-test": "0.9.2", - "nextflow": "25.04.2" - }, - "timestamp": "2025-06-05T10:51:07.898268369" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } }, "txt_gz": { "content": [ @@ -80,9 +90,10 @@ "2": [ [ { - "id": "test" + "id": "txt.gz", + "db": "db1" }, - "test.txt.gz:md5,8131b1afd717f3d5f2f2417c5b562e6e" + "txt.gz.db1.txt.gz:md5,8131b1afd717f3d5f2f2417c5b562e6e" ] ], "3": [ @@ -98,7 +109,11 @@ ], "7": [ - "versions.yml:md5,75db7b2f0c2a5129e5a67e014f19a597" + [ + "DIAMOND_BLASTP", + "diamond", + "2.1.23" + ] ], "blast": [ @@ -118,24 +133,29 @@ "txt": [ [ { - "id": "test" + "id": "txt.gz", + "db": "db1" }, - "test.txt.gz:md5,8131b1afd717f3d5f2f2417c5b562e6e" + "txt.gz.db1.txt.gz:md5,8131b1afd717f3d5f2f2417c5b562e6e" ] ], - "versions": [ - "versions.yml:md5,75db7b2f0c2a5129e5a67e014f19a597" + "versions_diamond": [ + [ + "DIAMOND_BLASTP", + "diamond", + "2.1.23" + ] ], "xml": [ ] } ], + "timestamp": "2026-03-10T18:30:12.968864721", "meta": { - "nf-test": "0.9.2", - "nextflow": "25.04.2" - }, - "timestamp": "2025-06-05T10:51:29.492044556" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } }, "gz_txt": { "content": [ @@ -149,9 +169,10 @@ "2": [ [ { - "id": "test" + "id": "txt.gz", + "db": "db1" }, - "test.txt:md5,8131b1afd717f3d5f2f2417c5b562e6e" + "txt.gz.db1.txt:md5,8131b1afd717f3d5f2f2417c5b562e6e" ] ], "3": [ @@ -167,7 +188,11 @@ ], "7": [ - "versions.yml:md5,75db7b2f0c2a5129e5a67e014f19a597" + [ + "DIAMOND_BLASTP", + "diamond", + "2.1.23" + ] ], "blast": [ @@ -187,36 +212,188 @@ "txt": [ [ { - "id": "test" + "id": "txt.gz", + "db": "db1" }, - "test.txt:md5,8131b1afd717f3d5f2f2417c5b562e6e" + "txt.gz.db1.txt:md5,8131b1afd717f3d5f2f2417c5b562e6e" ] ], - "versions": [ - "versions.yml:md5,75db7b2f0c2a5129e5a67e014f19a597" + "versions_diamond": [ + [ + "DIAMOND_BLASTP", + "diamond", + "2.1.23" + ] ], "xml": [ ] } ], + "timestamp": "2026-03-10T18:29:53.37630928", "meta": { - "nf-test": "0.9.2", - "nextflow": "25.04.2" - }, - "timestamp": "2025-06-05T10:51:14.828789692" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } }, - "daa": { + "sarscov2 - proteome - double fasta/double db input": { "content": [ - [ - "versions.yml:md5,75db7b2f0c2a5129e5a67e014f19a597" - ] + { + "0": [ + + ], + "1": [ + + ], + "2": [ + [ + { + "id": "fasta1", + "db": "db1" + }, + "fasta1.db1.txt:md5,2515cf88590afa32356497e79a51fce9" + ], + [ + { + "id": "fasta1", + "db": "db2" + }, + "fasta1.db2.txt:md5,8b41a8752379f7bd8722258962c598a4" + ], + [ + { + "id": "fasta2", + "db": "db1" + }, + "fasta2.db1.txt:md5,3be947b0e6c69c59491f817b03b1256f" + ], + [ + { + "id": "fasta2", + "db": "db2" + }, + "fasta2.db2.txt:md5,f2461bcecbf4f87cefe952179505aa8f" + ] + ], + "3": [ + + ], + "4": [ + + ], + "5": [ + + ], + "6": [ + + ], + "7": [ + [ + "DIAMOND_BLASTP", + "diamond", + "2.1.23" + ], + [ + "DIAMOND_BLASTP", + "diamond", + "2.1.23" + ], + [ + "DIAMOND_BLASTP", + "diamond", + "2.1.23" + ], + [ + "DIAMOND_BLASTP", + "diamond", + "2.1.23" + ] + ], + "blast": [ + + ], + "daa": [ + + ], + "paf": [ + + ], + "sam": [ + + ], + "tsv": [ + + ], + "txt": [ + [ + { + "id": "fasta1", + "db": "db1" + }, + "fasta1.db1.txt:md5,2515cf88590afa32356497e79a51fce9" + ], + [ + { + "id": "fasta1", + "db": "db2" + }, + "fasta1.db2.txt:md5,8b41a8752379f7bd8722258962c598a4" + ], + [ + { + "id": "fasta2", + "db": "db1" + }, + "fasta2.db1.txt:md5,3be947b0e6c69c59491f817b03b1256f" + ], + [ + { + "id": "fasta2", + "db": "db2" + }, + "fasta2.db2.txt:md5,f2461bcecbf4f87cefe952179505aa8f" + ] + ], + "versions_diamond": [ + [ + "DIAMOND_BLASTP", + "diamond", + "2.1.23" + ], + [ + "DIAMOND_BLASTP", + "diamond", + "2.1.23" + ], + [ + "DIAMOND_BLASTP", + "diamond", + "2.1.23" + ], + [ + "DIAMOND_BLASTP", + "diamond", + "2.1.23" + ] + ], + "xml": [ + + ] + } ], + "timestamp": "2026-03-10T18:30:23.940020081", + "meta": { + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } + }, + "daa": { + "content": null, + "timestamp": "2026-03-10T18:30:03.067997422", "meta": { - "nf-test": "0.9.2", - "nextflow": "25.04.2" - }, - "timestamp": "2025-06-05T10:51:21.955563644" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } }, "stub": { "content": [ @@ -230,9 +407,10 @@ "2": [ [ { - "id": "test" + "id": "stub", + "db": "db1" }, - "test.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + "stub.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "3": [ @@ -248,7 +426,11 @@ ], "7": [ - "versions.yml:md5,75db7b2f0c2a5129e5a67e014f19a597" + [ + "DIAMOND_BLASTP", + "diamond", + "2.1.23" + ] ], "blast": [ @@ -268,23 +450,28 @@ "txt": [ [ { - "id": "test" + "id": "stub", + "db": "db1" }, - "test.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + "stub.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,75db7b2f0c2a5129e5a67e014f19a597" + "versions_diamond": [ + [ + "DIAMOND_BLASTP", + "diamond", + "2.1.23" + ] ], "xml": [ ] } ], + "timestamp": "2026-03-10T18:30:33.408520524", "meta": { - "nf-test": "0.9.2", - "nextflow": "25.04.2" - }, - "timestamp": "2025-06-05T10:51:36.159126833" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } } } \ No newline at end of file diff --git a/modules/nf-core/diamond/makedb/environment.yml b/modules/nf-core/diamond/makedb/environment.yml index 18ad677..0a8bf62 100644 --- a/modules/nf-core/diamond/makedb/environment.yml +++ b/modules/nf-core/diamond/makedb/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::diamond=2.1.12 + - bioconda::diamond=2.1.16 diff --git a/modules/nf-core/diamond/makedb/main.nf b/modules/nf-core/diamond/makedb/main.nf index 773f203..1def3d3 100644 --- a/modules/nf-core/diamond/makedb/main.nf +++ b/modules/nf-core/diamond/makedb/main.nf @@ -4,8 +4,8 @@ process DIAMOND_MAKEDB { conda "${moduleDir}/environment.yml" container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container - ? 'https://depot.galaxyproject.org/singularity/diamond:2.1.12--hdb4b4cc_1' - : 'biocontainers/diamond:2.1.12--hdb4b4cc_1'}" + ? 'https://depot.galaxyproject.org/singularity/diamond:2.1.16--h13889ed_0' + : 'biocontainers/diamond:2.1.16--h13889ed_0'}" input: tuple val(meta), path(fasta) @@ -15,7 +15,7 @@ process DIAMOND_MAKEDB { output: tuple val(meta), path("*.dmnd"), emit: db - path "versions.yml", emit: versions + tuple val("${task.process}"), val('diamond'), eval("diamond --version | sed 's/diamond version //g'"), emit: versions_diamond, topic: versions when: task.ext.when == null || task.ext.when @@ -43,11 +43,6 @@ process DIAMOND_MAKEDB { ${insert_taxonmap} \\ ${insert_taxonnodes} \\ ${insert_taxonnames} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - diamond: \$(diamond --version 2>&1 | tail -n 1 | sed 's/^diamond version //') - END_VERSIONS """ stub: @@ -55,11 +50,7 @@ process DIAMOND_MAKEDB { def prefix = task.ext.prefix ?: "${meta.id}" """ + echo "${args}" touch ${prefix}.dmnd - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - diamond: \$(diamond --version 2>&1 | tail -n 1 | sed 's/^diamond version //') - END_VERSIONS """ } diff --git a/modules/nf-core/diamond/makedb/meta.yml b/modules/nf-core/diamond/makedb/meta.yml index e6ed001..6753ece 100644 --- a/modules/nf-core/diamond/makedb/meta.yml +++ b/modules/nf-core/diamond/makedb/meta.yml @@ -12,7 +12,8 @@ tools: documentation: https://github.com/bbuchfink/diamond/wiki tool_dev_url: https://github.com/bbuchfink/diamond doi: "10.1038/s41592-021-01101-x" - licence: ["GPL v3.0"] + licence: + - "GPL v3.0" identifier: biotools:diamond input: - - meta: @@ -28,19 +29,21 @@ input: - edam: http://edamontology.org/format_1929 # FASTA - taxonmap: type: file - description: Optional mapping file of NCBI protein accession numbers to taxon - ids (gzip compressed), required for taxonomy functionality. + description: Optional mapping file of NCBI protein accession numbers to + taxon ids (gzip compressed), required for taxonomy functionality. pattern: "*.gz" ontologies: - - edam: http://edamontology.org/format_3989 # GZIP format + - edam: http://edamontology.org/format_3989 # GZIP - taxonnodes: type: file - description: Optional NCBI taxonomy nodes.dmp file, required for taxonomy functionality. + description: Optional NCBI taxonomy nodes.dmp file, required for taxonomy + functionality. pattern: "*.dmp" ontologies: [] - taxonnames: type: file - description: Optional NCBI taxonomy names.dmp file, required for taxonomy functionality. + description: Optional NCBI taxonomy names.dmp file, required for taxonomy + functionality. pattern: "*.dmp" ontologies: [] output: @@ -55,13 +58,27 @@ output: description: File of the indexed DIAMOND database pattern: "*.dmnd" ontologies: [] + versions_diamond: + - - ${task.process}: + type: string + description: The name of the process + - diamond: + type: string + description: The name of the tool + - diamond --version | sed 's/diamond version //g': + type: eval + description: The expression to obtain the version of the tool +topics: versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" - ontologies: - - edam: http://edamontology.org/format_3750 # YAML + - - ${task.process}: + type: string + description: The name of the process + - diamond: + type: string + description: The name of the tool + - diamond --version | sed 's/diamond version //g': + type: eval + description: The expression to obtain the version of the tool authors: - "@spficklin" maintainers: diff --git a/modules/nf-core/diamond/makedb/tests/main.nf.test.snap b/modules/nf-core/diamond/makedb/tests/main.nf.test.snap index 45bd741..d5461f5 100644 --- a/modules/nf-core/diamond/makedb/tests/main.nf.test.snap +++ b/modules/nf-core/diamond/makedb/tests/main.nf.test.snap @@ -7,30 +7,38 @@ { "id": "test" }, - "test.dmnd:md5,e5ad6add77deeebf8100e0300f26c7ee" + "test.dmnd:md5,4b710afefbc5b328e9228f55da2bfbc7" ] ], "1": [ - "versions.yml:md5,6b4c2ac7acfe6a547a1020265b50ed4d" + [ + "DIAMOND_MAKEDB", + "diamond", + "2.1.16" + ] ], "db": [ [ { "id": "test" }, - "test.dmnd:md5,e5ad6add77deeebf8100e0300f26c7ee" + "test.dmnd:md5,4b710afefbc5b328e9228f55da2bfbc7" ] ], - "versions": [ - "versions.yml:md5,6b4c2ac7acfe6a547a1020265b50ed4d" + "versions_diamond": [ + [ + "DIAMOND_MAKEDB", + "diamond", + "2.1.16" + ] ] } ], + "timestamp": "2026-03-13T14:37:22.248698371", "meta": { - "nf-test": "0.9.2", - "nextflow": "25.04.2" - }, - "timestamp": "2025-06-05T10:57:28.452557995" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } }, "Should build a DIAMOND db file from a fasta file without taxonomic information": { "content": [ @@ -40,30 +48,38 @@ { "id": "test" }, - "test.dmnd:md5,1b43a1b741e0ad1496123b3cc08907d2" + "test.dmnd:md5,6eba1a0869e630cb9b253523613bc885" ] ], "1": [ - "versions.yml:md5,6b4c2ac7acfe6a547a1020265b50ed4d" + [ + "DIAMOND_MAKEDB", + "diamond", + "2.1.16" + ] ], "db": [ [ { "id": "test" }, - "test.dmnd:md5,1b43a1b741e0ad1496123b3cc08907d2" + "test.dmnd:md5,6eba1a0869e630cb9b253523613bc885" ] ], - "versions": [ - "versions.yml:md5,6b4c2ac7acfe6a547a1020265b50ed4d" + "versions_diamond": [ + [ + "DIAMOND_MAKEDB", + "diamond", + "2.1.16" + ] ] } ], + "timestamp": "2026-03-13T14:37:07.027557575", "meta": { - "nf-test": "0.9.2", - "nextflow": "25.04.2" - }, - "timestamp": "2025-06-05T10:57:04.477788623" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } }, "Should build a DIAMOND db file from a zipped fasta file without taxonomic information": { "content": [ @@ -73,29 +89,37 @@ { "id": "test" }, - "test.dmnd:md5,1b43a1b741e0ad1496123b3cc08907d2" + "test.dmnd:md5,6eba1a0869e630cb9b253523613bc885" ] ], "1": [ - "versions.yml:md5,6b4c2ac7acfe6a547a1020265b50ed4d" + [ + "DIAMOND_MAKEDB", + "diamond", + "2.1.16" + ] ], "db": [ [ { "id": "test" }, - "test.dmnd:md5,1b43a1b741e0ad1496123b3cc08907d2" + "test.dmnd:md5,6eba1a0869e630cb9b253523613bc885" ] ], - "versions": [ - "versions.yml:md5,6b4c2ac7acfe6a547a1020265b50ed4d" + "versions_diamond": [ + [ + "DIAMOND_MAKEDB", + "diamond", + "2.1.16" + ] ] } ], + "timestamp": "2026-03-13T14:37:14.201927064", "meta": { - "nf-test": "0.9.2", - "nextflow": "25.04.2" - }, - "timestamp": "2025-06-05T10:57:16.285437842" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } } } \ No newline at end of file From 9a7dace0c0b47f899c37d6d407d5f3c878d93ab9 Mon Sep 17 00:00:00 2001 From: tracelail Date: Thu, 9 Apr 2026 10:49:34 -0400 Subject: [PATCH 47/59] Diamond modules update had new versioning. Removed old version emit channels from diamond subworkflow main and nf-test assertions. --- .nf-test.log | Bin 28499 -> 4096 bytes subworkflows/local/diamond/main.nf | 2 - subworkflows/local/diamond/tests/main.nf.test | 12 ++-- .../local/diamond/tests/main.nf.test.snap | 52 ++++++++---------- .../tests/main.nf.test.snap | 6 +- 5 files changed, 29 insertions(+), 43 deletions(-) diff --git a/.nf-test.log b/.nf-test.log index 9b33b313eb75a32e86944858a05fa1cffed1c2e8..ec9016ceecbd69cfede2c697ecdf335e7f2a7aa3 100644 GIT binary patch literal 4096 zcmds4-EZ1D6yGy{#d+fe4EZW0Z`lf0y{hOm+U;SQCgV7eHL)YxY0H1V<0R0oK$m-= znlv5|CW?K2U&nS-sQz#a&Mqr`plUs-4PG#NafwB0~l}o{DAV8oiIH^Uc~9 zllQm(?9D+-rs}n=kk;Ytv}~Jzfpxte*u-w)`O@iU#2@<`Fo#3^iYaRVe$5pa3H*_> z((ql{{Ba9|F{wDQzMoXnV4fyonF@}knj5MNy2_%00{PuB#jz`3`;@|xE!^SBduGzg)Bz85ZB zq%@b9nObWU>3LVi-;8msy9CU-;NjtTZ2CC)(lm6txZ@*kb!l+^`dKVSBJ9 z^QN^=ZHsJL=ce5^{iy1mZ?6`y%XW8Bjkam{@2G4V8i2a-=rKY;ECIJo$f;o~0=L!f z2+!!s=n}iI`Nem&HlyRUsh5kl>zx45F5Blvu-$m*i``SVRchPo{;-A4x8%Rpx(|lF z3iv4lk9>$!ukbVo8V_M5ZfPH*`FwJ*N00G|`jsCzo=X?(_$m09;60RU2QZJlcw;5-2+kP3;T>J zMb|x$3gp6GVLF|geUpIVcn88+y6?L1keU^0fENV=_cSXx$OML+x2h7;lA PdfW`%An3gN>pnjL`A9ED literal 28499 zcmeHQ>u=jQ690VtD|kQw=YWLK+qS;BNxB;#O>#|oU0|^YWQj_=l_jqvr|n_?_!~Y% zzi3+)<-;zjerO%VB4;?S-wcQBXqKND9y0sBWBRs(`~3m>bs9|4-_Z5#`#XffY>I>8 z%VbI-oW{5$MTtkV89GC0d`5pl1|DMP&1ij~VZZJ`qx^Y3C23js=vO-8DVk={JR!w- zl7&HXii-L8YnFeBlkBT}c6K()vv`t_Q^ekhvhWMZPa`s(KcAwrv-vCvN^(}D!K`@6 z%HP%qbg}1|bqTyB-%2_;`VYyANtXJ^a9KU^chEFM$(9+;e-_UvijlsM^a?TE6D|=BtmwdkyvnQqe%|5W%>7dB%?_R z+GDvcDoCiHwuT1Pr1pI_Pb1_CT49AsQ1MCn%yg$vt(2Vm^6K5EpOj{B(A-pzRKe@X za#Q2a<9QmEpnO5{BxDXhoKxK|&Z)sx)_GcQ?ax^u#}AiKCAe?-~WGyyf#7+OJn zGzq3z+V-FsW&9Y+A;_KOWESM4488@5kECXV(ZDC^bNl8$Tl7jB@ zEF?vNF0V%)?rtydKVIFBK3+YJei`+ad|t1fp{#0gEwT05Urb3pj)bZzW- z!%89d_%R4^B&ETvzz-s3zNfKA#H1>Y3P;bv((y!u>2$p{Zu;0TrOqGD4b^$USRph~ zLpmtRKz1dX24(ny(IueIeHCLRtw zZO!>iA&MjtR6gT)=KrZUf*FZw4`1_D#R2rgtfVJIuUI%~a@!Gfm~C~;%x|>lM_|d* zN$~>k9Tfl+=KwyKCOAFlp=dH4DD z=5BPU4Z3Qj4y&LGtdXj?Hmd@3^$A3)zBlmE!%H?#A_&erhe4D!#Pb@|%gPs$_t1a2 zY()MHQUSNvf`74qBOQEl6tq=KHk)Y6@)%HZN!M5`IWCD262SXL||Ua;thqV@HE}$I#%K&awp_7Gd3UqR<<9MvImx!{XjJztAM>7vQTd;7!HPUU)G-#PD~YG zzD~*)8DeTzo@%JG1;BM6w}x~zW2ubkKzhMo(X&v6idmxvfau)EA!gkW#Cg>1?89S52ZB+O|f zByJJ=$yF%*`_c6c>|JH~Gc-CyT z-4A)5<R~=oz9Xu^kd-H0lrS7@7HNb@))|jFzx-i2*MX~vih72XmB@Bi41p2}7 zZBR~L316-e%kQ)N8hD3qzGh#Dal*fV_&3@ZQjDmWlC5B02xSl5mn0$2KzsVE7>Lt; zvhzD^GRNNFh%OiF9;;S}k1y8aMEu0wcD*5gU8O+cbx>i{XXP0i&8~Nos#Yp{bDVSZD1DNMj9@C8>%I?4rmz}JjVakBASHib11YPn7! z8(~Rn#3*ub_A54oX&7S7md6m&VdyALs<|=yzGDjs)%?0?@kLOz#~V}N?J8w2lO<6o-Ki%X)BSQ z=WyS$8!zq~hL1sQqJw%2`L94(<|`_6wX{eb)XSm@Zb_`hJ!=Q`o^c2DI;gjVBRi-^ zPrLk0p&r9bdixj)s0aI3LnAPp3hJd(3igT?z@6h8E*_e)$gctJwh`IEISn}HEa2Qw z3Fn5QdbJzQ?Hi_pbGxd09h{@Z+o$VDg$_}=}Y213YcMrLnvLEPEp?P#y)yk|P`k_>2jbx>^ z2_7kXF@K1z16O7*a7T`+?ZC9f7S!(aW#2em`qHH@V!s}?>sa5?ivq%yv73#M~8ap3p1mo8xdAIffYTp`aQw)`h-n9tH}m91m#6k%j~@WbbCQN zfk!v3w*}X|xNWsHSO`$Iyf*^Ai|vHaCZ=l#aE_a`WhmK2m*SiZZ(D<|LeO0(8Eq 0 }, - { assert snapshot(workflow.out).match() }, - { assert snapshot(workflow.out.versions).match("versions") } + { assert snapshot(workflow.out).match() } ) } } @@ -63,8 +62,7 @@ nextflow_workflow { then { assertAll( { assert workflow.success }, - { assert snapshot(workflow.out).match() }, - { assert snapshot(workflow.out.versions).match("versions_stub") } + { assert snapshot(workflow.out).match() } ) } } @@ -93,8 +91,7 @@ nextflow_workflow { then { assertAll( { assert workflow.success }, - { assert snapshot(workflow.out).match() }, - { assert snapshot(workflow.out.versions).match("versions_stub_columns") } + { assert snapshot(workflow.out).match() } ) } } @@ -123,8 +120,7 @@ nextflow_workflow { then { assertAll( { assert workflow.success }, - { assert snapshot(workflow.out).match() }, - { assert snapshot(workflow.out.versions).match("versions_stub_outfmt0") } + { assert snapshot(workflow.out).match() } ) } } diff --git a/subworkflows/local/diamond/tests/main.nf.test.snap b/subworkflows/local/diamond/tests/main.nf.test.snap index 74a860e..b4ae46d 100644 --- a/subworkflows/local/diamond/tests/main.nf.test.snap +++ b/subworkflows/local/diamond/tests/main.nf.test.snap @@ -5,7 +5,8 @@ "0": [ [ { - "id": "test" + "id": "test", + "db": "refseq" }, "test.blast:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -29,15 +30,14 @@ ], "7": [ - "versions.yml:md5,88882983f101071ff12ab9ad8862946c", "versions.yml:md5,aacdcbf79da04117d0786d0423161380", - "versions.yml:md5,af268b7575a939dcbb762d66f0d34775", "versions.yml:md5,fd77953bb9df9417c91759e312630970" ], "blast": [ [ { - "id": "test" + "id": "test", + "db": "refseq" }, "test.blast:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -58,9 +58,7 @@ ], "versions": [ - "versions.yml:md5,88882983f101071ff12ab9ad8862946c", "versions.yml:md5,aacdcbf79da04117d0786d0423161380", - "versions.yml:md5,af268b7575a939dcbb762d66f0d34775", "versions.yml:md5,fd77953bb9df9417c91759e312630970" ], "xml": [ @@ -68,7 +66,7 @@ ] } ], - "timestamp": "2026-04-06T13:40:55.485333522", + "timestamp": "2026-04-09T10:11:32.44382452", "meta": { "nf-test": "0.9.4", "nextflow": "25.10.4" @@ -146,7 +144,8 @@ "2": [ [ { - "id": "test" + "id": "test", + "db": "refseq" }, "test.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -164,9 +163,7 @@ ], "7": [ - "versions.yml:md5,88882983f101071ff12ab9ad8862946c", "versions.yml:md5,aacdcbf79da04117d0786d0423161380", - "versions.yml:md5,af268b7575a939dcbb762d66f0d34775", "versions.yml:md5,fd77953bb9df9417c91759e312630970" ], "blast": [ @@ -187,15 +184,14 @@ "txt": [ [ { - "id": "test" + "id": "test", + "db": "refseq" }, "test.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "versions": [ - "versions.yml:md5,88882983f101071ff12ab9ad8862946c", "versions.yml:md5,aacdcbf79da04117d0786d0423161380", - "versions.yml:md5,af268b7575a939dcbb762d66f0d34775", "versions.yml:md5,fd77953bb9df9417c91759e312630970" ], "xml": [ @@ -203,7 +199,7 @@ ] } ], - "timestamp": "2026-04-06T13:40:32.025632768", + "timestamp": "2026-04-09T10:11:09.260636361", "meta": { "nf-test": "0.9.4", "nextflow": "25.10.4" @@ -371,9 +367,10 @@ "2": [ [ { - "id": "test" + "id": "test", + "db": "refseq" }, - "test.txt:md5,f58fdf4044f9e4bf42da7e2c05f581f5" + "test.refseq.txt:md5,f58fdf4044f9e4bf42da7e2c05f581f5" ] ], "3": [ @@ -390,8 +387,6 @@ ], "7": [ "versions.yml:md5,4b60d5e52704e15aa6a464a001e875a1", - "versions.yml:md5,88882983f101071ff12ab9ad8862946c", - "versions.yml:md5,af268b7575a939dcbb762d66f0d34775", "versions.yml:md5,be8e9e782750442e8150f83181c2b96d" ], "blast": [ @@ -412,15 +407,14 @@ "txt": [ [ { - "id": "test" + "id": "test", + "db": "refseq" }, - "test.txt:md5,f58fdf4044f9e4bf42da7e2c05f581f5" + "test.refseq.txt:md5,f58fdf4044f9e4bf42da7e2c05f581f5" ] ], "versions": [ "versions.yml:md5,4b60d5e52704e15aa6a464a001e875a1", - "versions.yml:md5,88882983f101071ff12ab9ad8862946c", - "versions.yml:md5,af268b7575a939dcbb762d66f0d34775", "versions.yml:md5,be8e9e782750442e8150f83181c2b96d" ], "xml": [ @@ -428,7 +422,7 @@ ] } ], - "timestamp": "2026-04-06T13:40:20.297573872", + "timestamp": "2026-04-09T10:10:56.207273523", "meta": { "nf-test": "0.9.4", "nextflow": "25.10.4" @@ -446,7 +440,8 @@ "2": [ [ { - "id": "test" + "id": "test", + "db": "refseq" }, "test.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -464,9 +459,7 @@ ], "7": [ - "versions.yml:md5,88882983f101071ff12ab9ad8862946c", "versions.yml:md5,aacdcbf79da04117d0786d0423161380", - "versions.yml:md5,af268b7575a939dcbb762d66f0d34775", "versions.yml:md5,fd77953bb9df9417c91759e312630970" ], "blast": [ @@ -487,15 +480,14 @@ "txt": [ [ { - "id": "test" + "id": "test", + "db": "refseq" }, "test.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "versions": [ - "versions.yml:md5,88882983f101071ff12ab9ad8862946c", "versions.yml:md5,aacdcbf79da04117d0786d0423161380", - "versions.yml:md5,af268b7575a939dcbb762d66f0d34775", "versions.yml:md5,fd77953bb9df9417c91759e312630970" ], "xml": [ @@ -503,7 +495,7 @@ ] } ], - "timestamp": "2026-04-06T13:40:43.806148521", + "timestamp": "2026-04-09T10:11:20.950526077", "meta": { "nf-test": "0.9.4", "nextflow": "25.10.4" diff --git a/subworkflows/local/functional_annotation/tests/main.nf.test.snap b/subworkflows/local/functional_annotation/tests/main.nf.test.snap index f79baa3..bd73a0c 100644 --- a/subworkflows/local/functional_annotation/tests/main.nf.test.snap +++ b/subworkflows/local/functional_annotation/tests/main.nf.test.snap @@ -9,7 +9,7 @@ ], "2": [ - "versions.yml:md5,a7c2e489f7420594e92efbbc61cb22f7" + "versions.yml:md5,360c40011f1cc989e92af5ec14d367c8" ], "diamond_tsv": [ @@ -18,11 +18,11 @@ ], "versions": [ - "versions.yml:md5,a7c2e489f7420594e92efbbc61cb22f7" + "versions.yml:md5,360c40011f1cc989e92af5ec14d367c8" ] } ], - "timestamp": "2026-04-06T17:44:46.474415007", + "timestamp": "2026-04-09T10:13:40.576061038", "meta": { "nf-test": "0.9.4", "nextflow": "25.10.4" From 67617ad018104534164f86a2894fb3cafd0f8175 Mon Sep 17 00:00:00 2001 From: tracelail Date: Thu, 9 Apr 2026 11:12:16 -0400 Subject: [PATCH 48/59] updated resolution conflicts --- .nf-test.log | Bin 4096 -> 1092 bytes CHANGELOG.md | 1 + ro-crate-metadata.json | 2 +- .../domain_annotation/tests/main.nf.test.snap | 61 +++++++++++++++--- 4 files changed, 55 insertions(+), 9 deletions(-) diff --git a/.nf-test.log b/.nf-test.log index ec9016ceecbd69cfede2c697ecdf335e7f2a7aa3..45c66de0476886b1d4a2e6d4244688dedf2a0152 100644 GIT binary patch delta 280 zcmZorIKm<9SWu*EV5wkeXaz*Z#(Jiv29rNBDos{kWSeL$#tj!XH-ZbdsIsNx=O$+6 zP26mzq@$p#TauWrqflH@niR{0YMhCliG?Lpp9a({pqQm0Sd5EBdh!IuFsQhxo~bd& zj>%Gn78VM{smW+&f#fF#vM5jfz`;6Mf=Oxe3nrM6ASu(yj@;^C@f2ovsQV^obIOUL kyUA3~(hTB7E*3=*1BH^*;*w&8l6-~Kiqz!Nl2kn|0Lr^cqr`plUs-4PG#NafwB0~l}o{DAV8oiIH^Uc~9 zllQm(?9D+-rs}n=kk;Ytv}~Jzfpxte*u-w)`O@iU#2@<`Fo#3^iYaRVe$5pa3H*_> z((ql{{Ba9|F{wDQzMoXnV4fyonF@}knj5MNy2_%00{PuB#jz`3`;@|xE!^SBduGzg)Bz85ZB zq%@b9nObWU>3LVi-;8msy9CU-;NjtTZ2CC)(lm6txZ@*kb!l+^`dKVSBJ9 z^QN^=ZHsJL=ce5^{iy1mZ?6`y%XW8Bjkam{@2G4V8i2a-=rKY;ECIJo$f;o~0=L!f z2+!!s=n}iI`Nem&HlyRUsh5kl>zx45F5Blvu-$m*i``SVRchPo{;-A4x8%Rpx(|lF z3iv4lk9>$!ukbVo8V_M5ZfPH*`FwJ*N00G|`jsCzo=X?(_$m09;60RU2QZJlcw;5-2+kP3;T>J zMb|x$3gp6GVLF|geUpIVcn88+y6?L1keU^0fENV=_cSXx$OML+x2h7;lA PdfW`%An3gN>pnjL`A9ED diff --git a/CHANGELOG.md b/CHANGELOG.md index e0db4dd..e478d02 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [[PR #42](https://github.com/nf-core/proteinannotator/pull/42)] Updated to `nf-test` on GitHub Actions and in the `PULL_REQUEST_TEMPLATE.md` - [[PR #13](https://github.com/nf-core/proteinannotator/pull/13)] Add nf-core seqkit/stats module - [[PR #9](https://github.com/nf-core/proteinannotator/pull/9)] Add [InterProScan](https://interproscan-docs.readthedocs.io/) module +- [#90](https://github.com/nf-core/proteinannotator/pull/90) - Added the option to download and use the latest `metagRoot` HMM library (or use path to an existing one) for domain annotation. (by @angelphanth) - [#87](https://github.com/nf-core/proteinannotator/pull/87) - Added the option to download and use the latest `NMPFams` HMM library (or use path to an existing one) for domain annotation. (by @npechl) - [#85](https://github.com/nf-core/proteinannotator/pull/85) - Added zenodo doi in `nextflow.config`. (by @vagkaratzas) diff --git a/ro-crate-metadata.json b/ro-crate-metadata.json index 64d5b21..5028582 100644 --- a/ro-crate-metadata.json +++ b/ro-crate-metadata.json @@ -23,7 +23,7 @@ "@type": "Dataset", "creativeWorkStatus": "InProgress", "datePublished": "2026-02-09T13:54:13+00:00", - "description": "

\n \n \n \"nf-core/proteinannotator\"\n \n

\n\n[![Open in GitHub Codespaces](https://img.shields.io/badge/Open_In_GitHub_Codespaces-black?labelColor=grey&logo=github)](https://github.com/codespaces/new/nf-core/proteinannotator)\n[![GitHub Actions CI Status](https://github.com/nf-core/proteinannotator/actions/workflows/nf-test.yml/badge.svg)](https://github.com/nf-core/proteinannotator/actions/workflows/nf-test.yml)\n[![GitHub Actions Linting Status](https://github.com/nf-core/proteinannotator/actions/workflows/linting.yml/badge.svg)](https://github.com/nf-core/proteinannotator/actions/workflows/linting.yml)[![AWS CI](https://img.shields.io/badge/CI%20tests-full%20size-FF9900?labelColor=000000&logo=Amazon%20AWS)](https://nf-co.re/proteinannotator/results)[![Cite with Zenodo](http://img.shields.io/badge/DOI-10.5281/zenodo.18547735-1073c8?labelColor=000000)](https://doi.org/10.5281/zenodo.18547735)\n[![nf-test](https://img.shields.io/badge/unit_tests-nf--test-337ab7.svg)](https://www.nf-test.com)\n\n[![Nextflow](https://img.shields.io/badge/version-%E2%89%A525.10.0-green?style=flat&logo=nextflow&logoColor=white&color=%230DC09D&link=https%3A%2F%2Fnextflow.io)](https://www.nextflow.io/)\n[![nf-core template version](https://img.shields.io/badge/nf--core_template-3.5.2-green?style=flat&logo=nfcore&logoColor=white&color=%2324B064&link=https%3A%2F%2Fnf-co.re)](https://github.com/nf-core/tools/releases/tag/3.5.2)\n[![run with conda](http://img.shields.io/badge/run%20with-conda-3EB049?labelColor=000000&logo=anaconda)](https://docs.conda.io/en/latest/)\n[![run with docker](https://img.shields.io/badge/run%20with-docker-0db7ed?labelColor=000000&logo=docker)](https://www.docker.com/)\n[![run with singularity](https://img.shields.io/badge/run%20with-singularity-1d355c.svg?labelColor=000000)](https://sylabs.io/docs/)\n[![Launch on Seqera Platform](https://img.shields.io/badge/Launch%20%F0%9F%9A%80-Seqera%20Platform-%234256e7)](https://cloud.seqera.io/launch?pipeline=https://github.com/nf-core/proteinannotator)\n\n[![Get help on Slack](http://img.shields.io/badge/slack-nf--core%20%23proteinannotator-4A154B?labelColor=000000&logo=slack)](https://nfcore.slack.com/channels/proteinannotator)[![Follow on Bluesky](https://img.shields.io/badge/bluesky-%40nf__core-1185fe?labelColor=000000&logo=bluesky)](https://bsky.app/profile/nf-co.re)[![Follow on Mastodon](https://img.shields.io/badge/mastodon-nf__core-6364ff?labelColor=FFFFFF&logo=mastodon)](https://mstdn.science/@nf_core)[![Watch on YouTube](http://img.shields.io/badge/youtube-nf--core-FF0000?labelColor=000000&logo=youtube)](https://www.youtube.com/c/nf-core)\n\n## Introduction\n\n**nf-core/proteinannotator** is a bioinformatics pipeline that computes statistics for protein FASTA inputs and produces protein annotations based on predicted sequence features, including conserved domains, functions, and secondary structure.\n\n1. Run ([`seqkit stats`](https://bioinf.shenwei.me/seqkit/usage/#stats)) to summarize input protein fasta files\n2. Functional Annotation:\n 1. ([`InterProScan`](https://interproscan-docs.readthedocs.io/en/v5/)) a software tool used to analyze protein sequences by scanning them against the signatures of protein families, domains, and sites in the [InterPro](https://www.ebi.ac.uk/interpro/) database, helping to identify their functional characteristics.\n 2. ([`DIAMOND`](https://github.com/bbuchfink/diamond)) tool used for sensitive protein sequence alignment, comparing to a reference database created from combined protein fastas and taxonic information (taxon names, nodes, and map).\n3. Present QC for raw reads ([`MultiQC`](http://multiqc.info/))\n\n\n

\n

\n \n \n \"nf-core/proteinannotator\"\n \n

\n\n### Check quality and pre-process\n\nGenerate input amino acid sequence statistics with ([`SeqFu`](https://github.com/telatin/seqfu2/)) and pre-process them (i.e., gap removal, convert to upper case, validate, filter by length, replace special characters such as `/`, and remove duplicate sequences) with ([`SeqKit`](https://github.com/shenwei356/seqkit/))\n\n### Annotate sequences\n\n1. Conserved domain annotation with ([`hmmer`](https://github.com/EddyRivasLab/hmmer/)) against databases\n such as [Pfam](https://ftp.ebi.ac.uk/pub/databases/Pfam/), [FunFam](https://download.cathdb.info/cath/releases/all-releases/), and [NMPFams](https://pavlopoulos-lab.org/envofams/databases/hmmer/)\n2. Functional annotation:\n - ([`InterProScan`](https://interproscan-docs.readthedocs.io/en/v5/)) a software tool used to analyze protein sequences by scanning them against the signatures of protein families, domains, and sites in the [InterPro](https://www.ebi.ac.uk/interpro/) database, helping to identify their functional characteristics.\n3. Predict secondary structure compositional features such as \u03b1-helices, \u03b2-strands and coils with ([`s4pred`](https://github.com/psipred/s4pred))\n4. Present QC stats for input sequences before and after initial pre-processing with ([`MultiQC`](http://multiqc.info/))\n\n## Usage\n\n> [!NOTE]\n> If you are new to Nextflow and nf-core, please refer to [this page](https://nf-co.re/docs/usage/installation) on how to set-up Nextflow. Make sure to [test your setup](https://nf-co.re/docs/usage/introduction#how-to-run-a-pipeline) with `-profile test` before running the workflow on actual data.\n\nFirst, prepare a samplesheet with your input data that looks as follows:\n\n`samplesheet.csv`:\n\n```csv\nid,fasta\nspecies1,species1_proteins.fasta\nspecies2,species2_proteins.fasta\n```\n\nEach row represents a FASTA file of proteins from a single species.\n\nNow, you can run the pipeline using:\n\n```bash\nnextflow run nf-core/proteinannotator \\\n -profile \\\n --input samplesheet.csv \\\n --outdir \n```\n\n> [!WARNING]\n> Please provide pipeline parameters via the CLI or Nextflow `-params-file` option. Custom config files including those provided by the `-c` Nextflow option can be used to provide any configuration _**except for parameters**_; see [docs](https://nf-co.re/docs/usage/getting_started/configuration#custom-configuration-files).\n\nFor more details and further functionality, please refer to the [usage documentation](https://nf-co.re/proteinannotator/usage) and the [parameter documentation](https://nf-co.re/proteinannotator/parameters).\n\n## Pipeline output\n\nTo see the results of an example test run with a full size dataset refer to the [results](https://nf-co.re/proteinannotator/results) tab on the nf-core website pipeline page.\nFor more details about the output files and reports, please refer to the\n[output documentation](https://nf-co.re/proteinannotator/output).\n\n## Credits\n\nnf-core/proteinannotator was originally written by Olga Botvinnik and Evangelos Karatzas.\n\nWe thank the following people for their extensive assistance in the development of this pipeline:\n\n- [Michael L Heuer](https://github.com/heuermh)\n- [Edmund Miller](https://github.com/edmundmiller)\n- [Eric Wei](https://github.com/eweizy)\n- [Martin Beracochea](https://github.com/mberacochea)\n\n## Contributions and Support\n\nIf you would like to contribute to this pipeline, please see the [contributing guidelines](.github/CONTRIBUTING.md).\n\nFor further information or help, don't hesitate to get in touch on the [Slack `#proteinannotator` channel](https://nfcore.slack.com/channels/proteinannotator) (you can join with [this invite](https://nf-co.re/join/slack)).\n\n## Citations\n\nIf you use nf-core/proteinannotator for your analysis, please cite it using the following doi: [10.5281/zenodo.18547735](https://doi.org/10.5281/zenodo.18547735)\n\nAn extensive list of references for the tools used by the pipeline can be found in the [`CITATIONS.md`](CITATIONS.md) file.\n\nYou can cite the `nf-core` publication as follows:\n\n> **The nf-core framework for community-curated bioinformatics pipelines.**\n>\n> Philip Ewels, Alexander Peltzer, Sven Fillinger, Harshil Patel, Johannes Alneberg, Andreas Wilm, Maxime Ulysse Garcia, Paolo Di Tommaso & Sven Nahnsen.\n>\n> _Nat Biotechnol._ 2020 Feb 13. doi: [10.1038/s41587-020-0439-x](https://dx.doi.org/10.1038/s41587-020-0439-x).\n", + "description": "

\n \n \n \"nf-core/proteinannotator\"\n \n

\n\n[![Open in GitHub Codespaces](https://img.shields.io/badge/Open_In_GitHub_Codespaces-black?labelColor=grey&logo=github)](https://github.com/codespaces/new/nf-core/proteinannotator)\n[![GitHub Actions CI Status](https://github.com/nf-core/proteinannotator/actions/workflows/nf-test.yml/badge.svg)](https://github.com/nf-core/proteinannotator/actions/workflows/nf-test.yml)\n[![GitHub Actions Linting Status](https://github.com/nf-core/proteinannotator/actions/workflows/linting.yml/badge.svg)](https://github.com/nf-core/proteinannotator/actions/workflows/linting.yml)[![AWS CI](https://img.shields.io/badge/CI%20tests-full%20size-FF9900?labelColor=000000&logo=Amazon%20AWS)](https://nf-co.re/proteinannotator/results)[![Cite with Zenodo](http://img.shields.io/badge/DOI-10.5281/zenodo.18547735-1073c8?labelColor=000000)](https://doi.org/10.5281/zenodo.18547735)\n[![nf-test](https://img.shields.io/badge/unit_tests-nf--test-337ab7.svg)](https://www.nf-test.com)\n\n[![Nextflow](https://img.shields.io/badge/version-%E2%89%A525.10.0-green?style=flat&logo=nextflow&logoColor=white&color=%230DC09D&link=https%3A%2F%2Fnextflow.io)](https://www.nextflow.io/)\n[![nf-core template version](https://img.shields.io/badge/nf--core_template-3.5.2-green?style=flat&logo=nfcore&logoColor=white&color=%2324B064&link=https%3A%2F%2Fnf-co.re)](https://github.com/nf-core/tools/releases/tag/3.5.2)\n[![run with conda](http://img.shields.io/badge/run%20with-conda-3EB049?labelColor=000000&logo=anaconda)](https://docs.conda.io/en/latest/)\n[![run with docker](https://img.shields.io/badge/run%20with-docker-0db7ed?labelColor=000000&logo=docker)](https://www.docker.com/)\n[![run with singularity](https://img.shields.io/badge/run%20with-singularity-1d355c.svg?labelColor=000000)](https://sylabs.io/docs/)\n[![Launch on Seqera Platform](https://img.shields.io/badge/Launch%20%F0%9F%9A%80-Seqera%20Platform-%234256e7)](https://cloud.seqera.io/launch?pipeline=https://github.com/nf-core/proteinannotator)\n\n[![Get help on Slack](http://img.shields.io/badge/slack-nf--core%20%23proteinannotator-4A154B?labelColor=000000&logo=slack)](https://nfcore.slack.com/channels/proteinannotator)[![Follow on Bluesky](https://img.shields.io/badge/bluesky-%40nf__core-1185fe?labelColor=000000&logo=bluesky)](https://bsky.app/profile/nf-co.re)[![Follow on Mastodon](https://img.shields.io/badge/mastodon-nf__core-6364ff?labelColor=FFFFFF&logo=mastodon)](https://mstdn.science/@nf_core)[![Watch on YouTube](http://img.shields.io/badge/youtube-nf--core-FF0000?labelColor=000000&logo=youtube)](https://www.youtube.com/c/nf-core)\n\n## Introduction\n\n**nf-core/proteinannotator** is a bioinformatics pipeline that computes statistics for protein FASTA inputs and produces protein annotations based on predicted sequence features, including conserved domains, functions, and secondary structure.\n\n

\n \n \n \"nf-core/proteinannotator\"\n \n

\n\n### Check quality and pre-process\n\nGenerate input amino acid sequence statistics with ([`SeqFu`](https://github.com/telatin/seqfu2/)) and pre-process them (i.e., gap removal, convert to upper case, validate, filter by length, replace special characters such as `/`, and remove duplicate sequences) with ([`SeqKit`](https://github.com/shenwei356/seqkit/))\n\n### Annotate sequences\n\n1. Conserved domain annotation with ([`hmmer`](https://github.com/EddyRivasLab/hmmer/)) against databases\n such as [Pfam](https://ftp.ebi.ac.uk/pub/databases/Pfam/), [FunFam](https://download.cathdb.info/cath/releases/all-releases/), and [NMPFams](https://pavlopoulos-lab.org/envofams/databases/hmmer/)\n2. Functional annotation:\n - ([`InterProScan`](https://interproscan-docs.readthedocs.io/en/v5/)) a software tool used to analyze protein sequences by scanning them against the signatures of protein families, domains, and sites in the [InterPro](https://www.ebi.ac.uk/interpro/) database, helping to identify their functional characteristics.\n3. Predict secondary structure compositional features such as \u03b1-helices, \u03b2-strands and coils with ([`s4pred`](https://github.com/psipred/s4pred))\n4. Present QC stats for input sequences before and after initial pre-processing with ([`MultiQC`](http://multiqc.info/))\n\n## Usage\n\n> [!NOTE]\n> If you are new to Nextflow and nf-core, please refer to [this page](https://nf-co.re/docs/usage/installation) on how to set-up Nextflow. Make sure to [test your setup](https://nf-co.re/docs/usage/introduction#how-to-run-a-pipeline) with `-profile test` before running the workflow on actual data.\n\nFirst, prepare a samplesheet with your input data that looks as follows:\n\n`samplesheet.csv`:\n\n```csv\nid,fasta\nspecies1,species1_proteins.fasta\nspecies2,species2_proteins.fasta\n```\n\nEach row represents a FASTA file of proteins from a single species.\n\nNow, you can run the pipeline using:\n\n```bash\nnextflow run nf-core/proteinannotator \\\n -profile \\\n --input samplesheet.csv \\\n --outdir \n```\n\n> [!WARNING]\n> Please provide pipeline parameters via the CLI or Nextflow `-params-file` option. Custom config files including those provided by the `-c` Nextflow option can be used to provide any configuration _**except for parameters**_; see [docs](https://nf-co.re/docs/usage/getting_started/configuration#custom-configuration-files).\n\nFor more details and further functionality, please refer to the [usage documentation](https://nf-co.re/proteinannotator/usage) and the [parameter documentation](https://nf-co.re/proteinannotator/parameters).\n\n## Pipeline output\n\nTo see the results of an example test run with a full size dataset refer to the [results](https://nf-co.re/proteinannotator/results) tab on the nf-core website pipeline page.\nFor more details about the output files and reports, please refer to the\n[output documentation](https://nf-co.re/proteinannotator/output).\n\n## Credits\n\nnf-core/proteinannotator was originally written by Olga Botvinnik and Evangelos Karatzas.\n\nWe thank the following people for their extensive assistance in the development of this pipeline:\n\n- [Michael L Heuer](https://github.com/heuermh)\n- [Edmund Miller](https://github.com/edmundmiller)\n- [Eric Wei](https://github.com/eweizy)\n- [Martin Beracochea](https://github.com/mberacochea)\n\n## Contributions and Support\n\nIf you would like to contribute to this pipeline, please see the [contributing guidelines](.github/CONTRIBUTING.md).\n\nFor further information or help, don't hesitate to get in touch on the [Slack `#proteinannotator` channel](https://nfcore.slack.com/channels/proteinannotator) (you can join with [this invite](https://nf-co.re/join/slack)).\n\n## Citations\n\nIf you use nf-core/proteinannotator for your analysis, please cite it using the following doi: [10.5281/zenodo.18547735](https://doi.org/10.5281/zenodo.18547735)\n\nAn extensive list of references for the tools used by the pipeline can be found in the [`CITATIONS.md`](CITATIONS.md) file.\n\nYou can cite the `nf-core` publication as follows:\n\n> **The nf-core framework for community-curated bioinformatics pipelines.**\n>\n> Philip Ewels, Alexander Peltzer, Sven Fillinger, Harshil Patel, Johannes Alneberg, Andreas Wilm, Maxime Ulysse Garcia, Paolo Di Tommaso & Sven Nahnsen.\n>\n> _Nat Biotechnol._ 2020 Feb 13. doi: [10.1038/s41587-020-0439-x](https://dx.doi.org/10.1038/s41587-020-0439-x).\n", "hasPart": [ { "@id": "main.nf" diff --git a/subworkflows/local/domain_annotation/tests/main.nf.test.snap b/subworkflows/local/domain_annotation/tests/main.nf.test.snap index 4114d5e..f98a966 100644 --- a/subworkflows/local/domain_annotation/tests/main.nf.test.snap +++ b/subworkflows/local/domain_annotation/tests/main.nf.test.snap @@ -1,4 +1,35 @@ { + "faa - metagroot": { + "content": [ + [ + "# --- full sequence --- -------------- this domain ------------- hmm coord ali coord env coord", + "# target name accession tlen query name accession qlen E-value score bias # of c-Evalue i-Evalue score bias from to from to from to acc description of target", + "#------------------- ---------- ----- -------------------- ---------- ----- --------- ------ ----- --- --- --------- --------- ------ ----- ----- ----- ----- ----- ----- ----- ---- ---------------------", + "T1024 - 408 F101326 - 425 9.3e-13 34.9 26.2 1 1 1.8e-12 3.6e-12 33.0 26.2 13 351 18 340 12 407 0.74 LmrP, , 408 residues|", + "T1024 - 408 F226054 - 421 1.3e-13 37.4 26.4 1 1 8.6e-14 1.7e-13 37.0 26.4 2 404 2 404 1 408 0.73 LmrP, , 408 residues|", + "T1024 - 408 F240027 - 384 8.4e-10 25.0 5.2 1 1 8e-10 1.6e-09 24.1 5.2 26 163 26 160 6 178 0.88 LmrP, , 408 residues|", + "T1024 - 408 F287588 - 413 2e-10 26.9 23.3 1 1 1.6e-10 3.1e-10 26.3 23.3 48 363 42 370 30 406 0.74 LmrP, , 408 residues|", + "T1024 - 408 F294204 - 387 3.8e-06 12.8 25.9 1 1 2.8e-06 5.6e-06 12.3 25.9 16 372 41 406 30 408 0.76 LmrP, , 408 residues|" + ], + [ + { + "DOMAIN_ANNOTATION:HMMSEARCH_METAGROOT": { + "hmmer": 3.4 + } + }, + { + "DOMAIN_ANNOTATION:ARIA2_METAGROOT": { + "aria2": "1.36.0" + } + } + ] + ], + "timestamp": "2026-03-30T17:28:28.71093", + "meta": { + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } + }, "faa - domain annotation": { "content": [ [ @@ -44,7 +75,7 @@ } ] ], - "timestamp": "2026-03-13T14:51:37.636657", + "timestamp": "2026-03-30T17:28:01.729059", "meta": { "nf-test": "0.9.4", "nextflow": "25.10.4" @@ -111,34 +142,48 @@ "content": [ { "0": [ - + ], "1": [ - + ], "2": [ - + ], "3": [ + "versions.yml:md5,160d4c5a5001cfb4ff57b94fc52b67d9", + "versions.yml:md5,1b7d208e42364fb87160693faa4e83b9", + "versions.yml:md5,35e41735706132967dd94bb636833a4a", "versions.yml:md5,9045f482d64e7666e62932b0578b665e", "versions.yml:md5,a74a0c8fcb741e59bc14424f612b8d09" ], "funfam_domains": [ - + + ], + "metagroot_domains": [ + [ + { + "id": "test" + }, + "test.domtbl.gz:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], "nmpfams_domains": [ - + ], "pfam_domains": [ - + ], "versions": [ + "versions.yml:md5,160d4c5a5001cfb4ff57b94fc52b67d9", + "versions.yml:md5,1b7d208e42364fb87160693faa4e83b9", + "versions.yml:md5,35e41735706132967dd94bb636833a4a", "versions.yml:md5,9045f482d64e7666e62932b0578b665e", "versions.yml:md5,a74a0c8fcb741e59bc14424f612b8d09" ] } ], - "timestamp": "2026-04-06T17:44:17.579152411", + "timestamp": "2026-03-13T09:45:07.520815", "meta": { "nf-test": "0.9.4", "nextflow": "25.10.4" From 02f1e388d600b95ed7fa8084217aaf8bd838ed56 Mon Sep 17 00:00:00 2001 From: tracelail Date: Tue, 18 Aug 2026 19:36:36 -0400 Subject: [PATCH 49/59] Updated versioning to new topic standard and added additional inputs for funtional annotation testing. --- modules/local/diamondpreparetaxa/main.nf | 20 +++---------------- modules/local/ncbirefseqdownload/main.nf | 12 +---------- .../local/functional_annotation/main.nf | 2 -- .../functional_annotation/tests/main.nf.test | 10 ++++++++++ 4 files changed, 14 insertions(+), 30 deletions(-) diff --git a/modules/local/diamondpreparetaxa/main.nf b/modules/local/diamondpreparetaxa/main.nf index 6a2153e..57f9981 100644 --- a/modules/local/diamondpreparetaxa/main.nf +++ b/modules/local/diamondpreparetaxa/main.nf @@ -14,13 +14,9 @@ process DIAMONDPREPARETAXA { val taxondmp_zip // NCBI taxonomy dump URL; default: ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz output: - path "taxa/nodes.dmp" , emit: taxonnodes - path "taxa/names.dmp" , emit: taxonnames - path "versions.yml" , emit: versions - // updated versioning method to be implemented - // tuple val("${task.process}"), val('wget'), - // eval('wget --version | head -n1 | sed "s/GNU Wget //" | sed "s/ .*//"'), - // emit: versions, topic: versions + path "taxa/nodes.dmp", emit: taxonnodes + path "taxa/names.dmp", emit: taxonnames + tuple val("${task.process}"), val('wget'), eval('wget --version | head -n1 | sed "s/GNU Wget //" | sed "s/ .*//"'), topic: versions, emit: versions_wget when: task.ext.when == null || task.ext.when @@ -30,11 +26,6 @@ process DIAMONDPREPARETAXA { mkdir -p taxa/ wget -q ${taxondmp_zip} tar -xzf taxdump.tar.gz -C taxa/ - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - wget: \$(wget --version | head -n1 | sed 's/GNU Wget //' | sed 's/ .*//') - END_VERSIONS """ stub: @@ -42,10 +33,5 @@ process DIAMONDPREPARETAXA { mkdir -p taxa/ touch taxa/nodes.dmp touch taxa/names.dmp - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - wget: "stub" - END_VERSIONS """ } \ No newline at end of file diff --git a/modules/local/ncbirefseqdownload/main.nf b/modules/local/ncbirefseqdownload/main.nf index f6f5207..32a1725 100644 --- a/modules/local/ncbirefseqdownload/main.nf +++ b/modules/local/ncbirefseqdownload/main.nf @@ -12,12 +12,7 @@ process NCBIREFSEQDOWNLOAD { output: path "ncbi_refseq/refseq_fasta.fa.gz", emit: refseq_fasta // reference fasta for diamond/makedb nf-core module - path "versions.yml" , emit: versions - - // updated versioning method to be implemented - // tuple val("${task.process}"), val('rsync'), - // eval('rsync --version | head -n1 | sed \'s/rsync version //\''), - // emit: versions, topic: versions + tuple val("${task.process}"), val('rsync'), eval('rsync --version | head -n1 | sed \'s/rsync version //\''), emit: versions, topic: versions when: task.ext.when == null || task.ext.when @@ -36,11 +31,6 @@ process NCBIREFSEQDOWNLOAD { zcat ncbi_refseq/*/*.faa.gz | gzip -c > ncbi_refseq/refseq_fasta.fa.gz echo "All RefSeq protein FASTAs aggregated into ncbi_refseq/" - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - rsync: \$(rsync --version | head -n1 | sed 's/rsync version //') - END_VERSIONS """ stub: diff --git a/subworkflows/local/functional_annotation/main.nf b/subworkflows/local/functional_annotation/main.nf index e62dff5..895d57e 100644 --- a/subworkflows/local/functional_annotation/main.nf +++ b/subworkflows/local/functional_annotation/main.nf @@ -27,12 +27,10 @@ workflow FUNCTIONAL_ANNOTATION { // // SUBWORKFLOW: Run Diamond // - DIAMOND( ch_fasta ) ch_diamond_tsv = DIAMOND.out.tsv - ch_versions = ch_versions.mix(DIAMOND.out.versions.first()) // // SUBWORKFLOW: Run Interproscan diff --git a/subworkflows/local/functional_annotation/tests/main.nf.test b/subworkflows/local/functional_annotation/tests/main.nf.test index cfa74ad..c2fecbe 100644 --- a/subworkflows/local/functional_annotation/tests/main.nf.test +++ b/subworkflows/local/functional_annotation/tests/main.nf.test @@ -31,6 +31,11 @@ nextflow_workflow { input[1] = true input[2] = [] input[3] = [] + input[4] = true + input[5] = [] + input[6] = [] + input[7] = [] + input[8] = [] """ } } @@ -63,6 +68,11 @@ nextflow_workflow { input[1] = true input[2] = [] input[3] = [] + input[4] = true + input[5] = [] + input[6] = [] + input[7] = [] + input[8] = [] """ } } From afb321ae6d839345fe91b8a19969d5cb1ab0a28b Mon Sep 17 00:00:00 2001 From: tracelail Date: Tue, 18 Aug 2026 21:44:29 -0400 Subject: [PATCH 50/59] Untrack .nf-test.log (already covered by .gitignore) --- .nf-test.log | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 .nf-test.log diff --git a/.nf-test.log b/.nf-test.log deleted file mode 100644 index 45c66de..0000000 --- a/.nf-test.log +++ /dev/null @@ -1,8 +0,0 @@ -Apr-09 11:11:33.550 [main] INFO com.askimed.nf.test.App - nf-test 0.9.4 -Apr-09 11:11:33.572 [main] INFO com.askimed.nf.test.App - Arguments: [test, subworkflows/local/domain_annotation, --profile, test,docker, --update-snapshot, --tag, stub] -Apr-09 11:11:34.489 [main] INFO com.askimed.nf.test.App - Nextflow Version: 25.10.4 -Apr-09 11:11:34.491 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Load config from file /home/trace/projects/proteinannotator/nf-test.config... -Apr-09 11:11:35.532 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Loaded 37 files from directory /home/trace/projects/proteinannotator in 0.188 sec -Apr-09 11:11:35.535 [main] INFO com.askimed.nf.test.lang.dependencies.DependencyResolver - Found 1 files containing tests. -Apr-09 11:11:35.535 [main] DEBUG com.askimed.nf.test.lang.dependencies.DependencyResolver - Found files: [/home/trace/projects/proteinannotator/subworkflows/local/domain_annotation/tests/main.nf.test] -Apr-09 11:11:35.960 [main] INFO com.askimed.nf.test.commands.RunTestsCommand - Found 0 tests to execute. From 04dc134574bd6f1ad7431bd4d9e04814f5485887 Mon Sep 17 00:00:00 2001 From: tracelail Date: Tue, 18 Aug 2026 21:46:20 -0400 Subject: [PATCH 51/59] created test taxdump to reduce CI bloat and changed wget tool to curl for testing local referencing. Tested and udpated snapshot. --- .../local/diamondpreparetaxa/environment.yml | 5 +- modules/local/diamondpreparetaxa/main.nf | 4 +- modules/local/diamondpreparetaxa/meta.yml | 20 ++--- .../diamondpreparetaxa/tests/main.nf.test | 4 +- .../tests/main.nf.test.snap | 72 ++++++++---------- .../tests/mini_taxdump.tar.gz | Bin 0 -> 352 bytes subworkflows/local/diamond/tests/main.nf.test | 2 +- .../functional_annotation/tests/main.nf.test | 2 +- 8 files changed, 48 insertions(+), 61 deletions(-) create mode 100644 modules/local/diamondpreparetaxa/tests/mini_taxdump.tar.gz diff --git a/modules/local/diamondpreparetaxa/environment.yml b/modules/local/diamondpreparetaxa/environment.yml index 32bc330..43094e3 100644 --- a/modules/local/diamondpreparetaxa/environment.yml +++ b/modules/local/diamondpreparetaxa/environment.yml @@ -4,7 +4,4 @@ channels: - conda-forge - bioconda dependencies: - # TODO nf-core: List required Conda package(s). - # Software MUST be pinned to channel (i.e. "bioconda"), version (i.e. "1.10"). - # For Conda, the build (i.e. "h9402c20_2") must be EXCLUDED to support installation on different operating systems. - - "YOUR-TOOL-HERE" + - "conda-forge::curl=8.14.1" diff --git a/modules/local/diamondpreparetaxa/main.nf b/modules/local/diamondpreparetaxa/main.nf index 57f9981..4f4087d 100644 --- a/modules/local/diamondpreparetaxa/main.nf +++ b/modules/local/diamondpreparetaxa/main.nf @@ -16,7 +16,7 @@ process DIAMONDPREPARETAXA { output: path "taxa/nodes.dmp", emit: taxonnodes path "taxa/names.dmp", emit: taxonnames - tuple val("${task.process}"), val('wget'), eval('wget --version | head -n1 | sed "s/GNU Wget //" | sed "s/ .*//"'), topic: versions, emit: versions_wget + tuple val("${task.process}"), val('curl'), eval('curl --version | head -n1 | sed "s/^curl //; s/ .*//"'), topic: versions, emit: versions_curl when: task.ext.when == null || task.ext.when @@ -24,7 +24,7 @@ process DIAMONDPREPARETAXA { script: """ mkdir -p taxa/ - wget -q ${taxondmp_zip} + curl -sL -o taxdump.tar.gz "${taxondmp_zip}" tar -xzf taxdump.tar.gz -C taxa/ """ diff --git a/modules/local/diamondpreparetaxa/meta.yml b/modules/local/diamondpreparetaxa/meta.yml index e7176d2..079c311 100644 --- a/modules/local/diamondpreparetaxa/meta.yml +++ b/modules/local/diamondpreparetaxa/meta.yml @@ -9,12 +9,12 @@ keywords: - database - classification tools: - - "wget": - description: Network downloader that retrieves files from the web - homepage: "https://www.gnu.org/software/wget/" - documentation: "https://www.gnu.org/software/wget/manual/" - tool_dev_url: "https://git.savannah.gnu.org/cgit/wget.git" - licence: ["GPL-3.0-or-later"] + - "curl": + description: Command-line tool and library for transferring data with URLs + homepage: "https://curl.se/" + documentation: "https://curl.se/docs/" + tool_dev_url: "https://github.com/curl/curl" + licence: ["curl"] - "diamond": description: Accelerated BLAST-compatible local sequence aligner homepage: "https://github.com/bbuchfink/diamond" @@ -35,17 +35,17 @@ output: type: file description: NCBI taxonomy nodes file containing taxonomic hierarchy pattern: "nodes.dmp" - + - taxonnames: - "taxa/names.dmp": type: file description: NCBI taxonomy names file containing taxon names pattern: "names.dmp" - - - versions: + + - versions_curl: - "versions.yml": type: file - description: File containing software versions + description: File containing software version (topic channel) pattern: "versions.yml" authors: diff --git a/modules/local/diamondpreparetaxa/tests/main.nf.test b/modules/local/diamondpreparetaxa/tests/main.nf.test index d845a55..bd86069 100644 --- a/modules/local/diamondpreparetaxa/tests/main.nf.test +++ b/modules/local/diamondpreparetaxa/tests/main.nf.test @@ -16,7 +16,7 @@ nextflow_process { when { process { """ - input[0] = 'ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz' + input[0] = "file://${moduleTestDir}/mini_taxdump.tar.gz" """ } } @@ -26,7 +26,6 @@ nextflow_process { assert process.out.taxonnodes.size() == 1 assert process.out.taxonnames.size() == 1 assert snapshot(process.out).match() - assert snapshot(process.out.versions).match("versions") } } @@ -50,7 +49,6 @@ nextflow_process { assert process.out.taxonnodes.size() == 1 assert process.out.taxonnames.size() == 1 assert snapshot(process.out).match() - assert snapshot(process.out.versions).match("versions_stub") } } diff --git a/modules/local/diamondpreparetaxa/tests/main.nf.test.snap b/modules/local/diamondpreparetaxa/tests/main.nf.test.snap index 331b9fb..6f23e53 100644 --- a/modules/local/diamondpreparetaxa/tests/main.nf.test.snap +++ b/modules/local/diamondpreparetaxa/tests/main.nf.test.snap @@ -9,7 +9,11 @@ "names.dmp:md5,d41d8cd98f00b204e9800998ecf8427e" ], "2": [ - "versions.yml:md5,be0d7739d57b5d477b474b357352dab0" + [ + "DIAMONDPREPARETAXA", + "curl", + "8.14.1" + ] ], "taxonnames": [ "names.dmp:md5,d41d8cd98f00b204e9800998ecf8427e" @@ -17,68 +21,56 @@ "taxonnodes": [ "nodes.dmp:md5,d41d8cd98f00b204e9800998ecf8427e" ], - "versions": [ - "versions.yml:md5,be0d7739d57b5d477b474b357352dab0" + "versions_curl": [ + [ + "DIAMONDPREPARETAXA", + "curl", + "8.14.1" + ] ] } ], - "timestamp": "2026-03-31T10:30:49.787632184", + "timestamp": "2026-08-18T21:28:40.378814708", "meta": { - "nf-test": "0.9.4", - "nextflow": "25.10.4" - } - }, - "versions_stub": { - "content": [ - [ - "versions.yml:md5,be0d7739d57b5d477b474b357352dab0" - ] - ], - "timestamp": "2026-04-06T13:29:32.794272399", - "meta": { - "nf-test": "0.9.4", - "nextflow": "25.10.4" + "nf-test": "0.9.5", + "nextflow": "26.04.4" } }, "Test DIAMONDPREPARETAXA creates taxon nodes and names dmp files": { "content": [ { "0": [ - "nodes.dmp:md5,7c21b70339999dfd85f459a5ae187cf0" + "nodes.dmp:md5,5526506044a931be50f09e32fe9ac5ce" ], "1": [ - "names.dmp:md5,4eaa51c0606a0660d5a011a90d6affb7" + "names.dmp:md5,d0b9ab68938991757886bd7515f2de3f" ], "2": [ - "versions.yml:md5,24c6cd07f2d7c7f03cf23a4bba0a1b94" + [ + "DIAMONDPREPARETAXA", + "curl", + "8.14.1" + ] ], "taxonnames": [ - "names.dmp:md5,4eaa51c0606a0660d5a011a90d6affb7" + "names.dmp:md5,d0b9ab68938991757886bd7515f2de3f" ], "taxonnodes": [ - "nodes.dmp:md5,7c21b70339999dfd85f459a5ae187cf0" + "nodes.dmp:md5,5526506044a931be50f09e32fe9ac5ce" ], - "versions": [ - "versions.yml:md5,24c6cd07f2d7c7f03cf23a4bba0a1b94" + "versions_curl": [ + [ + "DIAMONDPREPARETAXA", + "curl", + "8.14.1" + ] ] } ], - "timestamp": "2026-04-06T17:41:57.014062501", - "meta": { - "nf-test": "0.9.4", - "nextflow": "25.10.4" - } - }, - "versions": { - "content": [ - [ - "versions.yml:md5,24c6cd07f2d7c7f03cf23a4bba0a1b94" - ] - ], - "timestamp": "2026-04-06T13:39:28.606614998", + "timestamp": "2026-08-18T21:28:32.161295189", "meta": { - "nf-test": "0.9.4", - "nextflow": "25.10.4" + "nf-test": "0.9.5", + "nextflow": "26.04.4" } } } \ No newline at end of file diff --git a/modules/local/diamondpreparetaxa/tests/mini_taxdump.tar.gz b/modules/local/diamondpreparetaxa/tests/mini_taxdump.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..b5e3fc264758deb05ac7635ae65905575b8a4fbc GIT binary patch literal 352 zcmV-m0iXUKiwFP!000001MQdXYQrEHh4Z(&3a?=JnrPa~35hGRMoYAVLN9)1&HA;l zvViFd=OLn~Cm+5ZHP$uSzc%eQO9zjrqWH=qw>i(1$ViHUNR?cQj1%Rh$QV!fPA7Ig zR2^ek=Un)$-@W!Hg%*cJpR8kDW#3~dUdx#H(7;F1;_xE!{ukApQUV00000000000002MbUp$0yUS?+C;$Mj#<9@= literal 0 HcmV?d00001 diff --git a/subworkflows/local/diamond/tests/main.nf.test b/subworkflows/local/diamond/tests/main.nf.test index f9a7c6b..04a6cf3 100644 --- a/subworkflows/local/diamond/tests/main.nf.test +++ b/subworkflows/local/diamond/tests/main.nf.test @@ -17,7 +17,7 @@ nextflow_workflow { when { params { refseq_release = 'other' - taxondmp_zip = 'ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz' + taxondmp_zip = "file://${moduleDir}/../../../../modules/local/diamondpreparetaxa/tests/mini_taxdump.tar.gz" taxonmap = "${moduleTestDir}/mini_prot.accession2taxid.gz" diamond_outfmt = 6 diamond_blast_columns = '' diff --git a/subworkflows/local/functional_annotation/tests/main.nf.test b/subworkflows/local/functional_annotation/tests/main.nf.test index c2fecbe..4cfcc48 100644 --- a/subworkflows/local/functional_annotation/tests/main.nf.test +++ b/subworkflows/local/functional_annotation/tests/main.nf.test @@ -19,7 +19,7 @@ nextflow_workflow { when { params { refseq_release = 'other' - taxondmp_zip = 'ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz' + taxondmp_zip = "file://${moduleDir}/../../../../modules/local/diamondpreparetaxa/tests/mini_taxdump.tar.gz" taxonmap = "${moduleTestDir}/mini_prot.accession2taxid.gz" diamond_outfmt = 6 diamond_blast_columns = '' From 20784fc84cb47346227ec4a068b56a3ffb8850ff Mon Sep 17 00:00:00 2001 From: tracelail Date: Wed, 19 Aug 2026 18:53:32 -0400 Subject: [PATCH 52/59] updated container and dependencies --- modules/local/ncbirefseqdownload/environment.yml | 2 +- modules/local/ncbirefseqdownload/main.nf | 11 +++-------- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/modules/local/ncbirefseqdownload/environment.yml b/modules/local/ncbirefseqdownload/environment.yml index 4b3c9d3..deb8224 100644 --- a/modules/local/ncbirefseqdownload/environment.yml +++ b/modules/local/ncbirefseqdownload/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - "YOUR-TOOL-HERE" + - "conda-forge::rsync=3.4.4" diff --git a/modules/local/ncbirefseqdownload/main.nf b/modules/local/ncbirefseqdownload/main.nf index 32a1725..13246b5 100644 --- a/modules/local/ncbirefseqdownload/main.nf +++ b/modules/local/ncbirefseqdownload/main.nf @@ -4,15 +4,15 @@ process NCBIREFSEQDOWNLOAD { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/r-stitch:1.7.3--r44h64f727c_0': - 'biocontainers/r-stitch:1.7.3--r44h64f727c_0' }" + 'oras://community.wave.seqera.io/library/rsync:3.4.4--e7cdbdef11f909e3' : + 'community.wave.seqera.io/library/rsync:3.4.4--c47965c3c662c89a' }" input: val(refseq_release) // ncbi refseq release category -- default of 'complete' output: path "ncbi_refseq/refseq_fasta.fa.gz", emit: refseq_fasta // reference fasta for diamond/makedb nf-core module - tuple val("${task.process}"), val('rsync'), eval('rsync --version | head -n1 | sed \'s/rsync version //\''), emit: versions, topic: versions + tuple val("${task.process}"), val('rsync'), eval('rsync --version | head -n1 | sed \'s/rsync version //\''), topic: versions, emit: versions_rsync when: task.ext.when == null || task.ext.when @@ -37,10 +37,5 @@ process NCBIREFSEQDOWNLOAD { """ mkdir -p ncbi_refseq echo "" | gzip > ncbi_refseq/refseq_fasta.fa.gz - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - rsync: "stub" - END_VERSIONS """ } \ No newline at end of file From b4d352d07c9aabbd63bdb1696bb0d516f9b36b35 Mon Sep 17 00:00:00 2001 From: tracelail Date: Wed, 19 Aug 2026 19:57:38 -0400 Subject: [PATCH 53/59] Addressed diamond database channel as a single item queue channel. Added a multi item input channel stub step with updated snapshot. --- subworkflows/local/diamond/main.nf | 25 +-- subworkflows/local/diamond/tests/main.nf.test | 33 +++ .../local/diamond/tests/main.nf.test.snap | 200 +++++++++++++++--- 3 files changed, 210 insertions(+), 48 deletions(-) diff --git a/subworkflows/local/diamond/main.nf b/subworkflows/local/diamond/main.nf index 82e290b..675da90 100644 --- a/subworkflows/local/diamond/main.nf +++ b/subworkflows/local/diamond/main.nf @@ -1,7 +1,7 @@ include { NCBIREFSEQDOWNLOAD } from '../../../modules/local/ncbirefseqdownload/main' include { DIAMONDPREPARETAXA } from '../../../modules/local/diamondpreparetaxa/main' -include { DIAMOND_MAKEDB } from '../../../modules/nf-core/diamond/makedb/main' -include { DIAMOND_BLASTP } from '../../../modules/nf-core/diamond/blastp/main' +include { DIAMOND_MAKEDB } from '../../../modules/nf-core/diamond/makedb/main' +include { DIAMOND_BLASTP } from '../../../modules/nf-core/diamond/blastp/main' workflow DIAMOND { take: @@ -9,30 +9,26 @@ workflow DIAMOND { main: - ch_versions = channel.empty() - // Local modules of Diamond subworkflow NCBIREFSEQDOWNLOAD( params.refseq_release ) ch_diamond_reference_fasta = NCBIREFSEQDOWNLOAD.out.refseq_fasta.map { file -> [ [id: 'refseq'], file ] } - ch_versions = ch_versions.mix(NCBIREFSEQDOWNLOAD.out.versions.first()) DIAMONDPREPARETAXA ( params.taxondmp_zip ) ch_taxonnodes = DIAMONDPREPARETAXA.out.taxonnodes ch_taxonnames = DIAMONDPREPARETAXA.out.taxonnames - ch_versions = ch_versions.mix(DIAMONDPREPARETAXA.out.versions.first()) - // Local modules of Diamond subworkflow + // nf-core modules of Diamond subworkflow DIAMOND_MAKEDB ( ch_diamond_reference_fasta, params.taxonmap, ch_taxonnodes, ch_taxonnames ) - ch_diamond_db = DIAMOND_MAKEDB.out.db + ch_diamond_db = DIAMOND_MAKEDB.out.db.first() DIAMOND_BLASTP ( ch_fasta, @@ -43,11 +39,10 @@ workflow DIAMOND { emit: blast = DIAMOND_BLASTP.out.blast - xml = DIAMOND_BLASTP.out.xml - txt = DIAMOND_BLASTP.out.txt - daa = DIAMOND_BLASTP.out.daa - sam = DIAMOND_BLASTP.out.sam - tsv = DIAMOND_BLASTP.out.tsv - paf = DIAMOND_BLASTP.out.paf - versions = ch_versions + xml = DIAMOND_BLASTP.out.xml + txt = DIAMOND_BLASTP.out.txt + daa = DIAMOND_BLASTP.out.daa + sam = DIAMOND_BLASTP.out.sam + tsv = DIAMOND_BLASTP.out.tsv + paf = DIAMOND_BLASTP.out.paf } diff --git a/subworkflows/local/diamond/tests/main.nf.test b/subworkflows/local/diamond/tests/main.nf.test index 04a6cf3..039e640 100644 --- a/subworkflows/local/diamond/tests/main.nf.test +++ b/subworkflows/local/diamond/tests/main.nf.test @@ -124,4 +124,37 @@ nextflow_workflow { ) } } + + test("Test DIAMOND subworkflow success -- 6 - TXT output -- stub - two samples") { + tag "stub" + tag "CI" + + options "-stub" + + when { + params { + refseq_release = 'other' + taxondmp_zip = 'file://${moduleTestDir}/mini_taxdump.tar.gz' + taxonmap = "${moduleTestDir}/mini_prot.accession2taxid.gz" + diamond_outfmt = 6 + diamond_blast_columns = '' + } + workflow { + """ + input[0] = channel.of( + [ [id:'sample1'], file("${moduleTestDir}/test_refseq.fasta", checkIfExists: false) ], + [ [id:'sample2'], file("${moduleTestDir}/test_refseq.fasta", checkIfExists: false) ] + ) + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert workflow.out.txt.size() == 2 }, + { assert snapshot(workflow.out).match() } + ) + } + } } \ No newline at end of file diff --git a/subworkflows/local/diamond/tests/main.nf.test.snap b/subworkflows/local/diamond/tests/main.nf.test.snap index b4ae46d..321a5a1 100644 --- a/subworkflows/local/diamond/tests/main.nf.test.snap +++ b/subworkflows/local/diamond/tests/main.nf.test.snap @@ -28,10 +28,6 @@ ], "6": [ - ], - "7": [ - "versions.yml:md5,aacdcbf79da04117d0786d0423161380", - "versions.yml:md5,fd77953bb9df9417c91759e312630970" ], "blast": [ [ @@ -56,20 +52,16 @@ ], "txt": [ - ], - "versions": [ - "versions.yml:md5,aacdcbf79da04117d0786d0423161380", - "versions.yml:md5,fd77953bb9df9417c91759e312630970" ], "xml": [ ] } ], - "timestamp": "2026-04-09T10:11:32.44382452", + "timestamp": "2026-08-19T19:47:49.699309341", "meta": { - "nf-test": "0.9.4", - "nextflow": "25.10.4" + "nf-test": "0.9.5", + "nextflow": "26.04.6" } }, "versions_stub_outfmt0": { @@ -132,6 +124,85 @@ "nextflow": "25.10.4" } }, + "Test DIAMOND subworkflow success -- 6 - TXT output -- stub - two samples": { + "content": [ + { + "0": [ + + ], + "1": [ + + ], + "2": [ + [ + { + "id": "sample1", + "db": "refseq" + }, + "sample1.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "sample2", + "db": "refseq" + }, + "sample2.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + + ], + "4": [ + + ], + "5": [ + + ], + "6": [ + + ], + "blast": [ + + ], + "daa": [ + + ], + "paf": [ + + ], + "sam": [ + + ], + "tsv": [ + + ], + "txt": [ + [ + { + "id": "sample1", + "db": "refseq" + }, + "sample1.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "sample2", + "db": "refseq" + }, + "sample2.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "xml": [ + + ] + } + ], + "timestamp": "2026-08-19T19:44:48.388726426", + "meta": { + "nf-test": "0.9.5", + "nextflow": "26.04.6" + } + }, "Test Diamond subworkflow success -- 6 - TXT output - no columns specified -- stub": { "content": [ { @@ -161,10 +232,6 @@ ], "6": [ - ], - "7": [ - "versions.yml:md5,aacdcbf79da04117d0786d0423161380", - "versions.yml:md5,fd77953bb9df9417c91759e312630970" ], "blast": [ @@ -190,19 +257,15 @@ "test.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,aacdcbf79da04117d0786d0423161380", - "versions.yml:md5,fd77953bb9df9417c91759e312630970" - ], "xml": [ ] } ], - "timestamp": "2026-04-09T10:11:09.260636361", + "timestamp": "2026-08-19T19:47:32.344749385", "meta": { - "nf-test": "0.9.4", - "nextflow": "25.10.4" + "nf-test": "0.9.5", + "nextflow": "26.04.6" } }, "Test Diamond subworkflow -- outfmt 6 with columns -- stub": { @@ -280,6 +343,85 @@ "nextflow": "25.10.4" } }, + "Test DIAMOND subworkflow success - stub - two samples": { + "content": [ + { + "0": [ + + ], + "1": [ + + ], + "2": [ + [ + { + "id": "sample1", + "db": "refseq" + }, + "sample1.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "sample2", + "db": "refseq" + }, + "sample2.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + + ], + "4": [ + + ], + "5": [ + + ], + "6": [ + + ], + "blast": [ + + ], + "daa": [ + + ], + "paf": [ + + ], + "sam": [ + + ], + "tsv": [ + + ], + "txt": [ + [ + { + "id": "sample1", + "db": "refseq" + }, + "sample1.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + { + "id": "sample2", + "db": "refseq" + }, + "sample2.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "xml": [ + + ] + } + ], + "timestamp": "2026-08-19T19:40:11.969696247", + "meta": { + "nf-test": "0.9.5", + "nextflow": "26.04.6" + } + }, "Test Diamond subworkflow -- outfmt 0 txt output -- stub": { "content": [ { @@ -457,10 +599,6 @@ ], "6": [ - ], - "7": [ - "versions.yml:md5,aacdcbf79da04117d0786d0423161380", - "versions.yml:md5,fd77953bb9df9417c91759e312630970" ], "blast": [ @@ -486,19 +624,15 @@ "test.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,aacdcbf79da04117d0786d0423161380", - "versions.yml:md5,fd77953bb9df9417c91759e312630970" - ], "xml": [ ] } ], - "timestamp": "2026-04-09T10:11:20.950526077", + "timestamp": "2026-08-19T19:47:41.118581828", "meta": { - "nf-test": "0.9.4", - "nextflow": "25.10.4" + "nf-test": "0.9.5", + "nextflow": "26.04.6" } } } \ No newline at end of file From 5ba47b3b7eaf8d738bca63146389346f8b03ee2f Mon Sep 17 00:00:00 2001 From: tracelail Date: Thu, 20 Aug 2026 19:04:45 -0400 Subject: [PATCH 54/59] updated ncbi download to use rclone since rsync is depricated by ncbi. Updated meta and environment to match. snap needs pruning once ncbi real test can run after ban. --- .../local/ncbirefseqdownload/environment.yml | 2 +- modules/local/ncbirefseqdownload/main.nf | 17 +++++----- modules/local/ncbirefseqdownload/meta.yml | 14 ++++---- .../ncbirefseqdownload/tests/main.nf.test | 2 -- .../tests/main.nf.test.snap | 32 +++++++++++-------- 5 files changed, 34 insertions(+), 33 deletions(-) diff --git a/modules/local/ncbirefseqdownload/environment.yml b/modules/local/ncbirefseqdownload/environment.yml index deb8224..c2d2579 100644 --- a/modules/local/ncbirefseqdownload/environment.yml +++ b/modules/local/ncbirefseqdownload/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - "conda-forge::rsync=3.4.4" + - "conda-forge::rclone=1.75.0" diff --git a/modules/local/ncbirefseqdownload/main.nf b/modules/local/ncbirefseqdownload/main.nf index 13246b5..d77da23 100644 --- a/modules/local/ncbirefseqdownload/main.nf +++ b/modules/local/ncbirefseqdownload/main.nf @@ -4,15 +4,15 @@ process NCBIREFSEQDOWNLOAD { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'oras://community.wave.seqera.io/library/rsync:3.4.4--e7cdbdef11f909e3' : - 'community.wave.seqera.io/library/rsync:3.4.4--c47965c3c662c89a' }" + 'oras://community.wave.seqera.io/library/rclone:1.75.0--740c5f5c731d4cea' : + 'community.wave.seqera.io/library/rclone:1.75.0--0b2d3444376fb3b2' }" input: val(refseq_release) // ncbi refseq release category -- default of 'complete' output: path "ncbi_refseq/refseq_fasta.fa.gz", emit: refseq_fasta // reference fasta for diamond/makedb nf-core module - tuple val("${task.process}"), val('rsync'), eval('rsync --version | head -n1 | sed \'s/rsync version //\''), topic: versions, emit: versions_rsync + tuple val("${task.process}"), val('rclone'), eval('rclone --version | head -n1 | sed "s/rclone //"'), topic: versions, emit: versions_rclone when: task.ext.when == null || task.ext.when @@ -21,12 +21,11 @@ process NCBIREFSEQDOWNLOAD { """ mkdir -p ncbi_refseq/${refseq_release}/ - rsync \\ - -av \\ - --include '*protein.faa.gz' \\ - --exclude '*' \\ - rsync://ftp.ncbi.nlm.nih.gov/refseq/release/${refseq_release}/ \\ - ncbi_refseq/${refseq_release}/ + rclone copy \\ + :http:refseq/release/${refseq_release}/ \\ + ncbi_refseq/${refseq_release}/ \\ + --http-url https://ftp.ncbi.nlm.nih.gov \\ + --include '*protein.faa.gz' zcat ncbi_refseq/*/*.faa.gz | gzip -c > ncbi_refseq/refseq_fasta.fa.gz diff --git a/modules/local/ncbirefseqdownload/meta.yml b/modules/local/ncbirefseqdownload/meta.yml index 25e0f43..044c2c6 100644 --- a/modules/local/ncbirefseqdownload/meta.yml +++ b/modules/local/ncbirefseqdownload/meta.yml @@ -9,12 +9,12 @@ keywords: - protein - database tools: - - "rsync": - description: Fast and versatile file copying tool for remote and local files - homepage: "https://rsync.samba.org/" - documentation: "https://download.samba.org/pub/rsync/rsync.1" - tool_dev_url: "https://github.com/WayneD/rsync" - licence: ["GPL-3.0-or-later"] + - "rclone": + description: Command line program to sync files and directories to and from different cloud storage providers + homepage: "https://rclone.org/" + documentation: "https://rclone.org/docs/" + tool_dev_url: "https://github.com/rclone/rclone" + licence: ["MIT"] input: - refseq_release: @@ -28,7 +28,7 @@ output: type: file description: Aggregated and compressed protein FASTA file from RefSeq release pattern: "*.fa.gz" - + - versions: - "versions.yml": type: file diff --git a/modules/local/ncbirefseqdownload/tests/main.nf.test b/modules/local/ncbirefseqdownload/tests/main.nf.test index 6cf6e6b..5bec704 100644 --- a/modules/local/ncbirefseqdownload/tests/main.nf.test +++ b/modules/local/ncbirefseqdownload/tests/main.nf.test @@ -25,7 +25,6 @@ nextflow_process { assert process.trace.tasks().size() == 1 assert process.out.refseq_fasta.size() == 1 assert snapshot(process.out).match() - assert snapshot(process.out.versions).match("versions") } } @@ -49,7 +48,6 @@ nextflow_process { assert process.trace.tasks().size() == 1 assert process.out.refseq_fasta.size() == 1 assert snapshot(process.out).match() - assert snapshot(process.out.versions).match("versions_stub") } } diff --git a/modules/local/ncbirefseqdownload/tests/main.nf.test.snap b/modules/local/ncbirefseqdownload/tests/main.nf.test.snap index bad3165..693c3d2 100644 --- a/modules/local/ncbirefseqdownload/tests/main.nf.test.snap +++ b/modules/local/ncbirefseqdownload/tests/main.nf.test.snap @@ -1,14 +1,10 @@ { "versions_stub": { - "content": [ - [ - "versions.yml:md5,21b64f64575fb928a9829f198ffbb8e1" - ] - ], - "timestamp": "2026-03-31T10:47:47.583755748", + "content": null, + "timestamp": "2026-08-20T18:54:43.600627847", "meta": { - "nf-test": "0.9.4", - "nextflow": "25.10.4" + "nf-test": "0.9.5", + "nextflow": "26.04.6" } }, "versions": { @@ -30,20 +26,28 @@ "refseq_fasta.fa.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ], "1": [ - "versions.yml:md5,21b64f64575fb928a9829f198ffbb8e1" + [ + "NCBIREFSEQDOWNLOAD", + "rclone", + "v1.75.0" + ] ], "refseq_fasta": [ "refseq_fasta.fa.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ], - "versions": [ - "versions.yml:md5,21b64f64575fb928a9829f198ffbb8e1" + "versions_rclone": [ + [ + "NCBIREFSEQDOWNLOAD", + "rclone", + "v1.75.0" + ] ] } ], - "timestamp": "2026-03-31T10:42:34.738664449", + "timestamp": "2026-08-20T18:54:43.579551367", "meta": { - "nf-test": "0.9.4", - "nextflow": "25.10.4" + "nf-test": "0.9.5", + "nextflow": "26.04.6" } }, "Should download ncbi refseq 'other' zipped protein fasta": { From b0da026fac504ae31df13fcf75a31f9196e97547 Mon Sep 17 00:00:00 2001 From: tracelail Date: Fri, 21 Aug 2026 17:59:29 -0400 Subject: [PATCH 55/59] restored domain_annotation via git checkout dev. Added publish dir entries for diamond makedb and diamond blastp. --- .../domain_annotation/tests/main.nf.test.snap | 50 +++++++++++++------ 1 file changed, 36 insertions(+), 14 deletions(-) diff --git a/subworkflows/local/domain_annotation/tests/main.nf.test.snap b/subworkflows/local/domain_annotation/tests/main.nf.test.snap index 89bdaaa..d5c4ad9 100644 --- a/subworkflows/local/domain_annotation/tests/main.nf.test.snap +++ b/subworkflows/local/domain_annotation/tests/main.nf.test.snap @@ -12,7 +12,7 @@ "T1024 - 408 F294204 - 387 3.8e-06 12.8 25.9 1 1 2.8e-06 5.6e-06 12.3 25.9 16 372 41 406 30 408 0.76 LmrP, , 408 residues|" ], [ - + ] ], "timestamp": "2026-05-07T13:34:53.191301436", @@ -44,7 +44,7 @@ "#" ], [ - + ] ], "timestamp": "2026-05-07T13:34:20.834406599", @@ -66,7 +66,7 @@ "T1024 - 408 F093539 - 93 3.1e-05 11.0 0.1 1 4 1.6e-05 3.1e-05 11.0 0.1 57 75 50 68 6 75 0.82 LmrP, , 408 residues|" ], [ - + ] ], "timestamp": "2026-05-07T13:34:41.751903369", @@ -88,7 +88,7 @@ "#" ], [ - + ] ], "timestamp": "2026-05-07T13:34:32.093410935", @@ -101,13 +101,28 @@ "content": [ { "0": [ - + [ + { + "id": "test" + }, + "test.domtbl.gz:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], "1": [ - + [ + { + "id": "test" + }, + "test.domtbl.gz:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], "2": [ - + [ + { + "id": "test" + }, + "test.domtbl.gz:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], "3": [ [ @@ -118,12 +133,9 @@ ] ], "4": [ - + ], "funfam_domains": [ - - ], - "metagroot_domains": [ [ { "id": "test" @@ -140,13 +152,23 @@ ] ], "nmpfams_domains": [ - + [ + { + "id": "test" + }, + "test.domtbl.gz:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], "pfam_domains": [ - + [ + { + "id": "test" + }, + "test.domtbl.gz:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], "versions": [ - + ] } ], From 5dee8c05cbd225cb9334b435b23c6d884daa20d3 Mon Sep 17 00:00:00 2001 From: tracelail Date: Fri, 21 Aug 2026 17:59:55 -0400 Subject: [PATCH 56/59] updated modules.config --- conf/modules.config | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/conf/modules.config b/conf/modules.config index cd716c8..4f1e90d 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -146,6 +146,22 @@ process { ] } + withName: 'NFCORE_PROTEINANNOTATOR:PROTEINANNOTATOR:FUNCTIONAL_ANNOTATION:DIAMOND:DIAMOND_MAKEDB' { + publishDir = [ + path: { "${params.outdir}/downloaded_dbs/diamond/" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + + withName: 'NFCORE_PROTEINANNOTATOR:PROTEINANNOTATOR:FUNCTIONAL_ANNOTATION:DIAMOND:DIAMOND_BLASTP' { + publishDir = [ + path: { "${params.outdir}/functional_annotation/diamond/${meta.id}/" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + withName: 'NFCORE_PROTEINANNOTATOR:PROTEINANNOTATOR:FUNCTIONAL_ANNOTATION:ARIA2_INTERPROSCAN' { publishDir = [ path: { "${params.outdir}/downloaded_dbs/" }, From e204f10aabf7914dac7164ffe13aa256d4f17fb1 Mon Sep 17 00:00:00 2001 From: tracelail Date: Fri, 21 Aug 2026 19:38:16 -0400 Subject: [PATCH 57/59] Added skip_diamond functionality to pipeline and ran stub tests. --- docs/usage.md | 4 +- main.nf | 1 + nextflow.config | 1 + nextflow_schema.json | 7 + subworkflows/local/diamond/meta.yml | 6 - subworkflows/local/diamond/tests/main.nf.test | 2 +- .../local/functional_annotation/main.nf | 30 +++- .../local/functional_annotation/meta.yml | 51 +++++- .../functional_annotation/tests/main.nf.test | 5 + .../tests/main.nf.test.snap | 168 +++++++++++++----- workflows/proteinannotator.nf | 4 +- 11 files changed, 212 insertions(+), 67 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index e529c09..7c689fb 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -92,8 +92,9 @@ A local version of the database can be supplied to the pipeline by passing the I ### DIAMOND -Running [Diamond](https://github.com/bbuchfink/diamond) requires five inputs parameters. +Running [Diamond](https://github.com/bbuchfink/diamond) requires six inputs parameters. +- `--skip_diamond`: Skip the DIAMOND BLASTP taxonomic classification step entirely. - `--refseq_release`: NCBI refseq release category of protein fastas for creation of a protein reference database using [`diamond/makedb`](https://nf-co.re/modules/diamond_makedb) - `--taxondmp_zip`: Compressed taxon dmp file path to provide taxon names and nodes files for creation of a protein reference database using [`diamond/makedb`] - `--taxonmap`: Compressed taxon map file path to provide taxon mapping file for creation of a protein reference database using [`diamond/makedb`] @@ -108,6 +109,7 @@ Running [Diamond](https://github.com/bbuchfink/diamond) requires five inputs par - `--diamond_blast_columns`: Accompanied optional input parameter to `diamond_outfmt`: `*.txt (6)` output format. Space separated list of columns to be included. Options: qseqid sseqid pident length mismatch gapopen qstart qend sstart send evalue bitscore. ### Updating the pipeline + ``` curl -L https://ftp.ebi.ac.uk/pub/software/unix/iprscan/5/5.72-103.0/interproscan-5.72-103.0-64-bit.tar.gz -o interproscan_db/interproscan-5.72-103.0-64-bit.tar.gz tar -xzf interproscan_db/interproscan-5.72-103.0-64-bit.tar.gz -C interproscan_db/ diff --git a/main.nf b/main.nf index 1f24f81..48ead23 100644 --- a/main.nf +++ b/main.nf @@ -64,6 +64,7 @@ workflow NFCORE_PROTEINANNOTATOR { params.kofamscan_profiles, params.kofamscan_ko_list_url, params.kofamscan_ko_list, + params.skip_diamond, params.skip_s4pred ) emit: diff --git a/nextflow.config b/nextflow.config index 0d0dad9..deac00e 100644 --- a/nextflow.config +++ b/nextflow.config @@ -46,6 +46,7 @@ params { kofamscan_ko_list = null // DIAMOND options + skip_diamond = false refseq_release = 'complete' taxondmp_zip = 'ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz' taxonmap = 'ftp://ftp.ncbi.nlm.nih.gov/pub/taxonomy/accession2taxid/prot.accession2taxid.gz' diff --git a/nextflow_schema.json b/nextflow_schema.json index 5328c79..e67c915 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -49,6 +49,13 @@ "description": "Options for DIAMOND blastp subworkflow for protein homology searches", "default": "", "properties": { + "skip_diamond": { + "type": "boolean", + "fa_icon": "fas fa-ban", + "description": "Skip the DIAMOND BLASTP taxonomic classification.", + "help": "Skips the DIAMOND BLASTP homology search and taxonomic classification of input sequences against the RefSeq database.", + "default": false + }, "refseq_release": { "type": "string", "description": "NCBI refseq release category of protein fastas from ftp.ncbi.nlm.nih.gov/refseq/release/", diff --git a/subworkflows/local/diamond/meta.yml b/subworkflows/local/diamond/meta.yml index 6410dc5..c3a8faa 100644 --- a/subworkflows/local/diamond/meta.yml +++ b/subworkflows/local/diamond/meta.yml @@ -67,12 +67,6 @@ output: Channel containing PAF alignment files Structure: [ val(meta), path(paf) ] pattern: "*.paf" - - versions: - type: file - description: | - File containing software versions - Structure: [ path(versions.yml) ] - pattern: "versions.yml" authors: - "@tracelail" diff --git a/subworkflows/local/diamond/tests/main.nf.test b/subworkflows/local/diamond/tests/main.nf.test index 039e640..4dda7c0 100644 --- a/subworkflows/local/diamond/tests/main.nf.test +++ b/subworkflows/local/diamond/tests/main.nf.test @@ -134,7 +134,7 @@ nextflow_workflow { when { params { refseq_release = 'other' - taxondmp_zip = 'file://${moduleTestDir}/mini_taxdump.tar.gz' + taxondmp_zip = "file://${moduleTestDir}/mini_taxdump.tar.gz" taxonmap = "${moduleTestDir}/mini_prot.accession2taxid.gz" diamond_outfmt = 6 diamond_blast_columns = '' diff --git a/subworkflows/local/functional_annotation/main.nf b/subworkflows/local/functional_annotation/main.nf index 895d57e..170b0c1 100644 --- a/subworkflows/local/functional_annotation/main.nf +++ b/subworkflows/local/functional_annotation/main.nf @@ -19,18 +19,34 @@ workflow FUNCTIONAL_ANNOTATION { kofamscan_profiles // string, existing KOfam profiles directory kofamscan_ko_list_url // string, URL to download KOfam KO list kofamscan_ko_list // string, existing KOfam KO list + skip_diamond // boolean main: + def ch_diamond_blast = channel.empty() + def ch_diamond_xml = channel.empty() + def ch_diamond_txt = channel.empty() + def ch_diamond_daa = channel.empty() + def ch_diamond_sam = channel.empty() + def ch_diamond_tsv = channel.empty() + def ch_diamond_paf = channel.empty() def ch_interproscan_tsv = channel.empty() def ch_kofamscan_tsv = channel.empty() // // SUBWORKFLOW: Run Diamond // - DIAMOND( - ch_fasta - ) - ch_diamond_tsv = DIAMOND.out.tsv + if (!skip_diamond) { + DIAMOND( + ch_fasta + ) + ch_diamond_blast = DIAMOND.out.blast + ch_diamond_xml = DIAMOND.out.xml + ch_diamond_txt = DIAMOND.out.txt + ch_diamond_daa = DIAMOND.out.daa + ch_diamond_sam = DIAMOND.out.sam + ch_diamond_tsv = DIAMOND.out.tsv + ch_diamond_paf = DIAMOND.out.paf + } // // SUBWORKFLOW: Run Interproscan @@ -82,7 +98,13 @@ workflow FUNCTIONAL_ANNOTATION { } emit: + diamond_blast = ch_diamond_blast + diamond_xml = ch_diamond_xml + diamond_txt = ch_diamond_txt + diamond_daa = ch_diamond_daa + diamond_sam = ch_diamond_sam diamond_tsv = ch_diamond_tsv + diamond_paf = ch_diamond_paf interproscan_tsv = ch_interproscan_tsv kofamscan_tsv = ch_kofamscan_tsv } diff --git a/subworkflows/local/functional_annotation/meta.yml b/subworkflows/local/functional_annotation/meta.yml index 140fcf8..a6fb1a0 100644 --- a/subworkflows/local/functional_annotation/meta.yml +++ b/subworkflows/local/functional_annotation/meta.yml @@ -1,8 +1,9 @@ # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/subworkflows/yaml-schema.json name: functional_annotation description: | - Performs functional annotation of protein sequences using InterProScan and KOfamScan. - Both databases can be downloaded automatically or supplied locally. + Performs functional annotation of protein sequences using DIAMOND BLASTP + against RefSeq, InterProScan and KOfamScan. Databases can be downloaded + automatically or supplied locally. keywords: - annotation - functional @@ -14,7 +15,6 @@ keywords: components: - diamond - interproscan - - interproscan - kofamscan - kegg - proteins @@ -22,8 +22,6 @@ components: - aria2 - untar - gunzip - - interproscan - - kofamscan input: - ch_fasta: @@ -69,14 +67,53 @@ input: type: string description: | Optional path to a pre-existing decompressed KOfam KO list. + - skip_diamond: + type: boolean + description: Skip DIAMOND BLASTP taxonomic classification output: + - diamond_blast: + type: file + description: | + Channel containing BLAST-formatted output files from DIAMOND (only populated when --diamond_outfmt selects this format) + Structure: [ val(meta), path(blast) ] + pattern: "*" + - diamond_xml: + type: file + description: | + Channel containing XML-formatted output files from DIAMOND (only populated when --diamond_outfmt selects this format) + Structure: [ val(meta), path(xml) ] + pattern: "*.xml" + - diamond_txt: + type: file + description: | + Channel containing tabular text output files from DIAMOND (only populated when --diamond_outfmt selects this format; this is the default format) + Structure: [ val(meta), path(txt) ] + pattern: "*.txt" + - diamond_daa: + type: file + description: | + Channel containing DIAMOND archive format output files (only populated when --diamond_outfmt selects this format) + Structure: [ val(meta), path(daa) ] + pattern: "*.daa" + - diamond_sam: + type: file + description: | + Channel containing SAM alignment files from DIAMOND (only populated when --diamond_outfmt selects this format) + Structure: [ val(meta), path(sam) ] + pattern: "*.sam" - diamond_tsv: type: file description: | - Channel containing TSV files with taxonomic classification of DIAMOND hits + Channel containing tab-separated output files from DIAMOND (only populated when --diamond_outfmt selects this format) Structure: [ val(meta), path(tsv) ] - pattern: "*.{tsv,tsv.gz}" + pattern: "*.tsv" + - diamond_paf: + type: file + description: | + Channel containing PAF alignment files from DIAMOND (only populated when --diamond_outfmt selects this format) + Structure: [ val(meta), path(paf) ] + pattern: "*.paf" - interproscan_tsv: type: file description: | diff --git a/subworkflows/local/functional_annotation/tests/main.nf.test b/subworkflows/local/functional_annotation/tests/main.nf.test index 4cfcc48..70363e9 100644 --- a/subworkflows/local/functional_annotation/tests/main.nf.test +++ b/subworkflows/local/functional_annotation/tests/main.nf.test @@ -36,6 +36,7 @@ nextflow_workflow { input[6] = [] input[7] = [] input[8] = [] + input[9] = false """ } } @@ -73,6 +74,7 @@ nextflow_workflow { input[6] = [] input[7] = [] input[8] = [] + input[9] = false """ } } @@ -101,6 +103,7 @@ nextflow_workflow { input[6] = [] input[7] = [] input[8] = [] + input[9] = true """ } } @@ -133,6 +136,7 @@ nextflow_workflow { input[6] = [] input[7] = [] input[8] = [] + input[9] = true """ } } @@ -163,6 +167,7 @@ nextflow_workflow { input[6] = [] input[7] = params.modules_testdata_base_path + 'genomics/sarscov2/genome/db/kofamscan/ko_list.gz' input[8] = [] + input[9] = true """ } } diff --git a/subworkflows/local/functional_annotation/tests/main.nf.test.snap b/subworkflows/local/functional_annotation/tests/main.nf.test.snap index eec1d3c..2a1156f 100644 --- a/subworkflows/local/functional_annotation/tests/main.nf.test.snap +++ b/subworkflows/local/functional_annotation/tests/main.nf.test.snap @@ -1,46 +1,4 @@ { - "Test FUNCTIONAL_ANNOTATION Diamond execution subworkflow success": { - "content": [ - { - "0": [], - "1": [], - "2": [ - "versions.yml:md5,360c40011f1cc989e92af5ec14d367c8" - ], - "diamond_tsv": [], - "interproscan_tsv": [], - "versions": [ - "versions.yml:md5,360c40011f1cc989e92af5ec14d367c8" - ] - } - ], - "timestamp": "2026-04-09T10:13:40.576061038", - "meta": { - "nf-test": "0.9.4", - "nextflow": "25.10.4" - } - }, - "Test FUNCTIONAL_ANNOTATION Diamond execution subworkflow success - stub": { - "content": [ - { - "0": [], - "1": [], - "2": [ - "versions.yml:md5,0f07f649936a9d30bb0203870dc9c256" - ], - "diamond_tsv": [], - "interproscan_tsv": [], - "versions": [ - "versions.yml:md5,0f07f649936a9d30bb0203870dc9c256" - ] - } - ], - "timestamp": "2026-04-06T17:45:00.005789225", - "meta": { - "nf-test": "0.9.4", - "nextflow": "25.10.4" - } - }, "faa - KOfamScan annotation - automatic database download": { "content": [ [ @@ -63,6 +21,35 @@ "nextflow": "26.04.3" } }, + "Test FUNCTIONAL_ANNOTATION Diamond execution subworkflow success": { + "content": [ + { + "0": [ + + ], + "1": [ + + ], + "2": [ + "versions.yml:md5,360c40011f1cc989e92af5ec14d367c8" + ], + "diamond_tsv": [ + + ], + "interproscan_tsv": [ + + ], + "versions": [ + "versions.yml:md5,360c40011f1cc989e92af5ec14d367c8" + ] + } + ], + "timestamp": "2026-04-09T10:13:40.576061038", + "meta": { + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } + }, "l_asparaginase - faa - functional annotation": { "content": [ true @@ -73,17 +60,104 @@ "nextflow": "26.04.0" } }, + "Test FUNCTIONAL_ANNOTATION Diamond execution subworkflow success - stub": { + "content": [ + { + "0": [ + + ], + "1": [ + + ], + "2": [ + [ + { + "id": "test", + "db": "refseq" + }, + "test.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + + ], + "4": [ + + ], + "5": [ + + ], + "6": [ + + ], + "7": [ + + ], + "8": [ + + ], + "diamond_blast": [ + + ], + "diamond_daa": [ + + ], + "diamond_paf": [ + + ], + "diamond_sam": [ + + ], + "diamond_tsv": [ + + ], + "diamond_txt": [ + [ + { + "id": "test", + "db": "refseq" + }, + "test.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "diamond_xml": [ + + ], + "interproscan_tsv": [ + + ], + "kofamscan_tsv": [ + + ] + } + ], + "timestamp": "2026-08-21T19:35:41.555326075", + "meta": { + "nf-test": "0.9.5", + "nextflow": "26.04.6" + } + }, "faa - functional annotation - stub": { "content": [ { - "0": [], - "1": [], + "0": [ + + ], + "1": [ + + ], "2": [ "versions.yml:md5,360c40011f1cc989e92af5ec14d367c8" ], - "diamond_tsv": [], - "interproscan_tsv": [], - "kofamscan_tsv": [] + "diamond_tsv": [ + + ], + "interproscan_tsv": [ + + ], + "kofamscan_tsv": [ + + ] } ], "timestamp": "2026-05-05T11:38:15.575589861", diff --git a/workflows/proteinannotator.nf b/workflows/proteinannotator.nf index b8389d7..6d7a2f2 100644 --- a/workflows/proteinannotator.nf +++ b/workflows/proteinannotator.nf @@ -47,6 +47,7 @@ workflow PROTEINANNOTATOR { kofamscan_profiles // string, existing KOfam profiles directory kofamscan_ko_list_url // string, URL to download the compressed KOfam KO list kofamscan_ko_list // string, existing KOfam KO list + skip_diamond // boolean skip_s4pred // boolean main: @@ -81,7 +82,8 @@ workflow PROTEINANNOTATOR { kofamscan_profiles_url, kofamscan_profiles, kofamscan_ko_list_url, - kofamscan_ko_list + kofamscan_ko_list, + skip_diamond ) if (!skip_s4pred) { From 43bae90eac498091eeae78bc7cc855d016b46390 Mon Sep 17 00:00:00 2001 From: tracelail Date: Wed, 26 Aug 2026 14:58:44 -0400 Subject: [PATCH 58/59] Replace rsync with rclone in NCBIREFSEQDOWNLOAD (NCBI discontinued rsync 2026-06-01) Ref: https://ncbiinsights.ncbi.nlm.nih.gov/2026/03/25/retire-rsync-support-ftp-downloads/ Also add --user-agent "Mozilla/5.0": NCBI blocks rclone's default UA, independent of IP or request rate. --- modules/local/ncbirefseqdownload/main.nf | 3 +- .../tests/main.nf.test.snap | 40 +++++++------------ 2 files changed, 16 insertions(+), 27 deletions(-) diff --git a/modules/local/ncbirefseqdownload/main.nf b/modules/local/ncbirefseqdownload/main.nf index d77da23..64f384f 100644 --- a/modules/local/ncbirefseqdownload/main.nf +++ b/modules/local/ncbirefseqdownload/main.nf @@ -25,7 +25,8 @@ process NCBIREFSEQDOWNLOAD { :http:refseq/release/${refseq_release}/ \\ ncbi_refseq/${refseq_release}/ \\ --http-url https://ftp.ncbi.nlm.nih.gov \\ - --include '*protein.faa.gz' + --include '*protein.faa.gz' \\ + --user-agent "Mozilla/5.0" zcat ncbi_refseq/*/*.faa.gz | gzip -c > ncbi_refseq/refseq_fasta.fa.gz diff --git a/modules/local/ncbirefseqdownload/tests/main.nf.test.snap b/modules/local/ncbirefseqdownload/tests/main.nf.test.snap index 693c3d2..45e7f62 100644 --- a/modules/local/ncbirefseqdownload/tests/main.nf.test.snap +++ b/modules/local/ncbirefseqdownload/tests/main.nf.test.snap @@ -1,24 +1,4 @@ { - "versions_stub": { - "content": null, - "timestamp": "2026-08-20T18:54:43.600627847", - "meta": { - "nf-test": "0.9.5", - "nextflow": "26.04.6" - } - }, - "versions": { - "content": [ - [ - "versions.yml:md5,9fabe17275a444ef94e5e2dedcac4f32" - ] - ], - "timestamp": "2026-04-06T13:39:51.888472042", - "meta": { - "nf-test": "0.9.4", - "nextflow": "25.10.4" - } - }, "Should download ncbi refseq 'other' zipped protein fasta -- stub": { "content": [ { @@ -57,20 +37,28 @@ "refseq_fasta.fa.gz:md5,af9fbb4c725173a9286979c7f1c6a67e" ], "1": [ - "versions.yml:md5,9fabe17275a444ef94e5e2dedcac4f32" + [ + "NCBIREFSEQDOWNLOAD", + "rclone", + "v1.75.0" + ] ], "refseq_fasta": [ "refseq_fasta.fa.gz:md5,af9fbb4c725173a9286979c7f1c6a67e" ], - "versions": [ - "versions.yml:md5,9fabe17275a444ef94e5e2dedcac4f32" + "versions_rclone": [ + [ + "NCBIREFSEQDOWNLOAD", + "rclone", + "v1.75.0" + ] ] } ], - "timestamp": "2026-04-06T13:39:51.876586473", + "timestamp": "2026-08-26T14:52:02.541271594", "meta": { - "nf-test": "0.9.4", - "nextflow": "25.10.4" + "nf-test": "0.9.5", + "nextflow": "26.04.6" } } } \ No newline at end of file From b96323c3947fd90b0f4adbd10a212b33a6d22ead Mon Sep 17 00:00:00 2001 From: tracelail Date: Wed, 26 Aug 2026 16:00:53 -0400 Subject: [PATCH 59/59] updated diamond output markdown with publishdir subdirectories. --- docs/output.md | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/docs/output.md b/docs/output.md index f3a14bb..040027a 100644 --- a/docs/output.md +++ b/docs/output.md @@ -369,14 +369,16 @@ The XML Schema Definition (XSD) is available [here](http://ftp.ebi.ac.uk/pub/sof
Output files -- `functional_annotation/diamond` - - `*.blast (0)`: (Basic Local Alignment Search Tool) BLAST pairwise format - - `*.xml (5)`: BLAST Extensible Markup Language (XML) format - - `*.txt (6)`: BLAST tabular format (default). This format can be customized, the 6 may be followed by a space-separated list of the blast_columns keywords, each specifying a field of the output. - - `*.daa (100)`: DIAMOND alignment archive (DAA). The DAA format is a proprietary binary format that can subsequently be used to generate other output formats using the view command. It is also supported by MEGAN and allows a quick import of results. - - `*.sam (101)`: SAM format. - - `*.tsv (102)`: Taxonomic classification. This format will not print alignments but only a taxonomic classification for each query using the LCA algorithm. - - `*.paf (103)`: PAF format. The custom fields in the format are AS (bit score), ZR (raw score) and ZE (e-value) +- `functional_annotation/` + - `diamond/` + - `/` + - `*.blast (0)`: (Basic Local Alignment Search Tool) BLAST pairwise format + - `*.xml (5)`: BLAST Extensible Markup Language (XML) format + - `*.txt (6)`: BLAST tabular format (default). This format can be customized, the 6 may be followed by a space-separated list of the blast_columns keywords, each specifying a field of the output. + - `*.daa (100)`: DIAMOND alignment archive (DAA). The DAA format is a proprietary binary format that can subsequently be used to generate other output formats using the view command. It is also supported by MEGAN and allows a quick import of results. + - `*.sam (101)`: SAM format. + - `*.tsv (102)`: Taxonomic classification. This format will not print alignments but only a taxonomic classification for each query using the LCA algorithm. + - `*.paf (103)`: PAF format. The custom fields in the format are AS (bit score), ZR (raw score) and ZE (e-value)