diff --git a/modules/nf-core/blast/cdddownloader/environment.yml b/modules/nf-core/blast/cdddownloader/environment.yml new file mode 100644 index 000000000000..345d5b47c785 --- /dev/null +++ b/modules/nf-core/blast/cdddownloader/environment.yml @@ -0,0 +1,8 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + - bioconda::gnu-wget=1.18 + - conda-forge::tar=1.32 diff --git a/modules/nf-core/blast/cdddownloader/main.nf b/modules/nf-core/blast/cdddownloader/main.nf new file mode 100644 index 000000000000..55175d89fc30 --- /dev/null +++ b/modules/nf-core/blast/cdddownloader/main.nf @@ -0,0 +1,110 @@ +process BLAST_CDDDOWNLOADER { + tag "$db_prefix" + label 'process_single' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://depot.galaxyproject.org/singularity/gnu-wget:1.18--h36e9172_9' + : 'biocontainers/gnu-wget:1.18--h36e9172_9'}" + + input: + val db_prefix + path download_path + + output: + path "${download_path}/cdd_databases/", emit: db + tuple val("${task.process}"), val('wget'), eval("wget --version | head -1 | cut -d ' ' -f 3"), topic: versions, emit: versions_wget + tuple val("${task.process}"), val('untar'), eval("tar --version 2>&1 | grep -oE '[0-9]+\\.[0-9]+\\.[0-9]+' | head -1"), topic: versions, emit: versions_tar + + when: + task.ext.when == null || task.ext.when + + script: + def db_name = 'Cdd_NCBI_LE' + if ( "$db_prefix" ==~ /^Cdd$/ ) { + db_name = 'Cdd_LE' + } else if ( "$db_prefix" ==~ /^Cog$/ ) { + db_name = 'Cog_LE' + } else if ( "$db_prefix" ==~ /^Kog$/ ) { + db_name = 'Kog_LE' + } else if ( "$db_prefix" ==~ /^Pfam$/ ) { + db_name = 'Pfam_LE' + } else if ( "$db_prefix" ==~ /^Prk$/ ) { + db_name = 'Prk_LE' + } else if ( "$db_prefix" ==~ /^Smart$/ ) { + db_name = 'Smart_LE' + } else if ( "$db_prefix" ==~ /^Tigr$/ ) { + db_name = 'Tigr_LE' + } else { + log.warn("Unknown CDD databse name (${db_prefix}): selecting Cdd_NCBI default of downloading") + db_prefix = 'Cdd_NCBI' + } + + """ + # Check if cdd_databases directory exists in download_path + if [ -d "${download_path}/cdd_databases" ]; then + echo "Found existing cdd_databases directory at ${download_path}" + cd ${download_path}/cdd_databases + + # Check if db_prefix directory exists + if [ -d "${db_prefix}" ]; then + file_count=\$(find ${db_prefix} -type f | wc -l) + echo "WARNING: The directory ${download_path}/cdd_databases/${db_prefix} already exists and contains \${file_count} files." + echo "If you want to download the database ${db_prefix} again, remove the current ${db_prefix} directory first." + else + echo "Creating ${db_prefix} directory and downloading database..." + mkdir ${db_prefix} + echo "Downloading ${db_prefix} database into ${db_prefix} dir" + wget https://ftp.ncbi.nlm.nih.gov/pub/mmdb/cdd/little_endian/${db_name}.tar.gz + tar -xzf ${db_name}.tar.gz -C ./${db_prefix} + rm -f ${db_name}.tar.gz + echo "Database ${db_prefix} downloaded successfully" + fi + + # Check if data directory exists + if [ -d "data" ]; then + data_file_count=\$(find data -type f | wc -l) + echo "The directory ${download_path}/cdd_databases/data already exists and contains \${data_file_count} files." + echo "Skipping metadata files downloading" + echo "If you want to download the metadata files again, remove the current data directory first." + else + echo "Creating data directory and downloading metadata files..." + mkdir data + echo "Downloading metadata files" + wget https://ftp.ncbi.nih.gov/pub/mmdb/cdd/cddid.tbl.gz -O ./data/cddid.tbl.gz && gzip -d ./data/cddid.tbl.gz + wget https://ftp.ncbi.nih.gov/pub/mmdb/cdd/cdtrack.txt -O ./data/cdtrack.txt + wget https://ftp.ncbi.nih.gov/pub/mmdb/cdd/family_superfamily_links -O ./data/family_superfamily_links + wget https://ftp.ncbi.nih.gov/pub/mmdb/cdd/cddannot.dat.gz -O ./data/cddannot.dat.gz && gzip -d ./data/cddannot.dat.gz + wget https://ftp.ncbi.nih.gov/pub/mmdb/cdd/cddannot_generic.dat.gz -O ./data/cddannot_generic.dat.gz && gzip -d ./data/cddannot_generic.dat.gz + wget https://ftp.ncbi.nih.gov/pub/mmdb/cdd/bitscore_specific.txt -O ./data/bitscore_specific.txt + echo "Metadata files downloaded successfully" + fi + else + echo "Creating new cdd_databases directory structure at ${download_path}" + mkdir -p ${download_path}/cdd_databases/${db_prefix} + mkdir -p ${download_path}/cdd_databases/data + cd ${download_path}/cdd_databases + + echo "Downloading ${db_prefix} database into ${db_prefix} dir" + wget https://ftp.ncbi.nlm.nih.gov/pub/mmdb/cdd/little_endian/${db_name}.tar.gz + tar -xzf ${db_name}.tar.gz -C ./${db_prefix} + rm -f ${db_name}.tar.gz + + echo "Downloading metadata files" + wget https://ftp.ncbi.nih.gov/pub/mmdb/cdd/cddid.tbl.gz -O ./data/cddid.tbl.gz && gzip -d ./data/cddid.tbl.gz + wget https://ftp.ncbi.nih.gov/pub/mmdb/cdd/cdtrack.txt -O ./data/cdtrack.txt + wget https://ftp.ncbi.nih.gov/pub/mmdb/cdd/family_superfamily_links -O ./data/family_superfamily_links + wget https://ftp.ncbi.nih.gov/pub/mmdb/cdd/cddannot.dat.gz -O ./data/cddannot.dat.gz && gzip -d ./data/cddannot.dat.gz + wget https://ftp.ncbi.nih.gov/pub/mmdb/cdd/cddannot_generic.dat.gz -O ./data/cddannot_generic.dat.gz && gzip -d ./data/cddannot_generic.dat.gz + wget https://ftp.ncbi.nih.gov/pub/mmdb/cdd/bitscore_specific.txt -O ./data/bitscore_specific.txt + fi + + echo "Finish" + + """ + + stub: + """ + mkdir output/cdd_databases/ + """ +} diff --git a/modules/nf-core/blast/cdddownloader/meta.yml b/modules/nf-core/blast/cdddownloader/meta.yml new file mode 100644 index 000000000000..54b72eb4832e --- /dev/null +++ b/modules/nf-core/blast/cdddownloader/meta.yml @@ -0,0 +1,83 @@ +name: "blast_cdddownloader" +description: CDD databases downloader +keywords: + - cdd + - rpsblast + - databases + - metadata + - wget + - tar +tools: + - blast: + description: | + BLAST+ is a new suite of BLAST tools that utilizes the NCBI C++ Toolkit. + 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: + - db_prefix: + type: string + description: | + Specify the database to be downloaded from https://ftp.ncbi.nih.gov/pub/mmdb/cdd/little_endian/ + pattern: "Cdd|Cdd_NCBI|Cog|Kog|Pfam|Prk|Smart|Tigr" + - download_path: + type: directory + description: | + The path where the databases should be downloaded + pattern: "*/" +output: + db: + - ${download_path}/cdd_databases/: + type: directory + description: | + Directory containing the CDD database files, located at download_path/cdd_databases. + Contains subdirectories for the specified database prefix and a 'data' directory with metadata files. + pattern: "*/cdd_databases/" + versions_wget: + - - ${task.process}: + type: string + description: The name of the process + - wget: + type: string + description: The name of the tool + - wget --version | head -1 | cut -d ' ' -f 3: + type: eval + description: The expression to obtain the version of the tool + versions_tar: + - - ${task.process}: + type: string + description: The name of the process + - untar: + type: string + description: The name of the tool + - tar --version 2>&1 | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -1: + type: eval + description: The expression to obtain the version of the tool + +topics: + versions: + - - ${task.process}: + type: string + description: The name of the process + - wget: + type: string + description: The name of the tool + - wget --version | head -1 | cut -d ' ' -f 3: + type: eval + description: The expression to obtain the version of the tool + - - ${task.process}: + type: string + description: The name of the process + - untar: + type: string + description: The name of the tool + - tar --version 2>&1 | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -1: + type: eval + description: The expression to obtain the version of the tool + +authors: + - "@Ales-ibt" +maintainers: + - "@Ales-ibt" diff --git a/modules/nf-core/blast/cdddownloader/tests/main.nf.test b/modules/nf-core/blast/cdddownloader/tests/main.nf.test new file mode 100644 index 000000000000..ff608411e85e --- /dev/null +++ b/modules/nf-core/blast/cdddownloader/tests/main.nf.test @@ -0,0 +1,98 @@ +nextflow_process { + + name "Test Process BLAST_CDDDOWNLOADER" + script "../main.nf" + process "BLAST_CDDDOWNLOADER" + + tag "modules" + tag "modules_nfcore" + tag "blast" + tag "blast/cdddownloader" + + test("cdddownload - smart") { + when { + process { + """ + input[0] = 'Smart' + input[1] = file("${outputDir}") + """ + } + } + then { + assert process.success + assertAll( + { assert snapshot( + process.out.db, + process.out.findAll { key, val -> key.startsWith("versions") && !key.contains("tar")} + ).match() } + ) + } + } + + test("cdddownload - default Cdd_NCBI") { + when { + process { + """ + input[0] = '' + input[1] = file("${outputDir}") + """ + } + } + then { + assert process.success + assertAll( + { assert snapshot( + process.out.db, + process.out.findAll { key, val -> key.startsWith("versions") && !key.contains("tar")} + ).match() } + ) + } + } + + test("cdddownload - smart - stub") { + + options "-stub" + + when { + process { + """ + input[0] = 'Smart' + input[1] = file("${outputDir}") + """ + } + } + then { + assert process.success + assertAll( + { assert snapshot( + process.out.db, + process.out.findAll { key, val -> key.startsWith("versions") && !key.contains("tar")} + ).match() } + ) + } + + } + + test("cdddownload - default Cdd_NCBI - stub") { + + options "-stub" + + when { + process { + """ + input[0] = '' + input[1] = file("${outputDir}") + """ + } + } + then { + assert process.success + assertAll( + { assert snapshot( + process.out.db, + process.out.findAll { key, val -> key.startsWith("versions") && !key.contains("tar")} + ).match() } + ) + } + } +} diff --git a/modules/nf-core/blast/cdddownloader/tests/main.nf.test.snap b/modules/nf-core/blast/cdddownloader/tests/main.nf.test.snap new file mode 100644 index 000000000000..d5b1d8a20c23 --- /dev/null +++ b/modules/nf-core/blast/cdddownloader/tests/main.nf.test.snap @@ -0,0 +1,221 @@ +{ + "cdddownload - default Cdd_NCBI": { + "content": [ + [ + [ + [ + "Cdd_NCBI.00.aux:md5,2cf6cb9f7f0ef642384d8c14cba3e082", + "Cdd_NCBI.00.freq:md5,4c59913079f18de0f77f4cc8788bdd13", + "Cdd_NCBI.00.loo:md5,bcbe57d5675dc672d4cba582e1278cbe", + "Cdd_NCBI.00.pdb:md5,a1b54a4094f894b0f0cfa1569c4349fc", + "Cdd_NCBI.00.phr:md5,3e7853e6e55ff5a989d4fadbe2c9212e", + "Cdd_NCBI.00.pin:md5,e98d522a0bf488fe1cded992f0a210c6", + "Cdd_NCBI.00.pos:md5,f035257d2cf8b7c604af184fc0a1f572", + "Cdd_NCBI.00.pot:md5,585036ed381f809ea3f4b786a8becfe3", + "Cdd_NCBI.00.psq:md5,1f2c97538c619a3d69a93a42c1bd92c0", + "Cdd_NCBI.00.ptf:md5,cb0bb0df9175d18dc10dd272bd1c2d73", + "Cdd_NCBI.00.pto:md5,df60428e450170375d847fdcd150e010", + "Cdd_NCBI.00.rps:md5,cbd40f7ab89616ad0af3437ba71cec4d", + "Cdd_NCBI.01.aux:md5,480132803643efc067d7c6f152174d91", + "Cdd_NCBI.01.freq:md5,d59c89f4d02b98fe62a946a40321aff5", + "Cdd_NCBI.01.loo:md5,fe5379e3ebc440bb407363a38f7d542f", + "Cdd_NCBI.01.pdb:md5,6120c94ce34efdeb0258fba25125f961", + "Cdd_NCBI.01.phr:md5,dc8d17f1698cd7b518de5753ddc075b2", + "Cdd_NCBI.01.pin:md5,c2a030d3ca4a7a81c806f5944f29f1c9", + "Cdd_NCBI.01.pos:md5,30cbaa24e160c8b601724c883e7f3bb1", + "Cdd_NCBI.01.pot:md5,ac3d1ad2972b44599d9dd1fc5378cac3", + "Cdd_NCBI.01.psq:md5,8df5eca3148179fa06eec5fe033fae0e", + "Cdd_NCBI.01.ptf:md5,389e824f6df828fc315e2724732d7d4b", + "Cdd_NCBI.01.pto:md5,4eb459a5d52852e349040cf724984aa0", + "Cdd_NCBI.01.rps:md5,9466094c94ab9b11b690a47116024419", + "Cdd_NCBI.02.aux:md5,82eaa7e9aae83ee82069d9edc1c39265", + "Cdd_NCBI.02.freq:md5,057a498514f177c30ec8644fadbacf87", + "Cdd_NCBI.02.loo:md5,92a419c852dbc0dc922a7569201d8b73", + "Cdd_NCBI.02.pdb:md5,991d4e3500285fdd79782268967798f9", + "Cdd_NCBI.02.phr:md5,700bf513563027421278e9b55ebcb447", + "Cdd_NCBI.02.pin:md5,a078fdf12716070c1886a5a9b7f49e85", + "Cdd_NCBI.02.pos:md5,66bdddc0fadf5f2f5b748e3cd2dcbdd2", + "Cdd_NCBI.02.pot:md5,f23332ad9e27d78a43d668268da6ad88", + "Cdd_NCBI.02.psq:md5,0b155fc0b9c4ef3359ee9279e5ddfbb8", + "Cdd_NCBI.02.ptf:md5,311588ec68aaad59c053b9632a7e6002", + "Cdd_NCBI.02.pto:md5,5a57bf533a61447d98dc4333cc3754e5", + "Cdd_NCBI.02.rps:md5,ef77d8943522f4c159edde876d5c587b", + "Cdd_NCBI.03.aux:md5,a59087a1ae991fe2c6b0ae6fc9c8f005", + "Cdd_NCBI.03.freq:md5,b2e0afdcb93f9d3b3eaadeeb2e5f0193", + "Cdd_NCBI.03.loo:md5,045cb2a75a56012f86681b680b5de751", + "Cdd_NCBI.03.pdb:md5,0c2021397e6daae4f356bb9a58f53e71", + "Cdd_NCBI.03.phr:md5,c9800c3a7d68e0621f1ce797c86b05fc", + "Cdd_NCBI.03.pin:md5,7873b2b62611338e8356c6e29f8bb116", + "Cdd_NCBI.03.pos:md5,a20343bdff20d95ba97ba8005b45141e", + "Cdd_NCBI.03.pot:md5,22958ea67bfd015e1cb3b02e0017b6e6", + "Cdd_NCBI.03.psq:md5,fccffe1be7cf46ebe72316c7096ff01f", + "Cdd_NCBI.03.ptf:md5,440863b30ed135e65bf6cb9ac9491a42", + "Cdd_NCBI.03.pto:md5,1bef0988747ad4755a71995cb95c971f", + "Cdd_NCBI.03.rps:md5,1165ef5a319b642b9ad61211194dca6f", + "Cdd_NCBI.04.aux:md5,38a366bd85895d99838e35ce088229dc", + "Cdd_NCBI.04.freq:md5,4144c80db0cb99f529f264a6f09f09f9", + "Cdd_NCBI.04.loo:md5,3b60b2314395e63fa68ce13c54b04952", + "Cdd_NCBI.04.pdb:md5,e61e8caa24644465c74d9b0658555d43", + "Cdd_NCBI.04.phr:md5,27456857457af9d7dba0f144e7ee97bb", + "Cdd_NCBI.04.pin:md5,6241ff613a80b6661f48ba8d3a444da5", + "Cdd_NCBI.04.pos:md5,7f073d8d616d85aaba4574056fe46910", + "Cdd_NCBI.04.pot:md5,c8970b13dab458ead44a8a21d0f8d79a", + "Cdd_NCBI.04.psq:md5,819c9df385960414e762992c54db70ae", + "Cdd_NCBI.04.ptf:md5,09cc415f6b53b7781e41cdf8926bd7ef", + "Cdd_NCBI.04.pto:md5,5ee7a4999a5fba7e841936086b6b689c", + "Cdd_NCBI.04.rps:md5,5b7963dce4d05a7ebe151968ec522189", + "Cdd_NCBI.05.aux:md5,1b1252353d7bcacb680a0a27538446e0", + "Cdd_NCBI.05.freq:md5,3ddb8314cfbc474651d43ba463d76d39", + "Cdd_NCBI.05.loo:md5,dbaefdf36c9569c5361b67d76bd86168", + "Cdd_NCBI.05.pdb:md5,0380f49d2f0ba624051e4fab37719baf", + "Cdd_NCBI.05.phr:md5,8af691e75da9496b477e88b3aab4f3c3", + "Cdd_NCBI.05.pin:md5,5acb72e95d93255d945f9adf1052ebb7", + "Cdd_NCBI.05.pos:md5,c1e4800d6bdf8272c4ec4df874c7650e", + "Cdd_NCBI.05.pot:md5,d0eb2c5fa062b7129578ecc338276ce3", + "Cdd_NCBI.05.psq:md5,f73358e4e01b2125eb1c285b405ab04b", + "Cdd_NCBI.05.ptf:md5,544145576ccada56a977d02c50881f84", + "Cdd_NCBI.05.pto:md5,32c711282c2288929a0819551798c73d", + "Cdd_NCBI.05.rps:md5,1f2e7971ea96aae3f3ac42d7e2cd64a3", + "Cdd_NCBI.06.aux:md5,6bab8ea4135a084f711db51424a781b7", + "Cdd_NCBI.06.freq:md5,9deffbbc581705be20a4edf9f9d18931", + "Cdd_NCBI.06.loo:md5,ad399b7414b4df9062a59e8c1c22239a", + "Cdd_NCBI.06.pdb:md5,1767c49a25c6425496a4db3101fe2ca6", + "Cdd_NCBI.06.phr:md5,48b2c5496974f0c85af1716c2e8e41a0", + "Cdd_NCBI.06.pin:md5,3d5c7b9f5b9494c36b0f1fc35196277a", + "Cdd_NCBI.06.pos:md5,450b0b415e47a7ccce9159995a0d822a", + "Cdd_NCBI.06.pot:md5,2771d84055bef1860f4212caa4586d4b", + "Cdd_NCBI.06.psq:md5,e2e4a4288a0b9cc67a3d3cdbe3e72425", + "Cdd_NCBI.06.ptf:md5,fdf6de6fb97b5cf8b1e51c9a09bc3d28", + "Cdd_NCBI.06.pto:md5,f8bf44b73a2cd109c268bcb555801f90", + "Cdd_NCBI.06.rps:md5,84580c4a449fa1b757e50ac8a074b6d5", + "Cdd_NCBI.07.aux:md5,5d4747b8272336053367be85e2972d0b", + "Cdd_NCBI.07.freq:md5,45b8462efb9d5d618a6ae943e8af7f28", + "Cdd_NCBI.07.loo:md5,370c54250d3495016427f94ba974899a", + "Cdd_NCBI.07.pdb:md5,cccd58c9fdfd72b40bf5666f8611667a", + "Cdd_NCBI.07.phr:md5,45effa854f58a243453f45603abf7034", + "Cdd_NCBI.07.pin:md5,7e95ce44f30f8d039c1c35eced8fe293", + "Cdd_NCBI.07.pos:md5,50692f4e27addd95315514bdaa6a4c29", + "Cdd_NCBI.07.pot:md5,e061ac1e37c4b32311d9e84464387f75", + "Cdd_NCBI.07.psq:md5,8b8621e1a2f0732cec898bd79ab66158", + "Cdd_NCBI.07.ptf:md5,a3b39fa3de11646a1f223822ee68f7a6", + "Cdd_NCBI.07.pto:md5,e4f05bce8df339e8eec50b12c143bb83", + "Cdd_NCBI.07.rps:md5,dd8ff67c2524f9d301272d323542ce41", + "Cdd_NCBI.pal:md5,a641307f32eff5e6a44c4a040f2a37fd" + ], + [ + "bitscore_specific.txt:md5,417ab1c1223f42a38cb4c0caee8165f5", + "cddannot.dat:md5,60073848cd4fac905fe5c3a2cacb0dde", + "cddannot_generic.dat:md5,7b1f2e6149469f394b7688cb8685d111", + "cddid.tbl:md5,51831ce178d98aeb2b9b3cdebe9069fe", + "cdtrack.txt:md5,dc94bb9a8e8027d40a344d78828c2661", + "family_superfamily_links:md5,3af9f63b6aa9ab822666c77059fe9c08" + ] + ] + ], + { + "versions_wget": [ + [ + "BLAST_CDDDOWNLOADER", + "wget", + "1.18" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.0" + }, + "timestamp": "2026-01-08T10:00:36.017382" + }, + "cdddownload - smart - stub": { + "content": [ + [ + [ + + ] + ], + { + "versions_wget": [ + [ + "BLAST_CDDDOWNLOADER", + "wget", + "1.18" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.0" + }, + "timestamp": "2026-01-08T10:00:44.61215" + }, + "cdddownload - smart": { + "content": [ + [ + [ + [ + "Smart.aux:md5,4676e5073e915b31726844ed20a768d2", + "Smart.freq:md5,2fa7da70eb0697574ab484d625493b46", + "Smart.loo:md5,c17ab45e4e8e7316adc9148d39e40f4b", + "Smart.pdb:md5,fb463e0703f2bd9b75068b1f0eb71a5d", + "Smart.phr:md5,acb5655696f6948baf7ba8064f7adb58", + "Smart.pin:md5,af1c29799b5c5168481bceb3c6d8cdd8", + "Smart.pos:md5,4a1c4bc186ba31897ac53ecaa2749cdf", + "Smart.pot:md5,8954644983f3cf5d0d24cbcc1a531a21", + "Smart.psq:md5,ca89b28ce23aa7e7246359293ec0a480", + "Smart.ptf:md5,36ec33f1546d8065dce4d7d646b9d707", + "Smart.pto:md5,9a94d5d06ba316923905c46eb30c76bc", + "Smart.rps:md5,fc24261c5717fc4b4696516a330eba5e" + ], + [ + "bitscore_specific.txt:md5,417ab1c1223f42a38cb4c0caee8165f5", + "cddannot.dat:md5,60073848cd4fac905fe5c3a2cacb0dde", + "cddannot_generic.dat:md5,7b1f2e6149469f394b7688cb8685d111", + "cddid.tbl:md5,51831ce178d98aeb2b9b3cdebe9069fe", + "cdtrack.txt:md5,dc94bb9a8e8027d40a344d78828c2661", + "family_superfamily_links:md5,3af9f63b6aa9ab822666c77059fe9c08" + ] + ] + ], + { + "versions_wget": [ + [ + "BLAST_CDDDOWNLOADER", + "wget", + "1.18" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.0" + }, + "timestamp": "2026-01-08T09:58:45.551095" + }, + "cdddownload - default Cdd_NCBI - stub": { + "content": [ + [ + [ + + ] + ], + { + "versions_wget": [ + [ + "BLAST_CDDDOWNLOADER", + "wget", + "1.18" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.0" + }, + "timestamp": "2026-01-08T10:00:52.717569" + } +} \ No newline at end of file