diff --git a/.github/workflows/nf-test-gpu.yml b/.github/workflows/nf-test-gpu.yml index b5b0a8244f3..d9464913c90 100644 --- a/.github/workflows/nf-test-gpu.yml +++ b/.github/workflows/nf-test-gpu.yml @@ -104,6 +104,46 @@ jobs: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 with: fetch-depth: 0 + + - name: Basic GPU Check + run: | + whoami + groups + nvidia-smi + docker info | grep -i runtime + # This should succeed based on your output + + - name: Run Application (Will Fail) + run: | + # Run your actual application command here + # For example: python my_gpu_script.py + # Or: docker run your_image your_command + # ADD "set -x" TO SEE EXACTLY WHAT'S HAPPENING + set -x + your_actual_command_that_fails + continue-on-error: true # This allows the workflow to continue even if this step fails + + - name: Debug Environment + run: | + echo "=== Debug After Failure ===" + env | grep -i cuda + env | grep -i nvidia + ls -la /dev/nvidia* + ldconfig -p | grep cuda + continue-on-error: true # This allows the workflow to continue even if this step fails + + - name: Test Different CUDA Versions + run: | + # Test with CUDA 12.0 + docker run --rm --gpus all nvidia/cuda:12.0.1-base-ubuntu22.04 nvidia-smi + + # Test with CUDA 11.8 + docker run --rm --gpus all nvidia/cuda:11.8.0-base-ubuntu22.04 nvidia-smi + + # Try running your application inside a CUDA container + docker run --rm --gpus all -v $(pwd):/app -w /app nvidia/cuda:11.8.0-runtime-ubuntu22.04 your_application_command + continue-on-error: true # This allows the workflow to continue even if this step fails + - name: Run nf-test Action uses: ./.github/actions/nf-test-action env: diff --git a/modules/nf-core/parabricks/fq2bam/main.nf b/modules/nf-core/parabricks/fq2bam/main.nf index 0cd69048048..c7d95418a6e 100644 --- a/modules/nf-core/parabricks/fq2bam/main.nf +++ b/modules/nf-core/parabricks/fq2bam/main.nf @@ -7,19 +7,22 @@ process PARABRICKS_FQ2BAM { container "nvcr.io/nvidia/clara/clara-parabricks:4.4.0-1" input: - tuple val(meta), path(reads) + tuple val(meta) , path(reads) tuple val(meta2), path(fasta) tuple val(meta3), path(index) tuple val(meta4), path(interval_file) - path(known_sites) + tuple val(meta5), path(known_sites) + val(output_fmt) // either bam or cram output: - tuple val(meta), path("*.bam") , emit: bam - tuple val(meta), path("*.bai") , emit: bai - tuple val(meta), path("*.table"), emit: bqsr_table , optional:true - path("versions.yml") , emit: versions - path("qc_metrics") , emit: qc_metrics , optional:true - path("duplicate-metrics.txt") , emit: duplicate_metrics , optional:true + tuple val(meta), path("*.bam") , emit: bam , optional:true + tuple val(meta), path("*.bai") , emit: bai , optional:true + tuple val(meta), path("*.cram") , emit: cram , optional:true + tuple val(meta), path("*.crai") , emit: crai , optional:true + tuple val(meta), path("*.table") , emit: bqsr_table , optional:true + tuple val(meta), path("*_qc_metrics") , emit: qc_metrics , optional:true + tuple val(meta), path("*.duplicate-metrics.txt"), emit: duplicate_metrics, optional:true + path("versions.yml") , emit: versions when: task.ext.when == null || task.ext.when @@ -31,10 +34,14 @@ process PARABRICKS_FQ2BAM { } def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" + def in_fq_command = meta.single_end ? "--in-se-fq $reads" : "--in-fq $reads" - def known_sites_command = known_sites ? known_sites.collect{"--knownSites $it"}.join(' ') : "" - def known_sites_output = known_sites ? "--out-recal-file ${prefix}.table" : "" - def interval_file_command = interval_file ? interval_file.collect{"--interval-file $it"}.join(' ') : "" + def extension = "$output_fmt" + + def known_sites_command = known_sites ? (known_sites instanceof List ? known_sites.collect { "--knownSites $it" }.join(' ') : "--knownSites ${known_sites}") : "" + def known_sites_output_cmd = known_sites ? "--out-recal-file ${prefix}.table" : "" + def interval_file_command = interval_file ? (interval_file instanceof List ? interval_file.collect { "--interval-file $it" }.join(' ') : "--interval-file ${interval_file}") : "" + def num_gpus = task.accelerator ? "--num-gpus $task.accelerator.request" : '' """ INDEX=`find -L ./ -name "*.amb" | sed 's/\\.amb\$//'` @@ -44,9 +51,9 @@ process PARABRICKS_FQ2BAM { fq2bam \\ --ref \$INDEX \\ $in_fq_command \\ - --out-bam ${prefix}.bam \\ + --out-bam ${prefix}.${extension} \\ $known_sites_command \\ - $known_sites_output \\ + $known_sites_output_cmd \\ $interval_file_command \\ $num_gpus \\ $args @@ -62,10 +69,19 @@ process PARABRICKS_FQ2BAM { 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 extension = "$output_fmt" + def extension_index = "$output_fmt" == "cram" ? "crai" : "bai" + def known_sites_output = known_sites ? "touch ${prefix}.table" : "" + def qc_metrics_output = args.contains("--out-qc-metrics-dir") ? "mkdir ${prefix}_qc_metrics" : "" + def duplicate_metrics_output = args.contains("--out-duplicate-metrics") ? "touch ${prefix}.duplicate-metrics.txt" : "" """ - touch ${prefix}.bam - touch ${prefix}.bam.bai + touch ${prefix}.${extension} + touch ${prefix}.${extension}.${extension_index} + $known_sites_output + $qc_metrics_output + $duplicate_metrics_output cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/parabricks/fq2bam/meta.yml b/modules/nf-core/parabricks/fq2bam/meta.yml index 8b45cb16284..75b508cd5ce 100644 --- a/modules/nf-core/parabricks/fq2bam/meta.yml +++ b/modules/nf-core/parabricks/fq2bam/meta.yml @@ -49,11 +49,19 @@ input: description: (optional) file(s) containing genomic intervals for use in base quality score recalibration (BQSR) pattern: "*.{bed,interval_list,picard,list,intervals}" - - - known_sites: + - - meta5: + type: map + description: | + Groovy Map containing known sites information + - known_sites: type: file description: (optional) known sites file(s) for calculating BQSR. markdups must be true to perform BQSR. pattern: "*.vcf.gz" + - - output_fmt: + type: string + description: Output format for the alignment. Options are 'bam' or 'cram' + pattern: "{bam,cram}" output: - bam: - meta: @@ -75,6 +83,26 @@ output: type: file description: index corresponding to sorted BAM file pattern: "*.bai" + - cram: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.cram": + type: file + description: Sorted CRAM file + pattern: "*.cram" + - crai: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.crai": + type: file + description: index corresponding to sorted CRAM file + pattern: "*.crai" - bqsr_table: - meta: type: map @@ -86,22 +114,30 @@ output: description: (optional) table from base quality score recalibration calculation, to be used with parabricks/applybqsr pattern: "*.table" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" - qc_metrics: - - qc_metrics: + - meta: + type: map + description: | + Groovy Map containing sample information + - "*_qc_metrics": type: directory description: (optional) optional directory of qc metrics - pattern: "qc_metrics" + pattern: "*_qc_metrics" - duplicate_metrics: - - duplicate-metrics.txt: + - meta: + type: map + description: | + Groovy Map containing sample information + - "*.duplicate-metrics.txt": type: file description: (optional) metrics calculated from marking duplicates in the bam file - pattern: "*-duplicate-metrics.txt" + pattern: "*.duplicate-metrics.txt" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: - "@bsiranosian" - "@adamrtalbot" diff --git a/modules/nf-core/parabricks/fq2bam/tests/main.nf.test b/modules/nf-core/parabricks/fq2bam/tests/main.nf.test index 0dec1c5f8c9..afa16c72927 100644 --- a/modules/nf-core/parabricks/fq2bam/tests/main.nf.test +++ b/modules/nf-core/parabricks/fq2bam/tests/main.nf.test @@ -11,6 +11,8 @@ nextflow_process { tag "parabricks" tag "gpu" + config './nextflow.config' + setup { run("BWA_INDEX") { script "../../../bwa/index/main.nf" @@ -35,6 +37,18 @@ nextflow_process { """ } } + + run("BWA_INDEX", alias: 'BWA_INDEX_CRAM') { + script "../../../bwa/index/main.nf" + process { + """ + input[0] = [ + [id: 'test'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + """ + } + } } test("SRR389222 - fastq - se") { @@ -62,7 +76,8 @@ nextflow_process { ]) input[2] = BWA_INDEX.out.index input[3] = [ [], [] ] - input[4] = [] + input[4] = [ [], [] ] + input[5] = 'bam' """ } } @@ -81,9 +96,13 @@ nextflow_process { } test("SRR389222 - fastq - se - stub") { + options '-stub' when { + params { + module_args = '' + } process { """ input[0] = Channel.of([ @@ -98,7 +117,8 @@ nextflow_process { ]) input[2] = BWA_INDEX.out.index input[3] = [ [], [] ] - input[4] = [] + input[4] = [ [], [] ] + input[5] = 'bam' """ } } @@ -116,8 +136,6 @@ nextflow_process { test("sarscov2 - fastq - pe") { - config './nextflow.config' - when { params { module_args = '--low-memory' @@ -140,7 +158,8 @@ nextflow_process { ]) input[2] = BWA_INDEX_PE.out.index input[3] = [ [], [] ] - input[4] = [] + input[4] = [ [], [] ] + input[5] = 'bam' """ } } @@ -164,6 +183,9 @@ nextflow_process { options '-stub' when { + params { + module_args = '' + } process { """ input[0] = [ @@ -179,7 +201,8 @@ nextflow_process { ]) input[2] = BWA_INDEX_PE.out.index input[3] = [ [], [] ] - input[4] = [] + input[4] = [ [], [] ] + input[5] = 'bam' """ } } @@ -196,4 +219,90 @@ nextflow_process { } + test("sarscov2 - fastq - se - cram") { + + when { + params { + module_args = '--low-memory' + // Ref: https://forums.developer.nvidia.com/t/problem-with-gpu/256825/6 + // Parabricks’s fq2bam requires 24GB of memory. + // Using --low-memory for testing + } + process { + """ + input[0] = [ + [ id:'test', single_end:true ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) + ] + ] + input[1] = [[id: 'test'],file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] + input[2] = BWA_INDEX_CRAM.out.index + input[3] = [ [], [] ] + input[4] = [ [], [] ] + input[5] = 'cram' + """ + } + } + + then { + def fasta = "https://raw.githubusercontent.com/nf-core/test-datasets/refs/heads/modules/data/genomics/sarscov2/genome/genome.fasta" + assertAll( + { assert process.success }, + { assert snapshot( + cram( + process.out.cram[0][1], + fasta, + ).getReadsMD5(), + file(process.out.crai[0][1]).name, + process.out.versions, + path(process.out.versions[0]).yaml + ).match() } + ) + } + + } + + test("sarscov2 - fastq - pe - cram - stub") { + + options '-stub' + + when { + params { + module_args = '' + } + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) + ] + ] + input[1] = Channel.of([ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ]) + input[2] = BWA_INDEX_PE.out.index + input[3] = [ [], [] ] + input[4] = [ [], [] ] + input[5] = 'cram' + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out, + path(process.out.versions[0]).yaml + ).match() + } + ) + } + + } + } \ No newline at end of file diff --git a/modules/nf-core/parabricks/fq2bam/tests/main.nf.test.snap b/modules/nf-core/parabricks/fq2bam/tests/main.nf.test.snap index 73d5ced7c50..57d6bb78baf 100644 --- a/modules/nf-core/parabricks/fq2bam/tests/main.nf.test.snap +++ b/modules/nf-core/parabricks/fq2bam/tests/main.nf.test.snap @@ -24,13 +24,19 @@ ], "3": [ - "versions.yml:md5,55d1e67ef8fa9d0ea3065363a653ffef" + ], "4": [ ], "5": [ + ], + "6": [ + + ], + "7": [ + "versions.yml:md5,55d1e67ef8fa9d0ea3065363a653ffef" ], "bai": [ [ @@ -52,6 +58,12 @@ ], "bqsr_table": [ + ], + "crai": [ + + ], + "cram": [ + ], "duplicate_metrics": [ @@ -71,9 +83,9 @@ ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.2" + "nextflow": "24.10.4" }, - "timestamp": "2024-12-16T12:16:33.055785098" + "timestamp": "2025-02-27T11:46:55.631178258" }, "sarscov2 - fastq - pe - stub": { "content": [ @@ -100,13 +112,19 @@ ], "3": [ - "versions.yml:md5,55d1e67ef8fa9d0ea3065363a653ffef" + ], "4": [ ], "5": [ + ], + "6": [ + + ], + "7": [ + "versions.yml:md5,55d1e67ef8fa9d0ea3065363a653ffef" ], "bai": [ [ @@ -128,6 +146,12 @@ ], "bqsr_table": [ + ], + "crai": [ + + ], + "cram": [ + ], "duplicate_metrics": [ @@ -147,9 +171,9 @@ ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.2" + "nextflow": "24.10.4" }, - "timestamp": "2024-12-16T12:16:48.158061416" + "timestamp": "2025-02-27T11:48:09.468174786" }, "sarscov2 - fastq - pe": { "content": [ @@ -170,6 +194,113 @@ }, "timestamp": "2024-12-16T12:25:23.63061876" }, + "sarscov2 - fastq - se - cram": { + "content": [ + "30c325e1e032eb1782a280d34c0fb1c7", + "test.cram.crai", + [ + "versions.yml:md5,55d1e67ef8fa9d0ea3065363a653ffef" + ], + { + "PARABRICKS_FQ2BAM": { + "pbrun": "4.4.0-1" + } + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.4" + }, + "timestamp": "2025-02-20T15:28:05.839124732" + }, + "sarscov2 - fastq - pe - cram - stub": { + "content": [ + { + "0": [ + + ], + "1": [ + + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.cram:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": false + }, + "test.cram.crai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + + ], + "5": [ + + ], + "6": [ + + ], + "7": [ + "versions.yml:md5,55d1e67ef8fa9d0ea3065363a653ffef" + ], + "bai": [ + + ], + "bam": [ + + ], + "bqsr_table": [ + + ], + "crai": [ + [ + { + "id": "test", + "single_end": false + }, + "test.cram.crai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "cram": [ + [ + { + "id": "test", + "single_end": false + }, + "test.cram:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "duplicate_metrics": [ + + ], + "qc_metrics": [ + + ], + "versions": [ + "versions.yml:md5,55d1e67ef8fa9d0ea3065363a653ffef" + ] + }, + { + "PARABRICKS_FQ2BAM": { + "pbrun": "4.4.0-1" + } + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.4" + }, + "timestamp": "2025-02-27T11:49:34.618772489" + }, "SRR389222 - fastq - se": { "content": [ "3d5b94990c7fdf90a682edb5ee0f59de", diff --git a/subworkflows/nf-core/fastq_align_parabricks/main.nf b/subworkflows/nf-core/fastq_align_parabricks/main.nf deleted file mode 100644 index e3ad9c598a5..00000000000 --- a/subworkflows/nf-core/fastq_align_parabricks/main.nf +++ /dev/null @@ -1,57 +0,0 @@ -// -// Alignment and BQSR with Nvidia CLARA Parabricks -// -include { PARABRICKS_FQ2BAM } from '../../../modules/nf-core/parabricks/fq2bam/main' -include { PARABRICKS_APPLYBQSR } from '../../../modules/nf-core/parabricks/applybqsr/main' - -workflow FASTQ_ALIGN_PARABRICKS { - - take: - ch_reads // channel: [mandatory] meta, reads - ch_fasta // channel: [mandatory] meta, fasta - ch_index // channel: [mandatory] meta, index - ch_interval_file // channel: [optional] meta, intervals_bed_combined - ch_known_sites // channel [optional] known_sites_indels - - main: - ch_versions = Channel.empty() - ch_bam = Channel.empty() - ch_bai = Channel.empty() - ch_bqsr_table = Channel.empty() - ch_qc_metrics = Channel.empty() - ch_duplicate_metrics = Channel.empty() - - PARABRICKS_FQ2BAM( - ch_reads, - ch_fasta, - ch_index, - ch_interval_file, - ch_known_sites - ) - - // Collecting FQ2BAM outputs - ch_bam = ch_bam.mix(PARABRICKS_FQ2BAM.out.bam) - ch_bai = ch_bai.mix(PARABRICKS_FQ2BAM.out.bai) - ch_qc_metrics = ch_qc_metrics.mix(PARABRICKS_FQ2BAM.out.qc_metrics) - ch_bqsr_table = ch_bqsr_table.mix(PARABRICKS_FQ2BAM.out.bqsr_table) - ch_duplicate_metrics = ch_duplicate_metrics.mix(PARABRICKS_FQ2BAM.out.duplicate_metrics) - ch_versions = ch_versions.mix(PARABRICKS_FQ2BAM.out.versions) - - // Apply BQSR - PARABRICKS_APPLYBQSR( - ch_bam, - ch_bai, - ch_bqsr_table.ifEmpty([]), - ch_interval_file, - ch_fasta - ) - ch_versions = ch_versions.mix(PARABRICKS_APPLYBQSR.out.versions) - - emit: - bam = PARABRICKS_APPLYBQSR.out.bam // channel: [ [meta], bam ] - bai = PARABRICKS_APPLYBQSR.out.bai // channel: [ [meta], bai ] - qc_metrics = ch_qc_metrics // channel: [ [meta], qc_metrics ] - duplicate_metrics = ch_duplicate_metrics // channel: [ [meta], duplicate_metrics ] - bqsr_table = ch_bqsr_table // channel: [ [meta], bqsr_table ] - versions = ch_versions // channel: [ versions.yml ] -} diff --git a/subworkflows/nf-core/fastq_align_parabricks/meta.yml b/subworkflows/nf-core/fastq_align_parabricks/meta.yml deleted file mode 100644 index 27fe1ab34df..00000000000 --- a/subworkflows/nf-core/fastq_align_parabricks/meta.yml +++ /dev/null @@ -1,63 +0,0 @@ -# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/subworkflows/yaml-schema.json -name: "fastq_align_parabricks" -description: Align a fastq file using GPU-based acceleration -keywords: - - fastq - - align - - parabricks - - gpu - - preprocessing -components: - - parabricks/fq2bam - - parabricks/applybqsr -input: - - ch_reads: - type: file - description: | - Channel containing reads (either one file for se or two files for pe) - Structure: [ val(meta), [ path(fastq1), path(fastq2) ] ] - - ch_fasta: - type: file - description: | - Channel containing reference fasta file - Structure: [ val(meta), path(fasta) ] - - ch_index: - type: file - description: | - Channel containing reference BWA index - Structure: [ val(meta), path(.{amb,ann,bwt,pac,sa}) ] - - ch_interval_file: - type: file - description: | - (optional) file(s) containing genomic intervals for use in base - quality score recalibration (BQSR) - Structure: [ val(meta), path(.{bed,interval_list,picard,list,intervals}) ] - - ch_known_sites: - type: file - description: | - (optional) known sites file(s) for calculating BQSR. markdups must - be true to perform BQSR. - Structure [ path(vcf) ] -output: - - bam: - type: file - description: | - Channel containing BAM files - Structure: [ val(meta), path(bam) ] - pattern: "*.bam" - - bai: - type: file - description: | - Channel containing indexed BAM (BAI) files - Structure: [ val(meta), path(bai) ] - pattern: "*.bai" - - versions: - type: file - description: | - File containing software versions - Structure: [ path(versions.yml) ] - pattern: "versions.yml" -authors: - - "@famosab" -maintainers: - - "@famosab" diff --git a/subworkflows/nf-core/fastq_align_parabricks/tests/main.nf.test b/subworkflows/nf-core/fastq_align_parabricks/tests/main.nf.test deleted file mode 100644 index 7f102f528a9..00000000000 --- a/subworkflows/nf-core/fastq_align_parabricks/tests/main.nf.test +++ /dev/null @@ -1,106 +0,0 @@ -nextflow_workflow { - - name "Test Subworkflow FASTQ_ALIGN_PARABRICKS" - script "../main.nf" - workflow "FASTQ_ALIGN_PARABRICKS" - config "./nextflow.config" - - tag "subworkflows" - tag "subworkflows_nfcore" - tag "subworkflows/fastq_align_parabricks" - tag "parabricks" - tag "parabricks/fq2bam" - tag "parabricks/applybqsr" - tag "bwa" - tag "bwa/index" - tag "gpu" - - setup { - run("BWA_INDEX") { - script "../../../../modules/nf-core/bwa/index/main.nf" - process { - """ - input[0] = Channel.of([ - [ id:'test' ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) - ]) - """ - } - } - } - - test("sarscov2 single-end [fastq_gz]") { - - when { - workflow { - """ - input[0] = Channel.of([ - [ id:'test', single_end:true ], - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true)] - ]) - input[1] = Channel.value([ - [id: 'reference'], - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) - ]) - input[2] = BWA_INDEX.out.index - input[3] = Channel.value([ - [id: 'intervals'], - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/picard/baits.interval_list', checkIfExists: true) - ]) - input[4] = file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true) - """ - } - } - - then { - assertAll( - { assert workflow.success}, - { assert snapshot( - workflow.out.bam.collect { meta, bamfile -> bam(bamfile).getReadsMD5() }, - workflow.out.bai.collect { meta, bai -> file(bai).name }, - workflow.out.versions - ).match() - } - ) - } - } - - test("sarscov2 paired-end [fastq_gz]") { - - when { - workflow { - """ - input[0] = Channel.of([ - [ id:'test', single_end:false ], - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) - ] - ]) - input[1] = Channel.value([ - [id: 'reference'], - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) - ]) - input[2] = BWA_INDEX.out.index - input[3] = Channel.value([ - [id: 'intervals'], - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/picard/baits.interval_list', checkIfExists: true) - ]) - input[4] = file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true) - """ - } - } - - then { - assertAll( - { assert workflow.success}, - { assert snapshot( - workflow.out.bam.collect { meta, bamfile -> bam(bamfile).getReadsMD5() }, - workflow.out.bai.collect { meta, bai -> file(bai).name }, - workflow.out.versions - ).match() - } - ) - } - } -} \ No newline at end of file diff --git a/subworkflows/nf-core/fastq_align_parabricks/tests/main.nf.test.snap b/subworkflows/nf-core/fastq_align_parabricks/tests/main.nf.test.snap deleted file mode 100644 index 1535c2619ed..00000000000 --- a/subworkflows/nf-core/fastq_align_parabricks/tests/main.nf.test.snap +++ /dev/null @@ -1,40 +0,0 @@ -{ - "sarscov2 single-end [fastq_gz]": { - "content": [ - [ - "7e2bd786d964e42ddbc2ab0c9f340b09" - ], - [ - "test.recal.bam.bai" - ], - [ - "versions.yml:md5,0d8766379e89038cb5fdcd074f3289f6", - "versions.yml:md5,df165e28f025dad39d826caead132115" - ] - ], - "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.4" - }, - "timestamp": "2025-02-17T16:25:03.460025311" - }, - "sarscov2 paired-end [fastq_gz]": { - "content": [ - [ - "73e8e89cda8fce1cf07bdebff0f793ec" - ], - [ - "test.recal.bam.bai" - ], - [ - "versions.yml:md5,0d8766379e89038cb5fdcd074f3289f6", - "versions.yml:md5,df165e28f025dad39d826caead132115" - ] - ], - "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.4" - }, - "timestamp": "2025-02-17T16:26:01.468588642" - } -} \ No newline at end of file diff --git a/subworkflows/nf-core/fastq_align_parabricks/tests/nextflow.config b/subworkflows/nf-core/fastq_align_parabricks/tests/nextflow.config deleted file mode 100644 index 335587c2bf2..00000000000 --- a/subworkflows/nf-core/fastq_align_parabricks/tests/nextflow.config +++ /dev/null @@ -1,15 +0,0 @@ -process { - - withName: 'PARABRICKS_FQ2BAM' { - ext.args = '--low-memory' - } - - // Ref: https://forums.developer.nvidia.com/t/problem-with-gpu/256825/6 - // Parabricks’s fq2bam requires 24GB of memory. - // Using --low-memory for testing - - withName: 'PARABRICKS_APPLYBQSR' { - ext.prefix = { "${meta.id}.recal" } - } - -}