diff --git a/.github/workflows/gpu-tests.yml b/.github/workflows/gpu-tests.yml index 2a341360f04..ad2ae1bf6bc 100644 --- a/.github/workflows/gpu-tests.yml +++ b/.github/workflows/gpu-tests.yml @@ -74,14 +74,14 @@ jobs: nf-test-gpu: runs-on: "gpu" - name: "GPU | ${{ matrix.profile }} | ${{ matrix.shard }}" + name: "GPU Test | ${{ matrix.profile }} | ${{ matrix.shard }}" needs: nf-test-changes if: ${{ needs.nf-test-changes.outputs.modules != '[]' || needs.nf-test-changes.outputs.subworkflows != '[]' }} strategy: fail-fast: false matrix: shard: [1, 2] - profile: [docker_self_hosted, singularity] # conda? + profile: [docker_self_hosted, singularity] env: NXF_ANSI_LOG: false TOTAL_SHARDS: 2 diff --git a/.github/workflows/nf-test.yml b/.github/workflows/nf-test.yml index 036c40f0880..027b661e362 100644 --- a/.github/workflows/nf-test.yml +++ b/.github/workflows/nf-test.yml @@ -76,7 +76,7 @@ jobs: echo ${{ steps.outputs.outputs.subworkflows }} nf-test: runs-on: ${{ github.event.inputs.runners || 'self-hosted' }} - name: "${{ matrix.profile }} | ${{ matrix.shard }}" + name: "Test | ${{ matrix.profile }} | ${{ matrix.shard }}" needs: nf-test-changes if: ${{ needs.nf-test-changes.outputs.modules != '[]' || needs.nf-test-changes.outputs.subworkflows != '[]' }} strategy: diff --git a/modules/nf-core/busco/busco/environment.yml b/modules/nf-core/busco/busco/environment.yml index 5b918b45b2d..53e5e90e394 100644 --- a/modules/nf-core/busco/busco/environment.yml +++ b/modules/nf-core/busco/busco/environment.yml @@ -1,5 +1,6 @@ channels: - conda-forge - bioconda + dependencies: - - bioconda::busco=5.7.1 + - bioconda::busco=5.8.2 diff --git a/modules/nf-core/busco/busco/main.nf b/modules/nf-core/busco/busco/main.nf index f7c1a662d3e..e2da73639e4 100644 --- a/modules/nf-core/busco/busco/main.nf +++ b/modules/nf-core/busco/busco/main.nf @@ -4,14 +4,14 @@ process BUSCO_BUSCO { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/busco:5.7.1--pyhdfd78af_0': - 'biocontainers/busco:5.7.1--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/busco:5.8.2--pyhdfd78af_0': + 'biocontainers/busco:5.8.2--pyhdfd78af_0' }" input: tuple val(meta), path(fasta, stageAs:'tmp_input/*') val mode // Required: One of genome, proteins, or transcriptome - val lineage // Required: lineage to check against, "auto" enables --auto-lineage instead - path busco_lineages_path // Recommended: path to busco lineages - downloads if not set + val lineage // Required: lineage for checking against, or "auto/auto_prok/auto_euk" for enabling auto-lineage + path busco_lineages_path // Recommended: busco lineages file - downloads if not set path config_file // Optional: busco configuration file output: @@ -21,7 +21,7 @@ process BUSCO_BUSCO { tuple val(meta), path("*-busco/*/run_*/full_table.tsv") , emit: full_table , optional: true tuple val(meta), path("*-busco/*/run_*/missing_busco_list.tsv") , emit: missing_busco_list , optional: true tuple val(meta), path("*-busco/*/run_*/single_copy_proteins.faa") , emit: single_copy_proteins , optional: true - tuple val(meta), path("*-busco/*/run_*/busco_sequences") , emit: seq_dir + tuple val(meta), path("*-busco/*/run_*/busco_sequences") , emit: seq_dir , optional: true tuple val(meta), path("*-busco/*/translated_proteins") , emit: translated_dir , optional: true tuple val(meta), path("*-busco") , emit: busco_dir path "versions.yml" , emit: versions @@ -35,8 +35,10 @@ process BUSCO_BUSCO { } def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}-${lineage}" - def busco_config = config_file ? "--config $config_file" : '' - def busco_lineage = lineage.equals('auto') ? '--auto-lineage' : "--lineage_dataset ${lineage}" + def busco_config = config_file ? "--config ${config_file}" : '' + def busco_lineage = lineage in [ 'auto', 'auto_prok', 'auto_euk'] + ? lineage.replaceFirst('auto', '--auto-lineage').replaceAll('_', '-') + : "--lineage_dataset ${lineage}" def busco_lineage_dir = busco_lineages_path ? "--download_path ${busco_lineages_path}" : '' """ # Nextflow changes the container --entrypoint to /bin/bash (container default entrypoint: /usr/local/env-execute) diff --git a/modules/nf-core/busco/busco/meta.yml b/modules/nf-core/busco/busco/meta.yml index 7cb6d69c184..9076b8c43e0 100644 --- a/modules/nf-core/busco/busco/meta.yml +++ b/modules/nf-core/busco/busco/meta.yml @@ -32,7 +32,8 @@ input: pattern: "{genome,proteins,transcriptome}" - - lineage: type: string - description: The BUSCO lineage to use, or "auto" to automatically select lineage + description: The BUSCO lineage to use, or "auto", "auto_prok" or "auto_euk" + to automatically select lineage - - busco_lineages_path: type: directory description: Path to local BUSCO lineages directory. diff --git a/modules/nf-core/busco/busco/tests/main.nf.test b/modules/nf-core/busco/busco/tests/main.nf.test index bb7b49a97c4..7aa131fccc0 100644 --- a/modules/nf-core/busco/busco/tests/main.nf.test +++ b/modules/nf-core/busco/busco/tests/main.nf.test @@ -21,7 +21,7 @@ nextflow_process { file(params.modules_testdata_base_path + 'genomics/prokaryotes/bacteroides_fragilis/genome/genome.fna.gz', checkIfExists: true) ] input[1] = 'genome' - input[2] = 'bacteria_odb10' // Launch with 'auto' to use --auto-lineage, and specified lineages // 'auto' removed from test due to memory issues + input[2] = 'bacteria_odb12' // Launch with 'auto' to use --auto-lineage, and specified lineages // 'auto' removed from test due to memory issues input[3] = [] // Download busco lineage input[4] = [] // No config """ @@ -85,7 +85,7 @@ nextflow_process { ] ] input[1] = 'genome' - input[2] = 'bacteria_odb10' + input[2] = 'bacteria_odb12' input[3] = [] input[4] = [] """ @@ -126,7 +126,6 @@ nextflow_process { } assert snapshot( - process.out.batch_summary[0][1], process.out.full_table[0][1], process.out.missing_busco_list[0][1], process.out.versions[0] @@ -274,7 +273,7 @@ nextflow_process { file(params.modules_testdata_base_path + 'genomics/prokaryotes/candidatus_portiera_aleyrodidarum/genome/proteome.fasta', checkIfExists: true) ] input[1] = 'proteins' - input[2] = 'bacteria_odb10' + input[2] = 'bacteria_odb12' input[3] = [] input[4] = [] """ @@ -336,7 +335,7 @@ nextflow_process { file(params.modules_testdata_base_path + 'genomics/prokaryotes/bacteroides_fragilis/illumina/fasta/test1.contigs.fa.gz', checkIfExists: true) ] input[1] = 'transcriptome' - input[2] = 'bacteria_odb10' + input[2] = 'bacteria_odb12' input[3] = [] input[4] = [] """ @@ -397,7 +396,7 @@ nextflow_process { file(params.modules_testdata_base_path + 'genomics/prokaryotes/bacteroides_fragilis/genome/genome.fna.gz', checkIfExists: true) ] input[1] = 'genome' - input[2] = 'bacteria_odb10' + input[2] = 'bacteria_odb12' input[3] = [] input[4] = [] """ @@ -412,4 +411,4 @@ nextflow_process { } } -} +} \ No newline at end of file diff --git a/modules/nf-core/busco/busco/tests/main.nf.test.snap b/modules/nf-core/busco/busco/tests/main.nf.test.snap index 1b6411bcec7..a177c48e3d4 100644 --- a/modules/nf-core/busco/busco/tests/main.nf.test.snap +++ b/modules/nf-core/busco/busco/tests/main.nf.test.snap @@ -7,7 +7,7 @@ { "id": "test" }, - "test-bacteria_odb10-busco.batch_summary.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + "test-bacteria_odb12-busco.batch_summary.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "1": [ @@ -55,14 +55,14 @@ ] ], "9": [ - "versions.yml:md5,3fc94714b95c2dc15399a4229d9dd1d9" + "versions.yml:md5,c6e638f981761c13cd9ff7663cf707e6" ], "batch_summary": [ [ { "id": "test" }, - "test-bacteria_odb10-busco.batch_summary.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + "test-bacteria_odb12-busco.batch_summary.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "busco_dir": [ @@ -110,121 +110,141 @@ ], "versions": [ - "versions.yml:md5,3fc94714b95c2dc15399a4229d9dd1d9" + "versions.yml:md5,c6e638f981761c13cd9ff7663cf707e6" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.1" }, - "timestamp": "2024-05-03T13:28:04.451297" + "timestamp": "2024-12-11T12:45:52.045550047" }, "test_busco_eukaryote_augustus": { "content": [ "test-eukaryota_odb10-busco.batch_summary.txt:md5,3ea3bdc423a461dae514d816bdc61c89", - "versions.yml:md5,3fc94714b95c2dc15399a4229d9dd1d9" + "versions.yml:md5,c6e638f981761c13cd9ff7663cf707e6" ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.1" }, - "timestamp": "2024-05-03T13:26:36.974986" + "timestamp": "2024-12-11T13:07:45.550722277" }, "test_busco_genome_single_fasta": { "content": [ - "test-bacteria_odb10-busco.batch_summary.txt:md5,21b3fb771cf36be917cc451540d999be", - "full_table.tsv:md5,638fe7590f442c57361554dae330eca1", - "missing_busco_list.tsv:md5,1530af4fe7673a6d001349537bcd410a", - "versions.yml:md5,3fc94714b95c2dc15399a4229d9dd1d9" + "test-bacteria_odb12-busco.batch_summary.txt:md5,e3e503e1540b633d95c273c465945740", + "full_table.tsv:md5,e2a08fdd9b2596322e70c5549d1affc7", + "missing_busco_list.tsv:md5,25417462f2c484f1942c86b21bcf77d0", + "versions.yml:md5,c6e638f981761c13cd9ff7663cf707e6" ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.1" }, - "timestamp": "2024-05-03T13:22:45.07816" + "timestamp": "2024-12-11T12:43:40.359736221" }, "test_busco_genome_multi_fasta": { "content": [ - "test-bacteria_odb10-busco.batch_summary.txt:md5,fcd3c208913e8abda3d6742c43fec5fa", [ - "full_table.tsv:md5,c657edcc7d0de0175869717551df6e83", - "full_table.tsv:md5,638fe7590f442c57361554dae330eca1" + "full_table.tsv:md5,5e7df014f2804789f0d98ae2e09734ad", + "full_table.tsv:md5,e2a08fdd9b2596322e70c5549d1affc7" ], [ - "missing_busco_list.tsv:md5,aceb66e347a353cb7fca8e2a725f9112", - "missing_busco_list.tsv:md5,1530af4fe7673a6d001349537bcd410a" + "missing_busco_list.tsv:md5,d902f10173b463f81e4892ef64f63c50", + "missing_busco_list.tsv:md5,25417462f2c484f1942c86b21bcf77d0" ], - "versions.yml:md5,3fc94714b95c2dc15399a4229d9dd1d9" + "versions.yml:md5,c6e638f981761c13cd9ff7663cf707e6" ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.1" }, - "timestamp": "2024-05-03T13:23:50.255602" + "timestamp": "2024-12-11T17:17:42.175675858" }, "test_busco_eukaryote_metaeuk": { "content": [ "test-eukaryota_odb10-busco.batch_summary.txt:md5,ff6d8277e452a83ce9456bbee666feb6", - "full_table.tsv:md5,92b1b1d5cb5ea0e2093d16f00187e8c7", - "missing_busco_list.tsv:md5,0352e563de290bf804c708323c35a9e3", - "versions.yml:md5,3fc94714b95c2dc15399a4229d9dd1d9" + "full_table.tsv:md5,9bfa9ef7d54ca6ad8bcf8e87729720b1", + "missing_busco_list.tsv:md5,325b529e5a8af2a392d747b4eddc150c", + "versions.yml:md5,c6e638f981761c13cd9ff7663cf707e6" ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.1" }, - "timestamp": "2024-05-03T13:25:38.159041" + "timestamp": "2024-12-11T13:07:17.335085326" }, "test_busco_transcriptome": { "content": [ - "test-bacteria_odb10-busco.batch_summary.txt:md5,8734b3f379c4c0928e5dd4ea1873dc64", - "full_table.tsv:md5,1b2ce808fdafa744c56b5f781551272d", - "missing_busco_list.tsv:md5,a6931b6470262b997b8b99ea0f1d14a4", + "test-bacteria_odb12-busco.batch_summary.txt:md5,6cd69d8a66b5f8b7fd4a9de758e7a739", + "full_table.tsv:md5,73a3a90c2fa8fef41cafed5a607fab66", + "missing_busco_list.tsv:md5,4778855c345f4e409750c9bbd38c5a0c", [ - "1024388at2.faa:md5,797d603d262a6595a112e25b73e878b0", - "1054741at2.faa:md5,cd4b928cba6b19b4437746ba507e7195", - "1093223at2.faa:md5,df9549708e5ffcfaee6a74dd70a0e5dc", - "1151822at2.faa:md5,12726afc1cdc40c13392e1596e93df3a", - "143460at2.faa:md5,d887431fd988a5556a523440f02d9594", - "1491686at2.faa:md5,d03362d19979b27306c192f1c74a84e5", - "1504821at2.faa:md5,4f5f6e5c57bac0092c1d85ded73d7e67", - "1574817at2.faa:md5,1153e55998c2929eacad2aed7d08d248", - "1592033at2.faa:md5,bb7a59e5f3a57ba12d10dabf4c77ab57", - "1623045at2.faa:md5,8fe38155feb1802beb97ef7714837bf5", - "1661836at2.faa:md5,6c6d592c2fbb0d7a4e5e1f47a15644f0", - "1674344at2.faa:md5,bb41b44e53565a54cadf0b780532fe08", - "1698718at2.faa:md5,f233860000028eb00329aa85236c71e5", - "1990650at2.faa:md5,34a2d29c5f8b6253159ddb7a43fa1829", - "223233at2.faa:md5,dec6705c7846c989296e73942f953cbc", - "402899at2.faa:md5,acc0f271f9a586d2ce1ee41669b22999", - "505485at2.faa:md5,aa0391f8fa5d9bd19b30d844d5a99845", - "665824at2.faa:md5,47f8ad43b6a6078206feb48c2e552793", - "776861at2.faa:md5,f8b90c13f7c6be828dea3bb920195e3d", - "874197at2.faa:md5,8d22a35a768debe6f376fc695d233a69", - "932854at2.faa:md5,2eff2de1ab83b22f3234a529a44e22bb", - "95696at2.faa:md5,247bfd1aef432f7b5456307768e9149c" + "9767721at2.faa:md5,1731738ca153959391f8302fd5a3679f", + "9778364at2.faa:md5,7a19a6b6696ae53efce30457b4dd1ab2", + "9782003at2.faa:md5,65d2a613c903852681981f8e8427dc70", + "9790352at2.faa:md5,5e18cfb68122dff7a61c5517246223fc", + "9791908at2.faa:md5,707ef4501f93a6e0dc217e037f26da54", + "9793681at2.faa:md5,e361d654145e70f06c386e75ad90f943", + "9800696at2.faa:md5,9e2f431e4aada7bdc2c317747105b874", + "9801107at2.faa:md5,83933b1426fc9abfe8891c49838cd02f", + "9801213at2.faa:md5,ec340354a86728189c3d1a294c0ccbad", + "9801753at2.faa:md5,39c09bd8a831c90aab44ded14c56d0e6", + "9802065at2.faa:md5,8361fa013dc1cd29af938c9d5ffebfe4", + "9802219at2.faa:md5,9e23aed07790f460da634f7f6132e73d", + "9802304at2.faa:md5,86b259197441716075f3d3d18f8743ba", + "9802309at2.faa:md5,b4b4613e9b69baa9274140c1b26cc27b", + "9802672at2.faa:md5,6c6d592c2fbb0d7a4e5e1f47a15644f0", + "9803420at2.faa:md5,eec6f7189ce9a596ed6ead06f2229c8a", + "9803541at2.faa:md5,132954cc7bfcb1c1fe9da105867c4b78", + "9803667at2.faa:md5,ec31d499f6b523cb081af6a3284a5a5c", + "9803773at2.faa:md5,efbe4c35075dd8c871827d4e5ac72922", + "9804006at2.faa:md5,fca5b560714ba37be0be3e2597f74c5a", + "9804243at2.faa:md5,3280570e4357fb4daedaea8a066dbf0b", + "9804478at2.faa:md5,98c2cfd8f089812a41a1e66fea630b2d", + "9804933at2.faa:md5,de648025c49061c614c77e7c9ce7ab62", + "9805026at2.faa:md5,eea9da88f3cd718514493d6890bf7660", + "9806637at2.faa:md5,c8a9e0c37a8aeb1fd44db64fd93aa3e1", + "9806651at2.faa:md5,f5abacf8930d78c81fdeb0c91c8681a7", + "9807064at2.faa:md5,1167d5c4c044b4eb82fac5d1955e7130", + "9807233at2.faa:md5,7c8adb6556a7f9a0244e7c7e5f75f20d", + "9807240at2.faa:md5,2eff2de1ab83b22f3234a529a44e22bb", + "9807458at2.faa:md5,bee695d260b2b7f8980a636fed6aa0c0", + "9808036at2.faa:md5,797ca476d2c7820151fec98d2815d6cb", + "9808348at2.faa:md5,4e8573a5d287e01aa4f5de8b48feaa42", + "9808936at2.faa:md5,30333f3f62f8e3d0ea6f6544d49572c6", + "9809052at2.faa:md5,0590efbf94fce0ad212513dcb2e8176f", + "9809084at2.faa:md5,37e6214b4204dc31858e2ef2bad5db4a", + "9809356at2.faa:md5,e18c1d5a4931a25baf7dbd1a40c417dc", + "9809796at2.faa:md5,857aac8a22c00472bfc9add7fde94c5c", + "9810191at2.faa:md5,72b63933bb045b680e0635eb03915cc0", + "9811804at2.faa:md5,da341c24e763a949d16432bb052af321", + "9812272at2.faa:md5,7a54f872dd8243c6814852d40cf1bfc0", + "9812943at2.faa:md5,149da17f067cdce328a73f6364a95b26", + "9813375at2.faa:md5,49835b9f3188434c771a840b628b07f6", + "9814755at2.faa:md5,9b4c4648d250c2e6d04acb78f9cf6df0" ], - "single_copy_proteins.faa:md5,73e2c5d6a9b0f01f2deea3cc5f21b764", - "versions.yml:md5,3fc94714b95c2dc15399a4229d9dd1d9" + "single_copy_proteins.faa:md5,14124def13668c6d9b0d589207754b31", + "versions.yml:md5,c6e638f981761c13cd9ff7663cf707e6" ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.1" }, - "timestamp": "2024-05-03T13:27:53.992893" + "timestamp": "2024-12-11T12:45:43.336777509" }, "test_busco_protein": { "content": [ - "test-bacteria_odb10-busco.batch_summary.txt:md5,f5a782378f9f94a748aa907381fdef91", - "full_table.tsv:md5,812ab6a0496fccab774643cf40c4f2a8", - "missing_busco_list.tsv:md5,aceb66e347a353cb7fca8e2a725f9112", - "versions.yml:md5,3fc94714b95c2dc15399a4229d9dd1d9" + "test-bacteria_odb12-busco.batch_summary.txt:md5,44d4cdebd61a3c8e8981ddf1829f83b3", + "full_table.tsv:md5,696bae3f377fd5dbaf19f1c522088d93", + "missing_busco_list.tsv:md5,d902f10173b463f81e4892ef64f63c50", + "versions.yml:md5,c6e638f981761c13cd9ff7663cf707e6" ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.1" }, - "timestamp": "2024-05-03T13:27:12.724862" + "timestamp": "2024-12-11T12:45:16.960592213" } } \ No newline at end of file diff --git a/modules/nf-core/fastqc/main.nf b/modules/nf-core/fastqc/main.nf index 752c3a10c6a..033f4154a41 100644 --- a/modules/nf-core/fastqc/main.nf +++ b/modules/nf-core/fastqc/main.nf @@ -1,5 +1,5 @@ process FASTQC { - tag "$meta.id" + tag "${meta.id}" label 'process_medium' conda "${moduleDir}/environment.yml" @@ -19,30 +19,30 @@ process FASTQC { task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" // Make list of old name and new name pairs to use for renaming in the bash while loop def old_new_pairs = reads instanceof Path || reads.size() == 1 ? [[ reads, "${prefix}.${reads.extension}" ]] : reads.withIndex().collect { entry, index -> [ entry, "${prefix}_${index + 1}.${entry.extension}" ] } - def rename_to = old_new_pairs*.join(' ').join(' ') + def rename_to = old_new_pairs*.join(' ').join(' ') def renamed_files = old_new_pairs.collect{ _old_name, new_name -> new_name }.join(' ') // The total amount of allocated RAM by FastQC is equal to the number of threads defined (--threads) time the amount of RAM defined (--memory) // https://github.com/s-andrews/FastQC/blob/1faeea0412093224d7f6a07f777fad60a5650795/fastqc#L211-L222 // Dividing the task.memory by task.cpu allows to stick to requested amount of RAM in the label - def memory_in_mb = MemoryUnit.of("${task.memory}").toUnit('MB') / task.cpus + def memory_in_mb = task.memory ? task.memory.toUnit('MB').toFloat() / task.cpus : null // FastQC memory value allowed range (100 - 10000) def fastqc_memory = memory_in_mb > 10000 ? 10000 : (memory_in_mb < 100 ? 100 : memory_in_mb) """ - printf "%s %s\\n" $rename_to | while read old_name new_name; do + printf "%s %s\\n" ${rename_to} | while read old_name new_name; do [ -f "\${new_name}" ] || ln -s \$old_name \$new_name done fastqc \\ - $args \\ - --threads $task.cpus \\ - --memory $fastqc_memory \\ - $renamed_files + ${args} \\ + --threads ${task.cpus} \\ + --memory ${fastqc_memory} \\ + ${renamed_files} cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/fastqc/tests/tags.yml b/modules/nf-core/fastqc/tests/tags.yml deleted file mode 100644 index 7834294ba0a..00000000000 --- a/modules/nf-core/fastqc/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -fastqc: - - modules/nf-core/fastqc/** diff --git a/modules/nf-core/parabricks/applybqsr/main.nf b/modules/nf-core/parabricks/applybqsr/main.nf index c4900b3f14f..fd1128e44e0 100644 --- a/modules/nf-core/parabricks/applybqsr/main.nf +++ b/modules/nf-core/parabricks/applybqsr/main.nf @@ -1,5 +1,5 @@ process PARABRICKS_APPLYBQSR { - tag "$meta.id" + tag "${meta.id}" label 'process_high' label 'process_gpu' stageInMode 'copy' @@ -26,21 +26,21 @@ process PARABRICKS_APPLYBQSR { if (workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1) { error "Parabricks module does not support Conda. Please use Docker / Singularity / Podman instead." } - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" def interval_command = intervals ? intervals.collect{"--interval-file $it"}.join(' ') : "" - def num_gpus = task.accelerator ? "--num-gpus $task.accelerator.request" : '' + def num_gpus = task.accelerator ? "--num-gpus $task.accelerator.request" : '' """ pbrun \\ applybqsr \\ - --ref $fasta \\ - --in-bam $bam \\ - --in-recal-file $bqsr_table \\ - $interval_command \\ + --ref ${fasta} \\ + --in-bam ${bam} \\ + --in-recal-file ${bqsr_table} \\ + ${interval_command} \\ --out-bam ${prefix}.bam \\ - --num-threads $task.cpus \\ - $num_gpus \\ - $args + --num-threads ${task.cpus} \\ + ${num_gpus} \\ + ${args} cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/parabricks/applybqsr/tests/main.nf.test b/modules/nf-core/parabricks/applybqsr/tests/main.nf.test index 9cecef89358..4942ba96852 100644 --- a/modules/nf-core/parabricks/applybqsr/tests/main.nf.test +++ b/modules/nf-core/parabricks/applybqsr/tests/main.nf.test @@ -10,7 +10,7 @@ nextflow_process { tag "parabricks/applybqsr" tag "gpu" - test("sarscov2 - bam - pe") { + test("sarscov2 | paired-end | [bam]") { when { process { @@ -50,7 +50,7 @@ nextflow_process { } - test("sarscov2 - bam - pe - intervals") { + test("sarscov2 | paired-end | [bam] | intervals") { when { process { @@ -91,7 +91,7 @@ nextflow_process { } } - test("human - cram - pe") { + test("homo_sapiens | paired-end | [cram]") { when { process { @@ -131,7 +131,7 @@ nextflow_process { } - test("human - cram - pe - intervals - stub") { + test("homo_sapiens | paired-end | [cram] | intervals - stub") { options "-stub" @@ -171,7 +171,7 @@ nextflow_process { } - test("sarscov2 - bam - pe - intervals - stub") { + test("sarscov2 | paired-end | [bam] | intervals - stub") { options "-stub" diff --git a/modules/nf-core/parabricks/applybqsr/tests/main.nf.test.snap b/modules/nf-core/parabricks/applybqsr/tests/main.nf.test.snap index e90a1d51324..7908af55f9b 100644 --- a/modules/nf-core/parabricks/applybqsr/tests/main.nf.test.snap +++ b/modules/nf-core/parabricks/applybqsr/tests/main.nf.test.snap @@ -1,5 +1,5 @@ { - "human - cram - pe": { + "homo_sapiens | paired-end | [cram]": { "content": [ "2f11e4fe3390b8ad0a1852616fd1da04", "test.bam.bai", @@ -13,7 +13,7 @@ }, "timestamp": "2024-12-10T08:44:34.058228768" }, - "sarscov2 - bam - pe": { + "sarscov2 | paired-end | [bam]": { "content": [ "894549ee3ced6b5ca2eed2563a985217", "test.bam.bai", @@ -27,7 +27,7 @@ }, "timestamp": "2024-12-10T08:44:17.204736211" }, - "sarscov2 - bam - pe - intervals": { + "sarscov2 | paired-end | [bam] | intervals": { "content": [ "b194021b699cc5cf4b2b1f715e0b7b4c", "test.bam.bai", @@ -41,7 +41,7 @@ }, "timestamp": "2024-12-10T08:44:25.661590103" }, - "sarscov2 - bam - pe - intervals - stub": { + "sarscov2 | paired-end | [bam] | intervals - stub": { "content": [ { "0": [ @@ -90,7 +90,7 @@ }, "timestamp": "2024-12-10T08:44:47.700907318" }, - "human - cram - pe - intervals - stub": { + "homo_sapiens | paired-end | [cram] | intervals - stub": { "content": [ { "0": [ @@ -139,4 +139,4 @@ }, "timestamp": "2024-12-10T08:44:41.08456539" } -} \ No newline at end of file +} diff --git a/modules/nf-core/parabricks/fq2bammeth/tests/main.nf.test b/modules/nf-core/parabricks/fq2bammeth/tests/main.nf.test index ce89e8cac9f..7123c566daf 100644 --- a/modules/nf-core/parabricks/fq2bammeth/tests/main.nf.test +++ b/modules/nf-core/parabricks/fq2bammeth/tests/main.nf.test @@ -19,7 +19,7 @@ nextflow_process { """ input[0] = Channel.of([ [ id:'test' ], // meta map - file('https://github.com/nf-core/test-datasets/raw/methylseq/reference/genome.fa', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/prokaryotes/escherichia_coli/genome/genome.fa', checkIfExists: true) ]) """ } @@ -34,12 +34,12 @@ nextflow_process { input[0] = Channel.of([ [ id:'test', single_end:true ], // meta map [ - file('https://github.com/nf-core/test-datasets/raw/methylseq/testdata/SRR389222_sub1.fastq.gz', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/prokaryotes/escherichia_coli/illumina/SRR389222_sub1.fastq.gz', checkIfExists: true) ] ]) input[1] = Channel.of([ [ id:'test' ], // meta map - file('https://github.com/nf-core/test-datasets/raw/methylseq/reference/genome.fa', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/prokaryotes/escherichia_coli/genome/genome.fa', checkIfExists: true) ]) input[2] = BWAMETH_INDEX.out.index input[3] = [] @@ -68,12 +68,12 @@ nextflow_process { input[0] = Channel.of([ [ id:'test', single_end:true ], // meta map [ - file('https://github.com/nf-core/test-datasets/raw/methylseq/testdata/SRR389222_sub1.fastq.gz', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/prokaryotes/escherichia_coli/illumina/SRR389222_sub1.fastq.gz', checkIfExists: true) ] ]) input[1] = Channel.of([ [ id:'test' ], // meta map - file('https://github.com/nf-core/test-datasets/raw/methylseq/reference/genome.fa', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/prokaryotes/escherichia_coli/genome/genome.fa', checkIfExists: true) ]) input[2] = BWAMETH_INDEX.out.index input[3] = [] @@ -98,13 +98,13 @@ nextflow_process { input[0] = Channel.of([ [ id:'test', single_end:false ], // meta map [ - file('https://github.com/nf-core/test-datasets/raw/methylseq/testdata/Ecoli_10K_methylated_R1.fastq.gz', checkIfExists: true), - file('https://github.com/nf-core/test-datasets/raw/methylseq/testdata/Ecoli_10K_methylated_R2.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/prokaryotes/escherichia_coli/illumina/Ecoli_10K_methylated_R1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/prokaryotes/escherichia_coli/illumina/Ecoli_10K_methylated_R2.fastq.gz', checkIfExists: true), ] ]) input[1] = Channel.of([ [ id:'test' ], // meta map - file('https://github.com/nf-core/test-datasets/raw/methylseq/reference/genome.fa', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/prokaryotes/escherichia_coli/genome/genome.fa', checkIfExists: true) ]) input[2] = BWAMETH_INDEX.out.index input[3] = [] diff --git a/modules/nf-core/vcf2db/environment.yml b/modules/nf-core/vcf2db/environment.yml index 037e15309fd..01fc2793871 100644 --- a/modules/nf-core/vcf2db/environment.yml +++ b/modules/nf-core/vcf2db/environment.yml @@ -6,6 +6,10 @@ channels: dependencies: # renovate: datasource=conda depName=conda-forge/python - conda-forge::python=2.7 + # renovate: datasource=conda depName=conda-forge/python-snappy + - conda-forge::python-snappy=0.5.4 + # renovate: datasource=conda depName=conda-forge/snappy + - conda-forge::snappy=1.1.8 # renovate: datasource=conda depName=bioconda/cyvcf2 - bioconda::cyvcf2=0.20.9 # renovate: datasource=conda depName=bioconda/vcf2db diff --git a/modules/nf-core/vcf2db/main.nf b/modules/nf-core/vcf2db/main.nf index 9e050793e2d..ef0bc32913a 100644 --- a/modules/nf-core/vcf2db/main.nf +++ b/modules/nf-core/vcf2db/main.nf @@ -5,8 +5,8 @@ process VCF2DB { // WARN: Version information not provided by tool on CLI. Please update version string below when bumping container versions. conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/14/14d1257c98f789e23a888e2961673b5b98d89e4d03e6a3efba2b1134ed439f61/data': - 'community.wave.seqera.io/library/python_vcf2db:91f604106ada5cf2' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/30/3013992b36b50c203acfd01b000d37f3753aee640238f6dd39d5e47f58e54d98/data': + 'community.wave.seqera.io/library/python_python-snappy_snappy_cyvcf2_vcf2db:9c1d7f361187f21a' }" input: tuple val(meta), path(vcf), path(ped) diff --git a/subworkflows/nf-core/bam_dedup_umi/main.nf b/subworkflows/nf-core/bam_dedup_umi/main.nf new file mode 100644 index 00000000000..d091a5824fa --- /dev/null +++ b/subworkflows/nf-core/bam_dedup_umi/main.nf @@ -0,0 +1,132 @@ +// +// BAM deduplication with UMI processing +// + +include { BAM_DEDUP_STATS_SAMTOOLS_UMICOLLAPSE as BAM_DEDUP_STATS_SAMTOOLS_UMICOLLAPSE_TRANSCRIPTOME } from '../bam_dedup_stats_samtools_umicollapse' +include { BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS as BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_TRANSCRIPTOME } from '../bam_dedup_stats_samtools_umitools' +include { BAM_DEDUP_STATS_SAMTOOLS_UMICOLLAPSE as BAM_DEDUP_STATS_SAMTOOLS_UMICOLLAPSE_GENOME } from '../bam_dedup_stats_samtools_umicollapse' +include { BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS as BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME } from '../bam_dedup_stats_samtools_umitools' +include { BAM_SORT_STATS_SAMTOOLS } from '../bam_sort_stats_samtools' + +include { UMITOOLS_PREPAREFORRSEM } from '../../../modules/nf-core/umitools/prepareforrsem' +include { SAMTOOLS_SORT } from '../../../modules/nf-core/samtools/sort/main' + +workflow BAM_DEDUP_UMI { + take: + ch_genome_bam // channel: [ val(meta), path(bam), path(bai) ] + ch_fasta // channel: [ val(meta), path(fasta) ] + umi_dedup_tool // string: 'umicollapse' or 'umitools' + umitools_dedup_stats // boolean: whether to generate UMI-tools dedup stats + bam_csi_index // boolean: whether to generate CSI index + ch_transcriptome_bam // channel: [ val(meta), path(bam) ] + ch_transcript_fasta // channel: [ val(meta), path(fasta) ] + + main: + ch_versions = Channel.empty() + + if (umi_dedup_tool != "umicollapse" && umi_dedup_tool != "umitools"){ + error("Unknown umi_dedup_tool '${umi_dedup_tool}'") + } + + // Genome BAM deduplication + if (umi_dedup_tool == "umicollapse") { + BAM_DEDUP_STATS_SAMTOOLS_UMICOLLAPSE_GENOME ( + ch_genome_bam + ) + UMI_DEDUP_GENOME = BAM_DEDUP_STATS_SAMTOOLS_UMICOLLAPSE_GENOME + ch_dedup_log = UMI_DEDUP_GENOME.out.dedup_stats + + } else if (umi_dedup_tool == "umitools") { + BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME ( + ch_genome_bam, + umitools_dedup_stats + ) + UMI_DEDUP_GENOME = BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_GENOME + ch_dedup_log = UMI_DEDUP_GENOME.out.deduplog + } + + // Co-ordinate sort, index and run stats on transcriptome BAM. This takes + // some preparation- we have to coordinate sort the BAM, run the + // deduplication, then restore name sorting and run a script from umitools + // to prepare for rsem or salmon + + // 1. Coordinate sort + + BAM_SORT_STATS_SAMTOOLS ( + ch_transcriptome_bam, + ch_transcript_fasta + ) + ch_sorted_transcriptome_bam = BAM_SORT_STATS_SAMTOOLS.out.bam + .join(BAM_SORT_STATS_SAMTOOLS.out.bai) + + // 2. Transcriptome BAM deduplication + if (umi_dedup_tool == "umicollapse") { + BAM_DEDUP_STATS_SAMTOOLS_UMICOLLAPSE_TRANSCRIPTOME ( + ch_sorted_transcriptome_bam + ) + UMI_DEDUP_TRANSCRIPTOME = BAM_DEDUP_STATS_SAMTOOLS_UMICOLLAPSE_TRANSCRIPTOME + ch_dedup_log = ch_dedup_log.mix(UMI_DEDUP_GENOME.out.dedup_stats) + + } else if (umi_dedup_tool == "umitools") { + BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_TRANSCRIPTOME ( + ch_sorted_transcriptome_bam, + umitools_dedup_stats + ) + UMI_DEDUP_TRANSCRIPTOME = BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_TRANSCRIPTOME + ch_dedup_log = ch_dedup_log.mix(UMI_DEDUP_GENOME.out.deduplog) + } + + // 3. Restore name sorting + SAMTOOLS_SORT ( + UMI_DEDUP_TRANSCRIPTOME.out.bam, + ch_fasta + ) + + // 4. Run prepare_for_rsem.py on paired-end BAM files + // This fixes paired-end reads in name sorted BAM files + // See: https://github.com/nf-core/rnaseq/issues/828 + ended_transcriptome_dedup_bam = SAMTOOLS_SORT.out.bam + .branch { + meta, bam -> + single_end: meta.single_end + return [ meta, bam ] + paired_end: !meta.single_end + return [ meta, bam ] + } + + UMITOOLS_PREPAREFORRSEM ( + ended_transcriptome_dedup_bam.paired_end + .map { meta, bam -> [ meta, bam, [] ] } + ) + + ch_dedup_transcriptome_bam = ended_transcriptome_dedup_bam.single_end + .mix(UMITOOLS_PREPAREFORRSEM.out.bam) + + // Collect files useful for MultiQC into one helpful emission. Don't + // automatically add transcriptome stats- difficult to separate in multiqc + // without a bit more work + + ch_multiqc_files = ch_dedup_log + .mix(UMI_DEDUP_GENOME.out.stats) + .mix(UMI_DEDUP_GENOME.out.flagstat) + .mix(UMI_DEDUP_GENOME.out.idxstats) + .transpose() + .map{it[1]} + + // Record versions + + ch_versions = UMI_DEDUP_GENOME.out.versions + .mix(BAM_SORT_STATS_SAMTOOLS.out.versions) + .mix(UMITOOLS_PREPAREFORRSEM.out.versions) + + emit: + bam = UMI_DEDUP_GENOME.out.bam // channel: [ val(meta), path(bam) ] + bai = bam_csi_index ? UMI_DEDUP_GENOME.out.csi : UMI_DEDUP_GENOME.out.bai // channel: [ val(meta), path(bai) ] + dedup_log = ch_dedup_log // channel: [ val(meta), path(log) ] + stats = UMI_DEDUP_GENOME.out.stats.mix(UMI_DEDUP_TRANSCRIPTOME.out.stats) // channel: [ val(meta), path(stats)] + flagstat = UMI_DEDUP_GENOME.out.flagstat.mix(UMI_DEDUP_TRANSCRIPTOME.out.flagstat) // channel: [ val(meta), path(flagstat)] + idxstats = UMI_DEDUP_GENOME.out.idxstats.mix(UMI_DEDUP_TRANSCRIPTOME.out.idxstats) // channel: [ val(meta), path(idxstats)] + multiqc_files = ch_multiqc_files // channel: file + transcriptome_bam = ch_dedup_transcriptome_bam // channel: [ val(meta), path(bam) ] + versions = ch_versions // channel: [ path(versions.yml) ] +} diff --git a/subworkflows/nf-core/bam_dedup_umi/meta.yml b/subworkflows/nf-core/bam_dedup_umi/meta.yml new file mode 100644 index 00000000000..f88fa2f1c97 --- /dev/null +++ b/subworkflows/nf-core/bam_dedup_umi/meta.yml @@ -0,0 +1,181 @@ +name: "bam_dedup_umi" +description: BAM deduplication with UMI processing for both genome and transcriptome alignments +keywords: + - deduplication + - UMI + - BAM + - genome + - transcriptome + - umicollapse + - umitools + +components: + - umitools/prepareforrsem + - samtools/sort + - bam_dedup_stats_samtools_umicollapse + - bam_dedup_stats_samtools_umitools + - bam_sort_stats_samtools + +input: + - ch_genome_bam: + description: Channel with genome BAM files + structure: + - meta: + type: map + description: Metadata map + - bam: + type: file + description: BAM file + pattern: "*.bam" + - bai: + type: file + description: BAM index file + pattern: "*.bai" + - ch_fasta: + description: Channel with genome FASTA file + structure: + - meta: + type: map + description: Metadata map + - fasta: + type: file + description: Genome FASTA file + pattern: "*.{fa,fasta}" + - umi_dedup_tool: + description: UMI deduplication tool to use + structure: + - value: + type: string + description: Either 'umicollapse' or 'umitools' + - umitools_dedup_stats: + description: Whether to generate UMI-tools deduplication stats + structure: + - value: + type: boolean + description: True or False + - bam_csi_index: + description: Whether to generate CSI index + structure: + - value: + type: boolean + description: True or False + - ch_transcriptome_bam: + description: Channel with transcriptome BAM files + structure: + - meta: + type: map + description: Metadata map + - bam: + type: file + description: BAM file + pattern: "*.bam" + - ch_transcript_fasta: + description: Channel with transcript FASTA file + structure: + - meta: + type: map + description: Metadata map + - fasta: + type: file + description: Transcript FASTA file + pattern: "*.{fa,fasta}" + +output: + - bam: + description: Channel containing deduplicated genome BAM files + structure: + - meta: + type: map + description: Metadata map + - bam: + type: file + description: Deduplicated BAM file + pattern: "*.bam" + - bai: + description: Channel containing indexed BAM (BAI) files + structure: + - meta: + type: map + description: Metadata map + - bai: + type: file + description: BAM index file + pattern: "*.bai" + - csi: + description: Channel containing CSI files (if bam_csi_index is true) + structure: + - meta: + type: map + description: Metadata map + - csi: + type: file + description: CSI index file + pattern: "*.csi" + - dedup_log: + description: Channel containing deduplication log files + structure: + - meta: + type: map + description: Metadata map + - log: + type: file + description: Deduplication log file + pattern: "*.log" + - stats: + description: Channel containing BAM statistics files + structure: + - meta: + type: map + description: Metadata map + - stats: + type: file + description: BAM statistics file + pattern: "*.stats" + - flagstat: + description: Channel containing flagstat files + structure: + - meta: + type: map + description: Metadata map + - flagstat: + type: file + description: Flagstat file + pattern: "*.flagstat" + - idxstats: + description: Channel containing idxstats files + structure: + - meta: + type: map + description: Metadata map + - idxstats: + type: file + description: Idxstats file + pattern: "*.idxstats" + - multiqc_files: + description: Channel containing files for MultiQC + structure: + - file: + type: file + description: File for MultiQC + - transcriptome_bam: + description: Channel containing deduplicated transcriptome BAM files + structure: + - meta: + type: map + description: Metadata map + - bam: + type: file + description: Deduplicated transcriptome BAM file + pattern: "*.bam" + - versions: + description: Channel containing software versions file + structure: + - versions: + type: file + description: File containing versions of the software used + pattern: "versions.yml" + +authors: + - "@pinin4fjords" +maintainers: + - "@pinin4fjords" diff --git a/subworkflows/nf-core/bam_dedup_umi/tests/main.nf.test b/subworkflows/nf-core/bam_dedup_umi/tests/main.nf.test new file mode 100644 index 00000000000..b8e9da9abda --- /dev/null +++ b/subworkflows/nf-core/bam_dedup_umi/tests/main.nf.test @@ -0,0 +1,99 @@ +nextflow_workflow { + + name "Test Workflow BAM_DEDUP_UMI" + script "../main.nf" + workflow "BAM_DEDUP_UMI" + config "./nextflow.config" + + tag "subworkflows" + tag "subworkflows_nfcore" + tag "subworkflows/bam_dedup_umi" + tag "bam_dedup_stats_samtools_umicollapse" + tag "bam_dedup_stats_samtools_umitools" + tag "bam_sort_stats_samtools" + tag "umitools/prepareforrsem" + tag "samtools/sort" + + test("sarscov2_bam_bai - umitools - with transcriptome bams") { + + when { + workflow { + """ + input[0] = [ + [ id:'test'], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.umi.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.umi.sorted.bam.bai', checkIfExists: true) + ] + input[1] = [ + [id:'genome'], + file(params.modules_testdata_base_path + '/genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + input[2] = 'umitools' + input[3] = false + input[4] = false + input[5] = [ + [ id:'test'], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.umi.sorted.bam', checkIfExists: true) ] + input[6] = [ + [id:'genome'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/transcriptome.fasta', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot( + bam(workflow.out.bam[0][1]).getReadsMD5(), + bam(workflow.out.transcriptome_bam[0][1]).getReadsMD5(), + workflow.out.stats, + workflow.out.flagstat, + workflow.out.idxstats, + workflow.out.versions + ).match() }, + { assert path(workflow.out.bai.get(0).get(1)).exists() } + ) + } + + } + + test("sarscov2_bam_bai - umicollapse - no transcriptome bams") { + + when { + workflow { + """ + input[0] = [ + [ id:'test'], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.umi.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.umi.sorted.bam.bai', checkIfExists: true) + ] + input[1] = [ + [id:'genome'], + file(params.modules_testdata_base_path + '/genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + input[2] = 'umicollapse' + input[3] = false + input[4] = false + input[5] = Channel.empty() + input[6] = Channel.empty() + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot( + bam(workflow.out.bam[0][1]).getReadsMD5(), + workflow.out.stats, + workflow.out.flagstat, + workflow.out.idxstats, + workflow.out.versions + ).match() }, + { assert path(workflow.out.bai.get(0).get(1)).exists() } + ) + } + } +} \ No newline at end of file diff --git a/subworkflows/nf-core/bam_dedup_umi/tests/main.nf.test.snap b/subworkflows/nf-core/bam_dedup_umi/tests/main.nf.test.snap new file mode 100644 index 00000000000..94151f04bb4 --- /dev/null +++ b/subworkflows/nf-core/bam_dedup_umi/tests/main.nf.test.snap @@ -0,0 +1,109 @@ +{ + "sarscov2_bam_bai - umicollapse - no transcriptome bams": { + "content": [ + "c1917631c47d16320d002b867e226a2e", + [ + [ + { + "id": "test" + }, + "test.umi_dedup.genome.sorted.bam.stats:md5,a03e635b85a846a2650c7b747926c7ed" + ] + ], + [ + [ + { + "id": "test" + }, + "test.umi_dedup.genome.sorted.bam.flagstat:md5,18d602435a02a4d721b78d1812622159" + ] + ], + [ + [ + { + "id": "test" + }, + "test.umi_dedup.genome.sorted.bam.idxstats:md5,85d20a901eef23ca50c323638a2eb602" + ] + ], + [ + "versions.yml:md5,3fe6727d1a90130a932400464233ab5d", + "versions.yml:md5,5d91176bd409dc54816e7e3a7773b5ef", + "versions.yml:md5,7eaf0c81f627dde8e2710a57e19b4d87", + "versions.yml:md5,d6bba04463b79564f053e7e5033025dd", + "versions.yml:md5,f90574f645fd8876ba52b89b2272afc1" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.2" + }, + "timestamp": "2024-12-12T13:04:25.48875" + }, + "sarscov2_bam_bai - umitools - with transcriptome bams": { + "content": [ + "c1917631c47d16320d002b867e226a2e", + "fe38ce657d4208a850702bdbfaa062ca", + [ + [ + { + "id": "test" + }, + "test.umi_dedup.genome.sorted.bam.stats:md5,a03e635b85a846a2650c7b747926c7ed" + ], + [ + { + "id": "test" + }, + "test.umi_dedup.transcriptome.sorted.bam.stats:md5,720f03daf649606a50c2cccbf135edc5" + ] + ], + [ + [ + { + "id": "test" + }, + "test.umi_dedup.genome.sorted.bam.flagstat:md5,18d602435a02a4d721b78d1812622159" + ], + [ + { + "id": "test" + }, + "test.umi_dedup.transcriptome.sorted.bam.flagstat:md5,18d602435a02a4d721b78d1812622159" + ] + ], + [ + [ + { + "id": "test" + }, + "test.umi_dedup.genome.sorted.bam.idxstats:md5,85d20a901eef23ca50c323638a2eb602" + ], + [ + { + "id": "test" + }, + "test.umi_dedup.transcriptome.sorted.bam.idxstats:md5,85d20a901eef23ca50c323638a2eb602" + ] + ], + [ + "versions.yml:md5,017dce06e6fadba312ce46808e2b19ff", + "versions.yml:md5,0ca2bd583dd1951c792b526f768db343", + "versions.yml:md5,1e761d924c3e0f35284799aa566e7c1a", + "versions.yml:md5,43e34c4518b8d546b632b372bc282ac4", + "versions.yml:md5,9d7724974d6dc288b485b5509c89297b", + "versions.yml:md5,a4562f4cc5d04041a79ba57761e231d9", + "versions.yml:md5,acfef82b716e50563fb22f47f33de00a", + "versions.yml:md5,afd68b9511aecba9cc5d6f7dd4c34bbd", + "versions.yml:md5,c2fda58ea2b120a510502b9db24d8a16", + "versions.yml:md5,d531cd7e744b2f95659bdb544f2cd8a5", + "versions.yml:md5,e22174a7d3003395e8e8c34ebfba1719" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.2" + }, + "timestamp": "2024-12-12T13:04:12.182087" + } +} \ No newline at end of file diff --git a/subworkflows/nf-core/bam_dedup_umi/tests/nextflow.config b/subworkflows/nf-core/bam_dedup_umi/tests/nextflow.config new file mode 100644 index 00000000000..cd10b5c785a --- /dev/null +++ b/subworkflows/nf-core/bam_dedup_umi/tests/nextflow.config @@ -0,0 +1,38 @@ +process { + withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMI(COLLAPSE|TOOLS)_GENOME:UMI(COLLAPSE|TOOLS_DEDUP)' { + ext.prefix = { "${meta.id}_umi_dedup.genome" } + } + + withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMI(COLLAPSE|TOOLS)_TRANSCRIPTOME:UMI(COLLAPSE|TOOLS_DEDUP)' { + ext.prefix = { "${meta.id}.umi_dedup.transcriptome.sorted" } + } + + withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMI(COLLAPSE|TOOLS)_GENOME:UMI(COLLAPSE|TOOLS_DEDUP)' { + ext.prefix = { "${meta.id}.umi_dedup.genome.sorted" } + } + + withName: 'UMITOOLS_PREPAREFORRSEM' { + ext.prefix = { "${meta.id}_preparedforrsem" } + } + + withName: 'BAM_DEDUP_UMI:SAMTOOLS_SORT' { + ext.args = '-n' + ext.prefix = { "${meta.id}.umi_dedup.transcriptome" } + } + + withName: 'BAM_DEDUP_UMI:BAM_SORT_STATS_SAMTOOLS:SAMTOOLS_SORT' { + ext.prefix = { "${meta.id}.transcriptome.sorted" } + } + + withName: 'BAM_DEDUP_UMI:BAM_SORT_STATS_SAMTOOLS:BAM_STATS_SAMTOOLS:.*' { + ext.prefix = { "${meta.id}.transcriptome.sorted.bam" } + } + + withName: 'BAM_DEDUP_UMI:BAM_DEDUP_STATS_SAMTOOLS_UMI(COLLAPSE|TOOLS)_TRANSCRIPTOME:BAM_STATS_SAMTOOLS:.*' { + ext.prefix = { "${meta.id}.umi_dedup.transcriptome.sorted.bam" } + } + + withName: 'BAM_DEDUP_UMI:BAM_DEDUP_STATS_SAMTOOLS_UMI(COLLAPSE|TOOLS)_GENOME:BAM_STATS_SAMTOOLS:.*' { + ext.prefix = { "${meta.id}.umi_dedup.genome.sorted.bam" } + } +} diff --git a/subworkflows/nf-core/fasta_gxf_busco_plot/tests/main.nf.test.snap b/subworkflows/nf-core/fasta_gxf_busco_plot/tests/main.nf.test.snap index 89604dc25c0..5ae259f2a72 100644 --- a/subworkflows/nf-core/fasta_gxf_busco_plot/tests/main.nf.test.snap +++ b/subworkflows/nf-core/fasta_gxf_busco_plot/tests/main.nf.test.snap @@ -46,9 +46,9 @@ ], "12": [ - "versions.yml:md5,36b11c442943567e471af0abd474a10b", + "versions.yml:md5,624e4661a636558db4521457fcddf6dd", "versions.yml:md5,9435355f913e283f60b4fb7ef77dd52a", - "versions.yml:md5,e9d65e2f2f13175e99c5b7f4ae1013b9" + "versions.yml:md5,98062b1a1c90be0537d21ccfbf08bc64" ], "2": [ @@ -172,17 +172,17 @@ ], "versions": [ - "versions.yml:md5,36b11c442943567e471af0abd474a10b", + "versions.yml:md5,624e4661a636558db4521457fcddf6dd", "versions.yml:md5,9435355f913e283f60b4fb7ef77dd52a", - "versions.yml:md5,e9d65e2f2f13175e99c5b7f4ae1013b9" + "versions.yml:md5,98062b1a1c90be0537d21ccfbf08bc64" ] } ], "meta": { - "nf-test": "0.9.0", + "nf-test": "0.9.2", "nextflow": "24.10.1" }, - "timestamp": "2024-11-25T10:31:03.980517" + "timestamp": "2024-12-11T12:47:54.913113837" }, "candidatus_portiera_aleyrodidarum - bacteroides_fragilis - genome": { "content": [ @@ -201,7 +201,7 @@ "mode": "genome", "lineage": "bacteria_odb10" }, - "test-bacteria_odb10-busco.batch_summary.txt:md5,a1186bc25448ac1949bf7790810f7161" + "test-bacteria_odb10-busco.batch_summary.txt:md5,30d9e8403e21e0ac7fa9574a4a7ca825" ], [ { @@ -235,21 +235,21 @@ "mode": "proteins", "lineage": "bacteria_odb10" }, - "test-bacteria_odb10-busco.batch_summary.txt:md5,995127c0caecb36205dbf21aa2f9f8a8" + "test-bacteria_odb10-busco.batch_summary.txt:md5,7b5c7ffb03af12b3854b00d31e2044b0" ] ], [ "versions.yml:md5,05d8022e3afb0d5642ed17147b991730", - "versions.yml:md5,36b11c442943567e471af0abd474a10b", "versions.yml:md5,53987b35fc275297efdaf525937fdca3", + "versions.yml:md5,624e4661a636558db4521457fcddf6dd", "versions.yml:md5,9435355f913e283f60b4fb7ef77dd52a", - "versions.yml:md5,e9d65e2f2f13175e99c5b7f4ae1013b9" + "versions.yml:md5,98062b1a1c90be0537d21ccfbf08bc64" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.1" }, - "timestamp": "2024-05-13T16:39:04.376704" + "timestamp": "2024-12-11T12:47:41.989229128" } } \ No newline at end of file diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/main.nf b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/main.nf index 9c355a5e328..304a40bd142 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/main.nf +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/main.nf @@ -1,7 +1,6 @@ // // Read QC, UMI extraction and trimming // - include { FASTQC as FASTQC_RAW } from '../../../modules/nf-core/fastqc/main' include { FASTQC as FASTQC_TRIM } from '../../../modules/nf-core/fastqc/main' include { UMITOOLS_EXTRACT } from '../../../modules/nf-core/umitools/extract/main' @@ -10,26 +9,31 @@ include { FASTP } from '../../../modules/nf-core/fastp/main' // // Function that parses fastp json output file to get total number of reads after trimming // -import groovy.json.JsonSlurper def getFastpReadsAfterFiltering(json_file, min_num_reads) { if ( workflow.stubRun ) { return min_num_reads } - def Map json = (Map) new JsonSlurper().parseText(json_file.text).get('summary') + def json = new groovy.json.JsonSlurper().parseText(json_file.text).get('summary') return json['after_filtering']['total_reads'].toLong() } -def getFastpAdapterSequence(json_file){ - - if ( workflow.stubRun ) { return "" } +def getFastpAdapterSequence(json_file) { + // Handle stub runs + if (workflow.stubRun) { + return "" + } - def Map json = (Map) new JsonSlurper().parseText(json_file.text) - try{ - adapter = json['adapter_cutting']['read1_adapter_sequence'] - } catch(Exception ex){ - adapter = "" + // Ensure the input file is valid and parse the JSON + def adapter = "" + try { + def json = new groovy.json.JsonSlurper().parseText(json_file.text) + adapter = json?.adapter_cutting?.read1_adapter_sequence ?: "" + } catch (Exception ex) { + // Log the exception or handle it as needed + println "Error parsing JSON or retrieving adapter sequence: ${ex.message}" } + return adapter } @@ -47,9 +51,20 @@ workflow FASTQ_FASTQC_UMITOOLS_FASTP { min_trimmed_reads // integer: > 0 main: - ch_versions = Channel.empty() - fastqc_raw_html = Channel.empty() - fastqc_raw_zip = Channel.empty() + ch_versions = Channel.empty() + fastqc_raw_html = Channel.empty() + fastqc_raw_zip = Channel.empty() + umi_log = Channel.empty() + trim_json = Channel.empty() + trim_html = Channel.empty() + trim_log = Channel.empty() + trim_reads_fail = Channel.empty() + trim_reads_merged = Channel.empty() + fastqc_trim_html = Channel.empty() + fastqc_trim_zip = Channel.empty() + trim_read_count = Channel.empty() + adapter_seq = Channel.empty() + if (!skip_fastqc) { FASTQC_RAW ( reads @@ -60,7 +75,6 @@ workflow FASTQ_FASTQC_UMITOOLS_FASTP { } umi_reads = reads - umi_log = Channel.empty() if (with_umi && !skip_umi_extract) { UMITOOLS_EXTRACT ( reads @@ -75,24 +89,14 @@ workflow FASTQ_FASTQC_UMITOOLS_FASTP { .out .reads .map { - meta, reads -> - meta.single_end ? [ meta, reads ] : [ meta + [single_end: true], reads[umi_discard_read % 2] ] + meta, _reads -> + meta.single_end ? [ meta, _reads ] : [ meta + [single_end: true], _reads[umi_discard_read % 2] ] } .set { umi_reads } } } - trim_reads = umi_reads - trim_json = Channel.empty() - trim_html = Channel.empty() - trim_log = Channel.empty() - trim_reads_fail = Channel.empty() - trim_reads_merged = Channel.empty() - fastqc_trim_html = Channel.empty() - fastqc_trim_zip = Channel.empty() - trim_read_count = Channel.empty() - adapter_seq = Channel.empty() - + trim_reads = umi_reads if (!skip_trimming) { FASTP ( umi_reads, @@ -115,16 +119,16 @@ workflow FASTQ_FASTQC_UMITOOLS_FASTP { .out .reads .join(trim_json) - .map { meta, reads, json -> [ meta, reads, getFastpReadsAfterFiltering(json, min_trimmed_reads.toLong()) ] } + .map { meta, _reads, json -> [ meta, _reads, getFastpReadsAfterFiltering(json, min_trimmed_reads.toLong()) ] } .set { ch_num_trimmed_reads } ch_num_trimmed_reads - .filter { meta, reads, num_reads -> num_reads >= min_trimmed_reads.toLong() } - .map { meta, reads, num_reads -> [ meta, reads ] } + .filter { meta, _reads, num_reads -> num_reads >= min_trimmed_reads.toLong() } + .map { meta, _reads, num_reads -> [ meta, _reads ] } .set { trim_reads } ch_num_trimmed_reads - .map { meta, reads, num_reads -> [ meta, num_reads ] } + .map { meta, _reads, num_reads -> [ meta, num_reads ] } .set { trim_read_count } trim_json @@ -143,22 +147,17 @@ workflow FASTQ_FASTQC_UMITOOLS_FASTP { emit: reads = trim_reads // channel: [ val(meta), [ reads ] ] - fastqc_raw_html // channel: [ val(meta), [ html ] ] fastqc_raw_zip // channel: [ val(meta), [ zip ] ] - umi_log // channel: [ val(meta), [ log ] ] adapter_seq // channel: [ val(meta), [ adapter_seq] ] - trim_json // channel: [ val(meta), [ json ] ] trim_html // channel: [ val(meta), [ html ] ] trim_log // channel: [ val(meta), [ log ] ] trim_reads_fail // channel: [ val(meta), [ fastq.gz ] ] trim_reads_merged // channel: [ val(meta), [ fastq.gz ] ] trim_read_count // channel: [ val(meta), val(count) ] - fastqc_trim_html // channel: [ val(meta), [ html ] ] fastqc_trim_zip // channel: [ val(meta), [ zip ] ] - versions = ch_versions // channel: [ versions.yml ] } diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test index 48ba5f48b30..edf325e6e96 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test @@ -17,8 +17,7 @@ nextflow_workflow { test("sarscov2 paired-end [fastq]") { when { - workflow { - """ + params { skip_fastqc = false with_umi = false skip_umi_extract = false @@ -28,7 +27,10 @@ nextflow_workflow { save_trimmed_fail = false save_merged = false min_trimmed_reads = 1 - + fastp_args = "" + } + workflow { + """ input[0] = Channel.of([ [ id:'test', single_end:false ], // meta map [ @@ -36,15 +38,15 @@ nextflow_workflow { file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ]) - input[1] = skip_fastqc - input[2] = with_umi - input[3] = skip_umi_extract - input[4] = umi_discard_read - input[5] = skip_trimming - input[6] = adapter_fasta - input[7] = save_trimmed_fail - input[8] = save_merged - input[9] = min_trimmed_reads + input[1] = params.skip_fastqc + input[2] = params.with_umi + input[3] = params.skip_umi_extract + input[4] = params.umi_discard_read + input[5] = params.skip_trimming + input[6] = params.adapter_fasta + input[7] = params.save_trimmed_fail + input[8] = params.save_merged + input[9] = params.min_trimmed_reads """ } } @@ -73,11 +75,10 @@ nextflow_workflow { } } - test("skip_fastqc") { + test("sarscov2 paired-end [fastq] | skip_fastqc") { when { - workflow { - """ + params { skip_fastqc = true with_umi = false skip_umi_extract = false @@ -87,7 +88,10 @@ nextflow_workflow { save_trimmed_fail = false save_merged = false min_trimmed_reads = 1 - + fastp_args = "" + } + workflow { + """ input[0] = Channel.of([ [ id:'test', single_end: false ], // meta map [ @@ -95,15 +99,15 @@ nextflow_workflow { file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ]) - input[1] = skip_fastqc - input[2] = with_umi - input[3] = skip_umi_extract - input[4] = umi_discard_read - input[5] = skip_trimming - input[6] = adapter_fasta - input[7] = save_trimmed_fail - input[8] = save_merged - input[9] = min_trimmed_reads + input[1] = params.skip_fastqc + input[2] = params.with_umi + input[3] = params.skip_umi_extract + input[4] = params.umi_discard_read + input[5] = params.skip_trimming + input[6] = params.adapter_fasta + input[7] = params.save_trimmed_fail + input[8] = params.save_merged + input[9] = params.min_trimmed_reads """ } } @@ -132,11 +136,10 @@ nextflow_workflow { } } - test("with_umi") { + test("sarscov2 paired-end [fastq] | with_umi") { when { - workflow { - """ + params { skip_fastqc = false with_umi = true skip_umi_extract = false @@ -146,7 +149,10 @@ nextflow_workflow { save_trimmed_fail = false save_merged = false min_trimmed_reads = 1 - + fastp_args = "" + } + workflow { + """ input[0] = Channel.of([ [ id:'test', single_end:false ], // meta map [ @@ -154,15 +160,15 @@ nextflow_workflow { file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ]) - input[1] = skip_fastqc - input[2] = with_umi - input[3] = skip_umi_extract - input[4] = umi_discard_read - input[5] = skip_trimming - input[6] = adapter_fasta - input[7] = save_trimmed_fail - input[8] = save_merged - input[9] = min_trimmed_reads + input[1] = params.skip_fastqc + input[2] = params.with_umi + input[3] = params.skip_umi_extract + input[4] = params.umi_discard_read + input[5] = params.skip_trimming + input[6] = params.adapter_fasta + input[7] = params.save_trimmed_fail + input[8] = params.save_merged + input[9] = params.min_trimmed_reads """ } } @@ -191,11 +197,10 @@ nextflow_workflow { } - test("skip_umi_extract") { + test("sarscov2 paired-end [fastq] | skip_umi_extract") { when { - workflow { - """ + params { skip_fastqc = false with_umi = true skip_umi_extract = true @@ -205,7 +210,10 @@ nextflow_workflow { save_trimmed_fail = false save_merged = false min_trimmed_reads = 1 - + fastp_args = "" + } + workflow { + """ input[0] = Channel.of([ [ id:'test', single_end:false ], // meta map [ @@ -213,15 +221,15 @@ nextflow_workflow { file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ]) - input[1] = skip_fastqc - input[2] = with_umi - input[3] = skip_umi_extract - input[4] = umi_discard_read - input[5] = skip_trimming - input[6] = adapter_fasta - input[7] = save_trimmed_fail - input[8] = save_merged - input[9] = min_trimmed_reads + input[1] = params.skip_fastqc + input[2] = params.with_umi + input[3] = params.skip_umi_extract + input[4] = params.umi_discard_read + input[5] = params.skip_trimming + input[6] = params.adapter_fasta + input[7] = params.save_trimmed_fail + input[8] = params.save_merged + input[9] = params.min_trimmed_reads """ } } @@ -250,11 +258,10 @@ nextflow_workflow { } } - test("umi_discard_read = 2") { + test("sarscov2 paired-end [fastq] | umi_discard_read = 2") { when { - workflow { - """ + params { skip_fastqc = false with_umi = true skip_umi_extract = true @@ -264,7 +271,10 @@ nextflow_workflow { save_trimmed_fail = false save_merged = false min_trimmed_reads = 1 - + fastp_args = "" + } + workflow { + """ input[0] = Channel.of([ [ id:'test', single_end:false ], // meta map [ @@ -272,15 +282,15 @@ nextflow_workflow { file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ]) - input[1] = skip_fastqc - input[2] = with_umi - input[3] = skip_umi_extract - input[4] = umi_discard_read - input[5] = skip_trimming - input[6] = adapter_fasta - input[7] = save_trimmed_fail - input[8] = save_merged - input[9] = min_trimmed_reads + input[1] = params.skip_fastqc + input[2] = params.with_umi + input[3] = params.skip_umi_extract + input[4] = params.umi_discard_read + input[5] = params.skip_trimming + input[6] = params.adapter_fasta + input[7] = params.save_trimmed_fail + input[8] = params.save_merged + input[9] = params.min_trimmed_reads """ } } @@ -309,11 +319,10 @@ nextflow_workflow { } } - test("skip_trimming") { + test("sarscov2 paired-end [fastq] | skip_trimming") { when { - workflow { - """ + params { skip_fastqc = false with_umi = false skip_umi_extract = false @@ -323,7 +332,10 @@ nextflow_workflow { save_trimmed_fail = false save_merged = false min_trimmed_reads = 1 - + fastp_args = "" + } + workflow { + """ input[0] = Channel.of([ [ id:'test', single_end:false ], // meta map [ @@ -331,15 +343,15 @@ nextflow_workflow { file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ]) - input[1] = skip_fastqc - input[2] = with_umi - input[3] = skip_umi_extract - input[4] = umi_discard_read - input[5] = skip_trimming - input[6] = adapter_fasta - input[7] = save_trimmed_fail - input[8] = save_merged - input[9] = min_trimmed_reads + input[1] = params.skip_fastqc + input[2] = params.with_umi + input[3] = params.skip_umi_extract + input[4] = params.umi_discard_read + input[5] = params.skip_trimming + input[6] = params.adapter_fasta + input[7] = params.save_trimmed_fail + input[8] = params.save_merged + input[9] = params.min_trimmed_reads """ } } @@ -369,13 +381,10 @@ nextflow_workflow { } } - test("save_trimmed_fail") { - - config './nextflow.save_trimmed.config' + test("sarscov2 paired-end [fastq] | save_trimmed_fail") { when { - workflow { - """ + params { skip_fastqc = false with_umi = false skip_umi_extract = false @@ -385,7 +394,10 @@ nextflow_workflow { save_trimmed_fail = true save_merged = false min_trimmed_reads = 1 - + fastp_args = "-e 30" + } + workflow { + """ input[0] = Channel.of([ [ id:'test', single_end:false ], // meta map [ @@ -393,15 +405,15 @@ nextflow_workflow { file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ]) - input[1] = skip_fastqc - input[2] = with_umi - input[3] = skip_umi_extract - input[4] = umi_discard_read - input[5] = skip_trimming - input[6] = adapter_fasta - input[7] = save_trimmed_fail - input[8] = save_merged - input[9] = min_trimmed_reads + input[1] = params.skip_fastqc + input[2] = params.with_umi + input[3] = params.skip_umi_extract + input[4] = params.umi_discard_read + input[5] = params.skip_trimming + input[6] = params.adapter_fasta + input[7] = params.save_trimmed_fail + input[8] = params.save_merged + input[9] = params.min_trimmed_reads """ } } @@ -430,11 +442,10 @@ nextflow_workflow { } } - test("save_merged") { + test("sarscov2 paired-end [fastq] | save_merged") { when { - workflow { - """ + params { skip_fastqc = false with_umi = false skip_umi_extract = false @@ -444,7 +455,10 @@ nextflow_workflow { save_trimmed_fail = false save_merged = true min_trimmed_reads = 1 - + fastp_args = "" + } + workflow { + """ input[0] = Channel.of([ [ id:'test', single_end:false ], // meta map [ @@ -452,15 +466,15 @@ nextflow_workflow { file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ]) - input[1] = skip_fastqc - input[2] = with_umi - input[3] = skip_umi_extract - input[4] = umi_discard_read - input[5] = skip_trimming - input[6] = adapter_fasta - input[7] = save_trimmed_fail - input[8] = save_merged - input[9] = min_trimmed_reads + input[1] = params.skip_fastqc + input[2] = params.with_umi + input[3] = params.skip_umi_extract + input[4] = params.umi_discard_read + input[5] = params.skip_trimming + input[6] = params.adapter_fasta + input[7] = params.save_trimmed_fail + input[8] = params.save_merged + input[9] = params.min_trimmed_reads """ } } @@ -489,12 +503,11 @@ nextflow_workflow { } } - test("min_trimmed_reads = 26") { + test("sarscov2 paired-end [fastq] | min_trimmed_reads = 26") { // Subworkflow should stop after FASTP which trims down to 25 reads when { - workflow { - """ + params { skip_fastqc = false with_umi = false skip_umi_extract = false @@ -504,7 +517,10 @@ nextflow_workflow { save_trimmed_fail = false save_merged = true min_trimmed_reads = 26 - + fastp_args = "" + } + workflow { + """ input[0] = Channel.of([ [ id:'test', single_end:false ], // meta map [ @@ -512,15 +528,15 @@ nextflow_workflow { file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ]) - input[1] = skip_fastqc - input[2] = with_umi - input[3] = skip_umi_extract - input[4] = umi_discard_read - input[5] = skip_trimming - input[6] = adapter_fasta - input[7] = save_trimmed_fail - input[8] = save_merged - input[9] = min_trimmed_reads + input[1] = params.skip_fastqc + input[2] = params.with_umi + input[3] = params.skip_umi_extract + input[4] = params.umi_discard_read + input[5] = params.skip_trimming + input[6] = params.adapter_fasta + input[7] = params.save_trimmed_fail + input[8] = params.save_merged + input[9] = params.min_trimmed_reads """ } } @@ -550,12 +566,10 @@ nextflow_workflow { } test("sarscov2 paired-end [fastq] - stub") { - - options '-stub' + options '-stub-run' when { - workflow { - """ + params { skip_fastqc = false with_umi = false skip_umi_extract = false @@ -565,7 +579,10 @@ nextflow_workflow { save_trimmed_fail = false save_merged = false min_trimmed_reads = 1 - + fastp_args = "" + } + workflow { + """ input[0] = Channel.of([ [ id:'test', single_end:false ], // meta map [ @@ -573,15 +590,15 @@ nextflow_workflow { file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ]) - input[1] = skip_fastqc - input[2] = with_umi - input[3] = skip_umi_extract - input[4] = umi_discard_read - input[5] = skip_trimming - input[6] = adapter_fasta - input[7] = save_trimmed_fail - input[8] = save_merged - input[9] = min_trimmed_reads + input[1] = params.skip_fastqc + input[2] = params.with_umi + input[3] = params.skip_umi_extract + input[4] = params.umi_discard_read + input[5] = params.skip_trimming + input[6] = params.adapter_fasta + input[7] = params.save_trimmed_fail + input[8] = params.save_merged + input[9] = params.min_trimmed_reads """ } } @@ -594,13 +611,11 @@ nextflow_workflow { } } - test("skip_fastqc - stub") { - - options "-stub" + test("sarscov2 paired-end [fastq] | skip_fastqc - stub") { + options "-stub-run" when { - workflow { - """ + params { skip_fastqc = true with_umi = false skip_umi_extract = false @@ -610,7 +625,10 @@ nextflow_workflow { save_trimmed_fail = false save_merged = false min_trimmed_reads = 1 - + fastp_args = "" + } + workflow { + """ input[0] = Channel.of([ [ id:'test', single_end: false ], // meta map [ @@ -618,15 +636,15 @@ nextflow_workflow { file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ]) - input[1] = skip_fastqc - input[2] = with_umi - input[3] = skip_umi_extract - input[4] = umi_discard_read - input[5] = skip_trimming - input[6] = adapter_fasta - input[7] = save_trimmed_fail - input[8] = save_merged - input[9] = min_trimmed_reads + input[1] = params.skip_fastqc + input[2] = params.with_umi + input[3] = params.skip_umi_extract + input[4] = params.umi_discard_read + input[5] = params.skip_trimming + input[6] = params.adapter_fasta + input[7] = params.save_trimmed_fail + input[8] = params.save_merged + input[9] = params.min_trimmed_reads """ } } @@ -639,13 +657,11 @@ nextflow_workflow { } } - test("with_umi - stub") { - - options "-stub" + test("sarscov2 paired-end [fastq] | with_umi - stub") { + options "-stub-run" when { - workflow { - """ + params { skip_fastqc = false with_umi = true skip_umi_extract = false @@ -655,7 +671,10 @@ nextflow_workflow { save_trimmed_fail = false save_merged = false min_trimmed_reads = 1 - + fastp_args = "" + } + workflow { + """ input[0] = Channel.of([ [ id:'test', single_end:false ], // meta map [ @@ -663,15 +682,15 @@ nextflow_workflow { file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ]) - input[1] = skip_fastqc - input[2] = with_umi - input[3] = skip_umi_extract - input[4] = umi_discard_read - input[5] = skip_trimming - input[6] = adapter_fasta - input[7] = save_trimmed_fail - input[8] = save_merged - input[9] = min_trimmed_reads + input[1] = params.skip_fastqc + input[2] = params.with_umi + input[3] = params.skip_umi_extract + input[4] = params.umi_discard_read + input[5] = params.skip_trimming + input[6] = params.adapter_fasta + input[7] = params.save_trimmed_fail + input[8] = params.save_merged + input[9] = params.min_trimmed_reads """ } } @@ -685,13 +704,11 @@ nextflow_workflow { } - test("skip_umi_extract - stub") { - - options "-stub" + test("sarscov2 paired-end [fastq] | skip_umi_extract - stub") { + options "-stub-run" when { - workflow { - """ + params { skip_fastqc = false with_umi = true skip_umi_extract = true @@ -701,7 +718,10 @@ nextflow_workflow { save_trimmed_fail = false save_merged = false min_trimmed_reads = 1 - + fastp_args = "" + } + workflow { + """ input[0] = Channel.of([ [ id:'test', single_end:false ], // meta map [ @@ -709,15 +729,15 @@ nextflow_workflow { file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ]) - input[1] = skip_fastqc - input[2] = with_umi - input[3] = skip_umi_extract - input[4] = umi_discard_read - input[5] = skip_trimming - input[6] = adapter_fasta - input[7] = save_trimmed_fail - input[8] = save_merged - input[9] = min_trimmed_reads + input[1] = params.skip_fastqc + input[2] = params.with_umi + input[3] = params.skip_umi_extract + input[4] = params.umi_discard_read + input[5] = params.skip_trimming + input[6] = params.adapter_fasta + input[7] = params.save_trimmed_fail + input[8] = params.save_merged + input[9] = params.min_trimmed_reads """ } } @@ -730,13 +750,11 @@ nextflow_workflow { } } - test("umi_discard_read = 2 - stub") { - - options "-stub" + test("sarscov2 paired-end [fastq] | umi_discard_read = 2 - stub") { + options "-stub-run" when { - workflow { - """ + params { skip_fastqc = false with_umi = true skip_umi_extract = true @@ -746,7 +764,10 @@ nextflow_workflow { save_trimmed_fail = false save_merged = false min_trimmed_reads = 1 - + fastp_args = "" + } + workflow { + """ input[0] = Channel.of([ [ id:'test', single_end:false ], // meta map [ @@ -754,15 +775,15 @@ nextflow_workflow { file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ]) - input[1] = skip_fastqc - input[2] = with_umi - input[3] = skip_umi_extract - input[4] = umi_discard_read - input[5] = skip_trimming - input[6] = adapter_fasta - input[7] = save_trimmed_fail - input[8] = save_merged - input[9] = min_trimmed_reads + input[1] = params.skip_fastqc + input[2] = params.with_umi + input[3] = params.skip_umi_extract + input[4] = params.umi_discard_read + input[5] = params.skip_trimming + input[6] = params.adapter_fasta + input[7] = params.save_trimmed_fail + input[8] = params.save_merged + input[9] = params.min_trimmed_reads """ } } @@ -775,13 +796,11 @@ nextflow_workflow { } } - test("skip_trimming - stub") { - - options "-stub" + test("sarscov2 paired-end [fastq] | skip_trimming - stub") { + options "-stub-run" when { - workflow { - """ + params { skip_fastqc = false with_umi = false skip_umi_extract = false @@ -791,7 +810,10 @@ nextflow_workflow { save_trimmed_fail = false save_merged = false min_trimmed_reads = 1 - + fastp_args = "" + } + workflow { + """ input[0] = Channel.of([ [ id:'test', single_end:false ], // meta map [ @@ -799,15 +821,15 @@ nextflow_workflow { file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ]) - input[1] = skip_fastqc - input[2] = with_umi - input[3] = skip_umi_extract - input[4] = umi_discard_read - input[5] = skip_trimming - input[6] = adapter_fasta - input[7] = save_trimmed_fail - input[8] = save_merged - input[9] = min_trimmed_reads + input[1] = params.skip_fastqc + input[2] = params.with_umi + input[3] = params.skip_umi_extract + input[4] = params.umi_discard_read + input[5] = params.skip_trimming + input[6] = params.adapter_fasta + input[7] = params.save_trimmed_fail + input[8] = params.save_merged + input[9] = params.min_trimmed_reads """ } } @@ -833,15 +855,11 @@ nextflow_workflow { } } - test("save_trimmed_fail - stub") { - - options "-stub" - - config './nextflow.save_trimmed.config' + test("sarscov2 paired-end [fastq] | save_trimmed_fail - stub") { + options "-stub-run" when { - workflow { - """ + params { skip_fastqc = false with_umi = false skip_umi_extract = false @@ -851,7 +869,10 @@ nextflow_workflow { save_trimmed_fail = true save_merged = false min_trimmed_reads = 1 - + fastp_args = "-e 30" + } + workflow { + """ input[0] = Channel.of([ [ id:'test', single_end:false ], // meta map [ @@ -859,15 +880,15 @@ nextflow_workflow { file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ]) - input[1] = skip_fastqc - input[2] = with_umi - input[3] = skip_umi_extract - input[4] = umi_discard_read - input[5] = skip_trimming - input[6] = adapter_fasta - input[7] = save_trimmed_fail - input[8] = save_merged - input[9] = min_trimmed_reads + input[1] = params.skip_fastqc + input[2] = params.with_umi + input[3] = params.skip_umi_extract + input[4] = params.umi_discard_read + input[5] = params.skip_trimming + input[6] = params.adapter_fasta + input[7] = params.save_trimmed_fail + input[8] = params.save_merged + input[9] = params.min_trimmed_reads """ } } @@ -880,13 +901,11 @@ nextflow_workflow { } } - test("save_merged - stub") { - - options "-stub" + test("sarscov2 paired-end [fastq] | save_merged - stub") { + options "-stub-run" when { - workflow { - """ + params { skip_fastqc = false with_umi = false skip_umi_extract = false @@ -896,7 +915,10 @@ nextflow_workflow { save_trimmed_fail = false save_merged = true min_trimmed_reads = 1 - + fastp_args = "" + } + workflow { + """ input[0] = Channel.of([ [ id:'test', single_end:false ], // meta map [ @@ -904,15 +926,15 @@ nextflow_workflow { file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ]) - input[1] = skip_fastqc - input[2] = with_umi - input[3] = skip_umi_extract - input[4] = umi_discard_read - input[5] = skip_trimming - input[6] = adapter_fasta - input[7] = save_trimmed_fail - input[8] = save_merged - input[9] = min_trimmed_reads + input[1] = params.skip_fastqc + input[2] = params.with_umi + input[3] = params.skip_umi_extract + input[4] = params.umi_discard_read + input[5] = params.skip_trimming + input[6] = params.adapter_fasta + input[7] = params.save_trimmed_fail + input[8] = params.save_merged + input[9] = params.min_trimmed_reads """ } } @@ -925,14 +947,12 @@ nextflow_workflow { } } - test("min_trimmed_reads = 26 - stub") { + test("sarscov2 paired-end [fastq] | min_trimmed_reads = 26 - stub") { // Subworkflow should stop after FASTP which trims down to 25 reads - - options "-stub" + options "-stub-run" when { - workflow { - """ + params { skip_fastqc = false with_umi = false skip_umi_extract = false @@ -942,7 +962,10 @@ nextflow_workflow { save_trimmed_fail = false save_merged = true min_trimmed_reads = 26 - + fastp_args = "" + } + workflow { + """ input[0] = Channel.of([ [ id:'test', single_end:false ], // meta map [ @@ -950,15 +973,15 @@ nextflow_workflow { file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ]) - input[1] = skip_fastqc - input[2] = with_umi - input[3] = skip_umi_extract - input[4] = umi_discard_read - input[5] = skip_trimming - input[6] = adapter_fasta - input[7] = save_trimmed_fail - input[8] = save_merged - input[9] = min_trimmed_reads + input[1] = params.skip_fastqc + input[2] = params.with_umi + input[3] = params.skip_umi_extract + input[4] = params.umi_discard_read + input[5] = params.skip_trimming + input[6] = params.adapter_fasta + input[7] = params.save_trimmed_fail + input[8] = params.save_merged + input[9] = params.min_trimmed_reads """ } } diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap index e7d1f51ed96..bc9b84fc5cc 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap @@ -1,5 +1,5 @@ { - "skip_fastqc": { + "sarscov2 paired-end [fastq] | skip_umi_extract": { "content": [ [ [ @@ -28,7 +28,7 @@ "id": "test", "single_end": false }, - "test.fastp.json:md5,1e0f8e27e71728e2b63fc64086be95cd" + "test.fastp.json:md5,47a1bbd79b21721d81eb457e44fa3e3b" ] ], [ @@ -50,67 +50,53 @@ ], [ - "versions.yml:md5,85bd0117e5778fff18e3920972a296ad" + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", + "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", + "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.2", + "nextflow": "24.10.2" }, - "timestamp": "2024-07-22T16:56:01.933832" + "timestamp": "2024-12-12T14:23:56.776685218" }, - "save_trimmed_fail": { + "sarscov2 paired-end [fastq] | with_umi": { "content": [ [ [ { "id": "test", - "single_end": false - }, - "unspecified" - ] - ], - [ - [ - { - "id": "test", - "single_end": false + "single_end": true }, - [ - "test_1.fastp.fastq.gz:md5,6ff32a64c5188b9a9192be1398c262c7", - "test_2.fastp.fastq.gz:md5,db0cb7c9977e94ac2b4b446ebd017a8a" - ] + "" ] ], [ [ { "id": "test", - "single_end": false + "single_end": true }, - "test.fastp.json:md5,4c3268ddb50ea5b33125984776aa3519" + "test.fastp.fastq.gz:md5,ba8c6c3a7ce718d9a2c5857e2edf53bc" ] ], [ [ { "id": "test", - "single_end": false + "single_end": true }, - 162 + "test.fastp.json:md5,0ed43f6b2e5361e7ed6bc3c0b5d6e89a" ] ], [ [ { "id": "test", - "single_end": false + "single_end": true }, - [ - "test.paired.fail.fastq.gz:md5,409b687c734cedd7a1fec14d316e1366", - "test_1.fail.fastq.gz:md5,4f273cf3159c13f79e8ffae12f5661f6", - "test_2.fail.fastq.gz:md5,f97b9edefb5649aab661fbc9e71fc995" - ] + 99 ] ], [ @@ -120,27 +106,22 @@ ], [ + "versions.yml:md5,01f264f78de3c6d893c449cc6d3cd721", "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.2", + "nextflow": "24.10.2" }, - "timestamp": "2024-07-22T16:57:38.736" + "timestamp": "2024-12-12T14:23:44.160061128" }, - "skip_umi_extract": { + "sarscov2 paired-end [fastq] | skip_trimming - stub": { "content": [ [ - [ - { - "id": "test", - "single_end": false - }, - "unspecified" - ] + ], [ [ @@ -148,10 +129,7 @@ "id": "test", "single_end": false }, - [ - "test_1.fastp.fastq.gz:md5,67b2bbae47f073e05a97a9c2edce23c7", - "test_2.fastp.fastq.gz:md5,25cbdca08e2083dbd4f0502de6b62f39" - ] + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], [ @@ -160,17 +138,26 @@ "id": "test", "single_end": false }, - "test.fastp.json:md5,1e0f8e27e71728e2b63fc64086be95cd" + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], [ - [ - { - "id": "test", - "single_end": false - }, - 198 - ] + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + ], [ @@ -182,18 +169,16 @@ ], [ - "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", - "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.2", + "nextflow": "24.10.2" }, - "timestamp": "2024-07-22T16:56:47.905105" + "timestamp": "2024-12-12T14:32:15.355312216" }, - "umi_discard_read = 2": { + "sarscov2 paired-end [fastq] | umi_discard_read = 2": { "content": [ [ [ @@ -222,7 +207,7 @@ "id": "test", "single_end": false }, - "test.fastp.json:md5,1e0f8e27e71728e2b63fc64086be95cd" + "test.fastp.json:md5,47a1bbd79b21721d81eb457e44fa3e3b" ] ], [ @@ -250,12 +235,12 @@ ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.2", + "nextflow": "24.10.2" }, - "timestamp": "2024-07-22T16:57:05.436744" + "timestamp": "2024-12-12T14:24:09.203612468" }, - "umi_discard_read = 2 - stub": { + "sarscov2 paired-end [fastq] | min_trimmed_reads = 26 - stub": { "content": [ { "0": [ @@ -285,7 +270,7 @@ "id": "test", "single_end": false }, - 1 + 26 ] ], "11": [ @@ -363,7 +348,13 @@ ], "9": [ - + [ + { + "id": "test", + "single_end": false + }, + "test.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] ], "adapter_seq": [ [ @@ -455,14 +446,20 @@ "id": "test", "single_end": false }, - 1 + 26 ] ], "trim_reads_fail": [ ], "trim_reads_merged": [ - + [ + { + "id": "test", + "single_end": false + }, + "test.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] ], "umi_log": [ @@ -475,72 +472,12 @@ } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" - }, - "timestamp": "2024-07-22T16:59:27.273892" - }, - "skip_trimming - stub": { - "content": [ - [ - - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.2", + "nextflow": "24.10.2" }, - "timestamp": "2024-07-22T16:59:39.247758" + "timestamp": "2024-12-12T14:32:39.987530839" }, - "save_merged": { + "sarscov2 paired-end [fastq] | skip_fastqc": { "content": [ [ [ @@ -558,8 +495,8 @@ "single_end": false }, [ - "test_1.fastp.fastq.gz:md5,54b726a55e992a869fd3fa778afe1672", - "test_2.fastp.fastq.gz:md5,29d3b33b869f7b63417b8ff07bb128ba" + "test_1.fastp.fastq.gz:md5,67b2bbae47f073e05a97a9c2edce23c7", + "test_2.fastp.fastq.gz:md5,25cbdca08e2083dbd4f0502de6b62f39" ] ] ], @@ -569,7 +506,7 @@ "id": "test", "single_end": false }, - "test.fastp.json:md5,b712fd68ed0322f4bec49ff2a5237fcc" + "test.fastp.json:md5,47a1bbd79b21721d81eb457e44fa3e3b" ] ], [ @@ -578,106 +515,7 @@ "id": "test", "single_end": false }, - 75 - ] - ], - [ - - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.merged.fastq.gz:md5,c873bb1ab3fa859dcc47306465e749d5" - ] - ], - [ - - ], - [ - "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", - "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", - "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" - }, - "timestamp": "2024-07-22T16:57:57.472342" - }, - "skip_trimming": { - "content": [ - [ - - ], - { - "id": "test", - "single_end": false - }, - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - - ], - [ - "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" - }, - "timestamp": "2024-07-22T16:57:19.875543" - }, - "with_umi": { - "content": [ - [ - [ - { - "id": "test", - "single_end": true - }, - "" - ] - ], - [ - [ - { - "id": "test", - "single_end": true - }, - "test.fastp.fastq.gz:md5,ba8c6c3a7ce718d9a2c5857e2edf53bc" - ] - ], - [ - [ - { - "id": "test", - "single_end": true - }, - "test.fastp.json:md5,d39c5c6d9a2e35fb60d26ced46569af6" - ] - ], - [ - [ - { - "id": "test", - "single_end": true - }, - 99 + 198 ] ], [ @@ -685,89 +523,21 @@ ], [ - ], - [ - "versions.yml:md5,01f264f78de3c6d893c449cc6d3cd721", - "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", - "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", - "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" - }, - "timestamp": "2024-07-22T16:56:26.778625" - }, - "min_trimmed_reads = 26": { - "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "unspecified" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - [ - "test_1.fastp.fastq.gz:md5,54b726a55e992a869fd3fa778afe1672", - "test_2.fastp.fastq.gz:md5,29d3b33b869f7b63417b8ff07bb128ba" - ] - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.fastp.json:md5,b712fd68ed0322f4bec49ff2a5237fcc" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - 75 - ] ], [ ], [ - [ - { - "id": "test", - "single_end": false - }, - "test.merged.fastq.gz:md5,c873bb1ab3fa859dcc47306465e749d5" - ] - ], - [ - - ], - [ - "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", - "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", - "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.2", + "nextflow": "24.10.2" }, - "timestamp": "2024-07-22T16:58:16.36697" + "timestamp": "2024-12-12T14:23:28.044081844" }, - "min_trimmed_reads = 26 - stub": { + "sarscov2 paired-end [fastq] | skip_fastqc - stub": { "content": [ { "0": [ @@ -783,13 +553,7 @@ ] ], "1": [ - [ - { - "id": "test", - "single_end": false - }, - "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "10": [ [ @@ -797,40 +561,20 @@ "id": "test", "single_end": false }, - 26 + 1 ] ], "11": [ - [ - { - "id": "test", - "single_end": false - }, - "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "12": [ - [ - { - "id": "test", - "single_end": false - }, - "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "13": [ - "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", - "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", - "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad" ], "2": [ - [ - { - "id": "test", - "single_end": false - }, - "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "3": [ @@ -875,13 +619,7 @@ ], "9": [ - [ - { - "id": "test", - "single_end": false - }, - "test.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] + ], "adapter_seq": [ [ @@ -893,40 +631,16 @@ ] ], "fastqc_raw_html": [ - [ - { - "id": "test", - "single_end": false - }, - "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "fastqc_raw_zip": [ - [ - { - "id": "test", - "single_end": false - }, - "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "fastqc_trim_html": [ - [ - { - "id": "test", - "single_end": false - }, - "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "fastqc_trim_zip": [ - [ - { - "id": "test", - "single_end": false - }, - "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "reads": [ [ @@ -973,47 +687,42 @@ "id": "test", "single_end": false }, - 26 + 1 ] ], "trim_reads_fail": [ ], "trim_reads_merged": [ - [ - { - "id": "test", - "single_end": false - }, - "test.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] + ], "umi_log": [ ], "versions": [ - "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", - "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", - "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.2", + "nextflow": "24.10.2" }, - "timestamp": "2024-07-22T17:00:16.524361" + "timestamp": "2024-12-12T14:31:39.612937297" }, - "with_umi - stub": { + "sarscov2 paired-end [fastq] | save_merged - stub": { "content": [ { "0": [ [ { "id": "test", - "single_end": true + "single_end": false }, - "test.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + [ + "test_1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] ] ], "1": [ @@ -1029,7 +738,7 @@ [ { "id": "test", - "single_end": true + "single_end": false }, 1 ] @@ -1038,7 +747,7 @@ [ { "id": "test", - "single_end": true + "single_end": false }, "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -1047,13 +756,12 @@ [ { "id": "test", - "single_end": true + "single_end": false }, "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "13": [ - "versions.yml:md5,01f264f78de3c6d893c449cc6d3cd721", "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" @@ -1068,19 +776,13 @@ ] ], "3": [ - [ - { - "id": "test", - "single_end": false - }, - "test.umi_extract.log:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "4": [ [ { "id": "test", - "single_end": true + "single_end": false }, "" ] @@ -1089,7 +791,7 @@ [ { "id": "test", - "single_end": true + "single_end": false }, "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -1098,7 +800,7 @@ [ { "id": "test", - "single_end": true + "single_end": false }, "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -1107,7 +809,7 @@ [ { "id": "test", - "single_end": true + "single_end": false }, "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -1116,13 +818,19 @@ ], "9": [ - + [ + { + "id": "test", + "single_end": false + }, + "test.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] ], "adapter_seq": [ [ { "id": "test", - "single_end": true + "single_end": false }, "" ] @@ -1149,7 +857,7 @@ [ { "id": "test", - "single_end": true + "single_end": false }, "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -1158,7 +866,7 @@ [ { "id": "test", - "single_end": true + "single_end": false }, "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -1167,16 +875,19 @@ [ { "id": "test", - "single_end": true + "single_end": false }, - "test.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + [ + "test_1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] ] ], "trim_html": [ [ { "id": "test", - "single_end": true + "single_end": false }, "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -1185,7 +896,7 @@ [ { "id": "test", - "single_end": true + "single_end": false }, "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -1194,7 +905,7 @@ [ { "id": "test", - "single_end": true + "single_end": false }, "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -1203,7 +914,7 @@ [ { "id": "test", - "single_end": true + "single_end": false }, 1 ] @@ -1212,19 +923,18 @@ ], "trim_reads_merged": [ - - ], - "umi_log": [ [ { "id": "test", "single_end": false }, - "test.umi_extract.log:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] + ], + "umi_log": [ + ], "versions": [ - "versions.yml:md5,01f264f78de3c6d893c449cc6d3cd721", "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" @@ -1232,12 +942,12 @@ } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.2", + "nextflow": "24.10.2" }, - "timestamp": "2024-07-22T16:58:56.42517" + "timestamp": "2024-12-12T14:32:31.825964203" }, - "skip_fastqc - stub": { + "sarscov2 paired-end [fastq] - stub": { "content": [ { "0": [ @@ -1253,7 +963,13 @@ ] ], "1": [ - + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], "10": [ [ @@ -1265,16 +981,36 @@ ] ], "11": [ - + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], "12": [ - + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], "13": [ - "versions.yml:md5,85bd0117e5778fff18e3920972a296ad" + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", + "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", + "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" ], "2": [ - + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], "3": [ @@ -1331,16 +1067,40 @@ ] ], "fastqc_raw_html": [ - + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], "fastqc_raw_zip": [ - + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], "fastqc_trim_html": [ - + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], "fastqc_trim_zip": [ - + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], "reads": [ [ @@ -1400,7 +1160,9 @@ ], "versions": [ - "versions.yml:md5,85bd0117e5778fff18e3920972a296ad" + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", + "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", + "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" ] } ], @@ -1408,9 +1170,9 @@ "nf-test": "0.9.0", "nextflow": "24.04.3" }, - "timestamp": "2024-07-22T16:58:41.207281" + "timestamp": "2024-07-22T16:58:29.296468" }, - "save_merged - stub": { + "sarscov2 paired-end [fastq] | umi_discard_read = 2 - stub": { "content": [ { "0": [ @@ -1518,13 +1280,7 @@ ], "9": [ - [ - { - "id": "test", - "single_end": false - }, - "test.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] + ], "adapter_seq": [ [ @@ -1623,13 +1379,7 @@ ], "trim_reads_merged": [ - [ - { - "id": "test", - "single_end": false - }, - "test.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] + ], "umi_log": [ @@ -1642,12 +1392,46 @@ } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.2", + "nextflow": "24.10.2" }, - "timestamp": "2024-07-22T17:00:03.695409" + "timestamp": "2024-12-12T14:32:07.840128843" }, - "sarscov2 paired-end [fastq]": { + "sarscov2 paired-end [fastq] | skip_trimming": { + "content": [ + [ + + ], + { + "id": "test", + "single_end": false + }, + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.2" + }, + "timestamp": "2024-12-12T14:24:19.774510678" + }, + "sarscov2 paired-end [fastq] | save_trimmed_fail": { "content": [ [ [ @@ -1665,8 +1449,8 @@ "single_end": false }, [ - "test_1.fastp.fastq.gz:md5,67b2bbae47f073e05a97a9c2edce23c7", - "test_2.fastp.fastq.gz:md5,25cbdca08e2083dbd4f0502de6b62f39" + "test_1.fastp.fastq.gz:md5,6ff32a64c5188b9a9192be1398c262c7", + "test_2.fastp.fastq.gz:md5,db0cb7c9977e94ac2b4b446ebd017a8a" ] ] ], @@ -1676,7 +1460,7 @@ "id": "test", "single_end": false }, - "test.fastp.json:md5,1e0f8e27e71728e2b63fc64086be95cd" + "test.fastp.json:md5,21fdf3cfd611a7959b93318f25d126e9" ] ], [ @@ -1685,11 +1469,21 @@ "id": "test", "single_end": false }, - 198 + 162 ] ], [ - + [ + { + "id": "test", + "single_end": false + }, + [ + "test.paired.fail.fastq.gz:md5,409b687c734cedd7a1fec14d316e1366", + "test_1.fail.fastq.gz:md5,4f273cf3159c13f79e8ffae12f5661f6", + "test_2.fail.fastq.gz:md5,f97b9edefb5649aab661fbc9e71fc995" + ] + ] ], [ @@ -1704,12 +1498,12 @@ ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.2", + "nextflow": "24.10.2" }, - "timestamp": "2024-07-22T16:55:50.614571" + "timestamp": "2024-12-12T14:24:32.09683126" }, - "sarscov2 paired-end [fastq] - stub": { + "sarscov2 paired-end [fastq] | save_trimmed_fail - stub": { "content": [ { "0": [ @@ -1814,7 +1608,17 @@ ] ], "8": [ - + [ + { + "id": "test", + "single_end": false + }, + [ + "test.paired.fail.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_1.fail.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.fail.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] ], "9": [ @@ -1896,57 +1700,262 @@ ], "trim_log": [ [ - { - "id": "test", - "single_end": false - }, - "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" + { + "id": "test", + "single_end": false + }, + "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "trim_read_count": [ + [ + { + "id": "test", + "single_end": false + }, + 1 + ] + ], + "trim_reads_fail": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.paired.fail.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_1.fail.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.fail.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "trim_reads_merged": [ + + ], + "umi_log": [ + + ], + "versions": [ + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", + "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", + "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.2" + }, + "timestamp": "2024-12-12T14:32:23.571618376" + }, + "sarscov2 paired-end [fastq] | min_trimmed_reads = 26": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "unspecified" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,54b726a55e992a869fd3fa778afe1672", + "test_2.fastp.fastq.gz:md5,29d3b33b869f7b63417b8ff07bb128ba" + ] + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,b913b6f0faf64d208ecc009eb765ada6" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + 75 + ] + ], + [ + + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.merged.fastq.gz:md5,c873bb1ab3fa859dcc47306465e749d5" + ] + ], + [ + + ], + [ + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", + "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", + "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.2" + }, + "timestamp": "2024-12-12T14:24:56.36378285" + }, + "sarscov2 paired-end [fastq]": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "unspecified" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,67b2bbae47f073e05a97a9c2edce23c7", + "test_2.fastp.fastq.gz:md5,25cbdca08e2083dbd4f0502de6b62f39" ] - ], - "trim_read_count": [ + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,47a1bbd79b21721d81eb457e44fa3e3b" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + 198 + ] + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", + "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", + "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.2" + }, + "timestamp": "2024-12-12T14:14:48.625336841" + }, + "sarscov2 paired-end [fastq] | save_merged": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "unspecified" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, [ - { - "id": "test", - "single_end": false - }, - 1 + "test_1.fastp.fastq.gz:md5,54b726a55e992a869fd3fa778afe1672", + "test_2.fastp.fastq.gz:md5,29d3b33b869f7b63417b8ff07bb128ba" ] - ], - "trim_reads_fail": [ - - ], - "trim_reads_merged": [ - - ], - "umi_log": [ - - ], - "versions": [ - "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", - "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", - "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" ] - } + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,b913b6f0faf64d208ecc009eb765ada6" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + 75 + ] + ], + [ + + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.merged.fastq.gz:md5,c873bb1ab3fa859dcc47306465e749d5" + ] + ], + [ + + ], + [ + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", + "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", + "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" + ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.2", + "nextflow": "24.10.2" }, - "timestamp": "2024-07-22T16:58:29.296468" + "timestamp": "2024-12-12T14:24:43.700668074" }, - "save_trimmed_fail - stub": { + "sarscov2 paired-end [fastq] | with_umi - stub": { "content": [ { "0": [ [ { "id": "test", - "single_end": false + "single_end": true }, - [ - "test_1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", - "test_2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] + "test.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "1": [ @@ -1962,7 +1971,7 @@ [ { "id": "test", - "single_end": false + "single_end": true }, 1 ] @@ -1971,7 +1980,7 @@ [ { "id": "test", - "single_end": false + "single_end": true }, "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -1980,12 +1989,13 @@ [ { "id": "test", - "single_end": false + "single_end": true }, "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "13": [ + "versions.yml:md5,01f264f78de3c6d893c449cc6d3cd721", "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" @@ -2000,13 +2010,19 @@ ] ], "3": [ - + [ + { + "id": "test", + "single_end": false + }, + "test.umi_extract.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], "4": [ [ { "id": "test", - "single_end": false + "single_end": true }, "" ] @@ -2015,7 +2031,7 @@ [ { "id": "test", - "single_end": false + "single_end": true }, "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -2024,7 +2040,7 @@ [ { "id": "test", - "single_end": false + "single_end": true }, "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -2033,23 +2049,13 @@ [ { "id": "test", - "single_end": false + "single_end": true }, "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "8": [ - [ - { - "id": "test", - "single_end": false - }, - [ - "test.paired.fail.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", - "test_1.fail.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", - "test_2.fail.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] - ] + ], "9": [ @@ -2058,7 +2064,7 @@ [ { "id": "test", - "single_end": false + "single_end": true }, "" ] @@ -2085,7 +2091,7 @@ [ { "id": "test", - "single_end": false + "single_end": true }, "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -2094,7 +2100,7 @@ [ { "id": "test", - "single_end": false + "single_end": true }, "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -2103,19 +2109,16 @@ [ { "id": "test", - "single_end": false + "single_end": true }, - [ - "test_1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", - "test_2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] + "test.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "trim_html": [ [ { "id": "test", - "single_end": false + "single_end": true }, "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -2124,7 +2127,7 @@ [ { "id": "test", - "single_end": false + "single_end": true }, "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -2133,7 +2136,7 @@ [ { "id": "test", - "single_end": false + "single_end": true }, "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -2142,31 +2145,28 @@ [ { "id": "test", - "single_end": false + "single_end": true }, 1 ] ], "trim_reads_fail": [ + + ], + "trim_reads_merged": [ + + ], + "umi_log": [ [ { "id": "test", "single_end": false }, - [ - "test.paired.fail.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", - "test_1.fail.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", - "test_2.fail.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] + "test.umi_extract.log:md5,d41d8cd98f00b204e9800998ecf8427e" ] - ], - "trim_reads_merged": [ - - ], - "umi_log": [ - ], "versions": [ + "versions.yml:md5,01f264f78de3c6d893c449cc6d3cd721", "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" @@ -2174,12 +2174,12 @@ } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.2", + "nextflow": "24.10.2" }, - "timestamp": "2024-07-22T16:59:51.615894" + "timestamp": "2024-12-12T14:31:50.895314014" }, - "skip_umi_extract - stub": { + "sarscov2 paired-end [fastq] | skip_umi_extract - stub": { "content": [ { "0": [ @@ -2399,9 +2399,9 @@ } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.2", + "nextflow": "24.10.2" }, - "timestamp": "2024-07-22T16:59:12.592278" + "timestamp": "2024-12-12T14:31:59.266962739" } } \ No newline at end of file diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/nextflow.config b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/nextflow.config index 0174cae5088..428b0d37c06 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/nextflow.config +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/nextflow.config @@ -8,4 +8,9 @@ process { ext.prefix = { "${meta.id}.dedup" } } + // Make filtering more aggressive to make more reads fail + withName: FASTP { + ext.args = params.fastp_args + } + } diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/nextflow.save_trimmed.config b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/nextflow.save_trimmed.config deleted file mode 100644 index 21207addd75..00000000000 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/nextflow.save_trimmed.config +++ /dev/null @@ -1,6 +0,0 @@ -process { - // Make filtering more aggressive to make more reads fail - withName: FASTP { - ext.args = "-e 30" - } -} diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/tags.yml b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/tags.yml deleted file mode 100644 index 84a4b5676c8..00000000000 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -subworkflows/fastq_fastqc_umitools_fastp: - - subworkflows/nf-core/fastq_fastqc_umitools_fastp/** diff --git a/tests/config/nextflow.config b/tests/config/nextflow.config index f90c24c2bc8..9c55a92a7df 100644 --- a/tests/config/nextflow.config +++ b/tests/config/nextflow.config @@ -6,9 +6,11 @@ params { } process { - cpus = 2 - memory = 3.GB - time = 2.h + resourceLimits = [ + cpus: 2, + memory: '4.GB', + time: '1.h' + ] } if ("$PROFILE" == "singularity") { @@ -32,8 +34,8 @@ if ("$PROFILE" == "singularity") { docker.runOptions = '--platform=linux/amd64' } -docker.registry = 'quay.io' -podman.registry = 'quay.io' +docker.registry = 'quay.io' +podman.registry = 'quay.io' singularity.registry = 'quay.io' // Increase time available to build Conda environment @@ -43,5 +45,5 @@ conda { createTimeout = "120 min" } includeConfig 'test_data.config' manifest { - nextflowVersion = '!>=24.10.1' + nextflowVersion = '!>=24.10.2' } diff --git a/tests/config/nf-test.config b/tests/config/nf-test.config index fa21cb2edd6..2a232b63fb2 100644 --- a/tests/config/nf-test.config +++ b/tests/config/nf-test.config @@ -1,52 +1,78 @@ params { - publish_dir_mode = "copy" + publish_dir_mode = "copy" singularity_pull_docker_container = false - test_data_base = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules' - modules_testdata_base_path = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/' + test_data_base = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules' + modules_testdata_base_path = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/' } process { - cpus = 2 - memory = 6.GB - time = 2.h + cpus = 2 + memory = '4.GB' + time = '2.h' } profiles { - singularity { - singularity.enabled = true - singularity.autoMounts = true - } conda { - conda.enabled = true + conda.enabled = true + conda.channels = ['conda-forge', 'bioconda'] + apptainer.enabled = false } mamba { - conda.enabled = true - conda.useMamba = true - } - podman { - podman.enabled = true - podman.userEmulation = true - podman.runOptions = "--runtime crun --platform linux/x86_64 --systemd=always" + conda.enabled = true + conda.useMamba = true } docker { - docker.enabled = true - docker.runOptions = '-u $(id -u):$(id -g) --platform=linux/amd64' + docker.enabled = true + docker.runOptions = '-u $(id -u):$(id -g) --platform=linux/amd64' } docker_self_hosted { - docker.enabled = true - docker.fixOwnership = true - docker.runOptions = '--platform=linux/amd64' + docker.enabled = true + docker.userEmulation = false + docker.fixOwnership = true + docker.runOptions = '--platform=linux/amd64 --security-opt=no-new-privileges' + } + arm { + docker.runOptions = '-u $(id -u):$(id -g) --platform=linux/amd64' + } + singularity { + singularity.enabled = true + singularity.autoMounts = true + } + podman { + podman.enabled = true + podman.runOptions = "--runtime crun --platform linux/x86_64 --systemd=always" + } + shifter { + shifter.enabled = true + } + charliecloud { + charliecloud.enabled = true + } + apptainer { + apptainer.enabled = true + apptainer.autoMounts = true + } + wave { + apptainer.ociAutoPull = true + singularity.ociAutoPull = true + wave.enabled = true + wave.freeze = true + wave.strategy = 'conda,container' + } + gitpod { + executor.name = 'local' + executor.cpus = 4 + executor.memory = 8.GB } gpu { docker.runOptions = '-u $(id -u):$(id -g) --gpus all' apptainer.runOptions = '--nv' singularity.runOptions = '--nv' - use_gpu = true } } -docker.registry = 'quay.io' -podman.registry = 'quay.io' +docker.registry = 'quay.io' +podman.registry = 'quay.io' singularity.registry = 'quay.io' // Increase time available to build Conda environment @@ -56,5 +82,5 @@ conda { createTimeout = "120 min" } includeConfig 'test_data.config' manifest { - nextflowVersion = '!>=24.10.1' + nextflowVersion = '!>=24.10.2' }