From c1aae68fe53fed9b74eccdb420d3405958ec9a31 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Thu, 14 Aug 2025 10:45:06 +0200 Subject: [PATCH 01/34] no need to skip these --- .nf-core.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.nf-core.yml b/.nf-core.yml index 4d8b6be31..9caa76d99 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -2,10 +2,8 @@ lint: files_exist: - .github/workflows/awsfulltest.yml - .github/workflows/awstest.yml - - .github/workflows/ci.yml - conf/modules.config files_unchanged: - - .gitignore - assets/nf-core-sarek_logo_light.png - docs/images/nf-core-sarek_logo_dark.png - docs/images/nf-core-sarek_logo_light.png From 8746d128bde3ba3f3dc3b206513af68db2252469 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Thu, 14 Aug 2025 10:45:17 +0200 Subject: [PATCH 02/34] remove TODO --- conf/base.config | 2 -- 1 file changed, 2 deletions(-) diff --git a/conf/base.config b/conf/base.config index c38548809..658cfdfa3 100644 --- a/conf/base.config +++ b/conf/base.config @@ -9,8 +9,6 @@ */ process { - - // TODO nf-core: Check the defaults for all processes cpus = { 1 * task.attempt } memory = { 6.GB * task.attempt } time = { 8.h * task.attempt } From 594607ad7fc4a9e56475699be8e6274578de485b Mon Sep 17 00:00:00 2001 From: maxulysse Date: Thu, 14 Aug 2025 10:45:33 +0200 Subject: [PATCH 03/34] add description and mimetype --- nextflow_schema.json | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index 747c848d9..2c508bc8e 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -17,6 +17,7 @@ "description": "Path to comma-separated file containing information about the samples in the experiment.", "help_text": "A design file with information about the samples in your experiment. Use this parameter to specify the location of the input files. It has to be a comma-separated file with a header row. See [usage docs](https://nf-co.re/sarek/usage#input).\n\nIf no input file is specified, sarek will attempt to locate one in the `{outdir}` directory. If no input should be supplied, i.e. when --step is supplied or --build_only_index, then set --input false", "fa_icon": "fas fa-file-csv", + "mimetype": "text/csv", "type": "string", "format": "file-path", "exists": true, @@ -241,7 +242,9 @@ }, "markduplicates_pixel_distance": { "type": "integer", - "help_text": "Pixel distance for GATK MarkDuplicates." + "fa_icon": "fas fa-compress", + "description": "Pixel distance for GATK MarkDuplicates.", + "help_text": "Default is appropriate for unpatterned versions of the Illumina platform. For the patterned flowcell models, use 2500. More details [here](https://gatk.broadinstitute.org/hc/en-us/articles/30332022936475-MarkDuplicates-Picard#--OPTICAL_DUPLICATE_PIXEL_DISTANCE)." } } }, @@ -424,7 +427,9 @@ "gatk_pcr_indel_model": { "type": "string", "default": "CONSERVATIVE", - "help_text": "Option for selecting the PCR indel model used by GATK HaplotypeCaller." + "fa_icon": "fas fa-bullseye", + "description": "Option for selecting the PCR indel model used by GATK HaplotypeCaller.", + "help_text": "The possible MODELs are: NONE (used for PCR free samples), and HOSTILE, AGGRESSIVE and CONSERVATIVE, in order of decreasing aggressiveness. The default value is CONSERVATIVE." }, "concatenate_vcfs": { "type": "boolean", From 09b3b902b291546889b4c20dc49a5e78313b98bc Mon Sep 17 00:00:00 2001 From: maxulysse Date: Thu, 14 Aug 2025 10:46:43 +0200 Subject: [PATCH 04/34] update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a4d817709..d37dc5b07 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -134,6 +134,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [1932](https://github.com/nf-core/sarek/pull/1932) - Fix typo for in UMI warning message - [1933](https://github.com/nf-core/sarek/pull/1933) - Correct link in README - [1935](https://github.com/nf-core/sarek/pull/1935) - Fix bug in samplesheet_to_channel workflow due to bad integer handling with lane +- [1955](https://github.com/nf-core/sarek/pull/1955) - Fix nf-core/tools pipelines linting warnings #### Removed From cf0570ed63bbfb5431be60ea63db5ca8138c3705 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Thu, 14 Aug 2025 11:43:56 +0200 Subject: [PATCH 05/34] should fix some warnings for subworkflows --- CHANGELOG.md | 3 +- subworkflows/local/bam_applybqsr/main.nf | 46 ++-- .../local/bam_applybqsr_spark/main.nf | 46 ++-- .../local/bam_baserecalibrator/main.nf | 31 +-- .../local/bam_baserecalibrator_spark/main.nf | 40 ++-- .../bam_joint_calling_germline_gatk/main.nf | 123 +++++----- .../main.nf | 109 +++++---- subworkflows/local/bam_markduplicates/main.nf | 15 +- .../local/bam_markduplicates_spark/main.nf | 33 ++- subworkflows/local/bam_sentieon_dedup/main.nf | 17 +- .../local/bam_variant_calling_cnvkit/main.nf | 27 +-- .../main.nf | 95 ++++---- .../bam_variant_calling_indexcov/main.nf | 37 ++- .../main.nf | 220 +++++++++--------- .../main.nf | 64 ++--- .../main.nf | 153 ++++++------ .../main.nf | 68 +++--- .../local/cram_qc_mosdepth_samtools/main.nf | 6 +- .../local/download_cache_snpeff_vep/main.nf | 7 +- subworkflows/local/fastq_align/main.nf | 30 +-- subworkflows/local/prepare_genome/main.nf | 135 ++++++----- subworkflows/local/prepare_intervals/main.nf | 96 ++++---- .../local/vcf_concatenate_germline/main.nf | 3 +- .../local/vcf_qc_bcftools_vcftools/main.nf | 13 +- 24 files changed, 764 insertions(+), 653 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d275d4261..13ffad709 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -135,7 +135,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [1932](https://github.com/nf-core/sarek/pull/1932) - Fix typo for in UMI warning message - [1933](https://github.com/nf-core/sarek/pull/1933) - Correct link in README - [1935](https://github.com/nf-core/sarek/pull/1935) - Fix bug in samplesheet_to_channel workflow due to bad integer handling with lane -- [1955](https://github.com/nf-core/sarek/pull/1955) - Fix nf-core/tools pipelines linting warnings +- [1955](https://github.com/nf-core/sarek/pull/1955) - Fix nf-core/tools lint Pipeline Test Warnings +- [1955](https://github.com/nf-core/sarek/pull/1955) - Fix nf-core/tools lint Subworkflow Test Warnings #### Removed diff --git a/subworkflows/local/bam_applybqsr/main.nf b/subworkflows/local/bam_applybqsr/main.nf index 48d169fb8..49b784bcf 100644 --- a/subworkflows/local/bam_applybqsr/main.nf +++ b/subworkflows/local/bam_applybqsr/main.nf @@ -4,44 +4,52 @@ // For all modules here: // A when clause condition is defined in the conf/modules.config to determine if the module should be run -include { GATK4_APPLYBQSR } from '../../../modules/nf-core/gatk4/applybqsr/main' -include { CRAM_MERGE_INDEX_SAMTOOLS } from '../cram_merge_index_samtools/main' +include { GATK4_APPLYBQSR } from '../../../modules/nf-core/gatk4/applybqsr' +include { CRAM_MERGE_INDEX_SAMTOOLS } from '../cram_merge_index_samtools' workflow BAM_APPLYBQSR { take: - cram // channel: [mandatory] [ meta, cram, crai, recal ] - dict // channel: [mandatory] [ dict ] - fasta // channel: [mandatory] [ fasta ] - fasta_fai // channel: [mandatory] [ fasta_fai ] - intervals // channel: [mandatory] [ intervals, num_intervals ] or [ [], 0 ] if no intervals + cram // channel: [mandatory] [ meta, cram, crai, recal ] + dict // channel: [mandatory] [ dict ] + fasta // channel: [mandatory] [ fasta ] + fasta_fai // channel: [mandatory] [ fasta_fai ] + intervals // channel: [mandatory] [ intervals, num_intervals ] or [ [], 0 ] if no intervals main: versions = Channel.empty() // Combine cram and intervals for spread and gather strategy - cram_intervals = cram.combine(intervals) - // Move num_intervals to meta map - .map{ meta, cram, crai, recal, intervals, num_intervals -> [ meta + [ num_intervals:num_intervals ], cram, crai, recal, intervals ] } + // Move num_intervals to meta map + cram_intervals = cram + .combine(intervals) + .map { meta, cram_, crai, recal, intervals_, num_intervals -> [meta + [num_intervals: num_intervals], cram_, crai, recal, intervals_] } // RUN APPLYBQSR - GATK4_APPLYBQSR(cram_intervals, fasta.map{ meta, it -> [ it ] }, fasta_fai.map{ meta, it -> [ it ] }, dict.map{ meta, it -> [ it ] }) + GATK4_APPLYBQSR( + cram_intervals, + fasta.map { _meta, fasta_ -> [fasta_] }, + fasta_fai.map { _meta, fasta_fai_ -> [fasta_fai_] }, + dict.map { _meta, dict_ -> [dict_] }, + ) // Gather the recalibrated cram files - cram_to_merge = GATK4_APPLYBQSR.out.cram.map{ meta, cram -> [ groupKey(meta, meta.num_intervals), cram ] }.groupTuple() + cram_to_merge = GATK4_APPLYBQSR.out.cram.map { meta, cram_ -> [groupKey(meta, meta.num_intervals), cram_] }.groupTuple() // Merge and index the recalibrated cram files - CRAM_MERGE_INDEX_SAMTOOLS(cram_to_merge, fasta.map{ meta, it -> [ it ] }, fasta_fai.map{ meta, it -> [ it ] }) + CRAM_MERGE_INDEX_SAMTOOLS( + cram_to_merge, + fasta.map { _meta, fasta_ -> [fasta_] }, + fasta_fai.map { _meta, fasta_fai_ -> [fasta_fai_] }, + ) - cram_recal = CRAM_MERGE_INDEX_SAMTOOLS.out.cram_crai - // Remove no longer necessary field: num_intervals - .map{ meta, cram, crai -> [ meta - meta.subMap('num_intervals'), cram, crai ] } + // Remove no longer necessary field: num_intervals + cram_recal = CRAM_MERGE_INDEX_SAMTOOLS.out.cram_crai.map { meta, cram_, crai -> [meta - meta.subMap('num_intervals'), cram_, crai] } // Gather versions of all tools used versions = versions.mix(GATK4_APPLYBQSR.out.versions) versions = versions.mix(CRAM_MERGE_INDEX_SAMTOOLS.out.versions) emit: - cram = cram_recal // channel: [ meta, cram, crai ] - - versions // channel: [ versions.yml ] + cram = cram_recal // channel: [ meta, cram, crai ] + versions // channel: [ versions.yml ] } diff --git a/subworkflows/local/bam_applybqsr_spark/main.nf b/subworkflows/local/bam_applybqsr_spark/main.nf index 3b75fa74b..579212cf8 100644 --- a/subworkflows/local/bam_applybqsr_spark/main.nf +++ b/subworkflows/local/bam_applybqsr_spark/main.nf @@ -4,44 +4,52 @@ // For all modules here: // A when clause condition is defined in the conf/modules.config to determine if the module should be run -include { GATK4SPARK_APPLYBQSR } from '../../../modules/nf-core/gatk4spark/applybqsr/main' -include { CRAM_MERGE_INDEX_SAMTOOLS } from '../cram_merge_index_samtools/main' +include { GATK4SPARK_APPLYBQSR } from '../../../modules/nf-core/gatk4spark/applybqsr' +include { CRAM_MERGE_INDEX_SAMTOOLS } from '../cram_merge_index_samtools' workflow BAM_APPLYBQSR_SPARK { take: - cram // channel: [mandatory] [ meta, cram, crai, recal ] - dict // channel: [mandatory] [ dict ] - fasta // channel: [mandatory] [ fasta ] - fasta_fai // channel: [mandatory] [ fasta_fai ] - intervals // channel: [mandatory] [ intervals, num_intervals ] or [ [], 0 ] if no intervals + cram // channel: [mandatory] [ meta, cram, crai, recal ] + dict // channel: [mandatory] [ dict ] + fasta // channel: [mandatory] [ fasta ] + fasta_fai // channel: [mandatory] [ fasta_fai ] + intervals // channel: [mandatory] [ intervals, num_intervals ] or [ [], 0 ] if no intervals main: versions = Channel.empty() // Combine cram and intervals for spread and gather strategy - cram_intervals = cram.combine(intervals) - // Move num_intervals to meta map - .map{ meta, cram, crai, recal, intervals, num_intervals -> [ meta + [ num_intervals:num_intervals ], cram, crai, recal, intervals ] } + // Move num_intervals to meta map + cram_intervals = cram + .combine(intervals) + .map { meta, cram_, crai, recal, intervals_, num_intervals -> [meta + [num_intervals: num_intervals], cram_, crai, recal, intervals_] } // RUN APPLYBQSR SPARK - GATK4SPARK_APPLYBQSR(cram_intervals, fasta.map{ meta, it -> [ it ] }, fasta_fai.map{ meta, it -> [ it ] }, dict.map{ meta, it -> [ it ] }) + GATK4SPARK_APPLYBQSR( + cram_intervals, + fasta.map { _meta, fasta_ -> [fasta_] }, + fasta_fai.map { _meta, fasta_fai_ -> [fasta_fai_] }, + dict.map { _meta, dict_ -> [dict_] }, + ) // Gather the recalibrated cram files - cram_to_merge = GATK4SPARK_APPLYBQSR.out.cram.map{ meta, cram -> [ groupKey(meta, meta.num_intervals), cram ] }.groupTuple() + cram_to_merge = GATK4SPARK_APPLYBQSR.out.cram.map { meta, cram_ -> [groupKey(meta, meta.num_intervals), cram_] }.groupTuple() // Merge and index the recalibrated cram files - CRAM_MERGE_INDEX_SAMTOOLS(cram_to_merge, fasta.map{ meta, it -> [ it ] }, fasta_fai.map{ meta, it -> [ it ] }) + CRAM_MERGE_INDEX_SAMTOOLS( + cram_to_merge, + fasta.map { _meta, fasta_ -> [fasta_] }, + fasta_fai.map { _meta, fasta_fai_ -> [fasta_fai_] }, + ) - cram_recal = CRAM_MERGE_INDEX_SAMTOOLS.out.cram_crai - // Remove no longer necessary field: num_intervals - .map{ meta, cram, crai -> [ meta - meta.subMap('num_intervals'), cram, crai ] } + // Remove no longer necessary field: num_intervals + cram_recal = CRAM_MERGE_INDEX_SAMTOOLS.out.cram_crai.map { meta, cram_, crai -> [meta - meta.subMap('num_intervals'), cram_, crai] } // Gather versions of all tools used versions = versions.mix(GATK4SPARK_APPLYBQSR.out.versions) versions = versions.mix(CRAM_MERGE_INDEX_SAMTOOLS.out.versions) emit: - cram = cram_recal // channel: [ meta, cram, crai ] - - versions // channel: [ versions.yml ] + cram = cram_recal // channel: [ meta, cram, crai ] + versions // channel: [ versions.yml ] } diff --git a/subworkflows/local/bam_baserecalibrator/main.nf b/subworkflows/local/bam_baserecalibrator/main.nf index f5105e463..57b654ad6 100644 --- a/subworkflows/local/bam_baserecalibrator/main.nf +++ b/subworkflows/local/bam_baserecalibrator/main.nf @@ -4,8 +4,8 @@ // For all modules here: // A when clause condition is defined in the conf/modules.config to determine if the module should be run -include { GATK4_BASERECALIBRATOR } from '../../../modules/nf-core/gatk4/baserecalibrator/main' -include { GATK4_GATHERBQSRREPORTS } from '../../../modules/nf-core/gatk4/gatherbqsrreports/main' +include { GATK4_BASERECALIBRATOR } from '../../../modules/nf-core/gatk4/baserecalibrator' +include { GATK4_GATHERBQSRREPORTS } from '../../../modules/nf-core/gatk4/gatherbqsrreports' workflow BAM_BASERECALIBRATOR { take: @@ -21,27 +21,31 @@ workflow BAM_BASERECALIBRATOR { versions = Channel.empty() // Combine cram and intervals for spread and gather strategy - cram_intervals = cram.combine(intervals) - // Move num_intervals to meta map - .map{ meta, cram, crai, intervals, num_intervals -> [ meta + [ num_intervals:num_intervals ], cram, crai, intervals ] } + // Move num_intervals to meta map + cram_intervals = cram + .combine(intervals) + .map { meta, cram_, crai, intervals_, num_intervals -> [meta + [num_intervals: num_intervals], cram_, crai, intervals_] } // RUN BASERECALIBRATOR GATK4_BASERECALIBRATOR(cram_intervals, fasta, fasta_fai, dict, known_sites, known_sites_tbi) // Figuring out if there is one or more table(s) from the same sample - table_to_merge = GATK4_BASERECALIBRATOR.out.table.map{ meta, table -> [ groupKey(meta, meta.num_intervals), table ] }.groupTuple().branch{ - // Use meta.num_intervals to asses number of intervals - single: it[0].num_intervals <= 1 - multiple: it[0].num_intervals > 1 - } + table_to_merge = GATK4_BASERECALIBRATOR.out.table + .map { meta, table -> [groupKey(meta, meta.num_intervals), table] } + .groupTuple() + .branch { + single: it[0].num_intervals <= 1 + multiple: it[0].num_intervals > 1 + } // Only when using intervals GATK4_GATHERBQSRREPORTS(table_to_merge.multiple) // Mix intervals and no_intervals channels together - table_bqsr = GATK4_GATHERBQSRREPORTS.out.table.mix(table_to_merge.single.map{ meta, table -> [ meta, table[0] ] }) - // Remove no longer necessary field: num_intervals - .map{ meta, table -> [ meta - meta.subMap('num_intervals'), table ] } + // Remove no longer necessary field: num_intervals + table_bqsr = GATK4_GATHERBQSRREPORTS.out.table + .mix(table_to_merge.single.map { meta, table -> [meta, table[0]] }) + .map { meta, table -> [meta - meta.subMap('num_intervals'), table] } // Gather versions of all tools used versions = versions.mix(GATK4_BASERECALIBRATOR.out.versions) @@ -49,6 +53,5 @@ workflow BAM_BASERECALIBRATOR { emit: table_bqsr // channel: [ meta, table ] - versions // channel: [ versions.yml ] } diff --git a/subworkflows/local/bam_baserecalibrator_spark/main.nf b/subworkflows/local/bam_baserecalibrator_spark/main.nf index c31b1aa38..da33ce3ea 100644 --- a/subworkflows/local/bam_baserecalibrator_spark/main.nf +++ b/subworkflows/local/bam_baserecalibrator_spark/main.nf @@ -4,8 +4,8 @@ // For all modules here: // A when clause condition is defined in the conf/modules.config to determine if the module should be run -include { GATK4SPARK_BASERECALIBRATOR } from '../../../modules/nf-core/gatk4spark/baserecalibrator/main' -include { GATK4_GATHERBQSRREPORTS } from '../../../modules/nf-core/gatk4/gatherbqsrreports/main' +include { GATK4SPARK_BASERECALIBRATOR } from '../../../modules/nf-core/gatk4spark/baserecalibrator' +include { GATK4_GATHERBQSRREPORTS } from '../../../modules/nf-core/gatk4/gatherbqsrreports' workflow BAM_BASERECALIBRATOR_SPARK { take: @@ -21,27 +21,38 @@ workflow BAM_BASERECALIBRATOR_SPARK { versions = Channel.empty() // Combine cram and intervals for spread and gather strategy - cram_intervals = cram.combine(intervals) - // Move num_intervals to meta map - .map{ meta, cram, crai, intervals, num_intervals -> [ meta + [ num_intervals:num_intervals ], cram, crai, intervals ] } + // Move num_intervals to meta map + cram_intervals = cram + .combine(intervals) + .map { meta, cram_, crai, intervals_, num_intervals -> [meta + [num_intervals: num_intervals], cram_, crai, intervals_] } // RUN BASERECALIBRATOR SPARK - GATK4SPARK_BASERECALIBRATOR(cram_intervals, fasta.map{ meta, it -> [ it ] }, fasta_fai.map{ meta, it -> [ it ] }, dict.map{ meta, it -> [ it ] }, known_sites, known_sites_tbi) + GATK4SPARK_BASERECALIBRATOR( + cram_intervals, + fasta.map { _meta, fasta_ -> [fasta_] }, + fasta_fai.map { _meta, fasta_fai_ -> [fasta_fai_] }, + dict.map { _meta, dict_ -> [dict_] }, + known_sites, + known_sites_tbi, + ) // Figuring out if there is one or more table(s) from the same sample - table_to_merge = GATK4SPARK_BASERECALIBRATOR.out.table.map{ meta, table -> [ groupKey(meta, meta.num_intervals), table ] }.groupTuple().branch{ - // Use meta.num_intervals to asses number of intervals - single: it[0].num_intervals <= 1 - multiple: it[0].num_intervals > 1 - } + table_to_merge = GATK4SPARK_BASERECALIBRATOR.out.table + .map { meta, table -> [groupKey(meta, meta.num_intervals), table] } + .groupTuple() + .branch { + single: it[0].num_intervals <= 1 + multiple: it[0].num_intervals > 1 + } // Only when using intervals GATK4_GATHERBQSRREPORTS(table_to_merge.multiple) // Mix intervals and no_intervals channels together - table_bqsr = GATK4_GATHERBQSRREPORTS.out.table.mix(table_to_merge.single.map{ meta, table -> [ meta, table[0] ] }) - // Remove no longer necessary field: num_intervals - .map{ meta, table -> [ meta - meta.subMap('num_intervals'), table ] } + // Remove no longer necessary field: num_intervals + table_bqsr = GATK4_GATHERBQSRREPORTS.out.table + .mix(table_to_merge.single.map { meta, table -> [meta, table[0]] }) + .map { meta, table -> [meta - meta.subMap('num_intervals'), table] } // Gather versions of all tools used versions = versions.mix(GATK4SPARK_BASERECALIBRATOR.out.versions) @@ -49,6 +60,5 @@ workflow BAM_BASERECALIBRATOR_SPARK { emit: table_bqsr // channel: [ meta, table ] - versions // channel: [ versions.yml ] } diff --git a/subworkflows/local/bam_joint_calling_germline_gatk/main.nf b/subworkflows/local/bam_joint_calling_germline_gatk/main.nf index 46357d6fb..629284abf 100644 --- a/subworkflows/local/bam_joint_calling_germline_gatk/main.nf +++ b/subworkflows/local/bam_joint_calling_germline_gatk/main.nf @@ -4,22 +4,22 @@ // Merge samples with genomicsdbimport, perform joint genotyping with genotypeGVCFS // -include { BCFTOOLS_SORT } from '../../../modules/nf-core/bcftools/sort/main' -include { GATK4_APPLYVQSR as GATK4_APPLYVQSR_INDEL } from '../../../modules/nf-core/gatk4/applyvqsr/main' -include { GATK4_APPLYVQSR as GATK4_APPLYVQSR_SNP } from '../../../modules/nf-core/gatk4/applyvqsr/main' -include { GATK4_GENOMICSDBIMPORT } from '../../../modules/nf-core/gatk4/genomicsdbimport/main' -include { GATK4_GENOTYPEGVCFS } from '../../../modules/nf-core/gatk4/genotypegvcfs/main' -include { GATK4_MERGEVCFS as MERGE_GENOTYPEGVCFS } from '../../../modules/nf-core/gatk4/mergevcfs/main' -include { GATK4_MERGEVCFS as MERGE_VQSR } from '../../../modules/nf-core/gatk4/mergevcfs/main' -include { GATK4_VARIANTRECALIBRATOR as VARIANTRECALIBRATOR_INDEL } from '../../../modules/nf-core/gatk4/variantrecalibrator/main' -include { GATK4_VARIANTRECALIBRATOR as VARIANTRECALIBRATOR_SNP } from '../../../modules/nf-core/gatk4/variantrecalibrator/main' +include { BCFTOOLS_SORT } from '../../../modules/nf-core/bcftools/sort' +include { GATK4_APPLYVQSR as GATK4_APPLYVQSR_INDEL } from '../../../modules/nf-core/gatk4/applyvqsr' +include { GATK4_APPLYVQSR as GATK4_APPLYVQSR_SNP } from '../../../modules/nf-core/gatk4/applyvqsr' +include { GATK4_GENOMICSDBIMPORT } from '../../../modules/nf-core/gatk4/genomicsdbimport' +include { GATK4_GENOTYPEGVCFS } from '../../../modules/nf-core/gatk4/genotypegvcfs' +include { GATK4_MERGEVCFS as MERGE_GENOTYPEGVCFS } from '../../../modules/nf-core/gatk4/mergevcfs' +include { GATK4_MERGEVCFS as MERGE_VQSR } from '../../../modules/nf-core/gatk4/mergevcfs' +include { GATK4_VARIANTRECALIBRATOR as VARIANTRECALIBRATOR_INDEL } from '../../../modules/nf-core/gatk4/variantrecalibrator' +include { GATK4_VARIANTRECALIBRATOR as VARIANTRECALIBRATOR_SNP } from '../../../modules/nf-core/gatk4/variantrecalibrator' workflow BAM_JOINT_CALLING_GERMLINE_GATK { take: - input // channel: [ meta, [ input ], [ input_index ], intervals ] - fasta // channel: [ fasta ] - fai // channel: [ fasta_fai ] - dict // channel: [ dict ] + input // channel: [ meta, [ input ], [ input_index ], intervals ] + fasta // channel: [ fasta ] + fai // channel: [ fasta_fai ] + dict // channel: [ dict ] dbsnp dbsnp_tbi dbsnp_vqsr @@ -37,25 +37,25 @@ workflow BAM_JOINT_CALLING_GERMLINE_GATK { // Rename based on num_intervals, group all samples by their interval_name/interval_file and restructure for channel // Group by [0, 3] to avoid a list of metas and make sure that any intervals gendb_input = input - .map{ meta, gvcf, tbi, intervals -> [ [ id:'joint_variant_calling', intervals_name:intervals.baseName, num_intervals:meta.num_intervals ], gvcf, tbi, intervals ] } - .groupTuple(by:3) //join on interval file - .map{ meta_list, gvcf, tbi, intervals -> + .map { meta, gvcf, tbi, intervals -> [[id: 'joint_variant_calling', intervals_name: intervals.baseName, num_intervals: meta.num_intervals], gvcf, tbi, intervals] } + .groupTuple(by: 3) + .map { meta_list, gvcf, tbi, intervals -> // meta is now a list of [meta1, meta2] but they are all the same. So take the first element. - [ meta_list[0], gvcf, tbi, intervals, [], [] ] + [meta_list[0], gvcf, tbi, intervals, [], []] } // Convert all sample vcfs into a genomicsdb workspace using genomicsdbimport GATK4_GENOMICSDBIMPORT(gendb_input, false, false, false) - genotype_input = GATK4_GENOMICSDBIMPORT.out.genomicsdb.map{ meta, genomicsdb -> [ meta, genomicsdb, [], [], [] ] } + genotype_input = GATK4_GENOMICSDBIMPORT.out.genomicsdb.map { meta, genomicsdb -> [meta, genomicsdb, [], [], []] } // Joint genotyping performed using GenotypeGVCFs // Sort vcfs called by interval within each VCF - GATK4_GENOTYPEGVCFS(genotype_input, fasta, fai, dict, dbsnp.map{ it -> [ [:], it ] }, dbsnp_tbi.map{ it -> [ [:], it ] }) + GATK4_GENOTYPEGVCFS(genotype_input, fasta, fai, dict, dbsnp.map { it -> [[:], it] }, dbsnp_tbi.map { it -> [[:], it] }) BCFTOOLS_SORT(GATK4_GENOTYPEGVCFS.out.vcf) - gvcf_to_merge = BCFTOOLS_SORT.out.vcf.map{ meta, vcf -> [ meta.subMap('num_intervals') + [ id:'joint_variant_calling', patient:'all_samples', variantcaller:'haplotypecaller' ], vcf ]}.groupTuple() + gvcf_to_merge = BCFTOOLS_SORT.out.vcf.map { meta, vcf -> [meta.subMap('num_intervals') + [id: 'joint_variant_calling', patient: 'all_samples', variantcaller: 'haplotypecaller'], vcf] }.groupTuple() // Merge scatter/gather vcfs & index // Rework meta for variantscalled.csv and annotation tools @@ -71,18 +71,20 @@ workflow BAM_JOINT_CALLING_GERMLINE_GATK { resource_indels_vcf, resource_indels_tbi, indels_resource_label, - fasta.map{ meta, fasta -> [ fasta ] }, - fai.map{ meta, fai -> [ fai ] }, - dict.map{ meta, dict -> [ dict ] }) + fasta.map { _meta, fasta_ -> [fasta_] }, + fai.map { _meta, fai_ -> [fai_] }, + dict.map { _meta, dict_ -> [dict_] }, + ) VARIANTRECALIBRATOR_SNP( vqsr_input, resource_snps_vcf, resource_snps_tbi, snps_resource_label, - fasta.map{ meta, fasta -> [ fasta ] }, - fai.map{ meta, fai -> [ fai ] }, - dict.map{ meta, dict -> [ dict ] }) + fasta.map { _meta, fasta_ -> [fasta_] }, + fai.map { _meta, fai_ -> [fai_] }, + dict.map { _meta, dict_ -> [dict_] }, + ) //Prepare SNPs and INDELs for ApplyVQSR // Step 1. : ApplyVQSR to SNPs @@ -90,71 +92,82 @@ workflow BAM_JOINT_CALLING_GERMLINE_GATK { // Join results of variant recalibration into a single channel tuple // Rework meta for variantscalled.csv and annotation tools - vqsr_input_snp = vqsr_input.join(VARIANTRECALIBRATOR_SNP.out.recal, failOnDuplicate: true) + vqsr_input_snp = vqsr_input + .join(VARIANTRECALIBRATOR_SNP.out.recal, failOnDuplicate: true) .join(VARIANTRECALIBRATOR_SNP.out.idx, failOnDuplicate: true) .join(VARIANTRECALIBRATOR_SNP.out.tranches, failOnDuplicate: true) - .map{ meta, vcf, tbi, recal, index, tranche -> [ meta + [ id:'recalibrated_joint_variant_calling' ], vcf, tbi, recal, index, tranche ] } + .map { meta, vcf, tbi, recal, index, tranche -> [meta + [id: 'recalibrated_joint_variant_calling'], vcf, tbi, recal, index, tranche] } GATK4_APPLYVQSR_SNP( vqsr_input_snp, - fasta.map{ meta, fasta -> [ fasta ] }, - fai.map{ meta, fai -> [ fai ] }, - dict.map{ meta, dict -> [ dict ] }) + fasta.map { _meta, fasta_ -> [fasta_] }, + fai.map { _meta, fai_ -> [fai_] }, + dict.map { _meta, dict_ -> [dict_] }, + ) // Join results of ApplyVQSR_SNP and use as input for Indels to avoid duplicate entries in the result // Rework meta for variantscalled.csv and annotation tools - vqsr_input_indel = GATK4_APPLYVQSR_SNP.out.vcf.join(GATK4_APPLYVQSR_SNP.out.tbi).map{ meta, vcf, tbi -> [ meta + [ id:'joint_variant_calling' ], vcf, tbi ]} + vqsr_input_indel = GATK4_APPLYVQSR_SNP.out.vcf + .join(GATK4_APPLYVQSR_SNP.out.tbi) + .map { meta, vcf, tbi -> [meta + [id: 'joint_variant_calling'], vcf, tbi] } .join(VARIANTRECALIBRATOR_INDEL.out.recal, failOnDuplicate: true) .join(VARIANTRECALIBRATOR_INDEL.out.idx, failOnDuplicate: true) .join(VARIANTRECALIBRATOR_INDEL.out.tranches, failOnDuplicate: true) - .map{ meta, vcf, tbi, recal, index, tranche -> [ meta + [ id:'recalibrated_joint_variant_calling' ], vcf, tbi, recal, index, tranche ] } + .map { meta, vcf, tbi, recal, index, tranche -> [meta + [id: 'recalibrated_joint_variant_calling'], vcf, tbi, recal, index, tranche] } GATK4_APPLYVQSR_INDEL( vqsr_input_indel, - fasta.map{ meta, fasta -> [ fasta ] }, - fai.map{ meta, fai -> [ fai ] }, - dict.map{ meta, dict -> [ dict ] }) + fasta.map { _meta, fasta_ -> [fasta_] }, + fai.map { _meta, fai_ -> [fai_] }, + dict.map { _meta, dict_ -> [dict_] }, + ) // The following is an ugly monster to achieve the following: // When MERGE_GENOTYPEGVCFS and GATK4_APPLYVQSR are run, then use output from APPLYVQSR // When MERGE_GENOTYPEGVCFS and NOT GATK4_APPLYVQSR , then use the output from MERGE_GENOTYPEGVCFS - merge_vcf_for_join = MERGE_GENOTYPEGVCFS.out.vcf.map{meta, vcf -> [[id: 'joint_variant_calling'] , vcf]} - merge_tbi_for_join = MERGE_GENOTYPEGVCFS.out.tbi.map{meta, tbi -> [[id: 'joint_variant_calling'] , tbi]} + merge_vcf_for_join = MERGE_GENOTYPEGVCFS.out.vcf.map { _meta, vcf -> [[id: 'joint_variant_calling'], vcf] } + merge_tbi_for_join = MERGE_GENOTYPEGVCFS.out.tbi.map { _meta, tbi -> [[id: 'joint_variant_calling'], tbi] } // Remap for both to have the same key, if ApplyBQSR is not run, the channel is empty --> populate with empty elements - vqsr_vcf_for_join = GATK4_APPLYVQSR_INDEL.out.vcf.ifEmpty([[:], []]).map{meta, vcf -> [[id: 'joint_variant_calling'] , vcf]} - vqsr_tbi_for_join = GATK4_APPLYVQSR_INDEL.out.tbi.ifEmpty([[:], []]).map{meta, tbi -> [[id: 'joint_variant_calling'] , tbi]} + vqsr_vcf_for_join = GATK4_APPLYVQSR_INDEL.out.vcf.ifEmpty([[:], []]).map { _meta, vcf -> [[id: 'joint_variant_calling'], vcf] } + vqsr_tbi_for_join = GATK4_APPLYVQSR_INDEL.out.tbi.ifEmpty([[:], []]).map { _meta, tbi -> [[id: 'joint_variant_calling'], tbi] } // Join on metamap // If both --> meta, vcf_merged, vcf_bqsr // If not VQSR --> meta, vcf_merged, [] // if the second is empty, use the first - genotype_vcf = merge_vcf_for_join.join(vqsr_vcf_for_join, remainder: true).map{ - meta, joint_vcf, recal_vcf -> + genotype_vcf = merge_vcf_for_join + .join(vqsr_vcf_for_join, remainder: true) + .map { _meta, joint_vcf, recal_vcf -> - vcf_out = recal_vcf ?: joint_vcf + def vcf_out = recal_vcf ?: joint_vcf - [[id:"joint_variant_calling", patient:"all_samples", variantcaller:"haplotypecaller"], vcf_out] - } + [[id: "joint_variant_calling", patient: "all_samples", variantcaller: "haplotypecaller"], vcf_out] + } - genotype_index = merge_tbi_for_join.join(vqsr_tbi_for_join, remainder: true).map{ - meta, joint_tbi, recal_tbi -> + genotype_index = merge_tbi_for_join + .join(vqsr_tbi_for_join, remainder: true) + .map { _meta, joint_tbi, recal_tbi -> - tbi_out = recal_tbi ?: joint_tbi + def tbi_out = recal_tbi ?: joint_tbi - [[id:"joint_variant_calling", patient:"all_samples", variantcaller:"haplotypecaller"], tbi_out] - } + [[id: "joint_variant_calling", patient: "all_samples", variantcaller: "haplotypecaller"], tbi_out] + } + versions = versions.mix(BCFTOOLS_SORT.out.versions) + versions = versions.mix(GATK4_APPLYVQSR_INDEL.out.versions) + versions = versions.mix(GATK4_APPLYVQSR_SNP.out.versions) versions = versions.mix(GATK4_GENOMICSDBIMPORT.out.versions) versions = versions.mix(GATK4_GENOTYPEGVCFS.out.versions) + versions = versions.mix(MERGE_GENOTYPEGVCFS.out.versions) + versions = versions.mix(MERGE_VQSR.out.versions) + versions = versions.mix(VARIANTRECALIBRATOR_INDEL.out.versions) versions = versions.mix(VARIANTRECALIBRATOR_SNP.out.versions) - versions = versions.mix(GATK4_APPLYVQSR_SNP.out.versions) emit: - genotype_index // channel: [ val(meta), [ tbi ] ] - genotype_vcf // channel: [ val(meta), [ vcf ] ] - - versions // channel: [ versions.yml ] + genotype_index // channel: [ val(meta), [ tbi ] ] + genotype_vcf // channel: [ val(meta), [ vcf ] ] + versions // channel: [ versions.yml ] } diff --git a/subworkflows/local/bam_joint_calling_germline_sentieon/main.nf b/subworkflows/local/bam_joint_calling_germline_sentieon/main.nf index acf30c575..df175db31 100644 --- a/subworkflows/local/bam_joint_calling_germline_sentieon/main.nf +++ b/subworkflows/local/bam_joint_calling_germline_sentieon/main.nf @@ -4,20 +4,20 @@ // Merge samples perform joint genotyping with SENTIEON_GVCFTYPER // -include { BCFTOOLS_SORT } from '../../../modules/nf-core/bcftools/sort/main' -include { GATK4_MERGEVCFS as MERGE_GENOTYPEGVCFS } from '../../../modules/nf-core/gatk4/mergevcfs/main' -include { SENTIEON_APPLYVARCAL as SENTIEON_APPLYVARCAL_INDEL } from '../../../modules/nf-core/sentieon/applyvarcal/main' -include { SENTIEON_APPLYVARCAL as SENTIEON_APPLYVARCAL_SNP } from '../../../modules/nf-core/sentieon/applyvarcal/main' -include { SENTIEON_GVCFTYPER } from '../../../modules/nf-core/sentieon/gvcftyper/main' -include { SENTIEON_VARCAL as SENTIEON_VARCAL_INDEL } from '../../../modules/nf-core/sentieon/varcal/main' -include { SENTIEON_VARCAL as SENTIEON_VARCAL_SNP } from '../../../modules/nf-core/sentieon/varcal/main' +include { BCFTOOLS_SORT } from '../../../modules/nf-core/bcftools/sort' +include { GATK4_MERGEVCFS as MERGE_GENOTYPEGVCFS } from '../../../modules/nf-core/gatk4/mergevcfs' +include { SENTIEON_APPLYVARCAL as SENTIEON_APPLYVARCAL_INDEL } from '../../../modules/nf-core/sentieon/applyvarcal' +include { SENTIEON_APPLYVARCAL as SENTIEON_APPLYVARCAL_SNP } from '../../../modules/nf-core/sentieon/applyvarcal' +include { SENTIEON_GVCFTYPER } from '../../../modules/nf-core/sentieon/gvcftyper' +include { SENTIEON_VARCAL as SENTIEON_VARCAL_INDEL } from '../../../modules/nf-core/sentieon/varcal' +include { SENTIEON_VARCAL as SENTIEON_VARCAL_SNP } from '../../../modules/nf-core/sentieon/varcal' workflow BAM_JOINT_CALLING_GERMLINE_SENTIEON { take: - input // channel: [ meta, [ input ], [ input_index ], intervals ] - fasta // channel: [ fasta ] - fai // channel: [ fasta_fai ] - dict // channel: [ dict ] + input // channel: [ meta, [ input ], [ input_index ], intervals ] + fasta // channel: [ fasta ] + fai // channel: [ fasta_fai ] + dict // channel: [ dict ] dbsnp dbsnp_tbi dbsnp_vqsr @@ -33,36 +33,38 @@ workflow BAM_JOINT_CALLING_GERMLINE_SENTIEON { versions = Channel.empty() sentieon_input = input - .map{ meta, gvcf, tbi, intervals -> [ [ id:'joint_variant_calling', intervals_name:intervals.baseName, num_intervals:meta.num_intervals ], gvcf, tbi, intervals ] } - .groupTuple(by:[0, 3]) + .map { meta, gvcf, tbi, intervals -> [[id: 'joint_variant_calling', intervals_name: intervals.baseName, num_intervals: meta.num_intervals], gvcf, tbi, intervals] } + .groupTuple(by: [0, 3]) SENTIEON_GVCFTYPER( sentieon_input, fasta, fai, - dbsnp.map{ file -> [[id:'dbsnp'], file] }, - dbsnp_tbi.map{ file -> [[id:'dbsnp'], file] }) + dbsnp.map { file -> [[id: 'dbsnp'], file] }, + dbsnp_tbi.map { file -> [[id: 'dbsnp'], file] }, + ) BCFTOOLS_SORT(SENTIEON_GVCFTYPER.out.vcf_gz) - gvcf_to_merge = BCFTOOLS_SORT.out.vcf.map{ meta, vcf -> [ meta.subMap('num_intervals') + [ id:'joint_variant_calling', patient:'all_samples', variantcaller:variant_caller ], vcf ]}.groupTuple() + gvcf_to_merge = BCFTOOLS_SORT.out.vcf.map { meta, vcf -> [meta.subMap('num_intervals') + [id: 'joint_variant_calling', patient: 'all_samples', variantcaller: variant_caller], vcf] }.groupTuple() // Merge scatter/gather vcfs & index // Rework meta for variantscalled.csv and annotation tools MERGE_GENOTYPEGVCFS(gvcf_to_merge, dict) - merged_vcf = MERGE_GENOTYPEGVCFS.out.vcf.map{meta, vcf -> [[id: 'joint_variant_calling'] , vcf]} - merged_tbi = MERGE_GENOTYPEGVCFS.out.tbi.map{meta, tbi -> [[id: 'joint_variant_calling'] , tbi]} + merged_vcf = MERGE_GENOTYPEGVCFS.out.vcf.map { _meta, vcf -> [[id: 'joint_variant_calling'], vcf] } + merged_tbi = MERGE_GENOTYPEGVCFS.out.tbi.map { _meta, tbi -> [[id: 'joint_variant_calling'], tbi] } if (variant_caller == 'sentieon_dnascope') { // As advised by Don Freed (Sentieon), VQSR is skipped for DnaScope - genotype_vcf = merged_vcf.map{ - meta, vcf -> [ meta + [ patient:"all_samples", variantcaller:'sentieon_dnascope'], vcf ] + genotype_vcf = merged_vcf.map { meta, vcf -> + [meta + [patient: "all_samples", variantcaller: 'sentieon_dnascope'], vcf] } - genotype_index = merged_tbi.map{ - meta, tbi -> [ meta + [ patient:"all_samples", variantcaller:'sentieon_dnascope'], tbi ] + genotype_index = merged_tbi.map { meta, tbi -> + [meta + [patient: "all_samples", variantcaller: 'sentieon_dnascope'], tbi] } - } else { + } + else { vqsr_input = MERGE_GENOTYPEGVCFS.out.vcf.join(MERGE_GENOTYPEGVCFS.out.tbi, failOnDuplicate: true) indels_resource_label = known_indels_vqsr.mix(dbsnp_vqsr).collect() snps_resource_label = known_snps_vqsr.mix(dbsnp_vqsr).collect() @@ -73,16 +75,18 @@ workflow BAM_JOINT_CALLING_GERMLINE_SENTIEON { resource_indels_vcf, resource_indels_tbi, indels_resource_label, - fasta.map{meta, it -> [ it ]}, - fai.map{meta, it -> [ it ]}) + fasta.map { _meta, fasta_ -> [fasta_] }, + fai.map { _meta, fai_ -> [fai_] }, + ) SENTIEON_VARCAL_SNP( vqsr_input, resource_snps_vcf, resource_snps_tbi, snps_resource_label, - fasta.map{meta, it -> [ it ]}, - fai.map{meta, it -> [ it ]}) + fasta.map { _meta, fasta_ -> [fasta_] }, + fai.map { _meta, fai_ -> [fai_] }, + ) //Prepare SNPs and INDELs for Sentieon's applyvarcal // Step 1. : applyvarcal to SNPs @@ -90,20 +94,23 @@ workflow BAM_JOINT_CALLING_GERMLINE_SENTIEON { // Join results of variant recalibration into a single channel tuple // Rework meta for variantscalled.csv and annotation tools - vqsr_input_snp = vqsr_input.join(SENTIEON_VARCAL_SNP.out.recal, failOnDuplicate: true) + vqsr_input_snp = vqsr_input + .join(SENTIEON_VARCAL_SNP.out.recal, failOnDuplicate: true) .join(SENTIEON_VARCAL_SNP.out.idx, failOnDuplicate: true) .join(SENTIEON_VARCAL_SNP.out.tranches, failOnDuplicate: true) - .map{ meta, vcf, tbi, recal, index, tranche -> [ meta + [ id:'recalibrated_joint_variant_calling' ], vcf, tbi, recal, index, tranche ] } + .map { meta, vcf, tbi, recal, index, tranche -> [meta + [id: 'recalibrated_joint_variant_calling'], vcf, tbi, recal, index, tranche] } SENTIEON_APPLYVARCAL_SNP(vqsr_input_snp, fasta, fai) // Join results of SENTIEON_APPLYVARCAL_SNP and use as input for SENTIEON_APPLYVARCAL_INDEL to avoid duplicate entries in the result // Rework meta for variantscalled.csv and annotation tools - vqsr_input_indel = SENTIEON_APPLYVARCAL_SNP.out.vcf.join(SENTIEON_APPLYVARCAL_SNP.out.tbi).map{ meta, vcf, tbi -> [ meta + [ id:'joint_variant_calling' ], vcf, tbi ]} + vqsr_input_indel = SENTIEON_APPLYVARCAL_SNP.out.vcf + .join(SENTIEON_APPLYVARCAL_SNP.out.tbi) + .map { meta, vcf, tbi -> [meta + [id: 'joint_variant_calling'], vcf, tbi] } .join(SENTIEON_VARCAL_INDEL.out.recal, failOnDuplicate: true) .join(SENTIEON_VARCAL_INDEL.out.idx, failOnDuplicate: true) .join(SENTIEON_VARCAL_INDEL.out.tranches, failOnDuplicate: true) - .map{ meta, vcf, tbi, recal, index, tranche -> [ meta + [ id:'recalibrated_joint_variant_calling' ], vcf, tbi, recal, index, tranche ] } + .map { meta, vcf, tbi, recal, index, tranche -> [meta + [id: 'recalibrated_joint_variant_calling'], vcf, tbi, recal, index, tranche] } SENTIEON_APPLYVARCAL_INDEL(vqsr_input_indel, fasta, fai) @@ -112,38 +119,42 @@ workflow BAM_JOINT_CALLING_GERMLINE_SENTIEON { // When MERGE_GENOTYPEGVCFS and NOT SENTIEON_APPLYVARCAL, then use the output from MERGE_GENOTYPEGVCFS // Remap for both to have the same key, if ApplyBQSR is not run, the channel is empty --> populate with empty elements - vqsr_vcf_for_join = SENTIEON_APPLYVARCAL_INDEL.out.vcf.ifEmpty([[:], []]).map{meta, vcf -> [[id: 'joint_variant_calling'] , vcf]} - vqsr_tbi_for_join = SENTIEON_APPLYVARCAL_INDEL.out.tbi.ifEmpty([[:], []]).map{meta, tbi -> [[id: 'joint_variant_calling'] , tbi]} + vqsr_vcf_for_join = SENTIEON_APPLYVARCAL_INDEL.out.vcf.ifEmpty([[:], []]).map { _meta, vcf -> [[id: 'joint_variant_calling'], vcf] } + vqsr_tbi_for_join = SENTIEON_APPLYVARCAL_INDEL.out.tbi.ifEmpty([[:], []]).map { _meta, tbi -> [[id: 'joint_variant_calling'], tbi] } // Join on metamap // If both --> meta, vcf_merged, vcf_bqsr // If not VQSR --> meta, vcf_merged, [] // if the second is empty, use the first - genotype_vcf = merged_vcf.join(vqsr_vcf_for_join, remainder: true).map{ - meta, joint_vcf, recal_vcf -> + genotype_vcf = merged_vcf + .join(vqsr_vcf_for_join, remainder: true) + .map { _meta, joint_vcf, recal_vcf -> - vcf_out = recal_vcf ?: joint_vcf + def vcf_out = recal_vcf ?: joint_vcf - [[id:"joint_variant_calling", patient:"all_samples", variantcaller:"sentieon_haplotyper"], vcf_out] - } + [[id: "joint_variant_calling", patient: "all_samples", variantcaller: "sentieon_haplotyper"], vcf_out] + } - genotype_index = merged_tbi.join(vqsr_tbi_for_join, remainder: true).map{ - meta, joint_tbi, recal_tbi -> + genotype_index = merged_tbi + .join(vqsr_tbi_for_join, remainder: true) + .map { _meta, joint_tbi, recal_tbi -> - tbi_out = recal_tbi ?: joint_tbi - [[id:"joint_variant_calling", patient:"all_samples", variantcaller:"sentieon_haplotyper"], tbi_out] - } + def tbi_out = recal_tbi ?: joint_tbi + [[id: "joint_variant_calling", patient: "all_samples", variantcaller: "sentieon_haplotyper"], tbi_out] + } - versions = versions.mix(SENTIEON_VARCAL_SNP.out.versions) - versions = versions.mix(SENTIEON_VARCAL_INDEL.out.versions) + versions = versions.mix(BCFTOOLS_SORT.out.versions) + versions = versions.mix(MERGE_GENOTYPEGVCFS.out.versions) versions = versions.mix(SENTIEON_APPLYVARCAL_INDEL.out.versions) + versions = versions.mix(SENTIEON_APPLYVARCAL_SNP.out.versions) + versions = versions.mix(SENTIEON_VARCAL_INDEL.out.versions) + versions = versions.mix(SENTIEON_VARCAL_SNP.out.versions) } versions = versions.mix(SENTIEON_GVCFTYPER.out.versions) emit: - genotype_index // channel: [ val(meta), [ tbi ] ] - genotype_vcf // channel: [ val(meta), [ vcf ] ] - - versions // channel: [ versions.yml ] + genotype_index // channel: [ val(meta), [ tbi ] ] + genotype_vcf // channel: [ val(meta), [ vcf ] ] + versions // channel: [ versions.yml ] } diff --git a/subworkflows/local/bam_markduplicates/main.nf b/subworkflows/local/bam_markduplicates/main.nf index 9c6f15e0f..1d2153bb3 100644 --- a/subworkflows/local/bam_markduplicates/main.nf +++ b/subworkflows/local/bam_markduplicates/main.nf @@ -4,8 +4,8 @@ // For all modules here: // A when clause condition is defined in the conf/modules.config to determine if the module should be run -include { CRAM_QC_MOSDEPTH_SAMTOOLS } from '../cram_qc_mosdepth_samtools/main' -include { GATK4_MARKDUPLICATES } from '../../../modules/nf-core/gatk4/markduplicates/main' +include { CRAM_QC_MOSDEPTH_SAMTOOLS } from '../cram_qc_mosdepth_samtools' +include { GATK4_MARKDUPLICATES } from '../../../modules/nf-core/gatk4/markduplicates' workflow BAM_MARKDUPLICATES { take: @@ -16,10 +16,14 @@ workflow BAM_MARKDUPLICATES { main: versions = Channel.empty() - reports = Channel.empty() + reports = Channel.empty() // RUN MARKUPDUPLICATES - GATK4_MARKDUPLICATES(bam, fasta.map{ meta, fasta -> [ fasta ] }, fasta_fai.map{ meta, fasta_fai -> [ fasta_fai ] }) + GATK4_MARKDUPLICATES( + bam, + fasta.map { _meta, fasta_ -> [fasta_] }, + fasta_fai.map { _meta, fasta_fai_ -> [fasta_fai_] }, + ) // Join with the crai file cram = GATK4_MARKDUPLICATES.out.cram.join(GATK4_MARKDUPLICATES.out.crai, failOnDuplicate: true, failOnMismatch: true) @@ -38,6 +42,5 @@ workflow BAM_MARKDUPLICATES { emit: cram reports - - versions // channel: [ versions.yml ] + versions // channel: [ versions.yml ] } diff --git a/subworkflows/local/bam_markduplicates_spark/main.nf b/subworkflows/local/bam_markduplicates_spark/main.nf index 75d57b674..eabae8fae 100644 --- a/subworkflows/local/bam_markduplicates_spark/main.nf +++ b/subworkflows/local/bam_markduplicates_spark/main.nf @@ -4,25 +4,30 @@ // For all modules here: // A when clause condition is defined in the conf/modules.config to determine if the module should be run -include { CRAM_QC_MOSDEPTH_SAMTOOLS } from '../cram_qc_mosdepth_samtools/main' -include { GATK4_ESTIMATELIBRARYCOMPLEXITY } from '../../../modules/nf-core/gatk4/estimatelibrarycomplexity/main' -include { GATK4SPARK_MARKDUPLICATES } from '../../../modules/nf-core/gatk4spark/markduplicates/main' -include { SAMTOOLS_INDEX as INDEX_MARKDUPLICATES } from '../../../modules/nf-core/samtools/index/main' +include { CRAM_QC_MOSDEPTH_SAMTOOLS } from '../cram_qc_mosdepth_samtools' +include { GATK4_ESTIMATELIBRARYCOMPLEXITY } from '../../../modules/nf-core/gatk4/estimatelibrarycomplexity' +include { GATK4SPARK_MARKDUPLICATES } from '../../../modules/nf-core/gatk4spark/markduplicates' +include { SAMTOOLS_INDEX as INDEX_MARKDUPLICATES } from '../../../modules/nf-core/samtools/index' workflow BAM_MARKDUPLICATES_SPARK { take: - bam // channel: [mandatory] meta, bam - dict // channel: [mandatory] dict - fasta // channel: [mandatory] fasta - fasta_fai // channel: [mandatory] fasta_fai - intervals_bed_combined // channel: [optional] intervals_bed + bam // channel: [mandatory] meta, bam + dict // channel: [mandatory] dict + fasta // channel: [mandatory] fasta + fasta_fai // channel: [mandatory] fasta_fai + intervals_bed_combined // channel: [optional] intervals_bed main: versions = Channel.empty() reports = Channel.empty() // RUN MARKUPDUPLICATES SPARK - GATK4SPARK_MARKDUPLICATES(bam, fasta.map{ meta, fasta -> [ fasta ] }, fasta_fai.map{ meta, fasta_fai -> [ fasta_fai ] }, dict.map{ meta, dict -> [ dict ] }) + GATK4SPARK_MARKDUPLICATES( + bam, + fasta.map { _meta, fasta_ -> [fasta_] }, + fasta_fai.map { _meta, fasta_fai_ -> [fasta_fai_] }, + dict.map { _meta, dict_ -> [dict_] }, + ) // Index cram INDEX_MARKDUPLICATES(GATK4SPARK_MARKDUPLICATES.out.output) @@ -34,7 +39,12 @@ workflow BAM_MARKDUPLICATES_SPARK { CRAM_QC_MOSDEPTH_SAMTOOLS(cram, fasta, intervals_bed_combined) // When running Marduplicates spark, and saving reports - GATK4_ESTIMATELIBRARYCOMPLEXITY(bam, fasta.map{ meta, fasta -> [ fasta ] }, fasta_fai.map{ meta, fasta_fai -> [ fasta_fai ] }, dict.map{ meta, dict -> [ dict ] }) + GATK4_ESTIMATELIBRARYCOMPLEXITY( + bam, + fasta.map { _meta, fasta_ -> [fasta_] }, + fasta_fai.map { _meta, fasta_fai_ -> [fasta_fai_] }, + dict.map { _meta, dict_ -> [dict_] }, + ) // Gather all reports generated reports = reports.mix(GATK4_ESTIMATELIBRARYCOMPLEXITY.out.metrics) @@ -49,6 +59,5 @@ workflow BAM_MARKDUPLICATES_SPARK { emit: cram reports - versions // channel: [ versions.yml ] } diff --git a/subworkflows/local/bam_sentieon_dedup/main.nf b/subworkflows/local/bam_sentieon_dedup/main.nf index 91e531438..a0dc314ed 100644 --- a/subworkflows/local/bam_sentieon_dedup/main.nf +++ b/subworkflows/local/bam_sentieon_dedup/main.nf @@ -1,8 +1,8 @@ // // SENTIEON DEDUP -include { CRAM_QC_MOSDEPTH_SAMTOOLS } from '../cram_qc_mosdepth_samtools/main' -include { SENTIEON_DEDUP } from '../../../modules/nf-core/sentieon/dedup/main' +include { CRAM_QC_MOSDEPTH_SAMTOOLS } from '../cram_qc_mosdepth_samtools' +include { SENTIEON_DEDUP } from '../../../modules/nf-core/sentieon/dedup' workflow BAM_SENTIEON_DEDUP { take: @@ -14,12 +14,12 @@ workflow BAM_SENTIEON_DEDUP { main: versions = Channel.empty() - reports = Channel.empty() + reports = Channel.empty() - bam = bam.map{ meta, bam -> [ meta - meta.subMap('data_type'), bam ] } - bai = bai.map{ meta, bai -> [ meta - meta.subMap('data_type'), bai ] } - bam_bai = bam.join(bai, failOnMismatch:true, failOnDuplicate:true) - SENTIEON_DEDUP(bam_bai, fasta, fasta_fai) + bam = bam.map { meta, _bam -> [meta - meta.subMap('data_type'), _bam] } + bai = bai.map { meta, _bai -> [meta - meta.subMap('data_type'), _bai] } + + SENTIEON_DEDUP(bam.join(bai, failOnMismatch: true, failOnDuplicate: true), fasta, fasta_fai) // Join with the crai file cram = SENTIEON_DEDUP.out.cram.join(SENTIEON_DEDUP.out.crai, failOnDuplicate: true, failOnMismatch: true) @@ -40,6 +40,5 @@ workflow BAM_SENTIEON_DEDUP { emit: cram reports - - versions // channel: [ versions.yml ] + versions // channel: [ versions.yml ] } diff --git a/subworkflows/local/bam_variant_calling_cnvkit/main.nf b/subworkflows/local/bam_variant_calling_cnvkit/main.nf index 20d0fe3fd..2b6aa4e01 100644 --- a/subworkflows/local/bam_variant_calling_cnvkit/main.nf +++ b/subworkflows/local/bam_variant_calling_cnvkit/main.nf @@ -4,18 +4,18 @@ // For all modules here: // A when clause condition is defined in the conf/modules.config to determine if the module should be run -include { CNVKIT_BATCH } from '../../../modules/nf-core/cnvkit/batch/main' -include { CNVKIT_CALL } from '../../../modules/nf-core/cnvkit/call/main' -include { CNVKIT_EXPORT } from '../../../modules/nf-core/cnvkit/export/main' -include { CNVKIT_GENEMETRICS } from '../../../modules/nf-core/cnvkit/genemetrics/main' +include { CNVKIT_BATCH } from '../../../modules/nf-core/cnvkit/batch' +include { CNVKIT_CALL } from '../../../modules/nf-core/cnvkit/call' +include { CNVKIT_EXPORT } from '../../../modules/nf-core/cnvkit/export' +include { CNVKIT_GENEMETRICS } from '../../../modules/nf-core/cnvkit/genemetrics' workflow BAM_VARIANT_CALLING_CNVKIT { take: - cram // channel: [mandatory] meta, cram - fasta // channel: [mandatory] meta, fasta - fasta_fai // channel: [optional] meta, fasta_fai - targets // channel: [mandatory] meta, bed - reference // channel: [optional] meta, cnn + cram // channel: [mandatory] meta, cram + fasta // channel: [mandatory] meta, fasta + fasta_fai // channel: [optional] meta, fasta_fai + targets // channel: [mandatory] meta, bed + reference // channel: [optional] meta, cnn main: versions = Channel.empty() @@ -27,20 +27,21 @@ workflow BAM_VARIANT_CALLING_CNVKIT { // based on SNV frequencies from the VCF file // in the future we might consider to add this, by connecting the emission from // SNV variant calling modules - CNVKIT_CALL(CNVKIT_BATCH.out.cns.map{ meta, cns -> [meta, cns[2], []]}) + CNVKIT_CALL(CNVKIT_BATCH.out.cns.map { meta, cns -> [meta, cns[2], []] }) // export to VCF for compatibility with other tools CNVKIT_EXPORT(CNVKIT_CALL.out.cns) - ch_genemetrics = CNVKIT_BATCH.out.cnr.join(CNVKIT_BATCH.out.cns).map{ meta, cnr, cns -> [meta, cnr, cns[2]]} + ch_genemetrics = CNVKIT_BATCH.out.cnr.join(CNVKIT_BATCH.out.cns).map { meta, cnr, cns -> [meta, cnr, cns[2]] } CNVKIT_GENEMETRICS(ch_genemetrics) versions = versions.mix(CNVKIT_BATCH.out.versions) versions = versions.mix(CNVKIT_GENEMETRICS.out.versions) versions = versions.mix(CNVKIT_CALL.out.versions) versions = versions.mix(CNVKIT_EXPORT.out.versions) + emit: - cnv_calls_raw = CNVKIT_CALL.out.cns // channel: [ meta, cns ] + cnv_calls_raw = CNVKIT_CALL.out.cns // channel: [ meta, cns ] cnv_calls_export = CNVKIT_EXPORT.out.output // channel: [ meta, export_format ] - versions // channel: [ versions.yml ] + versions // channel: [ versions.yml ] } diff --git a/subworkflows/local/bam_variant_calling_haplotypecaller/main.nf b/subworkflows/local/bam_variant_calling_haplotypecaller/main.nf index 72d80fd58..7653390ac 100644 --- a/subworkflows/local/bam_variant_calling_haplotypecaller/main.nf +++ b/subworkflows/local/bam_variant_calling_haplotypecaller/main.nf @@ -1,34 +1,33 @@ // -// GATK4 HAPLOTYPACALLER germline variant calling: +// GATK4 HAPLOTYPECALLER germline variant calling: // // For all modules here: // A when clause condition is defined in the conf/modules.config to determine if the module should be run -include { BAM_MERGE_INDEX_SAMTOOLS } from '../bam_merge_index_samtools/main' -include { GATK4_HAPLOTYPECALLER } from '../../../modules/nf-core/gatk4/haplotypecaller/main' -include { GATK4_MERGEVCFS as MERGE_HAPLOTYPECALLER } from '../../../modules/nf-core/gatk4/mergevcfs/main' +include { BAM_MERGE_INDEX_SAMTOOLS } from '../bam_merge_index_samtools' +include { GATK4_HAPLOTYPECALLER } from '../../../modules/nf-core/gatk4/haplotypecaller' +include { GATK4_MERGEVCFS as MERGE_HAPLOTYPECALLER } from '../../../modules/nf-core/gatk4/mergevcfs' workflow BAM_VARIANT_CALLING_HAPLOTYPECALLER { take: - cram // channel: [mandatory] [ meta, cram, crai, interval.bed ] - fasta // channel: [mandatory] - fasta_fai // channel: [mandatory] - dict // channel: [mandatory] - dbsnp // channel: [optional] - dbsnp_tbi // channel: [optional] - intervals // channel: [mandatory] [ intervals, num_intervals ] or [ [], 0 ] if no intervals + cram // channel: [mandatory] [ meta, cram, crai, interval.bed ] + fasta // channel: [mandatory] + fasta_fai // channel: [mandatory] + dict // channel: [mandatory] + dbsnp // channel: [optional] + dbsnp_tbi // channel: [optional] + intervals // channel: [mandatory] [ intervals, num_intervals ] or [ [], 0 ] if no intervals main: versions = Channel.empty() - vcf = Channel.empty() + vcf = Channel.empty() realigned_bam = Channel.empty() // Combine cram and intervals for spread and gather strategy - cram_intervals = cram.combine(intervals) - // Move num_intervals to meta map - // Add interval_name to allow correct merging with interval files - .map{ meta, cram, crai, intervals, num_intervals -> [ meta + [ interval_name:intervals.baseName, num_intervals:num_intervals, variantcaller:'haplotypecaller' ], cram, crai, intervals, [] ] } + cram_intervals = cram + .combine(intervals) + .map { meta, cram_, crai, intervals_, num_intervals -> [meta + [interval_name: intervals_.baseName, num_intervals: num_intervals, variantcaller: 'haplotypecaller'], cram_, crai, intervals_, []] } GATK4_HAPLOTYPECALLER( cram_intervals, @@ -36,73 +35,79 @@ workflow BAM_VARIANT_CALLING_HAPLOTYPECALLER { fasta_fai, dict, dbsnp, - dbsnp_tbi) + dbsnp_tbi, + ) // For joint genotyping gvcf_tbi_intervals = GATK4_HAPLOTYPECALLER.out.vcf .join(GATK4_HAPLOTYPECALLER.out.tbi, failOnMismatch: true) .join(cram_intervals, failOnMismatch: true) - .map{ meta, gvcf, tbi, cram, crai, intervals, dragstr_model -> [ meta, gvcf, tbi, intervals ] } + .map { meta, gvcf, tbi, _cram, _crai, intervals_, _dragstr_model -> [meta, gvcf, tbi, intervals_] } // Figuring out if there is one or more vcf(s) from the same sample - haplotypecaller_vcf = GATK4_HAPLOTYPECALLER.out.vcf.map{ - meta, vcf -> [ meta - meta.subMap('interval_name'), vcf] + haplotypecaller_vcf = GATK4_HAPLOTYPECALLER.out.vcf + .map { meta, vcf_ -> + [meta - meta.subMap('interval_name'), vcf_] } - .branch{ - // Use meta.num_intervals to asses number of intervals - intervals: it[0].num_intervals > 1 + .branch { + intervals: it[0].num_intervals > 1 no_intervals: it[0].num_intervals <= 1 } // Figuring out if there is one or more tbi(s) from the same sample - haplotypecaller_tbi = GATK4_HAPLOTYPECALLER.out.tbi.map{ - meta, tbi -> [ meta - meta.subMap('interval_name'), tbi] - }.branch{ - // Use meta.num_intervals to asses number of intervals - intervals: it[0].num_intervals > 1 + haplotypecaller_tbi = GATK4_HAPLOTYPECALLER.out.tbi + .map { meta, tbi -> + [meta - meta.subMap('interval_name'), tbi] + } + .branch { + intervals: it[0].num_intervals > 1 no_intervals: it[0].num_intervals <= 1 } // Figuring out if there is one or more bam(s) from the same sample - haplotypecaller_bam = GATK4_HAPLOTYPECALLER.out.bam.map{ - meta, bam -> [ meta - meta.subMap('interval_name'), bam] - }.branch{ - // Use meta.num_intervals to asses number of intervals - intervals: it[0].num_intervals > 1 + haplotypecaller_bam = GATK4_HAPLOTYPECALLER.out.bam + .map { meta, bam -> + [meta - meta.subMap('interval_name'), bam] + } + .branch { + intervals: it[0].num_intervals > 1 no_intervals: it[0].num_intervals <= 1 } // Only when using intervals - MERGE_HAPLOTYPECALLER(haplotypecaller_vcf.intervals.map{ meta, vcf -> [ groupKey(meta, meta.num_intervals), vcf ] }.groupTuple(), dict) + MERGE_HAPLOTYPECALLER(haplotypecaller_vcf.intervals.map { meta, vcf_ -> [groupKey(meta, meta.num_intervals), vcf_] }.groupTuple(), dict) - haplotypecaller_vcf = Channel.empty().mix( + haplotypecaller_vcf = Channel.empty() + .mix( MERGE_HAPLOTYPECALLER.out.vcf, - haplotypecaller_vcf.no_intervals) + haplotypecaller_vcf.no_intervals, + ) - haplotypecaller_tbi = Channel.empty().mix( + haplotypecaller_tbi = Channel.empty() + .mix( MERGE_HAPLOTYPECALLER.out.tbi, - haplotypecaller_tbi.no_intervals) + haplotypecaller_tbi.no_intervals, + ) // BAM output - BAM_MERGE_INDEX_SAMTOOLS(haplotypecaller_bam.intervals - .map{ meta, bam -> [ groupKey(meta, meta.num_intervals), bam ] } - .groupTuple() - .mix(haplotypecaller_bam.no_intervals)) + BAM_MERGE_INDEX_SAMTOOLS( + haplotypecaller_bam.intervals.map { meta, bam -> [groupKey(meta, meta.num_intervals), bam] }.groupTuple().mix(haplotypecaller_bam.no_intervals) + ) realigned_bam = BAM_MERGE_INDEX_SAMTOOLS.out.bam_bai + versions = versions.mix(BAM_MERGE_INDEX_SAMTOOLS.out.versions) versions = versions.mix(GATK4_HAPLOTYPECALLER.out.versions) versions = versions.mix(MERGE_HAPLOTYPECALLER.out.versions) // Remove no longer necessary field: num_intervals - vcf = haplotypecaller_vcf.map{ meta, vcf -> [ meta - meta.subMap('num_intervals'), vcf ] } - tbi = haplotypecaller_tbi.map{ meta, tbi -> [ meta - meta.subMap('num_intervals'), tbi ] } + vcf = haplotypecaller_vcf.map { meta, vcf_ -> [meta - meta.subMap('num_intervals'), vcf_] } + tbi = haplotypecaller_tbi.map { meta, tbi -> [meta - meta.subMap('num_intervals'), tbi] } emit: gvcf_tbi_intervals // For joint genotyping realigned_bam // Optional vcf // vcf tbi // tbi - versions } diff --git a/subworkflows/local/bam_variant_calling_indexcov/main.nf b/subworkflows/local/bam_variant_calling_indexcov/main.nf index d1bc9f39a..05a1dbe7f 100644 --- a/subworkflows/local/bam_variant_calling_indexcov/main.nf +++ b/subworkflows/local/bam_variant_calling_indexcov/main.nf @@ -4,41 +4,38 @@ // For all modules here: // A when clause condition is defined in the conf/modules.config to determine if the module should be run -include { SAMTOOLS_REINDEX_BAM } from '../../../modules/local/samtools/reindex_bam/main' -include { GOLEFT_INDEXCOV } from '../../../modules/nf-core/goleft/indexcov/main' +include { SAMTOOLS_REINDEX_BAM } from '../../../modules/local/samtools/reindex_bam' +include { GOLEFT_INDEXCOV } from '../../../modules/nf-core/goleft/indexcov' // Seems to be the consensus on upstream modules implementation too workflow BAM_VARIANT_CALLING_INDEXCOV { take: - cram // channel: [mandatory] [ meta, cram, crai ] - fasta // channel: [mandatory] [ meta, fasta ] - fasta_fai // channel: [mandatory] [ meta, fasta_fai ] + cram // channel: [mandatory] [ meta, cram, crai ] + fasta // channel: [mandatory] [ meta, fasta ] + fasta_fai // channel: [mandatory] [ meta, fasta_fai ] main: versions = Channel.empty() // generate a cleaner bam index without duplicate, supplementary, etc. (Small workload because the bam itself is not re-generated) - reindex_ch = SAMTOOLS_REINDEX_BAM( + SAMTOOLS_REINDEX_BAM( cram, fasta, - fasta_fai - ) + fasta_fai, + ) - versions = versions.mix(reindex_ch.versions) + // create [ [id:directory], bams, bais ] for input of GOLEFT_INDEXCOV + GOLEFT_INDEXCOV( + SAMTOOLS_REINDEX_BAM.out.output.map { _meta, bam, bai -> [[id: "indexcov"], bam, bai] }.groupTuple(), + fasta_fai, + ) - // create [ [id:directory], bams, bais ] - indexcov_input_ch = reindex_ch.output.map{[[id:"indexcov"], it[1], it[2]]}.groupTuple() - - goleft_ch = GOLEFT_INDEXCOV( - indexcov_input_ch, - fasta_fai - ) - - versions = versions.mix(goleft_ch.versions) + out_indexcov = GOLEFT_INDEXCOV.out.output + versions = versions.mix(GOLEFT_INDEXCOV.out.versions) + versions = versions.mix(SAMTOOLS_REINDEX_BAM.out.versions) emit: - - out_indexcov = goleft_ch.output + out_indexcov versions } diff --git a/subworkflows/local/bam_variant_calling_somatic_mutect2/main.nf b/subworkflows/local/bam_variant_calling_somatic_mutect2/main.nf index 3f5b7d53c..45f19e8ec 100644 --- a/subworkflows/local/bam_variant_calling_somatic_mutect2/main.nf +++ b/subworkflows/local/bam_variant_calling_somatic_mutect2/main.nf @@ -3,172 +3,180 @@ // MUTECT2: tumor-normal mode variantcalling: getpileupsummaries, calculatecontamination, learnreadorientationmodel and filtermutectcalls // -include { GATK4_CALCULATECONTAMINATION as CALCULATECONTAMINATION } from '../../../modules/nf-core/gatk4/calculatecontamination/main' -include { GATK4_FILTERMUTECTCALLS as FILTERMUTECTCALLS } from '../../../modules/nf-core/gatk4/filtermutectcalls/main' -include { GATK4_GATHERPILEUPSUMMARIES as GATHERPILEUPSUMMARIES_NORMAL } from '../../../modules/nf-core/gatk4/gatherpileupsummaries/main' -include { GATK4_GATHERPILEUPSUMMARIES as GATHERPILEUPSUMMARIES_TUMOR } from '../../../modules/nf-core/gatk4/gatherpileupsummaries/main' -include { GATK4_GETPILEUPSUMMARIES as GETPILEUPSUMMARIES_NORMAL } from '../../../modules/nf-core/gatk4/getpileupsummaries/main' -include { GATK4_GETPILEUPSUMMARIES as GETPILEUPSUMMARIES_TUMOR } from '../../../modules/nf-core/gatk4/getpileupsummaries/main' -include { GATK4_LEARNREADORIENTATIONMODEL as LEARNREADORIENTATIONMODEL } from '../../../modules/nf-core/gatk4/learnreadorientationmodel/main' -include { GATK4_MERGEMUTECTSTATS as MERGEMUTECTSTATS } from '../../../modules/nf-core/gatk4/mergemutectstats/main' -include { GATK4_MERGEVCFS as MERGE_MUTECT2 } from '../../../modules/nf-core/gatk4/mergevcfs/main' -include { GATK4_MUTECT2 as MUTECT2_PAIRED } from '../../../modules/nf-core/gatk4/mutect2/main' +include { GATK4_CALCULATECONTAMINATION as CALCULATECONTAMINATION } from '../../../modules/nf-core/gatk4/calculatecontamination' +include { GATK4_FILTERMUTECTCALLS as FILTERMUTECTCALLS } from '../../../modules/nf-core/gatk4/filtermutectcalls' +include { GATK4_GATHERPILEUPSUMMARIES as GATHERPILEUPSUMMARIES_NORMAL } from '../../../modules/nf-core/gatk4/gatherpileupsummaries' +include { GATK4_GATHERPILEUPSUMMARIES as GATHERPILEUPSUMMARIES_TUMOR } from '../../../modules/nf-core/gatk4/gatherpileupsummaries' +include { GATK4_GETPILEUPSUMMARIES as GETPILEUPSUMMARIES_NORMAL } from '../../../modules/nf-core/gatk4/getpileupsummaries' +include { GATK4_GETPILEUPSUMMARIES as GETPILEUPSUMMARIES_TUMOR } from '../../../modules/nf-core/gatk4/getpileupsummaries' +include { GATK4_LEARNREADORIENTATIONMODEL as LEARNREADORIENTATIONMODEL } from '../../../modules/nf-core/gatk4/learnreadorientationmodel' +include { GATK4_MERGEMUTECTSTATS as MERGEMUTECTSTATS } from '../../../modules/nf-core/gatk4/mergemutectstats' +include { GATK4_MERGEVCFS as MERGE_MUTECT2 } from '../../../modules/nf-core/gatk4/mergevcfs' +include { GATK4_MUTECT2 as MUTECT2_PAIRED } from '../../../modules/nf-core/gatk4/mutect2' workflow BAM_VARIANT_CALLING_SOMATIC_MUTECT2 { take: - input // channel: [ meta, [ input ], [ input_index ] ] - fasta // channel: /path/to/reference/fasta - fai // channel: /path/to/reference/fasta/index - dict // channel: /path/to/reference/fasta/dictionary - germline_resource // channel: /path/to/germline/resource - germline_resource_tbi // channel: /path/to/germline/index - panel_of_normals // channel: /path/to/panel/of/normals - panel_of_normals_tbi // channel: /path/to/panel/of/normals/index - intervals // channel: [mandatory] [ intervals, num_intervals ] or [ [], 0 ] if no intervals - joint_mutect2 // boolean: [mandatory] [default: false] run mutect2 in joint mode + input // channel: [ meta, [ input ], [ input_index ] ] + fasta // channel: /path/to/reference/fasta + fai // channel: /path/to/reference/fasta/index + dict // channel: /path/to/reference/fasta/dictionary + germline_resource // channel: /path/to/germline/resource + germline_resource_tbi // channel: /path/to/germline/index + panel_of_normals // channel: /path/to/panel/of/normals + panel_of_normals_tbi // channel: /path/to/panel/of/normals/index + intervals // channel: [mandatory] [ intervals, num_intervals ] or [ [], 0 ] if no intervals + joint_mutect2 // boolean: [mandatory] [default: false] run mutect2 in joint mode main: versions = Channel.empty() - //If no germline resource is provided, then create an empty channel to avoid GetPileupsummaries from being run - germline_resource_pileup = (germline_resource && germline_resource_tbi) ? germline_resource : Channel.empty() + // If no germline resource is provided, then create an empty channel to avoid GetPileupsummaries from being run + germline_resource_pileup = germline_resource && germline_resource_tbi ? germline_resource : Channel.empty() germline_resource_pileup_tbi = germline_resource_tbi ?: Channel.empty() // Combine input and intervals for spread and gather strategy - input_intervals = input.combine(intervals) - // Move num_intervals to meta map and reorganize channel for MUTECT2_PAIRED module - .map{ meta, input_list, input_index_list, intervals, num_intervals -> [ meta + [ num_intervals:num_intervals ], input_list, input_index_list, intervals ] } + // Move num_intervals to meta map and reorganize channel for MUTECT2_PAIRED module + input_intervals = input + .combine(intervals) + .map { meta, input_list, input_index_list, intervals_, num_intervals -> [meta + [num_intervals: num_intervals], input_list, input_index_list, intervals_] } if (joint_mutect2) { // Separate normal cram files // Extract tumor cram files - ch_cram = input.multiMap{ meta, cram, crai -> - normal: [ meta - meta.subMap('tumor_id') , cram[0], crai[0] ] - tumor: [ meta - meta.subMap('tumor_id') , cram[1], crai[1] ] - } + ch_cram = input.multiMap { meta, cram, crai -> + normal: [meta - meta.subMap('tumor_id'), cram[0], crai[0]] + tumor: [meta - meta.subMap('tumor_id'), cram[1], crai[1]] + } // Remove duplicates from normal channel and merge normal and tumor crams by patient - ch_tn_cram = ch_cram.normal.unique().mix(ch_cram.tumor).groupTuple() + ch_tn_cram = ch_cram.normal.unique().mix(ch_cram.tumor).groupTuple() // Combine input and intervals for scatter and gather strategy - ch_tn_intervals = ch_tn_cram.combine(intervals) - // Move num_intervals to meta map and reorganize channel for MUTECT2_PAIRED module - // meta: [id:patient_id, num_intervals, patient, sex] - .map{ meta, cram, crai, intervals, num_intervals -> [ meta + [ num_intervals:num_intervals ], cram, crai, intervals ] } + // Move num_intervals to meta map and reorganize channel for MUTECT2_PAIRED module + // meta: [id:patient_id, num_intervals, patient, sex] + ch_tn_intervals = ch_tn_cram + .combine(intervals) + .map { meta, cram, crai, intervals_, num_intervals -> [meta + [num_intervals: num_intervals], cram, crai, intervals_] } - MUTECT2_PAIRED( ch_tn_intervals, fasta, fai, dict, germline_resource, germline_resource_tbi, panel_of_normals, panel_of_normals_tbi) + MUTECT2_PAIRED(ch_tn_intervals, fasta, fai, dict, germline_resource, germline_resource_tbi, panel_of_normals, panel_of_normals_tbi) } else { // Perform variant calling using mutect2 module pair mode // meta: [id:tumor_id_vs_normal_id, normal_id, num_intervals, patient, sex, tumor_id] - MUTECT2_PAIRED( input_intervals, fasta, fai, dict, germline_resource, germline_resource_tbi, panel_of_normals, panel_of_normals_tbi) + MUTECT2_PAIRED(input_intervals, fasta, fai, dict, germline_resource, germline_resource_tbi, panel_of_normals, panel_of_normals_tbi) } // Figuring out if there is one or more vcf(s) from the same sample - vcf_branch = MUTECT2_PAIRED.out.vcf.branch{ - // Use meta.num_intervals to asses number of intervals - intervals: it[0].num_intervals > 1 + vcf_branch = MUTECT2_PAIRED.out.vcf.branch { + intervals: it[0].num_intervals > 1 no_intervals: it[0].num_intervals <= 1 } // Figuring out if there is one or more tbi(s) from the same sample - tbi_branch = MUTECT2_PAIRED.out.tbi.branch{ - // Use meta.num_intervals to asses number of intervals - intervals: it[0].num_intervals > 1 + tbi_branch = MUTECT2_PAIRED.out.tbi.branch { + intervals: it[0].num_intervals > 1 no_intervals: it[0].num_intervals <= 1 } // Figuring out if there is one or more vcf(s) from the same sample - stats_branch = MUTECT2_PAIRED.out.stats.branch{ - // Use meta.num_intervals to asses number of intervals - intervals: it[0].num_intervals > 1 + stats_branch = MUTECT2_PAIRED.out.stats.branch { + intervals: it[0].num_intervals > 1 no_intervals: it[0].num_intervals <= 1 } // Figuring out if there is one or more vcf(s) from the same sample - f1r2_branch = MUTECT2_PAIRED.out.f1r2.branch{ - // Use meta.num_intervals to asses number of intervals - intervals: it[0].num_intervals > 1 + f1r2_branch = MUTECT2_PAIRED.out.f1r2.branch { + intervals: it[0].num_intervals > 1 no_intervals: it[0].num_intervals <= 1 } // Only when using intervals - vcf_to_merge = vcf_branch.intervals.map{ meta, vcf -> [ groupKey(meta, meta.num_intervals), vcf ] }.groupTuple() - stats_to_merge = stats_branch.intervals.map{ meta, stats -> [ groupKey(meta, meta.num_intervals), stats ] }.groupTuple() - f1r2_to_merge = f1r2_branch.intervals.map{ meta, f1r2 -> [ groupKey(meta, meta.num_intervals), f1r2 ] }.groupTuple() + vcf_to_merge = vcf_branch.intervals.map { meta, vcf -> [groupKey(meta, meta.num_intervals), vcf] }.groupTuple() + stats_to_merge = stats_branch.intervals.map { meta, stats -> [groupKey(meta, meta.num_intervals), stats] }.groupTuple() + f1r2_to_merge = f1r2_branch.intervals.map { meta, f1r2 -> [groupKey(meta, meta.num_intervals), f1r2] }.groupTuple() MERGE_MUTECT2(vcf_to_merge, dict) MERGEMUTECTSTATS(stats_to_merge) // Mix intervals and no_intervals channels together and remove no longer necessary field: normal_id, tumor_id, num_intervals - vcf = Channel.empty().mix(MERGE_MUTECT2.out.vcf, vcf_branch.no_intervals).map{ meta, vcf -> - [ joint_mutect2 ? meta - meta.subMap('normal_id', 'num_intervals') : meta - meta.subMap('num_intervals') , vcf ] - } - tbi = Channel.empty().mix(MERGE_MUTECT2.out.tbi, tbi_branch.no_intervals).map{ meta, tbi-> - [ joint_mutect2 ? meta - meta.subMap('normal_id', 'num_intervals') : meta - meta.subMap('num_intervals'), tbi ] - } - stats = Channel.empty().mix(MERGEMUTECTSTATS.out.stats, stats_branch.no_intervals).map{ meta, stats -> - [ joint_mutect2 ? meta - meta.subMap('normal_id', 'num_intervals') : meta - meta.subMap('num_intervals'), stats ] - } - f1r2 = Channel.empty().mix(f1r2_to_merge, f1r2_branch.no_intervals).map{ meta, f1r2-> - [ joint_mutect2 ? meta - meta.subMap('normal_id', 'num_intervals') : meta - meta.subMap('num_intervals') , f1r2 ] - } + vcf = Channel.empty() + .mix(MERGE_MUTECT2.out.vcf, vcf_branch.no_intervals) + .map { meta, vcf -> + [joint_mutect2 ? meta - meta.subMap('normal_id', 'num_intervals') : meta - meta.subMap('num_intervals'), vcf] + } + tbi = Channel.empty() + .mix(MERGE_MUTECT2.out.tbi, tbi_branch.no_intervals) + .map { meta, tbi -> + [joint_mutect2 ? meta - meta.subMap('normal_id', 'num_intervals') : meta - meta.subMap('num_intervals'), tbi] + } + stats = Channel.empty() + .mix(MERGEMUTECTSTATS.out.stats, stats_branch.no_intervals) + .map { meta, stats -> + [joint_mutect2 ? meta - meta.subMap('normal_id', 'num_intervals') : meta - meta.subMap('num_intervals'), stats] + } + f1r2 = Channel.empty() + .mix(f1r2_to_merge, f1r2_branch.no_intervals) + .map { meta, f1r2 -> + [joint_mutect2 ? meta - meta.subMap('normal_id', 'num_intervals') : meta - meta.subMap('num_intervals'), f1r2] + } // Generate artifactpriors using learnreadorientationmodel on the f1r2 output of mutect2 LEARNREADORIENTATIONMODEL(f1r2) - pileup = input_intervals.multiMap{ meta, input_list, input_index_list, intervals -> - tumor: [ meta, input_list[1], input_index_list[1], intervals ] - normal: [ meta, input_list[0], input_index_list[0], intervals ] + pileup = input_intervals.multiMap { meta, input_list, input_index_list, intervals_ -> + tumor: [meta, input_list[1], input_index_list[1], intervals_] + normal: [meta, input_list[0], input_index_list[0], intervals_] } // Prepare input channel for normal pileup summaries. // Remember, the input channel contains tumor-normal pairs, so there will be multiple copies of the normal sample for each tumor for a given patient. // Therefore, we use unique function to generate normal pileup summaries once for each patient for better efficiency. - pileup_normal = pileup.normal.map{ meta, cram, crai, intervals -> [ meta - meta.subMap('tumor_id') + [ id:meta.normal_id ], cram, crai, intervals] }.unique() + pileup_normal = pileup.normal.map { meta, cram, crai, intervals_ -> [meta - meta.subMap('tumor_id') + [id: meta.normal_id], cram, crai, intervals_] }.unique() // Prepare input channel for tumor pileup summaries. - pileup_tumor = pileup.tumor.map{ meta, cram, crai, intervals -> [ meta - meta.subMap('normal_id') + [ id:meta.tumor_id ], cram, crai, intervals ] } + pileup_tumor = pileup.tumor.map { meta, cram, crai, intervals_ -> [meta - meta.subMap('normal_id') + [id: meta.tumor_id], cram, crai, intervals_] } // Generate pileup summary tables using getepileupsummaries. tumor sample should always be passed in as the first input and input list entries of vcf_to_filter, GETPILEUPSUMMARIES_NORMAL(pileup_normal, fasta, fai, dict, germline_resource_pileup, germline_resource_pileup_tbi) GETPILEUPSUMMARIES_TUMOR(pileup_tumor, fasta, fai, dict, germline_resource_pileup, germline_resource_pileup_tbi) // Figuring out if there is one or more table(s) from the same sample - pileup_table_normal_branch = GETPILEUPSUMMARIES_NORMAL.out.table.branch{ - // Use meta.num_intervals to asses number of intervals - intervals: it[0].num_intervals > 1 + pileup_table_normal_branch = GETPILEUPSUMMARIES_NORMAL.out.table.branch { + intervals: it[0].num_intervals > 1 no_intervals: it[0].num_intervals <= 1 } // Figuring out if there is one or more table(s) from the same sample - pileup_table_tumor_branch = GETPILEUPSUMMARIES_TUMOR.out.table.branch{ - // Use meta.num_intervals to asses number of intervals - intervals: it[0].num_intervals > 1 + pileup_table_tumor_branch = GETPILEUPSUMMARIES_TUMOR.out.table.branch { + intervals: it[0].num_intervals > 1 no_intervals: it[0].num_intervals <= 1 } // Only when using intervals - pileup_table_normal_to_merge = pileup_table_normal_branch.intervals.map{ meta, table -> [ groupKey(meta, meta.num_intervals), table ] }.groupTuple() - pileup_table_tumor_to_merge = pileup_table_tumor_branch.intervals.map{ meta, table -> [ groupKey(meta, meta.num_intervals), table ] }.groupTuple() + pileup_table_normal_to_merge = pileup_table_normal_branch.intervals.map { meta, table -> [groupKey(meta, meta.num_intervals), table] }.groupTuple() + pileup_table_tumor_to_merge = pileup_table_tumor_branch.intervals.map { meta, table -> [groupKey(meta, meta.num_intervals), table] }.groupTuple() // Merge Pileup Summaries - GATHERPILEUPSUMMARIES_NORMAL(pileup_table_normal_to_merge, dict.map{ meta, dict -> [ dict ] }) - GATHERPILEUPSUMMARIES_TUMOR(pileup_table_tumor_to_merge, dict.map{ meta, dict -> [ dict ] }) + GATHERPILEUPSUMMARIES_NORMAL(pileup_table_normal_to_merge, dict.map { _meta, dict_ -> [dict_] }) + GATHERPILEUPSUMMARIES_TUMOR(pileup_table_tumor_to_merge, dict.map { _meta, dict_ -> [dict_] }) // Do some channel magic to generate tumor-normal pairs again. // This is necessary because we generated one normal pileup summary for each patient but we need run calculate contamination for each tumor-normal pair. - pileup_table_tumor = Channel.empty().mix(GATHERPILEUPSUMMARIES_TUMOR.out.table, pileup_table_tumor_branch.no_intervals).map{meta, table -> [ meta - meta.subMap('normal_id', 'tumor_id', 'num_intervals') + [id:meta.patient], meta.id, table ] } - pileup_table_normal = Channel.empty().mix(GATHERPILEUPSUMMARIES_NORMAL.out.table, pileup_table_normal_branch.no_intervals).map{meta, table -> [ meta - meta.subMap('normal_id', 'tumor_id', 'num_intervals') + [id:meta.patient], meta.id, table ] } - - ch_calculatecontamination_in_tables = pileup_table_tumor.combine( - pileup_table_normal, by:0).map{ - meta, tumor_id, tumor_table, normal_id, normal_table -> - if(joint_mutect2){ - [ meta + [ id: tumor_id + "_vs_" + normal_id], tumor_table, normal_table] - }else{ + pileup_table_tumor = Channel.empty().mix(GATHERPILEUPSUMMARIES_TUMOR.out.table, pileup_table_tumor_branch.no_intervals).map { meta, table -> [meta - meta.subMap('normal_id', 'tumor_id', 'num_intervals') + [id: meta.patient], meta.id, table] } + pileup_table_normal = Channel.empty().mix(GATHERPILEUPSUMMARIES_NORMAL.out.table, pileup_table_normal_branch.no_intervals).map { meta, table -> [meta - meta.subMap('normal_id', 'tumor_id', 'num_intervals') + [id: meta.patient], meta.id, table] } + + ch_calculatecontamination_in_tables = pileup_table_tumor + .combine( + pileup_table_normal, + by: 0 + ) + .map { meta, tumor_id, tumor_table, normal_id, normal_table -> + if (joint_mutect2) { + [meta + [id: tumor_id + "_vs_" + normal_id], tumor_table, normal_table] + } + else { // we need tumor and normal ID for further post processing - [ meta + [ id: tumor_id + "_vs_" + normal_id, normal_id:normal_id, tumor_id:tumor_id ], tumor_table, normal_table] + [meta + [id: tumor_id + "_vs_" + normal_id, normal_id: normal_id, tumor_id: tumor_id], tumor_table, normal_table] } } @@ -180,8 +188,8 @@ workflow BAM_VARIANT_CALLING_SOMATIC_MUTECT2 { if (joint_mutect2) { // Reduce the meta to only patient name - calculatecontamination_out_seg = CALCULATECONTAMINATION.out.segmentation.map{ meta, seg -> [ meta + [id: meta.patient], seg]}.groupTuple() - calculatecontamination_out_cont = CALCULATECONTAMINATION.out.contamination.map{ meta, cont -> [ meta + [id: meta.patient], cont]}.groupTuple() + calculatecontamination_out_seg = CALCULATECONTAMINATION.out.segmentation.map { meta, seg -> [meta + [id: meta.patient], seg] }.groupTuple() + calculatecontamination_out_cont = CALCULATECONTAMINATION.out.contamination.map { meta, cont -> [meta + [id: meta.patient], cont] }.groupTuple() } else { // Keep tumor_vs_normal ID @@ -192,18 +200,17 @@ workflow BAM_VARIANT_CALLING_SOMATIC_MUTECT2 { // Mutect2 calls filtered by filtermutectcalls using the artifactpriors, contamination and segmentation tables // meta joint calling: [id:patient_id, patient, sex] // meta paired calling: [id:tumorID_vs_normalID, normal_ID, patient, sex, tumorID] - vcf_to_filter = vcf.join(tbi, failOnDuplicate: true, failOnMismatch: true) + vcf_to_filter = vcf + .join(tbi, failOnDuplicate: true, failOnMismatch: true) .join(stats, failOnDuplicate: true, failOnMismatch: true) .join(LEARNREADORIENTATIONMODEL.out.artifactprior, failOnDuplicate: true, failOnMismatch: true) .join(calculatecontamination_out_seg) .join(calculatecontamination_out_cont) - .map{ meta, vcf, tbi, stats, orientation, seg, cont -> [ meta, vcf, tbi, stats, orientation, seg, cont, [] ] } + .map { meta, vcf_, tbi_, stats_, orientation, seg, cont -> [meta, vcf_, tbi_, stats_, orientation, seg, cont, []] } FILTERMUTECTCALLS(vcf_to_filter, fasta, fai, dict) - vcf_filtered = FILTERMUTECTCALLS.out.vcf - // add variantcaller to meta map - .map{ meta, vcf -> [ meta + [ variantcaller:'mutect2' ], vcf ] } + vcf_filtered = FILTERMUTECTCALLS.out.vcf.map { meta, vcf_ -> [meta + [variantcaller: 'mutect2'], vcf_] } versions = versions.mix(MERGE_MUTECT2.out.versions) versions = versions.mix(CALCULATECONTAMINATION.out.versions) @@ -217,20 +224,15 @@ workflow BAM_VARIANT_CALLING_SOMATIC_MUTECT2 { versions = versions.mix(MUTECT2_PAIRED.out.versions) emit: - vcf // channel: [ meta, vcf ] - stats // channel: [ meta, stats ] - - vcf_filtered // channel: [ meta, vcf ] - index_filtered = FILTERMUTECTCALLS.out.tbi // channel: [ meta, tbi ] - stats_filtered = FILTERMUTECTCALLS.out.stats // channel: [ meta, stats ] - - artifact_priors = LEARNREADORIENTATIONMODEL.out.artifactprior // channel: [ meta, artifactprior ] - + artifact_priors = LEARNREADORIENTATIONMODEL.out.artifactprior // channel: [ meta, artifactprior ] + contamination_table = calculatecontamination_out_cont // channel: [ meta, contamination ] + index_filtered = FILTERMUTECTCALLS.out.tbi // channel: [ meta, tbi ] pileup_table_normal // channel: [ meta, table_normal ] pileup_table_tumor // channel: [ meta, table_tumor ] - - contamination_table = calculatecontamination_out_cont // channel: [ meta, contamination ] - segmentation_table = calculatecontamination_out_seg // channel: [ meta, segmentation ] - - versions // channel: [ versions.yml ] + segmentation_table = calculatecontamination_out_seg // channel: [ meta, segmentation ] + stats // channel: [ meta, stats ] + stats_filtered = FILTERMUTECTCALLS.out.stats // channel: [ meta, stats ] + vcf // channel: [ meta, vcf ] + vcf_filtered // channel: [ meta, vcf ] + versions // channel: [ versions.yml ] } diff --git a/subworkflows/local/bam_variant_calling_somatic_tnscope/main.nf b/subworkflows/local/bam_variant_calling_somatic_tnscope/main.nf index dae2504f7..c51403246 100644 --- a/subworkflows/local/bam_variant_calling_somatic_tnscope/main.nf +++ b/subworkflows/local/bam_variant_calling_somatic_tnscope/main.nf @@ -3,70 +3,70 @@ // SENTIEON TNSCOPE: tumor-normal mode variantcalling // -include { SENTIEON_TNSCOPE } from '../../../modules/nf-core/sentieon/tnscope/main' -include { GATK4_MERGEVCFS as MERGE_TNSCOPE } from '../../../modules/nf-core/gatk4/mergevcfs/main' +include { SENTIEON_TNSCOPE } from '../../../modules/nf-core/sentieon/tnscope' +include { GATK4_MERGEVCFS as MERGE_TNSCOPE } from '../../../modules/nf-core/gatk4/mergevcfs' workflow BAM_VARIANT_CALLING_SOMATIC_TNSCOPE { take: - input // channel: [ meta, [ input ], [ input_index ] ] - fasta // channel: [ meta, /path/to/reference/fasta ] - fai // channel: [ meta, /path/to/reference/fasta/index ] - dict // channel: [ meta, /path/to/reference/dict ] - germline_resource // channel: /path/to/germline/resource - germline_resource_tbi // channel: /path/to/germline/index - panel_of_normals // channel: /path/to/panel/of/normals - panel_of_normals_tbi // channel: /path/to/panel/of/normals/index - intervals // channel: [mandatory] [ intervals, num_intervals ] or [ [], 0 ] if no intervals + input // channel: [ meta, [ input ], [ input_index ] ] + fasta // channel: [ meta, /path/to/reference/fasta ] + fai // channel: [ meta, /path/to/reference/fasta/index ] + dict // channel: [ meta, /path/to/reference/dict ] + germline_resource // channel: /path/to/germline/resource + germline_resource_tbi // channel: /path/to/germline/index + panel_of_normals // channel: /path/to/panel/of/normals + panel_of_normals_tbi // channel: /path/to/panel/of/normals/index + intervals // channel: [mandatory] [ intervals, num_intervals ] or [ [], 0 ] if no intervals main: versions = Channel.empty() // Combine input and intervals for spread and gather strategy - input_intervals = input.combine(intervals) - // Move num_intervals to meta map and reorganize channel for TNSCOPE module - .map{ meta, input_, index, intervals_, num_intervals -> [ meta + [ num_intervals:num_intervals ], input_, index, intervals_ ] } + // Move num_intervals to meta map and reorganize channel for TNSCOPE module + input_intervals = input + .combine(intervals) + .map { meta, input_, index, intervals_, num_intervals -> [meta + [num_intervals: num_intervals], input_, index, intervals_] } SENTIEON_TNSCOPE( input_intervals, fasta, fai, - germline_resource.map{resource -> [[id: "resource"], resource]}, - germline_resource_tbi.map{index -> [[id: "resource"], index]}, - panel_of_normals.map{pon -> [[id: "pon"], pon]}, - panel_of_normals_tbi.map{index -> [[id: "pon"], index]}, - [[],[]], // cosmic - [[],[]] // cosmic_tbi + germline_resource.map { resource -> [[id: "resource"], resource] }, + germline_resource_tbi.map { index -> [[id: "resource"], index] }, + panel_of_normals.map { pon -> [[id: "pon"], pon] }, + panel_of_normals_tbi.map { index -> [[id: "pon"], index] }, + [[], []], + [[], []], ) - versions = versions.mix(SENTIEON_TNSCOPE.out.versions) // Figuring out if there is one or more vcf(s) from the same sample - vcf_branch = SENTIEON_TNSCOPE.out.vcf.branch{ - // Use meta.num_intervals to asses number of intervals - intervals: it[0].num_intervals > 1 + vcf_branch = SENTIEON_TNSCOPE.out.vcf.branch { + intervals: it[0].num_intervals > 1 no_intervals: it[0].num_intervals <= 1 } // Figuring out if there is one or more tbi(s) from the same sample - tbi_branch = SENTIEON_TNSCOPE.out.index.branch{ - // Use meta.num_intervals to asses number of intervals - intervals: it[0].num_intervals > 1 + tbi_branch = SENTIEON_TNSCOPE.out.index.branch { + intervals: it[0].num_intervals > 1 no_intervals: it[0].num_intervals <= 1 } - vcf_to_merge = vcf_branch.intervals.map{ meta, vcf -> [ groupKey(meta, meta.num_intervals), vcf ] }.groupTuple() + vcf_to_merge = vcf_branch.intervals.map { meta, vcf -> [groupKey(meta, meta.num_intervals), vcf] }.groupTuple() // Merge if required MERGE_TNSCOPE(vcf_to_merge, dict) - versions = versions.mix(MERGE_TNSCOPE.out.versions) // Mix intervals and no_intervals channels together // Remove unnecessary metadata and add variantcaller - vcf = Channel.empty() + vcf = Channel.empty() .mix(MERGE_TNSCOPE.out.vcf, vcf_branch.no_intervals) - .map{ meta, vcf -> [ meta - meta.subMap('num_intervals') + [ variantcaller:'sentieon_tnscope' ], vcf ] } + .map { meta, vcf -> [meta - meta.subMap('num_intervals') + [variantcaller: 'sentieon_tnscope'], vcf] } index = Channel.empty() .mix(MERGE_TNSCOPE.out.tbi, tbi_branch.no_intervals) - .map{ meta, tbi -> [ meta - meta.subMap('num_intervals') + [ variantcaller:'sentieon_tnscope' ], tbi ] } + .map { meta, tbi -> [meta - meta.subMap('num_intervals') + [variantcaller: 'sentieon_tnscope'], tbi] } + + versions = versions.mix(SENTIEON_TNSCOPE.out.versions) + versions = versions.mix(MERGE_TNSCOPE.out.versions) emit: vcf // channel: [ meta, vcf ] diff --git a/subworkflows/local/bam_variant_calling_tumor_only_mutect2/main.nf b/subworkflows/local/bam_variant_calling_tumor_only_mutect2/main.nf index 4e45a23ac..5f11329dd 100644 --- a/subworkflows/local/bam_variant_calling_tumor_only_mutect2/main.nf +++ b/subworkflows/local/bam_variant_calling_tumor_only_mutect2/main.nf @@ -4,51 +4,52 @@ // For all modules here: // A when clause condition is defined in the conf/modules.config to determine if the module should be run -include { GATK4_MERGEVCFS as MERGE_MUTECT2 } from '../../../modules/nf-core/gatk4/mergevcfs/main' -include { GATK4_CALCULATECONTAMINATION as CALCULATECONTAMINATION } from '../../../modules/nf-core/gatk4/calculatecontamination/main' -include { GATK4_FILTERMUTECTCALLS as FILTERMUTECTCALLS } from '../../../modules/nf-core/gatk4/filtermutectcalls/main' -include { GATK4_GETPILEUPSUMMARIES as GETPILEUPSUMMARIES } from '../../../modules/nf-core/gatk4/getpileupsummaries/main' -include { GATK4_GATHERPILEUPSUMMARIES as GATHERPILEUPSUMMARIES } from '../../../modules/nf-core/gatk4/gatherpileupsummaries/main' -include { GATK4_LEARNREADORIENTATIONMODEL as LEARNREADORIENTATIONMODEL } from '../../../modules/nf-core/gatk4/learnreadorientationmodel/main' -include { GATK4_MERGEMUTECTSTATS as MERGEMUTECTSTATS } from '../../../modules/nf-core/gatk4/mergemutectstats/main' -include { GATK4_MUTECT2 as MUTECT2 } from '../../../modules/nf-core/gatk4/mutect2/main' +include { GATK4_MERGEVCFS as MERGE_MUTECT2 } from '../../../modules/nf-core/gatk4/mergevcfs' +include { GATK4_CALCULATECONTAMINATION as CALCULATECONTAMINATION } from '../../../modules/nf-core/gatk4/calculatecontamination' +include { GATK4_FILTERMUTECTCALLS as FILTERMUTECTCALLS } from '../../../modules/nf-core/gatk4/filtermutectcalls' +include { GATK4_GETPILEUPSUMMARIES as GETPILEUPSUMMARIES } from '../../../modules/nf-core/gatk4/getpileupsummaries' +include { GATK4_GATHERPILEUPSUMMARIES as GATHERPILEUPSUMMARIES } from '../../../modules/nf-core/gatk4/gatherpileupsummaries' +include { GATK4_LEARNREADORIENTATIONMODEL as LEARNREADORIENTATIONMODEL } from '../../../modules/nf-core/gatk4/learnreadorientationmodel' +include { GATK4_MERGEMUTECTSTATS as MERGEMUTECTSTATS } from '../../../modules/nf-core/gatk4/mergemutectstats' +include { GATK4_MUTECT2 as MUTECT2 } from '../../../modules/nf-core/gatk4/mutect2' workflow BAM_VARIANT_CALLING_TUMOR_ONLY_MUTECT2 { take: - input // channel: [ meta, [ input ], [ input_index ] ] - fasta // channel: /path/to/reference/fasta - fai // channel: /path/to/reference/fasta/index - dict // channel: /path/to/reference/fasta/dictionary - germline_resource // channel: /path/to/germline/resource - germline_resource_tbi // channel: /path/to/germline/index - panel_of_normals // channel: /path/to/panel/of/normals - panel_of_normals_tbi // channel: /path/to/panel/of/normals/index - intervals // channel: [mandatory] [ intervals, num_intervals ] or [ [], 0 ] if no intervals - joint_mutect2 // boolean: [mandatory] [default: false] run mutect2 in joint mode + input // channel: [ meta, [ input ], [ input_index ] ] + fasta // channel: /path/to/reference/fasta + fai // channel: /path/to/reference/fasta/index + dict // channel: /path/to/reference/fasta/dictionary + germline_resource // channel: /path/to/germline/resource + germline_resource_tbi // channel: /path/to/germline/index + panel_of_normals // channel: /path/to/panel/of/normals + panel_of_normals_tbi // channel: /path/to/panel/of/normals/index + intervals // channel: [mandatory] [ intervals, num_intervals ] or [ [], 0 ] if no intervals + joint_mutect2 // boolean: [mandatory] [default: false] run mutect2 in joint mode main: versions = Channel.empty() // If no germline resource is provided, then create an empty channel to avoid GetPileupsummaries from being run - germline_resource_pileup = germline_resource_tbi ? germline_resource : Channel.empty() + germline_resource_pileup = germline_resource_tbi ? germline_resource : Channel.empty() germline_resource_pileup_tbi = germline_resource_tbi ?: Channel.empty() // Combine input and intervals for spread and gather strategy - input_intervals = input.combine(intervals) - // Move num_intervals to meta map and reorganize channel for MUTECT2 module - .map{ meta, input, index, intervals, num_intervals -> [ meta + [ num_intervals:num_intervals ], input, index, intervals ] } + // Move num_intervals to meta map and reorganize channel for MUTECT2 module + input_intervals = input + .combine(intervals) + .map { meta, input_, index, intervals_, num_intervals -> [meta + [num_intervals: num_intervals], input_, index, intervals_] } if (joint_mutect2) { // Perform variant calling using mutect2 module in tumor single mode // Group cram files by patient input_joint = input - .map{ meta, input, index -> [ meta - meta.subMap('sample') + [ id:meta.patient ], input, index ] } + .map { meta, input_, index -> [meta - meta.subMap('sample') + [id: meta.patient], input_, index] } .groupTuple() // Add intervals for scatter-gather scaling - input_joint_intervals = input_joint.combine(intervals) - // Move num_intervals to meta map and reorganize channel for MUTECT2 module - .map{ meta, cram, crai, intervals, num_intervals -> [ meta + [ num_intervals:num_intervals ], cram, crai, intervals ] } + input_joint_intervals = input_joint + .combine(intervals) + .map { meta, cram, crai, intervals_, num_intervals -> [meta + [num_intervals: num_intervals], cram, crai, intervals_] } MUTECT2(input_joint_intervals, fasta, fai, dict, germline_resource, germline_resource_tbi, panel_of_normals, panel_of_normals_tbi) } else { @@ -57,73 +58,73 @@ workflow BAM_VARIANT_CALLING_TUMOR_ONLY_MUTECT2 { } // Figuring out if there is one or more vcf(s) from the same sample - vcf_branch = MUTECT2.out.vcf.branch{ - // Use meta.num_intervals to asses number of intervals - intervals: it[0].num_intervals > 1 + // Use meta.num_intervals to asses number of intervals + vcf_branch = MUTECT2.out.vcf.branch { + intervals: it[0].num_intervals > 1 no_intervals: it[0].num_intervals <= 1 } // Figuring out if there is one or more tbi(s) from the same sample - tbi_branch = MUTECT2.out.tbi.branch{ - // Use meta.num_intervals to asses number of intervals - intervals: it[0].num_intervals > 1 + // Use meta.num_intervals to asses number of intervals + tbi_branch = MUTECT2.out.tbi.branch { + intervals: it[0].num_intervals > 1 no_intervals: it[0].num_intervals <= 1 } // Figuring out if there is one or more stats(s) from the same sample - stats_branch = MUTECT2.out.stats.branch{ - // Use meta.num_intervals to asses number of intervals - intervals: it[0].num_intervals > 1 + // Use meta.num_intervals to asses number of intervals + stats_branch = MUTECT2.out.stats.branch { + intervals: it[0].num_intervals > 1 no_intervals: it[0].num_intervals <= 1 } // Figuring out if there is one or more f1r2(s) from the same sample - f1r2_branch = MUTECT2.out.f1r2.branch{ - // Use meta.num_intervals to asses number of intervals - intervals: it[0].num_intervals > 1 + // Use meta.num_intervals to asses number of intervals + f1r2_branch = MUTECT2.out.f1r2.branch { + intervals: it[0].num_intervals > 1 no_intervals: it[0].num_intervals <= 1 } // Only when using intervals - vcf_to_merge = vcf_branch.intervals.map{ meta, vcf -> [ groupKey(meta, meta.num_intervals), vcf ] }.groupTuple() - stats_to_merge = stats_branch.intervals.map{ meta, stats -> [ groupKey(meta, meta.num_intervals), stats ] }.groupTuple() - f1r2_to_merge = f1r2_branch.intervals.map{ meta, f1r2 -> [ groupKey(meta, meta.num_intervals), f1r2 ] }.groupTuple() + vcf_to_merge = vcf_branch.intervals.map { meta, vcf -> [groupKey(meta, meta.num_intervals), vcf] }.groupTuple() + stats_to_merge = stats_branch.intervals.map { meta, stats -> [groupKey(meta, meta.num_intervals), stats] }.groupTuple() + f1r2_to_merge = f1r2_branch.intervals.map { meta, f1r2 -> [groupKey(meta, meta.num_intervals), f1r2] }.groupTuple() MERGE_MUTECT2(vcf_to_merge, dict) MERGEMUTECTSTATS(stats_to_merge) // Mix intervals and no_intervals channels together // Remove unnecessary metadata - vcf = Channel.empty().mix(MERGE_MUTECT2.out.vcf, vcf_branch.no_intervals).map{ meta, vcf -> [ meta - meta.subMap('num_intervals'), vcf ] } - tbi = Channel.empty().mix(MERGE_MUTECT2.out.tbi, tbi_branch.no_intervals).map{ meta, tbi -> [ meta - meta.subMap('num_intervals'), tbi ] } - stats = Channel.empty().mix(MERGEMUTECTSTATS.out.stats, stats_branch.no_intervals).map{ meta, stats -> [ meta - meta.subMap('num_intervals'), stats ] } - f1r2 = Channel.empty().mix(f1r2_to_merge, f1r2_branch.no_intervals).map{ meta, f1r2 -> [ meta - meta.subMap('num_intervals'), f1r2 ] } + vcf = Channel.empty().mix(MERGE_MUTECT2.out.vcf, vcf_branch.no_intervals).map { meta, vcf -> [meta - meta.subMap('num_intervals'), vcf] } + tbi = Channel.empty().mix(MERGE_MUTECT2.out.tbi, tbi_branch.no_intervals).map { meta, tbi -> [meta - meta.subMap('num_intervals'), tbi] } + stats = Channel.empty().mix(MERGEMUTECTSTATS.out.stats, stats_branch.no_intervals).map { meta, stats -> [meta - meta.subMap('num_intervals'), stats] } + f1r2 = Channel.empty().mix(f1r2_to_merge, f1r2_branch.no_intervals).map { meta, f1r2 -> [meta - meta.subMap('num_intervals'), f1r2] } // Generate artifactpriors using learnreadorientationmodel on the f1r2 output of mutect2 LEARNREADORIENTATIONMODEL(f1r2) - pileup_input = input_intervals.map{ meta, cram, crai, intervals -> [ meta + [ id:meta.sample ], cram, crai, intervals] }.unique() + pileup_input = input_intervals.map { meta, cram, crai, intervals_ -> [meta + [id: meta.sample], cram, crai, intervals_] }.unique() // Generate pileup summary table using getepileupsummaries GETPILEUPSUMMARIES(pileup_input, fasta, fai, dict, germline_resource_pileup, germline_resource_pileup_tbi) // Figuring out if there is one or more table(s) from the same sample - pileup_table_branch = GETPILEUPSUMMARIES.out.table.branch{ - // Use meta.num_intervals to asses number of intervals - intervals: it[0].num_intervals > 1 + // Use meta.num_intervals to asses number of intervals + pileup_table_branch = GETPILEUPSUMMARIES.out.table.branch { + intervals: it[0].num_intervals > 1 no_intervals: it[0].num_intervals <= 1 } // Only when using intervals - pileup_table_to_merge = pileup_table_branch.intervals.map{ meta, table -> [ groupKey(meta, meta.num_intervals), table ] }.groupTuple() + pileup_table_to_merge = pileup_table_branch.intervals.map { meta, table -> [groupKey(meta, meta.num_intervals), table] }.groupTuple() - GATHERPILEUPSUMMARIES(pileup_table_to_merge, dict.map{ meta, dict -> [ dict ] }) + GATHERPILEUPSUMMARIES(pileup_table_to_merge, dict.map { _meta, dict_ -> [dict_] }) // Mix intervals and no_intervals channels together - pileup_table = Channel.empty().mix(GATHERPILEUPSUMMARIES.out.table, pileup_table_branch.no_intervals).map{meta, table -> [ meta - meta.subMap('num_intervals') + [id:meta.sample], table ] } + pileup_table = Channel.empty().mix(GATHERPILEUPSUMMARIES.out.table, pileup_table_branch.no_intervals).map { meta, table -> [meta - meta.subMap('num_intervals') + [id: meta.sample], table] } // Contamination and segmentation tables created using calculatecontamination on the pileup summary table - CALCULATECONTAMINATION(pileup_table.map{ meta, table -> [ meta, table, [] ] }) + CALCULATECONTAMINATION(pileup_table.map { meta, table -> [meta, table, []] }) // Initialize empty channel: Contamination calculation is run on pileup table, pileup is not run if germline resource is not provided calculatecontamination_out_seg = Channel.empty() @@ -131,27 +132,28 @@ workflow BAM_VARIANT_CALLING_TUMOR_ONLY_MUTECT2 { if (joint_mutect2) { // Group tables by samples - calculatecontamination_out_seg = CALCULATECONTAMINATION.out.segmentation.map{ meta, seg -> [ meta - meta.subMap('sample', 'num_intervals') + [id:meta.patient], seg ] }.groupTuple() - calculatecontamination_out_cont = CALCULATECONTAMINATION.out.contamination.map{ meta, cont -> [ meta - meta.subMap('sample', 'num_intervals') + [id:meta.patient], cont ] }.groupTuple() - } else { + calculatecontamination_out_seg = CALCULATECONTAMINATION.out.segmentation.map { meta, seg -> [meta - meta.subMap('sample', 'num_intervals') + [id: meta.patient], seg] }.groupTuple() + calculatecontamination_out_cont = CALCULATECONTAMINATION.out.contamination.map { meta, cont -> [meta - meta.subMap('sample', 'num_intervals') + [id: meta.patient], cont] }.groupTuple() + } + else { // Regular single sample mode - calculatecontamination_out_seg = CALCULATECONTAMINATION.out.segmentation.map{ meta, seg -> [ meta - meta.subMap('num_intervals'), seg ] } - calculatecontamination_out_cont = CALCULATECONTAMINATION.out.contamination.map{ meta, cont -> [ meta - meta.subMap('num_intervals'), cont ] } + calculatecontamination_out_seg = CALCULATECONTAMINATION.out.segmentation.map { meta, seg -> [meta - meta.subMap('num_intervals'), seg] } + calculatecontamination_out_cont = CALCULATECONTAMINATION.out.contamination.map { meta, cont -> [meta - meta.subMap('num_intervals'), cont] } } // Mutect2 calls filtered by filtermutectcalls using the contamination and segmentation tables - vcf_to_filter = vcf.join(tbi, failOnDuplicate: true, failOnMismatch: true) + vcf_to_filter = vcf + .join(tbi, failOnDuplicate: true, failOnMismatch: true) .join(stats, failOnDuplicate: true, failOnMismatch: true) .join(LEARNREADORIENTATIONMODEL.out.artifactprior, failOnDuplicate: true, failOnMismatch: true) .join(calculatecontamination_out_seg) .join(calculatecontamination_out_cont) - .map{ meta, vcf, tbi, stats, artifactprior, seg, cont -> [ meta, vcf, tbi, stats, artifactprior, seg, cont, [] ] } + .map { meta, vcf, tbi, stats, artifactprior, seg, cont -> [meta, vcf, tbi, stats, artifactprior, seg, cont, []] } FILTERMUTECTCALLS(vcf_to_filter, fasta, fai, dict) - vcf_filtered = FILTERMUTECTCALLS.out.vcf - // add variantcaller to meta map and remove no longer necessary field: num_intervals - .map{ meta, vcf -> [ meta + [ variantcaller:'mutect2' ], vcf ] } + // add variantcaller to meta map and remove no longer necessary field: num_intervals + vcf_filtered = FILTERMUTECTCALLS.out.vcf.map { meta, vcf_ -> [meta + [variantcaller: 'mutect2'], vcf_] } versions = versions.mix(MERGE_MUTECT2.out.versions) versions = versions.mix(CALCULATECONTAMINATION.out.versions) @@ -163,19 +165,14 @@ workflow BAM_VARIANT_CALLING_TUMOR_ONLY_MUTECT2 { versions = versions.mix(MUTECT2.out.versions) emit: - vcf // channel: [ meta, vcf ] - stats // channel: [ meta, stats ] - - vcf_filtered // channel: [ meta, vcf ] - index_filtered = FILTERMUTECTCALLS.out.tbi // channel: [ meta, tbi ] - stats_filtered = FILTERMUTECTCALLS.out.stats // channel: [ meta, stats ] - - artifact_priors = LEARNREADORIENTATIONMODEL.out.artifactprior // channel: [ meta, artifactprior ] - - pileup_table // channel: [ meta, table ] - - contamination_table = calculatecontamination_out_cont // channel: [ meta, contamination ] - segmentation_table = calculatecontamination_out_seg // channel: [ meta, segmentation ] - - versions // channel: [ versions.yml ] + artifact_priors = LEARNREADORIENTATIONMODEL.out.artifactprior // channel: [ meta, artifactprior ] + contamination_table = calculatecontamination_out_cont // channel: [ meta, contamination ] + index_filtered = FILTERMUTECTCALLS.out.tbi // channel: [ meta, tbi ] + pileup_table // channel: [ meta, table ] + segmentation_table = calculatecontamination_out_seg // channel: [ meta, segmentation ] + stats // channel: [ meta, stats ] + stats_filtered = FILTERMUTECTCALLS.out.stats // channel: [ meta, stats ] + vcf // channel: [ meta, vcf ] + vcf_filtered // channel: [ meta, vcf ] + versions // channel: [ versions.yml ] } diff --git a/subworkflows/local/bam_variant_calling_tumor_only_tnscope/main.nf b/subworkflows/local/bam_variant_calling_tumor_only_tnscope/main.nf index a5aeaa8ca..add9c6669 100644 --- a/subworkflows/local/bam_variant_calling_tumor_only_tnscope/main.nf +++ b/subworkflows/local/bam_variant_calling_tumor_only_tnscope/main.nf @@ -3,73 +3,75 @@ // SENTIEON TNSCOPE: tumor-only mode variantcalling // -include { SENTIEON_TNSCOPE } from '../../../modules/nf-core/sentieon/tnscope/main' -include { GATK4_MERGEVCFS as MERGE_TNSCOPE } from '../../../modules/nf-core/gatk4/mergevcfs/main' +include { GATK4_MERGEVCFS as MERGE_TNSCOPE } from '../../../modules/nf-core/gatk4/mergevcfs' +include { SENTIEON_TNSCOPE } from '../../../modules/nf-core/sentieon/tnscope' workflow BAM_VARIANT_CALLING_TUMOR_ONLY_TNSCOPE { take: - input // channel: [ meta, [ input ], [ input_index ] ] - fasta // channel: /path/to/reference/fasta - fai // channel: /path/to/reference/fasta/index - dict // channel: /path/to/reference/fasta/dictionary - germline_resource // channel: /path/to/germline/resource - germline_resource_tbi // channel: /path/to/germline/index - panel_of_normals // channel: /path/to/panel/of/normals - panel_of_normals_tbi // channel: /path/to/panel/of/normals/index - intervals // channel: [mandatory] [ intervals, num_intervals ] or [ [], 0 ] if no intervals + input // channel: [ meta, [ input ], [ input_index ] ] + fasta // channel: /path/to/reference/fasta + fai // channel: /path/to/reference/fasta/index + dict // channel: /path/to/reference/fasta/dictionary + germline_resource // channel: /path/to/germline/resource + germline_resource_tbi // channel: /path/to/germline/index + panel_of_normals // channel: /path/to/panel/of/normals + panel_of_normals_tbi // channel: /path/to/panel/of/normals/index + intervals // channel: [mandatory] [ intervals, num_intervals ] or [ [], 0 ] if no intervals main: versions = Channel.empty() // Combine input and intervals for spread and gather strategy - input_intervals = input.combine(intervals) - // Move num_intervals to meta map and reorganize channel for TNSCOPE module - .map{ meta, input_, index, intervals_, num_intervals -> [ meta + [ num_intervals:num_intervals ], input_, index, intervals_ ] } + // Move num_intervals to meta map and reorganize channel for TNSCOPE module + input_intervals = input + .combine(intervals) + .map { meta, input_, index, intervals_, num_intervals -> [meta + [num_intervals: num_intervals], input_, index, intervals_] } SENTIEON_TNSCOPE( input_intervals, fasta, fai, - germline_resource.map{resource -> [[id: "resource"], resource]}, - germline_resource_tbi.map{index -> [[id: "resource"], index]}, - panel_of_normals.map{pon -> [[id: "pon"], pon]}, - panel_of_normals_tbi.map{index -> [[id: "pon"], index]}, - [[],[]], // cosmic - [[],[]] // cosmic_tbi + germline_resource.map { resource -> [[id: "resource"], resource] }, + germline_resource_tbi.map { index -> [[id: "resource"], index] }, + panel_of_normals.map { pon -> [[id: "pon"], pon] }, + panel_of_normals_tbi.map { index -> [[id: "pon"], index] }, + [[], []], + [[], []], ) - versions = versions.mix(SENTIEON_TNSCOPE.out.versions) // Figuring out if there is one or more vcf(s) from the same sample - vcf_branch = SENTIEON_TNSCOPE.out.vcf.branch{ - // Use meta.num_intervals to asses number of intervals - intervals: it[0].num_intervals > 1 + // Use meta.num_intervals to asses number of intervals + vcf_branch = SENTIEON_TNSCOPE.out.vcf.branch { + intervals: it[0].num_intervals > 1 no_intervals: it[0].num_intervals <= 1 } // Figuring out if there is one or more tbi(s) from the same sample - tbi_branch = SENTIEON_TNSCOPE.out.index.branch{ - // Use meta.num_intervals to asses number of intervals - intervals: it[0].num_intervals > 1 + // Use meta.num_intervals to asses number of intervals + tbi_branch = SENTIEON_TNSCOPE.out.index.branch { + intervals: it[0].num_intervals > 1 no_intervals: it[0].num_intervals <= 1 } - vcf_to_merge = vcf_branch.intervals.map{ meta, vcf -> [ groupKey(meta, meta.num_intervals), vcf ] }.groupTuple() + vcf_to_merge = vcf_branch.intervals.map { meta, vcf -> [groupKey(meta, meta.num_intervals), vcf] }.groupTuple() // Merge if required MERGE_TNSCOPE(vcf_to_merge, dict) - versions = versions.mix(MERGE_TNSCOPE.out.versions) // Mix intervals and no_intervals channels together // Remove unnecessary metadata and add variantcaller - vcf = Channel.empty() + vcf = Channel.empty() .mix(MERGE_TNSCOPE.out.vcf, vcf_branch.no_intervals) - .map{ meta, vcf -> [ meta - meta.subMap('num_intervals') + [ variantcaller:'sentieon_tnscope' ], vcf ] } + .map { meta, vcf -> [meta - meta.subMap('num_intervals') + [variantcaller: 'sentieon_tnscope'], vcf] } index = Channel.empty() .mix(MERGE_TNSCOPE.out.tbi, tbi_branch.no_intervals) - .map{ meta, tbi -> [ meta - meta.subMap('num_intervals') + [ variantcaller:'sentieon_tnscope' ], tbi ] } + .map { meta, tbi -> [meta - meta.subMap('num_intervals') + [variantcaller: 'sentieon_tnscope'], tbi] } + + versions = versions.mix(SENTIEON_TNSCOPE.out.versions) + versions = versions.mix(MERGE_TNSCOPE.out.versions) emit: - vcf // channel: [ meta, vcf ] index // channel: [ meta, index ] + vcf // channel: [ meta, vcf ] versions // channel: [ versions.yml ] } diff --git a/subworkflows/local/cram_qc_mosdepth_samtools/main.nf b/subworkflows/local/cram_qc_mosdepth_samtools/main.nf index e53e69360..0154cc519 100644 --- a/subworkflows/local/cram_qc_mosdepth_samtools/main.nf +++ b/subworkflows/local/cram_qc_mosdepth_samtools/main.nf @@ -4,8 +4,8 @@ // For all modules here: // A when clause condition is defined in the conf/modules.config to determine if the module should be run -include { SAMTOOLS_STATS } from '../../../modules/nf-core/samtools/stats/main' -include { MOSDEPTH } from '../../../modules/nf-core/mosdepth/main' +include { SAMTOOLS_STATS } from '../../../modules/nf-core/samtools/stats' +include { MOSDEPTH } from '../../../modules/nf-core/mosdepth' workflow CRAM_QC_MOSDEPTH_SAMTOOLS { take: @@ -20,7 +20,7 @@ workflow CRAM_QC_MOSDEPTH_SAMTOOLS { // Reports run on cram SAMTOOLS_STATS(cram, fasta) - MOSDEPTH(cram.combine(intervals.map { meta, bed -> [bed ?: []] }), fasta) + MOSDEPTH(cram.combine(intervals.map { _meta, bed -> [bed ?: []] }), fasta) // Gather all reports generated reports = reports.mix(SAMTOOLS_STATS.out.stats) diff --git a/subworkflows/local/download_cache_snpeff_vep/main.nf b/subworkflows/local/download_cache_snpeff_vep/main.nf index f9f776db7..e82630b64 100644 --- a/subworkflows/local/download_cache_snpeff_vep/main.nf +++ b/subworkflows/local/download_cache_snpeff_vep/main.nf @@ -27,8 +27,7 @@ workflow DOWNLOAD_CACHE_SNPEFF_VEP { versions = versions.mix(SNPEFF_DOWNLOAD.out.versions) emit: - ensemblvep_cache = ENSEMBLVEP_DOWNLOAD.out.cache.collect() // channel: [ meta, cache ] - snpeff_cache = SNPEFF_DOWNLOAD.out.cache.collect() // channel: [ meta, cache ] - - versions // channel: [ versions.yml ] + ensemblvep_cache = ENSEMBLVEP_DOWNLOAD.out.cache.collect() // channel: [ meta, cache ] + snpeff_cache = SNPEFF_DOWNLOAD.out.cache.collect() // channel: [ meta, cache ] + versions // channel: [ versions.yml ] } diff --git a/subworkflows/local/fastq_align/main.nf b/subworkflows/local/fastq_align/main.nf index 400f1e368..b9a5590b8 100644 --- a/subworkflows/local/fastq_align/main.nf +++ b/subworkflows/local/fastq_align/main.nf @@ -4,16 +4,16 @@ // For all modules here: // A when clause condition is defined in the conf/modules.config to determine if the module should be run -include { BWAMEM2_MEM } from '../../../modules/nf-core/bwamem2/mem/main' -include { BWA_MEM as BWAMEM1_MEM } from '../../../modules/nf-core/bwa/mem/main' -include { DRAGMAP_ALIGN } from '../../../modules/nf-core/dragmap/align/main' -include { SENTIEON_BWAMEM } from '../../../modules/nf-core/sentieon/bwamem/main' +include { BWAMEM2_MEM } from '../../../modules/nf-core/bwamem2/mem' +include { BWA_MEM as BWAMEM1_MEM } from '../../../modules/nf-core/bwa/mem' +include { DRAGMAP_ALIGN } from '../../../modules/nf-core/dragmap/align' +include { SENTIEON_BWAMEM } from '../../../modules/nf-core/sentieon/bwamem' workflow FASTQ_ALIGN { take: - reads // channel: [mandatory] meta, reads - index // channel: [mandatory] index - sort // boolean: [mandatory] true -> sort, false -> don't sort + reads // channel: [mandatory] meta, reads + index // channel: [mandatory] index + sort // boolean: [mandatory] true -> sort, false -> don't sort fasta fasta_fai @@ -23,11 +23,15 @@ workflow FASTQ_ALIGN { reports = Channel.empty() // Only one of the following should be run - BWAMEM1_MEM(reads, index, [[id:'no_fasta'], []], sort) // If aligner is bwa-mem - BWAMEM2_MEM(reads, index, [[id:'no_fasta'], []], sort) // If aligner is bwa-mem2 - DRAGMAP_ALIGN(reads, index, [[id:'no_fasta'], []], sort) // If aligner is dragmap + // If aligner is bwa-mem + BWAMEM1_MEM(reads, index, [[id: 'no_fasta'], []], sort) + // If aligner is bwa-mem2 + BWAMEM2_MEM(reads, index, [[id: 'no_fasta'], []], sort) + // If aligner is dragmap + DRAGMAP_ALIGN(reads, index, [[id: 'no_fasta'], []], sort) + // If aligner is sentieon-bwamem // The sentieon-bwamem-module does sorting as part of the conversion from sam to bam. - SENTIEON_BWAMEM(reads, index, fasta, fasta_fai) // If aligner is sentieon-bwamem + SENTIEON_BWAMEM(reads, index, fasta, fasta_fai) // Get the bam files from the aligner // Only one aligner is run @@ -35,9 +39,9 @@ workflow FASTQ_ALIGN { bam = bam.mix(BWAMEM1_MEM.out.bam) bam = bam.mix(BWAMEM2_MEM.out.bam) bam = bam.mix(DRAGMAP_ALIGN.out.bam) - bam = bam.mix(SENTIEON_BWAMEM.out.bam_and_bai.map{ meta, bam, bai -> [ meta, bam ] }) + bam = bam.mix(SENTIEON_BWAMEM.out.bam_and_bai.map { meta, bam_, _bai -> [meta, bam_] }) - bai = SENTIEON_BWAMEM.out.bam_and_bai.map{ meta, bam, bai -> [ meta, bai ] } + bai = SENTIEON_BWAMEM.out.bam_and_bai.map { meta, _bam, bai -> [meta, bai] } // Gather reports of all tools used reports = reports.mix(DRAGMAP_ALIGN.out.log) diff --git a/subworkflows/local/prepare_genome/main.nf b/subworkflows/local/prepare_genome/main.nf index 288e49369..a0056fd2d 100644 --- a/subworkflows/local/prepare_genome/main.nf +++ b/subworkflows/local/prepare_genome/main.nf @@ -41,64 +41,91 @@ workflow PREPARE_GENOME { known_snps // channel: [optional] known_snps pon // channel: [optional] pon - main: versions = Channel.empty() - BWAMEM1_INDEX(fasta) // If aligner is bwa-mem - BWAMEM2_INDEX(fasta) // If aligner is bwa-mem2 - DRAGMAP_HASHTABLE(fasta) // If aligner is dragmap + // If aligner is bwa-mem + BWAMEM1_INDEX(fasta) + // If aligner is bwa-mem2 + BWAMEM2_INDEX(fasta) + // If aligner is dragmap + DRAGMAP_HASHTABLE(fasta) GATK4_CREATESEQUENCEDICTIONARY(fasta) MSISENSORPRO_SCAN(fasta) - SAMTOOLS_FAIDX(fasta, [ [ id:'no_fai' ], [] ], false ) + SAMTOOLS_FAIDX(fasta, [[id: 'no_fai'], []], false) // the following are flattened and mapped in case the user supplies more than one value for the param // written for KNOWN_INDELS, but preemptively applied to the rest // [ file1, file2 ] becomes [ [ meta1, file1 ], [ meta2, file2 ] ] // outputs are collected to maintain a single channel for relevant TBI files - TABIX_BCFTOOLS_ANNOTATIONS(bcftools_annotations.flatten().map{ it -> [ [ id:it.baseName ], it ] }) - TABIX_DBSNP(dbsnp.flatten().map{ it -> [ [ id:it.baseName ], it ] }) - TABIX_GERMLINE_RESOURCE(germline_resource.flatten().map{ it -> [ [ id:it.baseName ], it ] }) - TABIX_KNOWN_SNPS(known_snps.flatten().map{ it -> [ [ id:it.baseName ], it ] } ) - TABIX_KNOWN_INDELS(known_indels.flatten().map{ it -> [ [ id:it.baseName ], it ] } ) - TABIX_PON(pon.flatten().map{ it -> [ [ id:it.baseName ], it ] }) + TABIX_BCFTOOLS_ANNOTATIONS(bcftools_annotations.flatten().map { it -> [[id: it.baseName], it] }) + TABIX_DBSNP(dbsnp.flatten().map { it -> [[id: it.baseName], it] }) + TABIX_GERMLINE_RESOURCE(germline_resource.flatten().map { it -> [[id: it.baseName], it] }) + TABIX_KNOWN_SNPS(known_snps.flatten().map { it -> [[id: it.baseName], it] }) + TABIX_KNOWN_INDELS(known_indels.flatten().map { it -> [[id: it.baseName], it] }) + TABIX_PON(pon.flatten().map { it -> [[id: it.baseName], it] }) // prepare ascat and controlfreec reference files - if (!ascat_alleles) allele_files = Channel.empty() + if (!ascat_alleles) { + allele_files = Channel.empty() + } else if (ascat_alleles.endsWith(".zip")) { - UNZIP_ALLELES(Channel.fromPath(file(ascat_alleles)).collect().map{ it -> [ [ id:it[0].baseName ], it ] }) - allele_files = UNZIP_ALLELES.out.unzipped_archive.map{ it[1] } + UNZIP_ALLELES(Channel.fromPath(file(ascat_alleles)).collect().map { it -> [[id: it[0].baseName], it] }) + allele_files = UNZIP_ALLELES.out.unzipped_archive.map { it[1] } versions = versions.mix(UNZIP_ALLELES.out.versions) - } else allele_files = Channel.fromPath(ascat_alleles).collect() - - if (!ascat_loci) loci_files = Channel.empty() + } + else { + allele_files = Channel.fromPath(ascat_alleles).collect() + } + + if (!ascat_loci) { + loci_files = Channel.empty() + } else if (ascat_loci.endsWith(".zip")) { - UNZIP_LOCI(Channel.fromPath(file(ascat_loci)).collect().map{ it -> [ [ id:it[0].baseName ], it ] }) - loci_files = UNZIP_LOCI.out.unzipped_archive.map{ it[1] } + UNZIP_LOCI(Channel.fromPath(file(ascat_loci)).collect().map { it -> [[id: it[0].baseName], it] }) + loci_files = UNZIP_LOCI.out.unzipped_archive.map { it[1] } versions = versions.mix(UNZIP_LOCI.out.versions) - } else loci_files = Channel.fromPath(ascat_loci).collect() - - if (!ascat_loci_gc) gc_file = Channel.value([]) + } + else { + loci_files = Channel.fromPath(ascat_loci).collect() + } + + if (!ascat_loci_gc) { + gc_file = Channel.value([]) + } else if (ascat_loci_gc.endsWith(".zip")) { - UNZIP_GC(Channel.fromPath(file(ascat_loci_gc)).collect().map{ it -> [ [ id:it[0].baseName ], it ] }) - gc_file = UNZIP_GC.out.unzipped_archive.map{ it[1] } + UNZIP_GC(Channel.fromPath(file(ascat_loci_gc)).collect().map { it -> [[id: it[0].baseName], it] }) + gc_file = UNZIP_GC.out.unzipped_archive.map { it[1] } versions = versions.mix(UNZIP_GC.out.versions) - } else gc_file = Channel.fromPath(ascat_loci_gc).collect() - - if (!ascat_loci_rt) rt_file = Channel.value([]) + } + else { + gc_file = Channel.fromPath(ascat_loci_gc).collect() + } + + if (!ascat_loci_rt) { + rt_file = Channel.value([]) + } else if (ascat_loci_rt.endsWith(".zip")) { - UNZIP_RT(Channel.fromPath(file(ascat_loci_rt)).collect().map{ it -> [ [ id:it[0].baseName ], it ] }) - rt_file = UNZIP_RT.out.unzipped_archive.map{ it[1] } + UNZIP_RT(Channel.fromPath(file(ascat_loci_rt)).collect().map { it -> [[id: it[0].baseName], it] }) + rt_file = UNZIP_RT.out.unzipped_archive.map { it[1] } versions = versions.mix(UNZIP_RT.out.versions) - } else rt_file = Channel.fromPath(ascat_loci_rt).collect() - - if (!chr_dir) chr_files = Channel.value([]) + } + else { + rt_file = Channel.fromPath(ascat_loci_rt).collect() + } + + if (!chr_dir) { + chr_files = Channel.value([]) + } else if (chr_dir.endsWith(".tar.gz")) { - UNTAR_CHR_DIR(Channel.fromPath(file(chr_dir)).collect().map{ it -> [ [ id:it[0].baseName ], it ] }) - chr_files = UNTAR_CHR_DIR.out.untar.map{ it[1] } + UNTAR_CHR_DIR(Channel.fromPath(file(chr_dir)).collect().map { it -> [[id: it[0].baseName], it] }) + chr_files = UNTAR_CHR_DIR.out.untar.map { it[1] } versions = versions.mix(UNTAR_CHR_DIR.out.versions) - } else chr_files = Channel.fromPath(chr_dir).collect() + } + else { + chr_files = Channel.fromPath(chr_dir).collect() + } // Gather versions of all tools used versions = versions.mix(BWAMEM1_INDEX.out.versions) @@ -115,24 +142,22 @@ workflow PREPARE_GENOME { versions = versions.mix(TABIX_PON.out.versions) emit: - bcftools_annotations_tbi = TABIX_BCFTOOLS_ANNOTATIONS.out.tbi.map{ meta, tbi -> [tbi] }.collect() // path: bcftools_annotations.vcf.gz.tbi - bwa = BWAMEM1_INDEX.out.index.collect() // path: bwa/* - bwamem2 = BWAMEM2_INDEX.out.index.collect() // path: bwamem2/* - hashtable = DRAGMAP_HASHTABLE.out.hashmap.collect() // path: dragmap/* - dbsnp_tbi = TABIX_DBSNP.out.tbi.map{ meta, tbi -> [tbi] }.collect() // path: dbsnb.vcf.gz.tbi - dict = GATK4_CREATESEQUENCEDICTIONARY.out.dict.collect() // path: genome.fasta.dict - fasta_fai = SAMTOOLS_FAIDX.out.fai.collect() // path: genome.fasta.fai - germline_resource_tbi = TABIX_GERMLINE_RESOURCE.out.tbi.map{ meta, tbi -> [tbi] }.collect() // path: germline_resource.vcf.gz.tbi - known_snps_tbi = TABIX_KNOWN_SNPS.out.tbi.map{ meta, tbi -> [tbi] }.collect() // path: {known_indels*}.vcf.gz.tbi - known_indels_tbi = TABIX_KNOWN_INDELS.out.tbi.map{ meta, tbi -> [tbi] }.collect() // path: {known_indels*}.vcf.gz.tbi - msisensorpro_scan = MSISENSORPRO_SCAN.out.list.map{ meta, list -> [list] } // path: genome_msi.list - pon_tbi = TABIX_PON.out.tbi.map{ meta, tbi -> [tbi] }.collect() // path: pon.vcf.gz.tbi - - allele_files // path: allele_files - chr_files // path: chr_files - gc_file // path: gc_file - loci_files // path: loci_files - rt_file // path: rt_file - - versions // channel: [ versions.yml ] + bcftools_annotations_tbi = TABIX_BCFTOOLS_ANNOTATIONS.out.tbi.map { _meta, tbi -> [tbi] }.collect() // path: bcftools_annotations.vcf.gz.tbi + bwa = BWAMEM1_INDEX.out.index.collect() // path: bwa/* + bwamem2 = BWAMEM2_INDEX.out.index.collect() // path: bwamem2/* + hashtable = DRAGMAP_HASHTABLE.out.hashmap.collect() // path: dragmap/* + dbsnp_tbi = TABIX_DBSNP.out.tbi.map { _meta, tbi -> [tbi] }.collect() // path: dbsnb.vcf.gz.tbi + dict = GATK4_CREATESEQUENCEDICTIONARY.out.dict.collect() // path: genome.fasta.dict + fasta_fai = SAMTOOLS_FAIDX.out.fai.collect() // path: genome.fasta.fai + germline_resource_tbi = TABIX_GERMLINE_RESOURCE.out.tbi.map { _meta, tbi -> [tbi] }.collect() // path: germline_resource.vcf.gz.tbi + known_snps_tbi = TABIX_KNOWN_SNPS.out.tbi.map { _meta, tbi -> [tbi] }.collect() // path: {known_indels*}.vcf.gz.tbi + known_indels_tbi = TABIX_KNOWN_INDELS.out.tbi.map { _meta, tbi -> [tbi] }.collect() // path: {known_indels*}.vcf.gz.tbi + msisensorpro_scan = MSISENSORPRO_SCAN.out.list.map { _meta, list -> [list] } // path: genome_msi.list + pon_tbi = TABIX_PON.out.tbi.map { _meta, tbi -> [tbi] }.collect() // path: pon.vcf.gz.tbi + allele_files // path: allele_files + chr_files // path: chr_files + gc_file // path: gc_file + loci_files // path: loci_files + rt_file // path: rt_file + versions // channel: [ versions.yml ] } diff --git a/subworkflows/local/prepare_intervals/main.nf b/subworkflows/local/prepare_intervals/main.nf index ebb4205ee..ac7521671 100644 --- a/subworkflows/local/prepare_intervals/main.nf +++ b/subworkflows/local/prepare_intervals/main.nf @@ -14,9 +14,9 @@ include { TABIX_BGZIPTABIX as TABIX_BGZIPTABIX_INTERVAL_COMBINED } from '../../. workflow PREPARE_INTERVALS { take: - fasta_fai // mandatory [ fasta_fai ] - intervals // [ params.intervals ] - no_intervals // [ params.no_intervals ] + fasta_fai // mandatory [ fasta_fai ] + intervals // [ params.intervals ] + no_intervals // [ params.no_intervals ] nucleotides_per_second outdir step @@ -24,33 +24,38 @@ workflow PREPARE_INTERVALS { main: versions = Channel.empty() - intervals_bed = Channel.empty() // List of [ bed, num_intervals ], one for each region - intervals_bed_gz_tbi = Channel.empty() // List of [ bed.gz, bed,gz.tbi, num_intervals ], one for each region - intervals_combined = Channel.empty() // Single bed file containing all intervals + intervals_bed = Channel.empty() + // List of [ bed, num_intervals ], one for each region + intervals_bed_gz_tbi = Channel.empty() + // List of [ bed.gz, bed,gz.tbi, num_intervals ], one for each region + intervals_combined = Channel.empty() + // Single bed file containing all intervals if (no_intervals) { - file("${outdir}/no_intervals.bed").text = "no_intervals\n" - file("${outdir}/no_intervals.bed.gz").text = "no_intervals\n" + file("${outdir}/no_intervals.bed").text = "no_intervals\n" + file("${outdir}/no_intervals.bed.gz").text = "no_intervals\n" file("${outdir}/no_intervals.bed.gz.tbi").text = "no_intervals\n" - intervals_bed = Channel.fromPath(file("${outdir}/no_intervals.bed")).map{ it -> [ it, 0 ] } - intervals_bed_gz_tbi = Channel.fromPath(file("${outdir}/no_intervals.bed.{gz,gz.tbi}")).collect().map{ it -> [ it, 0 ] } - intervals_combined = Channel.fromPath(file("${outdir}/no_intervals.bed")).map{ it -> [ [ id:it.simpleName ], it ] } - } else if (step != 'annotate' && step != 'controlfreec') { + intervals_bed = Channel.fromPath(file("${outdir}/no_intervals.bed")).map { it -> [it, 0] } + intervals_bed_gz_tbi = Channel.fromPath(file("${outdir}/no_intervals.bed.{gz,gz.tbi}")).collect().map { it -> [it, 0] } + intervals_combined = Channel.fromPath(file("${outdir}/no_intervals.bed")).map { it -> [[id: it.simpleName], it] } + } + else if (step != 'annotate' && step != 'controlfreec') { // If no interval/target file is provided, then generated intervals from FASTA file if (!intervals) { BUILD_INTERVALS(fasta_fai, [], []) intervals_combined = BUILD_INTERVALS.out.output - CREATE_INTERVALS_BED(intervals_combined.map{ meta, path -> path }, nucleotides_per_second) + CREATE_INTERVALS_BED(intervals_combined.map { _meta, path -> path }, nucleotides_per_second) intervals_bed = CREATE_INTERVALS_BED.out.bed versions = versions.mix(BUILD_INTERVALS.out.versions) versions = versions.mix(CREATE_INTERVALS_BED.out.versions) - } else { - intervals_combined = Channel.fromPath(file(intervals)).map{it -> [ [ id:it.baseName ], it ] } + } + else { + intervals_combined = Channel.fromPath(file(intervals)).map { intervals_ -> [[id: intervals_.baseName], intervals_] } CREATE_INTERVALS_BED(file(intervals), nucleotides_per_second) intervals_bed = CREATE_INTERVALS_BED.out.bed @@ -70,31 +75,42 @@ workflow PREPARE_INTERVALS { // 2. Each bed file is indexed // 1. Intervals file is split up into multiple bed files for scatter/gather & grouping together small intervals - intervals_bed = intervals_bed.flatten() - .map{ intervalFile -> - def duration = 0.0 - for (line in intervalFile.readLines()) { - final fields = line.split('\t') - if (fields.size() >= 5) duration += fields[4].toFloat() - else { - start = fields[1].toInteger() - end = fields[2].toInteger() - duration += (end - start) / nucleotides_per_second + // Adding number of intervals as elements + intervals_bed = intervals_bed + .flatten() + .map { intervalFile -> + def duration = intervalFile + .readLines() + .collect { line -> line.split('\t') } + .collect { fields -> + if (fields.size() >= 5) { + fields[4].toFloat() + } + else { + def start = fields[1].toInteger() + def end = fields[2].toInteger() + (end - start) / nucleotides_per_second + } } - } - [ duration, intervalFile ] - }.toSortedList({ a, b -> b[0] <=> a[0] }) - .flatten().collate(2).map{ duration, intervalFile -> intervalFile }.collect() - // Adding number of intervals as elements - .map{ it -> [ it, it.size() ] } + .sum() + [duration, intervalFile] + } + .toSortedList { a, b -> b[0] <=> a[0] } + .flatten() + .collate(2) + .map { _duration, intervalFile -> intervalFile } + .collect() + .map { it -> [it, it.size()] } .transpose() // 2. Create bed.gz and bed.gz.tbi for each interval file. They are split by region (see above) - TABIX_BGZIPTABIX_INTERVAL_SPLIT(intervals_bed.map{ file, num_intervals -> [ [ id:file.baseName], file ] }) + TABIX_BGZIPTABIX_INTERVAL_SPLIT(intervals_bed.map { file, _num_intervals -> [[id: file.baseName], file] }) - intervals_bed_gz_tbi = TABIX_BGZIPTABIX_INTERVAL_SPLIT.out.gz_tbi.map{ meta, bed, tbi -> [ bed, tbi ] }.toList() - // Adding number of intervals as elements - .map{ it -> [ it, it.size() ] } + // Adding number of intervals as elements + intervals_bed_gz_tbi = TABIX_BGZIPTABIX_INTERVAL_SPLIT.out.gz_tbi + .map { meta, bed, tbi -> [bed, tbi] } + .toList() + .map { it -> [it, it.size()] } .transpose() versions = versions.mix(TABIX_BGZIPTABIX_INTERVAL_SPLIT.out.versions) @@ -103,16 +119,14 @@ workflow PREPARE_INTERVALS { TABIX_BGZIPTABIX_INTERVAL_COMBINED(intervals_combined) versions = versions.mix(TABIX_BGZIPTABIX_INTERVAL_COMBINED.out.versions) - intervals_bed_combined = intervals_combined.map{meta, bed -> bed }.collect() - intervals_bed_gz_tbi_combined = TABIX_BGZIPTABIX_INTERVAL_COMBINED.out.gz_tbi.map{meta, gz, tbi -> [gz, tbi] }.collect() + // All intervals in one file + intervals_bed_combined = intervals_combined.map { _meta, bed -> bed }.collect() + intervals_bed_gz_tbi_combined = TABIX_BGZIPTABIX_INTERVAL_COMBINED.out.gz_tbi.map { _meta, gz, tbi -> [gz, tbi] }.collect() emit: - // Intervals split for parallel execution intervals_bed // [ intervals.bed, num_intervals ] intervals_bed_gz_tbi // [ intervals.bed.gz, intervals.bed.gz.tbi, num_intervals ] - // All intervals in one file intervals_bed_combined // [ intervals.bed ] intervals_bed_gz_tbi_combined // [ intervals.bed.gz, intervals.bed.gz.tbi] - - versions // [ versions.yml ] + versions // [ versions.yml ] } diff --git a/subworkflows/local/vcf_concatenate_germline/main.nf b/subworkflows/local/vcf_concatenate_germline/main.nf index acdf0ff7f..c46116c82 100644 --- a/subworkflows/local/vcf_concatenate_germline/main.nf +++ b/subworkflows/local/vcf_concatenate_germline/main.nf @@ -35,7 +35,6 @@ workflow CONCATENATE_GERMLINE_VCFS { versions = versions.mix(TABIX_GERMLINE_VCFS_CONCAT_SORT.out.versions) emit: - vcfs = GERMLINE_VCFS_CONCAT_SORT.out.vcf // concatenated vcfs - + vcfs = GERMLINE_VCFS_CONCAT_SORT.out.vcf // concatenated vcfs versions // channel: [ versions.yml ] } diff --git a/subworkflows/local/vcf_qc_bcftools_vcftools/main.nf b/subworkflows/local/vcf_qc_bcftools_vcftools/main.nf index bcdc34e30..0fa2202a8 100644 --- a/subworkflows/local/vcf_qc_bcftools_vcftools/main.nf +++ b/subworkflows/local/vcf_qc_bcftools_vcftools/main.nf @@ -1,7 +1,7 @@ -include { BCFTOOLS_STATS } from '../../../modules/nf-core/bcftools/stats/main' -include { VCFTOOLS as VCFTOOLS_SUMMARY } from '../../../modules/nf-core/vcftools/main' -include { VCFTOOLS as VCFTOOLS_TSTV_COUNT } from '../../../modules/nf-core/vcftools/main' -include { VCFTOOLS as VCFTOOLS_TSTV_QUAL } from '../../../modules/nf-core/vcftools/main' +include { BCFTOOLS_STATS } from '../../../modules/nf-core/bcftools/stats' +include { VCFTOOLS as VCFTOOLS_SUMMARY } from '../../../modules/nf-core/vcftools' +include { VCFTOOLS as VCFTOOLS_TSTV_COUNT } from '../../../modules/nf-core/vcftools' +include { VCFTOOLS as VCFTOOLS_TSTV_QUAL } from '../../../modules/nf-core/vcftools' workflow VCF_QC_BCFTOOLS_VCFTOOLS { take: @@ -12,19 +12,20 @@ workflow VCF_QC_BCFTOOLS_VCFTOOLS { versions = Channel.empty() - BCFTOOLS_STATS(vcf.map{ meta, vcf -> [ meta, vcf, [] ] }, [[:],[]], [[:],[]], [[:],[]], [[:],[]], [[:],[]]) + BCFTOOLS_STATS(vcf.map { meta, vcf_ -> [meta, vcf_, []] }, [[:], []], [[:], []], [[:], []], [[:], []], [[:], []]) VCFTOOLS_TSTV_COUNT(vcf, target_bed, []) VCFTOOLS_TSTV_QUAL(vcf, target_bed, []) VCFTOOLS_SUMMARY(vcf, target_bed, []) versions = versions.mix(BCFTOOLS_STATS.out.versions) + versions = versions.mix(VCFTOOLS_SUMMARY.out.versions) versions = versions.mix(VCFTOOLS_TSTV_COUNT.out.versions) + versions = versions.mix(VCFTOOLS_TSTV_QUAL.out.versions) emit: bcftools_stats = BCFTOOLS_STATS.out.stats vcftools_tstv_counts = VCFTOOLS_TSTV_COUNT.out.tstv_count vcftools_tstv_qual = VCFTOOLS_TSTV_QUAL.out.tstv_qual vcftools_filter_summary = VCFTOOLS_SUMMARY.out.filter_summary - versions } From a618e2a74fff4bb5b45687bb2d5ace8976000660 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Thu, 14 Aug 2025 11:58:28 +0200 Subject: [PATCH 06/34] update all modules and subworkflows --- modules.json | 214 +++++----- modules/nf-core/ascat/meta.yml | 114 +++--- modules/nf-core/bcftools/concat/meta.yml | 24 +- modules/nf-core/bcftools/mpileup/meta.yml | 41 +- modules/nf-core/bcftools/norm/meta.yml | 30 +- modules/nf-core/bcftools/sort/meta.yml | 28 +- modules/nf-core/bcftools/stats/meta.yml | 24 +- modules/nf-core/bwa/index/meta.yml | 16 +- modules/nf-core/bwa/mem/meta.yml | 53 +-- modules/nf-core/bwamem2/index/main.nf | 3 +- modules/nf-core/bwamem2/index/meta.yml | 16 +- modules/nf-core/bwamem2/mem/meta.yml | 42 +- modules/nf-core/cat/cat/meta.yml | 23 +- modules/nf-core/cat/fastq/meta.yml | 18 +- .../nf-core/cnvkit/antitarget/environment.yml | 2 +- modules/nf-core/cnvkit/antitarget/main.nf | 20 +- modules/nf-core/cnvkit/antitarget/meta.yml | 18 +- modules/nf-core/cnvkit/batch/meta.yml | 57 ++- modules/nf-core/cnvkit/call/environment.yml | 2 +- modules/nf-core/cnvkit/call/main.nf | 4 +- modules/nf-core/cnvkit/call/meta.yml | 19 +- modules/nf-core/cnvkit/export/environment.yml | 2 +- modules/nf-core/cnvkit/export/main.nf | 4 +- modules/nf-core/cnvkit/export/meta.yml | 18 +- .../cnvkit/genemetrics/environment.yml | 2 +- modules/nf-core/cnvkit/genemetrics/main.nf | 26 +- modules/nf-core/cnvkit/genemetrics/meta.yml | 30 +- .../nf-core/cnvkit/reference/environment.yml | 2 +- modules/nf-core/cnvkit/reference/main.nf | 25 +- modules/nf-core/cnvkit/reference/meta.yml | 50 ++- .../controlfreec/assesssignificance/meta.yml | 23 +- modules/nf-core/controlfreec/freec/meta.yml | 149 ++++--- .../nf-core/controlfreec/freec2bed/meta.yml | 18 +- .../controlfreec/freec2circos/meta.yml | 18 +- .../nf-core/controlfreec/makegraph2/meta.yml | 29 +- .../deepvariant/rundeepvariant/main.nf | 2 +- .../deepvariant/rundeepvariant/meta.yml | 41 +- modules/nf-core/dragmap/align/main.nf | 2 +- modules/nf-core/dragmap/align/meta.yml | 58 +-- modules/nf-core/dragmap/hashtable/meta.yml | 18 +- modules/nf-core/ensemblvep/download/meta.yml | 18 +- modules/nf-core/ensemblvep/vep/meta.yml | 101 +++-- modules/nf-core/fastp/main.nf | 6 +- modules/nf-core/fastp/meta.yml | 79 ++-- .../environment.yml | 2 +- .../fgbio/callmolecularconsensusreads/main.nf | 4 +- .../callmolecularconsensusreads/meta.yml | 30 +- .../nf-core/fgbio/fastqtobam/environment.yml | 2 +- modules/nf-core/fgbio/fastqtobam/main.nf | 4 +- modules/nf-core/fgbio/fastqtobam/meta.yml | 23 +- .../fgbio/groupreadsbyumi/environment.yml | 2 +- modules/nf-core/fgbio/groupreadsbyumi/main.nf | 15 +- .../nf-core/fgbio/groupreadsbyumi/meta.yml | 44 +- modules/nf-core/freebayes/environment.yml | 2 +- modules/nf-core/freebayes/main.nf | 50 ++- modules/nf-core/freebayes/meta.yml | 28 +- modules/nf-core/gatk4/applybqsr/main.nf | 10 +- modules/nf-core/gatk4/applybqsr/meta.yml | 53 ++- modules/nf-core/gatk4/applyvqsr/meta.yml | 63 +-- .../nf-core/gatk4/baserecalibrator/meta.yml | 30 +- .../gatk4/calculatecontamination/meta.yml | 31 +- .../nf-core/gatk4/cnnscorevariants/meta.yml | 73 ++-- .../gatk4/createsequencedictionary/meta.yml | 19 +- .../gatk4/estimatelibrarycomplexity/meta.yml | 45 +- .../nf-core/gatk4/filtermutectcalls/meta.yml | 54 ++- .../gatk4/filtervarianttranches/meta.yml | 74 ++-- .../nf-core/gatk4/gatherbqsrreports/meta.yml | 18 +- .../gatk4/gatherpileupsummaries/meta.yml | 25 +- .../nf-core/gatk4/genomicsdbimport/meta.yml | 83 ++-- modules/nf-core/gatk4/genotypegvcfs/meta.yml | 34 +- .../nf-core/gatk4/getpileupsummaries/meta.yml | 44 +- .../nf-core/gatk4/haplotypecaller/meta.yml | 37 +- .../nf-core/gatk4/intervallisttobed/meta.yml | 17 +- .../gatk4/learnreadorientationmodel/main.nf | 34 +- .../gatk4/learnreadorientationmodel/meta.yml | 20 +- modules/nf-core/gatk4/markduplicates/meta.yml | 56 +-- .../nf-core/gatk4/mergemutectstats/meta.yml | 18 +- modules/nf-core/gatk4/mergevcfs/meta.yml | 32 +- modules/nf-core/gatk4/mutect2/meta.yml | 97 +++-- .../gatk4/variantrecalibrator/meta.yml | 113 +++--- .../gatk4spark/baserecalibrator/meta.yml | 66 +-- .../gatk4spark/markduplicates/meta.yml | 55 +-- modules/nf-core/gawk/meta.yml | 49 ++- modules/nf-core/goleft/indexcov/meta.yml | 51 ++- modules/nf-core/lofreq/callparallel/meta.yml | 27 +- modules/nf-core/manta/germline/meta.yml | 57 ++- modules/nf-core/manta/somatic/meta.yml | 69 ++-- modules/nf-core/manta/tumoronly/meta.yml | 57 ++- modules/nf-core/mosdepth/meta.yml | 76 ++-- .../msisensorpro/msisomatic/environment.yml | 2 +- .../nf-core/msisensorpro/msisomatic/main.nf | 40 +- .../nf-core/msisensorpro/msisomatic/meta.yml | 54 ++- .../nf-core/msisensorpro/scan/environment.yml | 2 +- modules/nf-core/msisensorpro/scan/main.nf | 4 +- modules/nf-core/msisensorpro/scan/meta.yml | 18 +- modules/nf-core/multiqc/main.nf | 4 +- modules/nf-core/muse/call/meta.yml | 22 +- modules/nf-core/muse/sump/meta.yml | 24 +- .../nf-core/ngscheckmate/ncm/environment.yml | 2 +- modules/nf-core/ngscheckmate/ncm/meta.yml | 67 +-- modules/nf-core/parabricks/fq2bam/meta.yml | 69 ++-- modules/nf-core/samblaster/meta.yml | 18 +- modules/nf-core/samtools/bam2fq/meta.yml | 35 +- .../nf-core/samtools/collatefastq/meta.yml | 84 ++-- modules/nf-core/samtools/convert/meta.yml | 36 +- modules/nf-core/samtools/faidx/meta.yml | 52 ++- modules/nf-core/samtools/index/main.nf | 2 +- modules/nf-core/samtools/index/meta.yml | 28 +- modules/nf-core/samtools/merge/main.nf | 2 + modules/nf-core/samtools/merge/meta.yml | 46 ++- modules/nf-core/samtools/mpileup/meta.yml | 22 +- modules/nf-core/samtools/stats/meta.yml | 20 +- modules/nf-core/samtools/view/main.nf | 1 + modules/nf-core/samtools/view/meta.yml | 72 ++-- modules/nf-core/sentieon/applyvarcal/meta.yml | 30 +- modules/nf-core/sentieon/bwamem/meta.yml | 22 +- modules/nf-core/sentieon/dedup/meta.yml | 56 ++- .../nf-core/sentieon/dnamodelapply/meta.yml | 27 +- modules/nf-core/sentieon/dnascope/meta.yml | 73 ++-- modules/nf-core/sentieon/gvcftyper/meta.yml | 31 +- modules/nf-core/sentieon/haplotyper/meta.yml | 62 +-- modules/nf-core/sentieon/varcal/meta.yml | 102 +++-- modules/nf-core/snpeff/download/meta.yml | 26 +- modules/nf-core/snpeff/snpeff/meta.yml | 63 +-- modules/nf-core/spring/decompress/meta.yml | 28 +- modules/nf-core/strelka/germline/meta.yml | 55 ++- modules/nf-core/strelka/somatic/meta.yml | 58 ++- modules/nf-core/svdb/merge/meta.yml | 49 ++- .../nf-core/tabix/bgziptabix/environment.yml | 1 - modules/nf-core/tabix/bgziptabix/meta.yml | 27 +- modules/nf-core/tabix/tabix/environment.yml | 1 - modules/nf-core/tabix/tabix/meta.yml | 23 +- modules/nf-core/tiddit/sv/meta.yml | 26 +- modules/nf-core/untar/meta.yml | 19 +- modules/nf-core/unzip/meta.yml | 18 +- modules/nf-core/vcftools/meta.yml | 383 +++++++++++------- subworkflows/nf-core/bam_ngscheckmate/main.nf | 3 +- .../nf-core/vcf_annotate_ensemblvep/main.nf | 30 +- .../nf-core/vcf_annotate_snpeff/main.nf | 12 +- .../nf-core/vcf_annotate_snpeff/meta.yml | 8 + 140 files changed, 3157 insertions(+), 2084 deletions(-) diff --git a/modules.json b/modules.json index 92a0a934e..0c9bd498f 100644 --- a/modules.json +++ b/modules.json @@ -7,7 +7,7 @@ "nf-core": { "ascat": { "branch": "master", - "git_sha": "edd5dd7ef8d99cc059dcdff2de08d936838b8ca4", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "bcftools/annotate": { @@ -17,143 +17,143 @@ }, "bcftools/concat": { "branch": "master", - "git_sha": "1503efe8f6450e71218097f93cf43e4b625018d4", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "bcftools/mpileup": { "branch": "master", - "git_sha": "c9c3ef86c1892413b3c86fb38c4e39fd7288512f", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["bam_ngscheckmate"] }, "bcftools/norm": { "branch": "master", - "git_sha": "39fed2e840a805454a64dda9c2ef64c00e2c6781", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "bcftools/sort": { "branch": "master", - "git_sha": "c9c3ef86c1892413b3c86fb38c4e39fd7288512f", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "bcftools/stats": { "branch": "master", - "git_sha": "c9c3ef86c1892413b3c86fb38c4e39fd7288512f", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "bwa/index": { "branch": "master", - "git_sha": "a29f18660f5e3748d44d6f716241e70c942c065d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "bwa/mem": { "branch": "master", - "git_sha": "a29f18660f5e3748d44d6f716241e70c942c065d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "bwamem2/index": { "branch": "master", - "git_sha": "a29f18660f5e3748d44d6f716241e70c942c065d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "bwamem2/mem": { "branch": "master", - "git_sha": "a29f18660f5e3748d44d6f716241e70c942c065d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "cat/cat": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "cat/fastq": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "cnvkit/antitarget": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "cnvkit/batch": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "cnvkit/call": { "branch": "master", - "git_sha": "81880787133db07d9b4c1febd152c090eb8325dc", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "cnvkit/export": { "branch": "master", - "git_sha": "81880787133db07d9b4c1febd152c090eb8325dc", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "cnvkit/genemetrics": { "branch": "master", - "git_sha": "81880787133db07d9b4c1febd152c090eb8325dc", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "cnvkit/reference": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "controlfreec/assesssignificance": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"], "patch": "modules/nf-core/controlfreec/assesssignificance/controlfreec-assesssignificance.diff" }, "controlfreec/freec": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "controlfreec/freec2bed": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "controlfreec/freec2circos": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "controlfreec/makegraph2": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "deepvariant/rundeepvariant": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "dragmap/align": { "branch": "master", - "git_sha": "8b06d86f6a82b6203f239ad409f606fdf71ec697", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "dragmap/hashtable": { "branch": "master", - "git_sha": "8b06d86f6a82b6203f239ad409f606fdf71ec697", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "ensemblvep/download": { "branch": "master", - "git_sha": "7452092e1a296442f2989bff9801797f28c28aaf", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "ensemblvep/vep": { "branch": "master", - "git_sha": "7452092e1a296442f2989bff9801797f28c28aaf", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules", "vcf_annotate_ensemblvep"] }, "fastp": { "branch": "master", - "git_sha": "d082103d7976a2804f21225446cc110cbd822f4c", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "fastqc": { @@ -163,132 +163,132 @@ }, "fgbio/callmolecularconsensusreads": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "fgbio/fastqtobam": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "fgbio/groupreadsbyumi": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "freebayes": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "d04951ee68e3e8b875ebf5ddb7ba6e05233624c1", "installed_by": ["modules"] }, "gatk4/applybqsr": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "gatk4/applyvqsr": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "gatk4/baserecalibrator": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "gatk4/calculatecontamination": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "gatk4/cnnscorevariants": { "branch": "master", - "git_sha": "1999eff2c530b2b185a25cc42117a1686f09b685", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "gatk4/createsequencedictionary": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "gatk4/estimatelibrarycomplexity": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "gatk4/filtermutectcalls": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "gatk4/filtervarianttranches": { "branch": "master", - "git_sha": "81880787133db07d9b4c1febd152c090eb8325dc", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "gatk4/gatherbqsrreports": { "branch": "master", - "git_sha": "81880787133db07d9b4c1febd152c090eb8325dc", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "gatk4/gatherpileupsummaries": { "branch": "master", - "git_sha": "81880787133db07d9b4c1febd152c090eb8325dc", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "gatk4/genomicsdbimport": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "gatk4/genotypegvcfs": { "branch": "master", - "git_sha": "81880787133db07d9b4c1febd152c090eb8325dc", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "gatk4/getpileupsummaries": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "gatk4/haplotypecaller": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "gatk4/intervallisttobed": { "branch": "master", - "git_sha": "20fe8646005253d57a7a8db42abf69ea0966dc75", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "gatk4/learnreadorientationmodel": { "branch": "master", - "git_sha": "81880787133db07d9b4c1febd152c090eb8325dc", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "gatk4/markduplicates": { "branch": "master", - "git_sha": "1ec937ab3edc307bc0d79a2200d784e9f0868359", + "git_sha": "bac25953a52ada60e04b3b1f28afd15fef691add", "installed_by": ["modules"] }, "gatk4/mergemutectstats": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "gatk4/mergevcfs": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "gatk4/mutect2": { "branch": "master", - "git_sha": "a97cba262e9367734e435dc07d2e3b7d6121ef3e", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "gatk4/variantrecalibrator": { "branch": "master", - "git_sha": "81880787133db07d9b4c1febd152c090eb8325dc", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "gatk4spark/applybqsr": { @@ -298,167 +298,167 @@ }, "gatk4spark/baserecalibrator": { "branch": "master", - "git_sha": "fa55ebb81654fe1736975fa28d1af5a079bf6a08", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "gatk4spark/markduplicates": { "branch": "master", - "git_sha": "fa55ebb81654fe1736975fa28d1af5a079bf6a08", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "gawk": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "goleft/indexcov": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "lofreq/callparallel": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "manta/germline": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "manta/somatic": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "manta/tumoronly": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "mosdepth": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "msisensorpro/msisomatic": { "branch": "master", - "git_sha": "81880787133db07d9b4c1febd152c090eb8325dc", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "msisensorpro/scan": { "branch": "master", - "git_sha": "81880787133db07d9b4c1febd152c090eb8325dc", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "multiqc": { "branch": "master", - "git_sha": "c9a31c472ef2d86802eb44f27322955849859361", + "git_sha": "a4488d3d09244f29fb4606ba4eef85d59dcc6ad8", "installed_by": ["modules"] }, "muse/call": { "branch": "master", - "git_sha": "89e14c5855b00b3c2501ad96de7440734909bf39", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "muse/sump": { "branch": "master", - "git_sha": "89e14c5855b00b3c2501ad96de7440734909bf39", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "ngscheckmate/ncm": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["bam_ngscheckmate"] }, "parabricks/fq2bam": { "branch": "master", - "git_sha": "083667c2f0d3b57aa373ffa8891d04b3c839b0b4", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "samblaster": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "samtools/bam2fq": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "samtools/collatefastq": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "samtools/convert": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "samtools/faidx": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "samtools/index": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "samtools/merge": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "samtools/mpileup": { "branch": "master", - "git_sha": "7e20d971c70d78dbd9f610698267f37b7fb3d38a", + "git_sha": "0fcfdcd387f2ef4a880f3ec87162fa64d374cae3", "installed_by": ["modules"] }, "samtools/stats": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "samtools/view": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "sentieon/applyvarcal": { "branch": "master", - "git_sha": "6b36f8e5427ec38911565398de57656ca3a2606a", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "sentieon/bwamem": { "branch": "master", - "git_sha": "6b36f8e5427ec38911565398de57656ca3a2606a", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "sentieon/dedup": { "branch": "master", - "git_sha": "6b36f8e5427ec38911565398de57656ca3a2606a", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "sentieon/dnamodelapply": { "branch": "master", - "git_sha": "6b36f8e5427ec38911565398de57656ca3a2606a", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "sentieon/dnascope": { "branch": "master", - "git_sha": "6b36f8e5427ec38911565398de57656ca3a2606a", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "sentieon/gvcftyper": { "branch": "master", - "git_sha": "6b36f8e5427ec38911565398de57656ca3a2606a", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "sentieon/haplotyper": { "branch": "master", - "git_sha": "6b36f8e5427ec38911565398de57656ca3a2606a", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "sentieon/tnscope": { @@ -468,67 +468,67 @@ }, "sentieon/varcal": { "branch": "master", - "git_sha": "6b36f8e5427ec38911565398de57656ca3a2606a", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "snpeff/download": { "branch": "master", - "git_sha": "81880787133db07d9b4c1febd152c090eb8325dc", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "snpeff/snpeff": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules", "vcf_annotate_snpeff"] }, "spring/decompress": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "strelka/germline": { "branch": "master", - "git_sha": "81880787133db07d9b4c1febd152c090eb8325dc", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "strelka/somatic": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "svdb/merge": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "tabix/bgziptabix": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "f2cfcf9d3f6a2d123e6c44aefa788aa232204a7a", "installed_by": ["modules", "vcf_annotate_snpeff"] }, "tabix/tabix": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "f2cfcf9d3f6a2d123e6c44aefa788aa232204a7a", "installed_by": ["modules", "vcf_annotate_ensemblvep"] }, "tiddit/sv": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "untar": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "unzip": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "vcftools": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] } } @@ -537,32 +537,32 @@ "nf-core": { "bam_ngscheckmate": { "branch": "master", - "git_sha": "c9c3ef86c1892413b3c86fb38c4e39fd7288512f", + "git_sha": "a4b6cb0d25dcdc22425d5a938d3341382a9cfe86", "installed_by": ["subworkflows"] }, "utils_nextflow_pipeline": { "branch": "master", - "git_sha": "c2b22d85f30a706a3073387f30380704fcae013b", + "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", "installed_by": ["subworkflows"] }, "utils_nfcore_pipeline": { "branch": "master", - "git_sha": "51ae5406a030d4da1e49e4dab49756844fdd6c7a", + "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", "installed_by": ["subworkflows"] }, "utils_nfschema_plugin": { "branch": "master", - "git_sha": "2fd2cd6d0e7b273747f32e465fdc6bcc3ae0814e", + "git_sha": "dcd088f483cede0c3df4034d405126f05a764cc7", "installed_by": ["subworkflows"] }, "vcf_annotate_ensemblvep": { "branch": "master", - "git_sha": "0e9cb409c32d3ec4f0d3804588e4778971c09b7e", + "git_sha": "a96f42708b631dfc736f48980dbf2be418dd784b", "installed_by": ["subworkflows"] }, "vcf_annotate_snpeff": { "branch": "master", - "git_sha": "cfd937a668919d948f6fcbf4218e79de50c2f36f", + "git_sha": "88200cde7c1a7e580283e9d010de5d81f2c23550", "installed_by": ["subworkflows"] } } diff --git a/modules/nf-core/ascat/meta.yml b/modules/nf-core/ascat/meta.yml index db7c92926..d69674ec0 100644 --- a/modules/nf-core/ascat/meta.yml +++ b/modules/nf-core/ascat/meta.yml @@ -30,47 +30,57 @@ input: modifying chromosome notation in bam files please follow https://josephcckuo.wordpress.com/2016/11/17/modify-chromosome-notation-in-bam-file/. pattern: "*.{bam,cram}" + ontologies: [] - index_normal: type: file description: index for normal_bam/cram pattern: "*.{bai,crai}" + ontologies: [] - input_tumor: type: file description: BAM/CRAM file, must adhere to chr1, chr2, ...chrX notation pattern: "*.{bam,cram}" + ontologies: [] - index_tumor: type: file description: index for tumor_bam/cram pattern: "*.{bai,crai}" - - - allele_files: - type: file - description: allele files for ASCAT WGS. Can be downloaded here https://github.com/VanLoo-lab/ascat/tree/master/ReferenceFiles/WGS - - - loci_files: - type: file - description: loci files for ASCAT WGS. Loci files without chromosome notation - can be downloaded here https://github.com/VanLoo-lab/ascat/tree/master/ReferenceFiles/WGS - Make sure the chromosome notation matches the bam/cram input files. To add - the chromosome notation to loci files (hg19/hg38) if necessary, you can run - this command `if [[ $(samtools view | head -n1 | cut -f3)\" - == *\"chr\"* ]]; then for i in {1..22} X; do sed -i 's/^/chr/' G1000_loci_hg19_chr_${i}.txt; - done; fi` - - - bed_file: - type: file - description: Bed file for ASCAT WES (optional, but recommended for WES) - - - fasta: - type: file - description: Reference fasta file (optional) - - - gc_file: - type: file - description: GC correction file (optional) - Used to do logR correction of the - tumour sample(s) with genomic GC content - - - rt_file: - type: file - description: replication timing correction file (optional, provide only in combination - with gc_file) + ontologies: [] + - allele_files: + type: file + description: allele files for ASCAT WGS. Can be downloaded here https://github.com/VanLoo-lab/ascat/tree/master/ReferenceFiles/WGS + ontologies: [] + - loci_files: + type: file + description: loci files for ASCAT WGS. Loci files without chromosome notation + can be downloaded here https://github.com/VanLoo-lab/ascat/tree/master/ReferenceFiles/WGS + Make sure the chromosome notation matches the bam/cram input files. To add the + chromosome notation to loci files (hg19/hg38) if necessary, you can run this + command `if [[ $(samtools view | head -n1 | cut -f3)\" == + *\"chr\"* ]]; then for i in {1..22} X; do sed -i 's/^/chr/' G1000_loci_hg19_chr_${i}.txt; + done; fi` + ontologies: [] + - bed_file: + type: file + description: Bed file for ASCAT WES (optional, but recommended for WES) + ontologies: [] + - fasta: + type: file + description: Reference fasta file (optional) + ontologies: [] + - gc_file: + type: file + description: GC correction file (optional) - Used to do logR correction of the + tumour sample(s) with genomic GC content + ontologies: [] + - rt_file: + type: file + description: replication timing correction file (optional, provide only in combination + with gc_file) + ontologies: [] output: - - allelefreqs: - - meta: + allelefreqs: + - - meta: type: map description: | Groovy Map containing sample information @@ -79,8 +89,9 @@ output: type: file description: Files containing allee frequencies per chromosome pattern: "*{alleleFrequencies_chr*.txt}" - - bafs: - - meta: + ontologies: [] + bafs: + - - meta: type: map description: | Groovy Map containing sample information @@ -88,8 +99,9 @@ output: - "*BAF.txt": type: file description: BAF file - - cnvs: - - meta: + ontologies: [] + cnvs: + - - meta: type: map description: | Groovy Map containing sample information @@ -97,8 +109,9 @@ output: - "*cnvs.txt": type: file description: CNV file - - logrs: - - meta: + ontologies: [] + logrs: + - - meta: type: map description: | Groovy Map containing sample information @@ -106,8 +119,9 @@ output: - "*LogR.txt": type: file description: LogR file - - metrics: - - meta: + ontologies: [] + metrics: + - - meta: type: map description: | Groovy Map containing sample information @@ -116,8 +130,9 @@ output: type: file description: File containing quality metrics pattern: "*.{metrics.txt}" - - png: - - meta: + ontologies: [] + png: + - - meta: type: map description: | Groovy Map containing sample information @@ -126,8 +141,9 @@ output: type: file description: ASCAT plots pattern: "*.{png}" - - purityploidy: - - meta: + ontologies: [] + purityploidy: + - - meta: type: map description: | Groovy Map containing sample information @@ -136,8 +152,9 @@ output: type: file description: File with purity and ploidy data pattern: "*.{purityploidy.txt}" - - segments: - - meta: + ontologies: [] + segments: + - - meta: type: map description: | Groovy Map containing sample information @@ -146,11 +163,14 @@ output: type: file description: File with segments data pattern: "*.{segments.txt}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@aasNGC" - "@lassefolkersen" diff --git a/modules/nf-core/bcftools/concat/meta.yml b/modules/nf-core/bcftools/concat/meta.yml index 3d12673a2..5e14b5a38 100644 --- a/modules/nf-core/bcftools/concat/meta.yml +++ b/modules/nf-core/bcftools/concat/meta.yml @@ -31,8 +31,8 @@ input: List containing 2 or more index files (optional) e.g. [ 'file1.tbi', 'file2.tbi' ] output: - - vcf: - - meta: + vcf: + - - meta: type: map description: | Groovy Map containing sample information @@ -43,8 +43,8 @@ output: Groovy Map containing sample information e.g. [ id:'test', single_end:false ] pattern: "*.{vcf,vcf.gz,bcf,bcf.gz}" - - tbi: - - meta: + tbi: + - - meta: type: map description: | Groovy Map containing sample information @@ -55,8 +55,8 @@ output: Groovy Map containing sample information e.g. [ id:'test', single_end:false ] pattern: "*.tbi" - - csi: - - meta: + csi: + - - meta: type: map description: | Groovy Map containing sample information @@ -67,11 +67,13 @@ output: Groovy Map containing sample information e.g. [ id:'test', single_end:false ] pattern: "*.csi" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@abhi18av" - "@nvnieuwk" diff --git a/modules/nf-core/bcftools/mpileup/meta.yml b/modules/nf-core/bcftools/mpileup/meta.yml index febcb33f6..3a70b1ce1 100644 --- a/modules/nf-core/bcftools/mpileup/meta.yml +++ b/modules/nf-core/bcftools/mpileup/meta.yml @@ -23,10 +23,12 @@ input: type: file description: Input BAM file pattern: "*.{bam}" + ontologies: [] - intervals: type: file description: Input intervals file. A file (commonly '.bed') containing regions to subset + ontologies: [] - - meta2: type: map description: | @@ -36,12 +38,13 @@ input: type: file description: FASTA reference file pattern: "*.{fasta,fa}" - - - save_mpileup: - type: boolean - description: Save mpileup file generated by bcftools mpileup + ontologies: [] + - save_mpileup: + type: boolean + description: Save mpileup file generated by bcftools mpileup output: - - vcf: - - meta: + vcf: + - - meta: type: map description: | Groovy Map containing sample information @@ -50,8 +53,9 @@ output: type: file description: VCF gzipped output file pattern: "*.{vcf.gz}" - - tbi: - - meta: + ontologies: [] + tbi: + - - meta: type: map description: | Groovy Map containing sample information @@ -60,8 +64,9 @@ output: type: file description: tabix index file pattern: "*.{vcf.gz.tbi}" - - stats: - - meta: + ontologies: [] + stats: + - - meta: type: map description: | Groovy Map containing sample information @@ -70,8 +75,9 @@ output: type: file description: Text output file containing stats pattern: "*{stats.txt}" - - mpileup: - - meta: + ontologies: [] + mpileup: + - - meta: type: map description: | Groovy Map containing sample information @@ -80,11 +86,14 @@ output: type: file description: mpileup gzipped output for all positions pattern: "{*.mpileup.gz}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@joseespinosa" - "@drpatelh" diff --git a/modules/nf-core/bcftools/norm/meta.yml b/modules/nf-core/bcftools/norm/meta.yml index b6edeb4aa..bda91258c 100644 --- a/modules/nf-core/bcftools/norm/meta.yml +++ b/modules/nf-core/bcftools/norm/meta.yml @@ -26,11 +26,13 @@ input: The vcf file to be normalized e.g. 'file1.vcf' pattern: "*.{vcf,vcf.gz}" + ontologies: [] - tbi: type: file description: | An optional index of the VCF file (for when the VCF is compressed) pattern: "*.vcf.gz.tbi" + ontologies: [] - - meta2: type: map description: | @@ -40,9 +42,10 @@ input: type: file description: FASTA reference file pattern: "*.{fasta,fa}" + ontologies: [] output: - - vcf: - - meta: + vcf: + - - meta: type: map description: | Groovy Map containing sample information @@ -52,8 +55,9 @@ output: description: One of uncompressed VCF (.vcf), compressed VCF (.vcf.gz), compressed BCF (.bcf.gz) or uncompressed BCF (.bcf) normalized output file pattern: "*.{vcf,vcf.gz,bcf,bcf.gz}" - - tbi: - - meta: + ontologies: [] + tbi: + - - meta: type: map description: | Groovy Map containing sample information @@ -62,8 +66,9 @@ output: type: file description: Alternative VCF file index pattern: "*.tbi" - - csi: - - meta: + ontologies: [] + csi: + - - meta: type: map description: | Groovy Map containing sample information @@ -72,11 +77,14 @@ output: type: file description: Default VCF file index pattern: "*.csi" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@abhi18av" - "@ramprasadn" diff --git a/modules/nf-core/bcftools/sort/meta.yml b/modules/nf-core/bcftools/sort/meta.yml index f7a6eff17..c15487c71 100644 --- a/modules/nf-core/bcftools/sort/meta.yml +++ b/modules/nf-core/bcftools/sort/meta.yml @@ -23,9 +23,10 @@ input: type: file description: The VCF/BCF file to be sorted pattern: "*.{vcf.gz,vcf,bcf}" + ontologies: [] output: - - vcf: - - meta: + vcf: + - - meta: type: map description: | Groovy Map containing sample information @@ -34,8 +35,9 @@ output: type: file description: Sorted VCF file pattern: "*.{vcf.gz}" - - tbi: - - meta: + ontologies: [] + tbi: + - - meta: type: map description: | Groovy Map containing sample information @@ -44,8 +46,9 @@ output: type: file description: Alternative VCF file index pattern: "*.tbi" - - csi: - - meta: + ontologies: [] + csi: + - - meta: type: map description: | Groovy Map containing sample information @@ -54,11 +57,14 @@ output: type: file description: Default VCF file index pattern: "*.csi" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@Gwennid" maintainers: diff --git a/modules/nf-core/bcftools/stats/meta.yml b/modules/nf-core/bcftools/stats/meta.yml index 655a61c5f..2cd634f4e 100644 --- a/modules/nf-core/bcftools/stats/meta.yml +++ b/modules/nf-core/bcftools/stats/meta.yml @@ -24,11 +24,13 @@ input: type: file description: VCF input file pattern: "*.{vcf}" + ontologies: [] - tbi: type: file description: | The tab index for the VCF file to be inspected. Optional: only required when parameter regions is chosen. pattern: "*.tbi" + ontologies: [] - - meta2: type: map description: | @@ -38,6 +40,7 @@ input: type: file description: | Optionally, restrict the operation to regions listed in this file. (VCF, BED or tab-delimited) + ontologies: [] - - meta3: type: map description: | @@ -47,6 +50,7 @@ input: type: file description: | Optionally, restrict the operation to regions listed in this file (doesn't rely upon tbi index files) + ontologies: [] - - meta4: type: map description: | @@ -57,6 +61,7 @@ input: description: | Optional, file of sample names to be included or excluded. e.g. 'file.tsv' + ontologies: [] - - meta5: type: map description: | @@ -67,6 +72,7 @@ input: description: | Tab-delimited file with exons for indel frameshifts (chr,beg,end; 1-based, inclusive, optionally bgzip compressed). e.g. 'exons.tsv.gz' + ontologies: [] - - meta6: type: map description: | @@ -77,9 +83,10 @@ input: description: | Faidx indexed reference sequence file to determine INDEL context. e.g. 'reference.fa' + ontologies: [] output: - - stats: - - meta: + stats: + - - meta: type: map description: | Groovy Map containing sample information @@ -88,11 +95,14 @@ output: type: file description: Text output file containing stats pattern: "*_{stats.txt}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@joseespinosa" - "@drpatelh" diff --git a/modules/nf-core/bwa/index/meta.yml b/modules/nf-core/bwa/index/meta.yml index 77dbc7af0..1781586fa 100644 --- a/modules/nf-core/bwa/index/meta.yml +++ b/modules/nf-core/bwa/index/meta.yml @@ -28,8 +28,8 @@ input: - edam: "http://edamontology.org/data_2044" # Sequence - edam: "http://edamontology.org/format_1929" # FASTA output: - - index: - - meta: + index: + - - meta: type: map description: | Groovy Map containing reference information. @@ -42,11 +42,13 @@ output: pattern: "*.{amb,ann,bwt,pac,sa}" ontologies: - edam: "http://edamontology.org/data_3210" # Genome index - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@drpatelh" - "@maxulysse" diff --git a/modules/nf-core/bwa/mem/meta.yml b/modules/nf-core/bwa/mem/meta.yml index b6f696c03..e1265ab79 100644 --- a/modules/nf-core/bwa/mem/meta.yml +++ b/modules/nf-core/bwa/mem/meta.yml @@ -55,52 +55,57 @@ input: ontologies: - edam: "http://edamontology.org/data_2044" # Sequence - edam: "http://edamontology.org/format_1929" # FASTA - - - sort_bam: - type: boolean - description: use samtools sort (true) or samtools view (false) - pattern: "true or false" + - sort_bam: + type: boolean + description: use samtools sort (true) or samtools view (false) + pattern: "true or false" output: - - bam: - - meta: - type: file - description: Output BAM file containing read alignments + bam: + - - meta: + type: map + description: Groovy Map containing sample information - "*.bam": type: file description: Output BAM file containing read alignments pattern: "*.{bam}" ontologies: - edam: "http://edamontology.org/format_2572" # BAM - - cram: - - meta: + cram: + - - meta: type: file - description: Output CRAM file containing read alignments + description: Output BAM file containing read alignments + ontologies: [] - "*.cram": type: file description: Output CRAM file containing read alignments pattern: "*.{cram}" ontologies: - edam: "http://edamontology.org/format_3462" # CRAM - - csi: - - meta: - type: file - description: Optional index file for BAM file + csi: + - - meta: + type: map + description: Groovy Map containing sample information - "*.csi": type: file description: Optional index file for BAM file pattern: "*.{csi}" - - crai: - - meta: - type: file - description: Optional index file for CRAM file + ontologies: [] + crai: + - - meta: + type: map + description: Groovy Map containing sample information - "*.crai": type: file description: Optional index file for CRAM file pattern: "*.{crai}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@drpatelh" - "@jeremy1805" diff --git a/modules/nf-core/bwamem2/index/main.nf b/modules/nf-core/bwamem2/index/main.nf index 09826e669..240343b55 100644 --- a/modules/nf-core/bwamem2/index/main.nf +++ b/modules/nf-core/bwamem2/index/main.nf @@ -27,7 +27,8 @@ process BWAMEM2_INDEX { bwa-mem2 \\ index \\ $args \\ - $fasta -p bwamem2/${prefix} + -p bwamem2/${prefix} \\ + $fasta cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/bwamem2/index/meta.yml b/modules/nf-core/bwamem2/index/meta.yml index 1437b20f1..b2aa45fb6 100644 --- a/modules/nf-core/bwamem2/index/meta.yml +++ b/modules/nf-core/bwamem2/index/meta.yml @@ -27,8 +27,8 @@ input: - edam: "http://edamontology.org/data_2044" # Sequence - edam: "http://edamontology.org/format_1929" # FASTA output: - - index: - - meta: + index: + - - meta: type: map description: | Groovy Map containing sample information @@ -39,11 +39,13 @@ output: pattern: "*.{0123,amb,ann,bwt.2bit.64,pac}" ontologies: - edam: "http://edamontology.org/data_3210" # Genome index - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@maxulysse" maintainers: diff --git a/modules/nf-core/bwamem2/mem/meta.yml b/modules/nf-core/bwamem2/mem/meta.yml index d17e0dbd3..6c7d17284 100644 --- a/modules/nf-core/bwamem2/mem/meta.yml +++ b/modules/nf-core/bwamem2/mem/meta.yml @@ -55,13 +55,13 @@ input: ontologies: - edam: "http://edamontology.org/data_2044" # Sequence - edam: "http://edamontology.org/format_1929" # FASTA - - - sort_bam: - type: boolean - description: use samtools sort (true) or samtools view (false) - pattern: "true or false" + - sort_bam: + type: boolean + description: use samtools sort (true) or samtools view (false) + pattern: "true or false" output: - - sam: - - meta: + sam: + - - meta: type: map description: | Groovy Map containing sample information @@ -72,8 +72,8 @@ output: pattern: "*.{sam}" ontologies: - edam: "http://edamontology.org/format_2573" # SAM - - bam: - - meta: + bam: + - - meta: type: map description: | Groovy Map containing sample information @@ -84,8 +84,8 @@ output: pattern: "*.{bam}" ontologies: - edam: "http://edamontology.org/format_2572" # BAM - - cram: - - meta: + cram: + - - meta: type: map description: | Groovy Map containing sample information @@ -96,8 +96,8 @@ output: pattern: "*.{cram}" ontologies: - edam: "http://edamontology.org/format_3462" # CRAM - - crai: - - meta: + crai: + - - meta: type: map description: | Groovy Map containing sample information @@ -106,8 +106,9 @@ output: type: file description: Index file for CRAM file pattern: "*.{crai}" - - csi: - - meta: + ontologies: [] + csi: + - - meta: type: map description: | Groovy Map containing sample information @@ -116,11 +117,14 @@ output: type: file description: Index file for BAM file pattern: "*.{csi}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@maxulysse" - "@matthdsm" diff --git a/modules/nf-core/cat/cat/meta.yml b/modules/nf-core/cat/cat/meta.yml index 81778a067..2a9284d7f 100644 --- a/modules/nf-core/cat/cat/meta.yml +++ b/modules/nf-core/cat/cat/meta.yml @@ -20,21 +20,24 @@ input: type: file description: List of compressed / uncompressed files pattern: "*" + ontologies: [] output: - - file_out: - - meta: - type: file - description: Concatenated file. Will be gzipped if file_out ends with ".gz" - pattern: "${file_out}" + file_out: + - - meta: + type: map + description: Groovy Map containing sample information - ${prefix}: type: file description: Concatenated file. Will be gzipped if file_out ends with ".gz" pattern: "${file_out}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@erikrikarddaniel" - "@FriederikeHanssen" diff --git a/modules/nf-core/cat/fastq/meta.yml b/modules/nf-core/cat/fastq/meta.yml index 91ff2fb5f..40d2f627c 100644 --- a/modules/nf-core/cat/fastq/meta.yml +++ b/modules/nf-core/cat/fastq/meta.yml @@ -21,9 +21,10 @@ input: type: file description: | List of input FastQ files to be concatenated. + ontologies: [] output: - - reads: - - meta: + reads: + - - meta: type: map description: | Groovy Map containing sample information @@ -32,11 +33,14 @@ output: type: file description: Merged fastq file pattern: "*.{merged.fastq.gz}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@joseespinosa" - "@drpatelh" diff --git a/modules/nf-core/cnvkit/antitarget/environment.yml b/modules/nf-core/cnvkit/antitarget/environment.yml index 9b3082be0..9d97ecfab 100644 --- a/modules/nf-core/cnvkit/antitarget/environment.yml +++ b/modules/nf-core/cnvkit/antitarget/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::cnvkit=0.9.11 + - bioconda::cnvkit=0.9.12 diff --git a/modules/nf-core/cnvkit/antitarget/main.nf b/modules/nf-core/cnvkit/antitarget/main.nf index 0c1f6674a..37da41a5a 100644 --- a/modules/nf-core/cnvkit/antitarget/main.nf +++ b/modules/nf-core/cnvkit/antitarget/main.nf @@ -4,8 +4,8 @@ process CNVKIT_ANTITARGET { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/cnvkit:0.9.11--pyhdfd78af_0': - 'biocontainers/cnvkit:0.9.11--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/cnvkit:0.9.12--pyhdfd78af_0': + 'biocontainers/cnvkit:0.9.12--pyhdfd78af_0' }" input: tuple val(meta), path(targets) @@ -18,19 +18,29 @@ process CNVKIT_ANTITARGET { task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' + def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" """ cnvkit.py \\ antitarget \\ - $targets \\ + ${targets} \\ --output ${prefix}.antitarget.bed \\ - $args + ${args} cat <<-END_VERSIONS > versions.yml "${task.process}": cnvkit: \$(cnvkit.py version | sed -e "s/cnvkit v//g") END_VERSIONS """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.antitarget.bed + cat <<-END_VERSIONS > versions.yml + "${task.process}": + cnvkit: \$(cnvkit.py version | sed -e "s/cnvkit v//g") + END_VERSIONS + """ } diff --git a/modules/nf-core/cnvkit/antitarget/meta.yml b/modules/nf-core/cnvkit/antitarget/meta.yml index 13f12a10c..71d7931ee 100644 --- a/modules/nf-core/cnvkit/antitarget/meta.yml +++ b/modules/nf-core/cnvkit/antitarget/meta.yml @@ -26,9 +26,10 @@ input: type: file description: File containing genomic regions pattern: "*.{bed}" + ontologies: [] output: - - bed: - - meta: + bed: + - - meta: type: map description: | Groovy Map containing sample information @@ -37,11 +38,14 @@ output: type: file description: File containing off-target regions pattern: "*.{bed}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@adamrtalbot" - "@priesgo" diff --git a/modules/nf-core/cnvkit/batch/meta.yml b/modules/nf-core/cnvkit/batch/meta.yml index 30f7a1a29..d4ee78e96 100644 --- a/modules/nf-core/cnvkit/batch/meta.yml +++ b/modules/nf-core/cnvkit/batch/meta.yml @@ -23,10 +23,12 @@ input: type: file description: | Input tumour sample bam file (or cram) + ontologies: [] - normal: type: file description: | Input normal sample bam file (or cram) + ontologies: [] - - meta2: type: map description: | @@ -36,6 +38,7 @@ input: type: file description: | Input reference genome fasta file (only needed for cram_input and/or when normal_samples are provided) + ontologies: [] - - meta3: type: map description: | @@ -45,6 +48,7 @@ input: type: file description: | Input reference genome fasta index (optional, but recommended for cram_input) + ontologies: [] - - meta4: type: map description: | @@ -54,6 +58,7 @@ input: type: file description: | Input target bed file + ontologies: [] - - meta5: type: map description: | @@ -63,13 +68,15 @@ input: type: file description: | Input reference cnn-file (only for germline and tumor-only running) - - - panel_of_normals: - type: file - description: | - Input panel of normals file + ontologies: [] + - panel_of_normals: + type: file + description: | + Input panel of normals file + ontologies: [] output: - - bed: - - meta: + bed: + - - meta: type: map description: | Groovy Map containing sample information @@ -78,8 +85,9 @@ output: type: file description: File containing genomic regions pattern: "*.{bed}" - - cnn: - - meta: + ontologies: [] + cnn: + - - meta: type: map description: | Groovy Map containing sample information @@ -88,8 +96,9 @@ output: type: file description: File containing coverage information pattern: "*.{cnn}" - - cnr: - - meta: + ontologies: [] + cnr: + - - meta: type: map description: | Groovy Map containing sample information @@ -98,8 +107,9 @@ output: type: file description: File containing copy number ratio information pattern: "*.{cnr}" - - cns: - - meta: + ontologies: [] + cns: + - - meta: type: map description: | Groovy Map containing sample information @@ -108,8 +118,9 @@ output: type: file description: File containing copy number segment information pattern: "*.{cns}" - - pdf: - - meta: + ontologies: [] + pdf: + - - meta: type: map description: | Groovy Map containing sample information @@ -118,8 +129,9 @@ output: type: file description: File with plot of copy numbers or segments on chromosomes pattern: "*.{pdf}" - - png: - - meta: + ontologies: [] + png: + - - meta: type: map description: | Groovy Map containing sample information @@ -128,11 +140,14 @@ output: type: file description: File with plot of bin-level log2 coverages and segmentation calls pattern: "*.{png}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@adamrtalbot" - "@drpatelh" diff --git a/modules/nf-core/cnvkit/call/environment.yml b/modules/nf-core/cnvkit/call/environment.yml index 690d8fd7f..9d97ecfab 100644 --- a/modules/nf-core/cnvkit/call/environment.yml +++ b/modules/nf-core/cnvkit/call/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::cnvkit=0.9.10 + - bioconda::cnvkit=0.9.12 diff --git a/modules/nf-core/cnvkit/call/main.nf b/modules/nf-core/cnvkit/call/main.nf index 06d51e857..a27a3ffa1 100644 --- a/modules/nf-core/cnvkit/call/main.nf +++ b/modules/nf-core/cnvkit/call/main.nf @@ -4,8 +4,8 @@ process CNVKIT_CALL { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/cnvkit:0.9.10--pyhdfd78af_0': - 'biocontainers/cnvkit:0.9.10--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/cnvkit:0.9.12--pyhdfd78af_0': + 'biocontainers/cnvkit:0.9.12--pyhdfd78af_0' }" input: tuple val(meta) , path(cns), path(vcf) diff --git a/modules/nf-core/cnvkit/call/meta.yml b/modules/nf-core/cnvkit/call/meta.yml index b3b4a4a78..638f3ef1a 100644 --- a/modules/nf-core/cnvkit/call/meta.yml +++ b/modules/nf-core/cnvkit/call/meta.yml @@ -24,13 +24,15 @@ input: type: file description: CNVKit CNS file. pattern: "*.cns" + ontologies: [] - vcf: type: file description: Germline VCF file for BAF. pattern: "*.vcf{,.gz}" + ontologies: [] output: - - cns: - - meta: + cns: + - - meta: type: map description: | Groovy Map containing sample information @@ -39,11 +41,14 @@ output: type: file description: CNS file. pattern: "*.cns" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@adamrtalbot" - "@priesgo" diff --git a/modules/nf-core/cnvkit/export/environment.yml b/modules/nf-core/cnvkit/export/environment.yml index 690d8fd7f..9d97ecfab 100644 --- a/modules/nf-core/cnvkit/export/environment.yml +++ b/modules/nf-core/cnvkit/export/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::cnvkit=0.9.10 + - bioconda::cnvkit=0.9.12 diff --git a/modules/nf-core/cnvkit/export/main.nf b/modules/nf-core/cnvkit/export/main.nf index d1d7d3415..e8c303b28 100644 --- a/modules/nf-core/cnvkit/export/main.nf +++ b/modules/nf-core/cnvkit/export/main.nf @@ -4,8 +4,8 @@ process CNVKIT_EXPORT { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/cnvkit:0.9.10--pyhdfd78af_0': - 'biocontainers/cnvkit:0.9.10--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/cnvkit:0.9.12--pyhdfd78af_0': + 'biocontainers/cnvkit:0.9.12--pyhdfd78af_0' }" input: tuple val(meta), path(cns) diff --git a/modules/nf-core/cnvkit/export/meta.yml b/modules/nf-core/cnvkit/export/meta.yml index d37e41f98..3ea2c62c8 100644 --- a/modules/nf-core/cnvkit/export/meta.yml +++ b/modules/nf-core/cnvkit/export/meta.yml @@ -26,9 +26,10 @@ input: type: file description: CNVKit CNS file. pattern: "*.cns" + ontologies: [] output: - - output: - - meta: + output: + - - meta: type: map description: | Groovy Map containing sample information @@ -36,11 +37,14 @@ output: - ${prefix}.${suffix}: type: file description: Output file - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@adamrtalbot" - "@priesgo" diff --git a/modules/nf-core/cnvkit/genemetrics/environment.yml b/modules/nf-core/cnvkit/genemetrics/environment.yml index 690d8fd7f..9d97ecfab 100644 --- a/modules/nf-core/cnvkit/genemetrics/environment.yml +++ b/modules/nf-core/cnvkit/genemetrics/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::cnvkit=0.9.10 + - bioconda::cnvkit=0.9.12 diff --git a/modules/nf-core/cnvkit/genemetrics/main.nf b/modules/nf-core/cnvkit/genemetrics/main.nf index 825b12bda..aafe28598 100644 --- a/modules/nf-core/cnvkit/genemetrics/main.nf +++ b/modules/nf-core/cnvkit/genemetrics/main.nf @@ -4,33 +4,43 @@ process CNVKIT_GENEMETRICS { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/cnvkit:0.9.10--pyhdfd78af_0': - 'biocontainers/cnvkit:0.9.10--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/cnvkit:0.9.12--pyhdfd78af_0': + 'biocontainers/cnvkit:0.9.12--pyhdfd78af_0' }" input: tuple val(meta), path(cnr), path(cns) output: tuple val(meta), path("*.tsv"), emit: tsv - //tuple val(meta), path("*.cnn"), emit: cnn path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" def segments = cns ? "--segment ${cns}" : "" """ cnvkit.py \\ genemetrics \\ - $cnr \\ - $segments \\ + ${cnr} \\ + ${segments} \\ --output ${prefix}.tsv \\ - $args + ${args} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + cnvkit: \$(cnvkit.py version | sed -e "s/cnvkit v//g") + END_VERSIONS + """ + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + + """ + touch ${prefix}.tsv cat <<-END_VERSIONS > versions.yml "${task.process}": cnvkit: \$(cnvkit.py version | sed -e "s/cnvkit v//g") diff --git a/modules/nf-core/cnvkit/genemetrics/meta.yml b/modules/nf-core/cnvkit/genemetrics/meta.yml index 6b110accc..8fc31e16a 100644 --- a/modules/nf-core/cnvkit/genemetrics/meta.yml +++ b/modules/nf-core/cnvkit/genemetrics/meta.yml @@ -23,13 +23,15 @@ input: type: file description: CNR file pattern: "*.cnr" + ontologies: [] - cns: type: file description: CNS file [Optional] pattern: "*.cns" + ontologies: [] output: - - tsv: - - meta: + tsv: + - - meta: type: map description: | Groovy Map containing sample information @@ -38,21 +40,15 @@ output: type: file description: TSV file pattern: "*.tsv" - - cnn: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - "*.cnn": - type: file - description: CNN file - pattern: "*.cnn" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3475 # TSV + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@adamrtalbot" - "@marrip" diff --git a/modules/nf-core/cnvkit/reference/environment.yml b/modules/nf-core/cnvkit/reference/environment.yml index 9b3082be0..9d97ecfab 100644 --- a/modules/nf-core/cnvkit/reference/environment.yml +++ b/modules/nf-core/cnvkit/reference/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::cnvkit=0.9.11 + - bioconda::cnvkit=0.9.12 diff --git a/modules/nf-core/cnvkit/reference/main.nf b/modules/nf-core/cnvkit/reference/main.nf index 857996f11..2138b5a24 100644 --- a/modules/nf-core/cnvkit/reference/main.nf +++ b/modules/nf-core/cnvkit/reference/main.nf @@ -4,8 +4,8 @@ process CNVKIT_REFERENCE { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/cnvkit:0.9.11--pyhdfd78af_0': - 'biocontainers/cnvkit:0.9.11--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/cnvkit:0.9.12--pyhdfd78af_0': + 'biocontainers/cnvkit:0.9.12--pyhdfd78af_0' }" input: path fasta @@ -20,21 +20,32 @@ process CNVKIT_REFERENCE { task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' + def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: targets.BaseName """ cnvkit.py \\ reference \\ - --fasta $fasta \\ - --targets $targets \\ - --antitargets $antitargets \\ + --fasta ${fasta} \\ + --targets ${targets} \\ + --antitargets ${antitargets} \\ --output ${prefix}.reference.cnn \\ - $args + ${args} cat <<-END_VERSIONS > versions.yml "${task.process}": cnvkit: \$(cnvkit.py version | sed -e "s/cnvkit v//g") END_VERSIONS """ + + stub: + def prefix = task.ext.prefix ?: targets.BaseName + + """ + touch ${prefix}.reference.cnn + cat <<-END_VERSIONS > versions.yml + "${task.process}": + cnvkit: \$(cnvkit.py version | sed -e "s/cnvkit v//g") + END_VERSIONS + """ } diff --git a/modules/nf-core/cnvkit/reference/meta.yml b/modules/nf-core/cnvkit/reference/meta.yml index 965a7b579..5303b162e 100644 --- a/modules/nf-core/cnvkit/reference/meta.yml +++ b/modules/nf-core/cnvkit/reference/meta.yml @@ -17,30 +17,36 @@ tools: licence: ["Apache-2.0"] identifier: biotools:cnvkit input: - - - fasta: - type: file - description: File containing reference genome - pattern: "*.{fasta}" - - - targets: + - fasta: + type: file + description: File containing reference genome + pattern: "*.{fasta}" + ontologies: [] + - targets: + type: file + description: File containing genomic regions + pattern: "*.{bed}" + ontologies: [] + - antitargets: + type: file + description: File containing off-target genomic regions + pattern: "*.{bed}" + ontologies: [] +output: + cnn: + - "*.cnn": type: file - description: File containing genomic regions - pattern: "*.{bed}" - - - antitargets: + description: File containing a copy-number reference (required for CNV calling + in tumor_only mode) + pattern: "*.{cnn}" + ontologies: [] + versions: + - versions.yml: type: file - description: File containing off-target genomic regions - pattern: "*.{bed}" -output: - - cnn: - - "*.cnn": - type: file - description: File containing a copy-number reference (required for CNV calling - in tumor_only mode) - pattern: "*.{cnn}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@adamrtalbot" - "@priesgo" diff --git a/modules/nf-core/controlfreec/assesssignificance/meta.yml b/modules/nf-core/controlfreec/assesssignificance/meta.yml index 8a6ab47ed..658d21b61 100644 --- a/modules/nf-core/controlfreec/assesssignificance/meta.yml +++ b/modules/nf-core/controlfreec/assesssignificance/meta.yml @@ -28,13 +28,15 @@ input: type: file description: _CNVs file generated by FREEC pattern: "*._CNVs" + ontologies: [] - ratio: type: file description: ratio file generated by FREEC pattern: "*.ratio.txt" + ontologies: [] output: - - p_value_txt: - - meta: + p_value_txt: + - - meta: type: map description: | Groovy Map containing sample information @@ -43,15 +45,14 @@ output: type: file description: CNV file containing p_values for each call pattern: "*.p.value.txt" - - ue_txt: - type: file - description: CNV file containing p_values for each call - pattern: "*.p.value.txt" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@FriederikeHanssen" maintainers: diff --git a/modules/nf-core/controlfreec/freec/meta.yml b/modules/nf-core/controlfreec/freec/meta.yml index 6b35a38be..8f790c974 100644 --- a/modules/nf-core/controlfreec/freec/meta.yml +++ b/modules/nf-core/controlfreec/freec/meta.yml @@ -26,65 +26,80 @@ input: - mpileup_normal: type: file description: miniPileup file + ontologies: [] - mpileup_tumor: type: file description: miniPileup file + ontologies: [] - cpn_normal: type: file description: Raw copy number profiles (optional) pattern: "*.cpn" + ontologies: [] - cpn_tumor: type: file description: Raw copy number profiles (optional) pattern: "*.cpn" + ontologies: [] - minipileup_normal: type: file description: miniPileup file from previous run (optional) pattern: "*.pileup" + ontologies: [] - minipileup_tumor: type: file description: miniPileup file from previous run (optional) pattern: "*.pileup" - - - fasta: - type: file - description: Reference file (optional; required if args 'makePileup' is set) - pattern: "*.{fasta,fna,fa}" - - - fai: - type: file - description: Fasta index - pattern: "*.fai" - - - snp_position: - type: file - description: Path to a BED or VCF file with SNP positions to create a mini pileup - file from the initial BAM file provided in mateFile (optional) - pattern: "*.{bed,vcf}" - - - known_snps: - type: file - description: File with known SNPs - pattern: "*.{vcf,vcf.gz}" - - - known_snps_tbi: - type: file - description: Index of known_snps - pattern: "*.tbi" - - - chr_directory: - type: file - description: Path to directory with chromosome fasta files (optional, required - if gccontentprofile is not provided) - pattern: "*/" - - - mappability: - type: file - description: Contains information of mappable positions (optional) - pattern: "*.gem" - - - target_bed: - type: file - description: Sorted bed file containing capture regions (optional) - pattern: "*.bed" - - - gccontent_profile: - type: file - description: File with GC-content profile + ontologies: [] + - fasta: + type: file + description: Reference file (optional; required if args 'makePileup' is set) + pattern: "*.{fasta,fna,fa}" + ontologies: [] + - fai: + type: file + description: Fasta index + pattern: "*.fai" + ontologies: [] + - snp_position: + type: file + description: Path to a BED or VCF file with SNP positions to create a mini pileup + file from the initial BAM file provided in mateFile (optional) + pattern: "*.{bed,vcf}" + ontologies: [] + - known_snps: + type: file + description: File with known SNPs + pattern: "*.{vcf,vcf.gz}" + ontologies: [] + - known_snps_tbi: + type: file + description: Index of known_snps + pattern: "*.tbi" + ontologies: [] + - chr_directory: + type: file + description: Path to directory with chromosome fasta files (optional, required + if gccontentprofile is not provided) + pattern: "*/" + ontologies: [] + - mappability: + type: file + description: Contains information of mappable positions (optional) + pattern: "*.gem" + ontologies: [] + - target_bed: + type: file + description: Sorted bed file containing capture regions (optional) + pattern: "*.bed" + ontologies: [] + - gccontent_profile: + type: file + description: File with GC-content profile + ontologies: [] output: - - bedgraph: - - meta: + bedgraph: + - - meta: type: map description: | Groovy Map containing sample information @@ -93,8 +108,9 @@ output: type: file description: Bedgraph format for the UCSC genome browser pattern: ".bedgraph" - - control_cpn: - - meta: + ontologies: [] + control_cpn: + - - meta: type: map description: | Groovy Map containing sample information @@ -103,8 +119,9 @@ output: type: file description: files with raw copy number profiles pattern: "*_control.cpn" - - sample_cpn: - - meta: + ontologies: [] + sample_cpn: + - - meta: type: map description: | Groovy Map containing sample information @@ -113,8 +130,9 @@ output: type: file description: files with raw copy number profiles pattern: "*_sample.cpn" - - gcprofile_cpn: - - meta: + ontologies: [] + gcprofile_cpn: + - - meta: type: map description: | Groovy Map containing sample information @@ -123,18 +141,21 @@ output: type: file description: file with GC-content profile. pattern: "GC_profile.*.cpn" - - BAF: - - meta: + ontologies: [] + BAF: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - "*_BAF.txt": type: file - description: file B-allele frequencies for each possibly heterozygous SNP position + description: file B-allele frequencies for each possibly heterozygous SNP + position pattern: "*_BAF.txt" - - CNV: - - meta: + ontologies: [] + CNV: + - - meta: type: map description: | Groovy Map containing sample information @@ -143,8 +164,9 @@ output: type: file description: file with coordinates of predicted copy number alterations. pattern: "*_CNVs" - - info: - - meta: + ontologies: [] + info: + - - meta: type: map description: | Groovy Map containing sample information @@ -153,8 +175,9 @@ output: type: file description: parsable file with information about FREEC run pattern: "*_info.txt" - - ratio: - - meta: + ontologies: [] + ratio: + - - meta: type: map description: | Groovy Map containing sample information @@ -164,8 +187,9 @@ output: description: file with ratios and predicted copy number alterations for each window pattern: "*_ratio.txt" - - config: - - meta: + ontologies: [] + config: + - - meta: type: map description: | Groovy Map containing sample information @@ -174,11 +198,14 @@ output: type: file description: Config file used to run Control-FREEC pattern: "config.txt" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@FriederikeHanssen" maintainers: diff --git a/modules/nf-core/controlfreec/freec2bed/meta.yml b/modules/nf-core/controlfreec/freec2bed/meta.yml index e01f870f4..4a6bcc370 100644 --- a/modules/nf-core/controlfreec/freec2bed/meta.yml +++ b/modules/nf-core/controlfreec/freec2bed/meta.yml @@ -26,9 +26,10 @@ input: type: file description: ratio file generated by FREEC pattern: "*.ratio.txt" + ontologies: [] output: - - bed: - - meta: + bed: + - - meta: type: map description: | Groovy Map containing sample information @@ -37,11 +38,14 @@ output: type: file description: Bed file pattern: "*.bed" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@FriederikeHanssen" maintainers: diff --git a/modules/nf-core/controlfreec/freec2circos/meta.yml b/modules/nf-core/controlfreec/freec2circos/meta.yml index 5368c0429..408c98101 100644 --- a/modules/nf-core/controlfreec/freec2circos/meta.yml +++ b/modules/nf-core/controlfreec/freec2circos/meta.yml @@ -26,9 +26,10 @@ input: type: file description: ratio file generated by FREEC pattern: "*.ratio.txt" + ontologies: [] output: - - circos: - - meta: + circos: + - - meta: type: map description: | Groovy Map containing sample information @@ -37,11 +38,14 @@ output: type: file description: Txt file pattern: "*.circos.txt" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@FriederikeHanssen" maintainers: diff --git a/modules/nf-core/controlfreec/makegraph2/meta.yml b/modules/nf-core/controlfreec/makegraph2/meta.yml index 6614b39ba..17026f853 100644 --- a/modules/nf-core/controlfreec/makegraph2/meta.yml +++ b/modules/nf-core/controlfreec/makegraph2/meta.yml @@ -28,13 +28,15 @@ input: type: file description: ratio file generated by FREEC pattern: "*.ratio.txt" + ontologies: [] - baf: type: file description: .BAF file generated by FREEC pattern: "*.BAF" + ontologies: [] output: - - png_baf: - - meta: + png_baf: + - - meta: type: map description: | Groovy Map containing sample information @@ -43,8 +45,9 @@ output: type: file description: Image of BAF plot pattern: "*_BAF.png" - - png_ratio_log2: - - meta: + ontologies: [] + png_ratio_log2: + - - meta: type: map description: | Groovy Map containing sample information @@ -53,8 +56,9 @@ output: type: file description: Image of ratio log2 plot pattern: "*_ratio.log2.png" - - png_ratio: - - meta: + ontologies: [] + png_ratio: + - - meta: type: map description: | Groovy Map containing sample information @@ -63,10 +67,13 @@ output: type: file description: Image of ratio plot pattern: "*_ratio.png" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@FriederikeHanssen" diff --git a/modules/nf-core/deepvariant/rundeepvariant/main.nf b/modules/nf-core/deepvariant/rundeepvariant/main.nf index d2be378f5..5d99fc337 100644 --- a/modules/nf-core/deepvariant/rundeepvariant/main.nf +++ b/modules/nf-core/deepvariant/rundeepvariant/main.nf @@ -6,7 +6,7 @@ process DEEPVARIANT_RUNDEEPVARIANT { // https://github.com/bioconda/bioconda-recipes/pull/45214#issuecomment-1890937836 // BUG https://github.com/nf-core/modules/issues/1754 // BUG https://github.com/bioconda/bioconda-recipes/issues/30310 - container "docker.io/google/deepvariant:1.8.0" + container "docker.io/google/deepvariant:1.9.0" input: tuple val(meta), path(input), path(index), path(intervals) diff --git a/modules/nf-core/deepvariant/rundeepvariant/meta.yml b/modules/nf-core/deepvariant/rundeepvariant/meta.yml index 29b45ff91..517294b08 100644 --- a/modules/nf-core/deepvariant/rundeepvariant/meta.yml +++ b/modules/nf-core/deepvariant/rundeepvariant/meta.yml @@ -25,13 +25,16 @@ input: type: file description: BAM/CRAM file pattern: "*.bam/cram" + ontologies: [] - index: type: file description: Index of BAM/CRAM file pattern: "*.bai/crai" + ontologies: [] - intervals: type: file description: file containing intervals + ontologies: [] - - meta2: type: map description: | @@ -41,6 +44,7 @@ input: type: file description: The reference fasta file pattern: "*.fasta" + ontologies: [] - - meta3: type: map description: | @@ -50,6 +54,7 @@ input: type: file description: Index of reference fasta file pattern: "*.fai" + ontologies: [] - - meta4: type: map description: | @@ -59,6 +64,7 @@ input: type: file description: GZI index of reference fasta file pattern: "*.gzi" + ontologies: [] - - meta5: type: map description: | @@ -68,9 +74,10 @@ input: type: file description: BED file containing PAR regions pattern: "*.bed" + ontologies: [] output: - - vcf: - - meta: + vcf: + - - meta: type: map description: | Groovy Map containing sample information @@ -79,8 +86,10 @@ output: type: file description: Compressed VCF file pattern: "*.vcf.gz" - - vcf_tbi: - - meta: + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + vcf_tbi: + - - meta: type: map description: | Groovy Map containing sample information @@ -89,8 +98,9 @@ output: type: file description: Tabix index file of compressed VCF pattern: "*.vcf.gz.tbi" - - gvcf: - - meta: + ontologies: [] + gvcf: + - - meta: type: map description: | Groovy Map containing sample information @@ -99,8 +109,10 @@ output: type: file description: Compressed GVCF file pattern: "*.g.vcf.gz" - - gvcf_tbi: - - meta: + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + gvcf_tbi: + - - meta: type: map description: | Groovy Map containing sample information @@ -109,11 +121,14 @@ output: type: file description: Tabix index file of compressed GVCF pattern: "*.g.vcf.gz.tbi" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@abhi18av" - "@ramprasadn" diff --git a/modules/nf-core/dragmap/align/main.nf b/modules/nf-core/dragmap/align/main.nf index 3f6ea7536..62e2b4a1b 100644 --- a/modules/nf-core/dragmap/align/main.nf +++ b/modules/nf-core/dragmap/align/main.nf @@ -46,7 +46,7 @@ process DRAGMAP_ALIGN { ${args} \\ --num-threads ${task.cpus} \\ ${reads_command} \\ - 2> >(tee ${prefix}.dragmap.log >&2) \\ + 2>| >(tee ${prefix}.dragmap.log >&2) \\ | samtools ${samtools_command} ${args2} --threads ${task.cpus} ${reference} -o ${prefix}.${extension} - cat <<-END_VERSIONS > versions.yml diff --git a/modules/nf-core/dragmap/align/meta.yml b/modules/nf-core/dragmap/align/meta.yml index 80f020f58..ba3ab484e 100644 --- a/modules/nf-core/dragmap/align/meta.yml +++ b/modules/nf-core/dragmap/align/meta.yml @@ -25,6 +25,7 @@ input: description: | List of input FastQ files of size 1 and 2 for single-end and paired-end data, respectively. + ontologies: [] - - meta2: type: map description: | @@ -34,6 +35,7 @@ input: type: file description: DRAGMAP hash table pattern: "Directory containing DRAGMAP hash table *.{cmp,.bin,.txt}" + ontologies: [] - - meta3: type: map description: | @@ -43,12 +45,13 @@ input: type: file description: Genome fasta reference files pattern: "*.{fa,fasta,fna}" - - - sort_bam: - type: boolean - description: Sort the BAM file + ontologies: [] + - sort_bam: + type: boolean + description: Sort the BAM file output: - - sam: - - meta: + sam: + - - meta: type: map description: | Groovy Map containing sample information @@ -57,17 +60,20 @@ output: type: file description: Output SAM file containing read alignments pattern: "*.{sam}" - - bam: - - meta: - type: file - description: Output BAM file containing read alignments - pattern: "*.{bam}" + ontologies: [] + bam: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] - "*.bam": type: file description: Output BAM file containing read alignments pattern: "*.{bam}" - - cram: - - meta: + ontologies: [] + cram: + - - meta: type: map description: | Groovy Map containing sample information @@ -76,8 +82,9 @@ output: type: file description: Output CRAM file containing read alignments pattern: "*.{cram}" - - crai: - - meta: + ontologies: [] + crai: + - - meta: type: map description: | Groovy Map containing sample information @@ -86,8 +93,9 @@ output: type: file description: Index file for CRAM file pattern: "*.{crai}" - - csi: - - meta: + ontologies: [] + csi: + - - meta: type: map description: | Groovy Map containing sample information @@ -96,8 +104,9 @@ output: type: file description: Index file for CRAM file pattern: "*.{csi}" - - log: - - meta: + ontologies: [] + log: + - - meta: type: map description: | Groovy Map containing sample information @@ -106,11 +115,14 @@ output: type: file description: Log file pattern: "*.{log}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@edmundmiller" maintainers: diff --git a/modules/nf-core/dragmap/hashtable/meta.yml b/modules/nf-core/dragmap/hashtable/meta.yml index 450a1e58e..c6367b473 100644 --- a/modules/nf-core/dragmap/hashtable/meta.yml +++ b/modules/nf-core/dragmap/hashtable/meta.yml @@ -22,9 +22,10 @@ input: - fasta: type: file description: Input genome fasta file + ontologies: [] output: - - hashmap: - - meta: + hashmap: + - - meta: type: map description: | Groovy Map containing reference information @@ -33,11 +34,14 @@ output: type: file description: DRAGMAP hash table pattern: "*.{cmp,.bin,.txt}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@edmundmiller" maintainers: diff --git a/modules/nf-core/ensemblvep/download/meta.yml b/modules/nf-core/ensemblvep/download/meta.yml index 8da9621cb..df7cf2604 100644 --- a/modules/nf-core/ensemblvep/download/meta.yml +++ b/modules/nf-core/ensemblvep/download/meta.yml @@ -33,20 +33,24 @@ input: description: | cache version output: - - cache: - - meta: + cache: + - - meta: type: file description: cache pattern: "*" + ontologies: [] - prefix: type: file description: cache pattern: "*" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@maxulysse" maintainers: diff --git a/modules/nf-core/ensemblvep/vep/meta.yml b/modules/nf-core/ensemblvep/vep/meta.yml index cbb194fdc..7d91a7d05 100644 --- a/modules/nf-core/ensemblvep/vep/meta.yml +++ b/modules/nf-core/ensemblvep/vep/meta.yml @@ -25,27 +25,30 @@ input: type: file description: | vcf to annotate + ontologies: [] - custom_extra_files: type: file description: | extra sample-specific files to be used with the `--custom` flag to be configured with ext.args (optional) - - - genome: - type: string - description: | - which genome to annotate with - - - species: - type: string - description: | - which species to annotate with - - - cache_version: - type: integer - description: | - which version of the cache to annotate with - - - cache: - type: file - description: | - path to VEP cache (optional) + ontologies: [] + - genome: + type: string + description: | + which genome to annotate with + - species: + type: string + description: | + which species to annotate with + - cache_version: + type: integer + description: | + which version of the cache to annotate with + - cache: + type: file + description: | + path to VEP cache (optional) + ontologies: [] - - meta2: type: map description: | @@ -56,13 +59,15 @@ input: description: | reference FASTA file (optional) pattern: "*.{fasta,fa}" - - - extra_files: - type: file - description: | - path to file(s) needed for plugins (optional) + ontologies: [] + - extra_files: + type: file + description: | + path to file(s) needed for plugins (optional) + ontologies: [] output: - - vcf: - - meta: + vcf: + - - meta: type: map description: | Map with sample information @@ -71,8 +76,10 @@ output: description: | annotated vcf (optional) pattern: "*.vcf.gz" - - tbi: - - meta: + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + tbi: + - - meta: type: map description: | Map with sample information @@ -81,38 +88,44 @@ output: description: | annotated vcf index (optional) pattern: "*.vcf.gz.tbi" - - tab: - - meta: - type: file + ontologies: [] + tab: + - - meta: + type: map description: | - tab file with annotated variants (optional) - pattern: "*.ann.tab.gz" + Map with sample information - "*.tab.gz": type: file description: | tab file with annotated variants (optional) pattern: "*.ann.tab.gz" - - json: - - meta: - type: file + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + json: + - - meta: + type: map description: | - json file with annotated variants (optional) - pattern: "*.ann.json.gz" + Map with sample information - "*.json.gz": type: file description: | json file with annotated variants (optional) pattern: "*.ann.json.gz" - - report: - - "*.html": - type: file - description: VEP report file - pattern: "*.html" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + report: + - "*.html": + type: file + description: VEP report file + pattern: "*.html" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@maxulysse" - "@matthdsm" diff --git a/modules/nf-core/fastp/main.nf b/modules/nf-core/fastp/main.nf index 1342741d5..6e3e6c43a 100644 --- a/modules/nf-core/fastp/main.nf +++ b/modules/nf-core/fastp/main.nf @@ -48,7 +48,7 @@ process FASTP { $adapter_list \\ $fail_fastq \\ $args \\ - 2> >(tee ${prefix}.fastp.log >&2) \\ + 2>| >(tee ${prefix}.fastp.log >&2) \\ | gzip -c > ${prefix}.fastp.fastq.gz cat <<-END_VERSIONS > versions.yml @@ -69,7 +69,7 @@ process FASTP { $adapter_list \\ $fail_fastq \\ $args \\ - 2> >(tee ${prefix}.fastp.log >&2) + 2>| >(tee ${prefix}.fastp.log >&2) cat <<-END_VERSIONS > versions.yml "${task.process}": @@ -94,7 +94,7 @@ process FASTP { --thread $task.cpus \\ --detect_adapter_for_pe \\ $args \\ - 2> >(tee ${prefix}.fastp.log >&2) + 2>| >(tee ${prefix}.fastp.log >&2) cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/fastp/meta.yml b/modules/nf-core/fastp/meta.yml index 9c4b24584..b8673272a 100644 --- a/modules/nf-core/fastp/meta.yml +++ b/modules/nf-core/fastp/meta.yml @@ -24,25 +24,27 @@ input: List of input FastQ files of size 1 and 2 for single-end and paired-end data, respectively. If you wish to run interleaved paired-end data, supply as single-end data but with `--interleaved_in` in your `modules.conf`'s `ext.args` for the module. - - - adapter_fasta: - type: file - description: File in FASTA format containing possible adapters to remove. - pattern: "*.{fasta,fna,fas,fa}" - - - discard_trimmed_pass: - type: boolean - description: | - Specify true to not write any reads that pass trimming thresholds. - This can be used to use fastp for the output report only. - - - save_trimmed_fail: - type: boolean - description: Specify true to save files that failed to pass trimming thresholds - ending in `*.fail.fastq.gz` - - - save_merged: - type: boolean - description: Specify true to save all merged reads to a file ending in `*.merged.fastq.gz` + ontologies: [] + - adapter_fasta: + type: file + description: File in FASTA format containing possible adapters to remove. + pattern: "*.{fasta,fna,fas,fa}" + ontologies: [] + - discard_trimmed_pass: + type: boolean + description: | + Specify true to not write any reads that pass trimming thresholds. + This can be used to use fastp for the output report only. + - save_trimmed_fail: + type: boolean + description: Specify true to save files that failed to pass trimming thresholds + ending in `*.fail.fastq.gz` + - save_merged: + type: boolean + description: Specify true to save all merged reads to a file ending in `*.merged.fastq.gz` output: - - reads: - - meta: + reads: + - - meta: type: map description: | Groovy Map containing sample information @@ -51,8 +53,10 @@ output: type: file description: The trimmed/modified/unmerged fastq reads pattern: "*fastp.fastq.gz" - - json: - - meta: + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + json: + - - meta: type: map description: | Groovy Map containing sample information @@ -61,8 +65,10 @@ output: type: file description: Results in JSON format pattern: "*.json" - - html: - - meta: + ontologies: + - edam: http://edamontology.org/format_3464 # JSON + html: + - - meta: type: map description: | Groovy Map containing sample information @@ -71,8 +77,9 @@ output: type: file description: Results in HTML format pattern: "*.html" - - log: - - meta: + ontologies: [] + log: + - - meta: type: map description: | Groovy Map containing sample information @@ -81,8 +88,9 @@ output: type: file description: fastq log file pattern: "*.log" - - reads_fail: - - meta: + ontologies: [] + reads_fail: + - - meta: type: map description: | Groovy Map containing sample information @@ -91,8 +99,10 @@ output: type: file description: Reads the failed the preprocessing pattern: "*fail.fastq.gz" - - reads_merged: - - meta: + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + reads_merged: + - - meta: type: map description: | Groovy Map containing sample information @@ -101,11 +111,14 @@ output: type: file description: Reads that were successfully merged pattern: "*.{merged.fastq.gz}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@drpatelh" - "@kevinmenden" diff --git a/modules/nf-core/fgbio/callmolecularconsensusreads/environment.yml b/modules/nf-core/fgbio/callmolecularconsensusreads/environment.yml index 4ebc0924d..4dbb6856e 100644 --- a/modules/nf-core/fgbio/callmolecularconsensusreads/environment.yml +++ b/modules/nf-core/fgbio/callmolecularconsensusreads/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::fgbio=2.4.0 + - bioconda::fgbio=2.5.21 diff --git a/modules/nf-core/fgbio/callmolecularconsensusreads/main.nf b/modules/nf-core/fgbio/callmolecularconsensusreads/main.nf index 7d2e660d0..e1d869b36 100644 --- a/modules/nf-core/fgbio/callmolecularconsensusreads/main.nf +++ b/modules/nf-core/fgbio/callmolecularconsensusreads/main.nf @@ -4,8 +4,8 @@ process FGBIO_CALLMOLECULARCONSENSUSREADS { 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/87/87626ef674e2f19366ae6214575a114fe80ce598e796894820550731706a84be/data' : - 'community.wave.seqera.io/library/fgbio:2.4.0--913bad9d47ff8ddc' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/b4/b4047e3e517b57fae311eab139a12f0887d898b7da5fceeb2a1029c73b9e3904/data' : + 'community.wave.seqera.io/library/fgbio:2.5.21--368dab1b4f308243' }" input: tuple val(meta), path(grouped_bam) diff --git a/modules/nf-core/fgbio/callmolecularconsensusreads/meta.yml b/modules/nf-core/fgbio/callmolecularconsensusreads/meta.yml index 846c297b1..c7b75eb77 100644 --- a/modules/nf-core/fgbio/callmolecularconsensusreads/meta.yml +++ b/modules/nf-core/fgbio/callmolecularconsensusreads/meta.yml @@ -22,15 +22,16 @@ input: description: | The input SAM or BAM file, grouped by UMIs pattern: "*.{bam,sam}" - - - min_reads: - type: integer - description: Minimum number of original reads to build each consensus read. - - - min_baseq: - type: integer - description: Ignore bases in raw reads that have Q below this value. + ontologies: [] + - min_reads: + type: integer + description: Minimum number of original reads to build each consensus read. + - min_baseq: + type: integer + description: Ignore bases in raw reads that have Q below this value. output: - - bam: - - meta: + bam: + - - meta: type: map description: | Groovy Map containing sample information @@ -40,11 +41,14 @@ output: description: | Output SAM or BAM file to write consensus reads. pattern: "*.{bam,sam}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@sruthipsuresh" maintainers: diff --git a/modules/nf-core/fgbio/fastqtobam/environment.yml b/modules/nf-core/fgbio/fastqtobam/environment.yml index 4ebc0924d..4dbb6856e 100644 --- a/modules/nf-core/fgbio/fastqtobam/environment.yml +++ b/modules/nf-core/fgbio/fastqtobam/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::fgbio=2.4.0 + - bioconda::fgbio=2.5.21 diff --git a/modules/nf-core/fgbio/fastqtobam/main.nf b/modules/nf-core/fgbio/fastqtobam/main.nf index b4223db0f..6ee64bb32 100644 --- a/modules/nf-core/fgbio/fastqtobam/main.nf +++ b/modules/nf-core/fgbio/fastqtobam/main.nf @@ -4,8 +4,8 @@ process FGBIO_FASTQTOBAM { 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/87/87626ef674e2f19366ae6214575a114fe80ce598e796894820550731706a84be/data' : - 'community.wave.seqera.io/library/fgbio:2.4.0--913bad9d47ff8ddc' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/b4/b4047e3e517b57fae311eab139a12f0887d898b7da5fceeb2a1029c73b9e3904/data' : + 'community.wave.seqera.io/library/fgbio:2.5.21--368dab1b4f308243' }" input: tuple val(meta), path(reads) diff --git a/modules/nf-core/fgbio/fastqtobam/meta.yml b/modules/nf-core/fgbio/fastqtobam/meta.yml index bce76cf8c..d92f0a600 100644 --- a/modules/nf-core/fgbio/fastqtobam/meta.yml +++ b/modules/nf-core/fgbio/fastqtobam/meta.yml @@ -24,9 +24,10 @@ input: type: file description: pair of reads to be converted into BAM file pattern: "*.{fastq.gz}" + ontologies: [] output: - - bam: - - meta: + bam: + - - meta: type: map description: | Groovy Map containing sample information @@ -35,8 +36,9 @@ output: type: file description: Unaligned, unsorted BAM file pattern: "*.{bam}" - - cram: - - meta: + ontologies: [] + cram: + - - meta: type: map description: | Groovy Map containing sample information @@ -45,11 +47,14 @@ output: type: file description: Unaligned, unsorted CRAM file pattern: "*.{cram}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@lescai" - "@matthdsm" diff --git a/modules/nf-core/fgbio/groupreadsbyumi/environment.yml b/modules/nf-core/fgbio/groupreadsbyumi/environment.yml index 4ebc0924d..4dbb6856e 100644 --- a/modules/nf-core/fgbio/groupreadsbyumi/environment.yml +++ b/modules/nf-core/fgbio/groupreadsbyumi/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::fgbio=2.4.0 + - bioconda::fgbio=2.5.21 diff --git a/modules/nf-core/fgbio/groupreadsbyumi/main.nf b/modules/nf-core/fgbio/groupreadsbyumi/main.nf index c0506c902..f7725219c 100644 --- a/modules/nf-core/fgbio/groupreadsbyumi/main.nf +++ b/modules/nf-core/fgbio/groupreadsbyumi/main.nf @@ -4,17 +4,18 @@ process FGBIO_GROUPREADSBYUMI { 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/87/87626ef674e2f19366ae6214575a114fe80ce598e796894820550731706a84be/data' : - 'community.wave.seqera.io/library/fgbio:2.4.0--913bad9d47ff8ddc' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/b4/b4047e3e517b57fae311eab139a12f0887d898b7da5fceeb2a1029c73b9e3904/data' : + 'community.wave.seqera.io/library/fgbio:2.5.21--368dab1b4f308243' }" input: tuple val(meta), path(bam) val(strategy) output: - tuple val(meta), path("*.bam") , emit: bam - tuple val(meta), path("*histogram.txt"), emit: histogram - path "versions.yml" , emit: versions + tuple val(meta), path("*.bam") , emit: bam + tuple val(meta), path("*histogram.txt") , emit: histogram + tuple val(meta), path("*read-metrics.txt"), emit: read_metrics + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when @@ -44,7 +45,8 @@ process FGBIO_GROUPREADSBYUMI { $args \\ -i $bam \\ -o ${prefix}.bam \\ - -f ${prefix}_histogram.txt + -f ${prefix}_histogram.txt \\ + --grouping-metrics ${prefix}_read-metrics.txt cat <<-END_VERSIONS > versions.yml "${task.process}": @@ -58,6 +60,7 @@ process FGBIO_GROUPREADSBYUMI { """ touch ${prefix}.bam touch ${prefix}_histogram.txt + touch ${prefix}_read-metrics.txt cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/fgbio/groupreadsbyumi/meta.yml b/modules/nf-core/fgbio/groupreadsbyumi/meta.yml index c6d588daf..eb22ec10f 100644 --- a/modules/nf-core/fgbio/groupreadsbyumi/meta.yml +++ b/modules/nf-core/fgbio/groupreadsbyumi/meta.yml @@ -30,15 +30,16 @@ input: description: | BAM file. Note: the MQ tag is required on reads with mapped mates (!) pattern: "*.bam" - - - strategy: - type: string - enum: ["Identity", "Edit", "Adjacency", "Paired"] - description: | - Required argument: defines the UMI assignment strategy. - Must be chosen among: Identity, Edit, Adjacency, Paired. + ontologies: [] + - strategy: + type: string + enum: ["Identity", "Edit", "Adjacency", "Paired"] + description: | + Required argument: defines the UMI assignment strategy. + Must be chosen among: Identity, Edit, Adjacency, Paired. output: - - bam: - - meta: + bam: + - - meta: type: map description: | Groovy Map containing sample information @@ -47,8 +48,9 @@ output: type: file description: UMI-grouped BAM pattern: "*.bam" - - histogram: - - meta: + ontologies: [] + histogram: + - - meta: type: map description: | Groovy Map containing sample information @@ -57,11 +59,25 @@ output: type: file description: A text file containing the tag family size counts pattern: "*.txt" - - versions: - - versions.yml: + ontologies: [] + read_metrics: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*read-metrics.txt": type: file - description: File containing software versions - pattern: "versions.yml" + description: A text file containing the read count metrics from grouping + pattern: "*.txt" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@lescai" maintainers: diff --git a/modules/nf-core/freebayes/environment.yml b/modules/nf-core/freebayes/environment.yml index 8f1878ef4..79cb3eadc 100644 --- a/modules/nf-core/freebayes/environment.yml +++ b/modules/nf-core/freebayes/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::freebayes=1.3.6 + - bioconda::freebayes=1.3.10 diff --git a/modules/nf-core/freebayes/main.nf b/modules/nf-core/freebayes/main.nf index f68814b3a..9d949add0 100644 --- a/modules/nf-core/freebayes/main.nf +++ b/modules/nf-core/freebayes/main.nf @@ -1,11 +1,11 @@ process FREEBAYES { - tag "$meta.id" + tag "${meta.id}" label 'process_single' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/freebayes:1.3.6--hbfe0e7f_2' : - 'biocontainers/freebayes:1.3.6--hbfe0e7f_2' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://depot.galaxyproject.org/singularity/freebayes:1.3.10--hbefcdb2_0' + : 'biocontainers/freebayes:1.3.10--hbefcdb2_0'}" input: tuple val(meta), path(input_1), path(input_1_index), path(input_2), path(input_2_index), path(target_bed) @@ -17,29 +17,28 @@ process FREEBAYES { output: tuple val(meta), path("*.vcf.gz"), emit: vcf - path "versions.yml" , emit: versions + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" - def input = input_2 ? "${input_1} ${input_2}" : "${input_1}" - def targets_file = target_bed ? "--target ${target_bed}" : "" - def samples_file = samples ? "--samples ${samples}" : "" - def populations_file = populations ? "--populations ${populations}" : "" - def cnv_file = cnv ? "--cnv-map ${cnv}" : "" - + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def input = input_2 ? "${input_1} ${input_2}" : "${input_1}" + def targets_file = target_bed ? "--target ${target_bed}" : "" + def samples_file = samples ? "--samples ${samples}" : "" + def populations_file = populations ? "--populations ${populations}" : "" + def cnv_file = cnv ? "--cnv-map ${cnv}" : "" """ freebayes \\ - -f $fasta \\ - $targets_file \\ - $samples_file \\ - $populations_file \\ - $cnv_file \\ - $args \\ - $input > ${prefix}.vcf + -f ${fasta} \\ + ${targets_file} \\ + ${samples_file} \\ + ${populations_file} \\ + ${cnv_file} \\ + ${args} \\ + ${input} > ${prefix}.vcf bgzip ${prefix}.vcf @@ -48,4 +47,15 @@ process FREEBAYES { freebayes: \$(echo \$(freebayes --version 2>&1) | sed 's/version:\s*v//g' ) END_VERSIONS """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + echo | gzip > ${prefix}.vcf.gz + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + freebayes: \$(echo \$(freebayes --version 2>&1) | sed 's/version:\s*v//g' ) + END_VERSIONS + """ } diff --git a/modules/nf-core/freebayes/meta.yml b/modules/nf-core/freebayes/meta.yml index 327fe311e..5593bcaaa 100644 --- a/modules/nf-core/freebayes/meta.yml +++ b/modules/nf-core/freebayes/meta.yml @@ -27,23 +27,28 @@ input: type: file description: BAM/CRAM/SAM file pattern: "*.{bam,cram,sam}" + ontologies: [] - input_1_index: type: file description: BAM/CRAM/SAM index file pattern: "*.{bai,crai}" + ontologies: [] - input_2: type: file description: BAM/CRAM/SAM file pattern: "*.{bam,cram,sam}" + ontologies: [] - input_2_index: type: file description: BAM/CRAM/SAM index file pattern: "*.{bai,crai}" + ontologies: [] - target_bed: type: file description: Optional - Limit analysis to targets listed in this BED-format FILE. pattern: "*.bed" + ontologies: [] - - meta2: type: map description: | @@ -53,6 +58,7 @@ input: type: file description: reference fasta file pattern: ".{fa,fa.gz,fasta,fasta.gz}" + ontologies: [] - - meta3: type: map description: | @@ -62,6 +68,7 @@ input: type: file description: reference fasta file index pattern: "*.{fa,fasta}.fai" + ontologies: [] - - meta4: type: map description: | @@ -72,6 +79,7 @@ input: description: Optional - Limit analysis to samples listed (one per line) in the FILE. pattern: "*.txt" + ontologies: [] - - meta5: type: map description: | @@ -82,6 +90,7 @@ input: description: Optional - Each line of FILE should list a sample and a population which it is part of. pattern: "*.txt" + ontologies: [] - - meta6: type: map description: | @@ -95,9 +104,10 @@ input: or a region-specific format: seq_name start end sample_name copy_number pattern: "*.bed" + ontologies: [] output: - - vcf: - - meta: + vcf: + - - meta: type: map description: | Groovy Map containing sample information @@ -106,11 +116,15 @@ output: type: file description: Compressed VCF file pattern: "*.vcf.gz" - - versions: - - versions.yml: - type: file - description: File containing software version - pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + versions: + - versions.yml: + type: file + description: File containing software version + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@maxibor" - "@FriederikeHanssen" diff --git a/modules/nf-core/gatk4/applybqsr/main.nf b/modules/nf-core/gatk4/applybqsr/main.nf index 5267454e8..979cb3a70 100644 --- a/modules/nf-core/gatk4/applybqsr/main.nf +++ b/modules/nf-core/gatk4/applybqsr/main.nf @@ -23,7 +23,7 @@ process GATK4_APPLYBQSR { script: def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" + def prefix = task.ext.prefix ?: "${meta.id}.cram" def interval_command = intervals ? "--intervals $intervals" : "" def avail_mem = 3072 @@ -36,7 +36,7 @@ process GATK4_APPLYBQSR { gatk --java-options "-Xmx${avail_mem}M -XX:-UsePerfData" \\ ApplyBQSR \\ --input $input \\ - --output ${prefix}.${input.getExtension()} \\ + --output ${prefix} \\ --reference $fasta \\ --bqsr-recal-file $bqsr_table \\ $interval_command \\ @@ -50,11 +50,9 @@ process GATK4_APPLYBQSR { """ stub: - def prefix = task.ext.prefix ?: "${meta.id}" - def input_extension = input.getExtension() - def output_extension = input_extension == 'bam' ? 'bam' : 'cram' + def prefix = task.ext.prefix ?: "${meta.id}.cram" """ - touch ${prefix}.${output_extension} + touch ${prefix} cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/gatk4/applybqsr/meta.yml b/modules/nf-core/gatk4/applybqsr/meta.yml index 65d9c9e9a..3d0ba32d7 100644 --- a/modules/nf-core/gatk4/applybqsr/meta.yml +++ b/modules/nf-core/gatk4/applybqsr/meta.yml @@ -27,31 +27,38 @@ input: type: file description: BAM/CRAM file from alignment pattern: "*.{bam,cram}" + ontologies: [] - input_index: type: file description: BAI/CRAI file from alignment pattern: "*.{bai,crai}" + ontologies: [] - bqsr_table: type: file description: Recalibration table from gatk4_baserecalibrator + ontologies: [] - intervals: type: file description: Bed file with the genomic regions included in the library (optional) - - - fasta: - type: file - description: The reference fasta file - pattern: "*.fasta" - - - fai: - type: file - description: Index of reference fasta file - pattern: "*.fasta.fai" - - - dict: - type: file - description: GATK sequence dictionary - pattern: "*.dict" + ontologies: [] + - fasta: + type: file + description: The reference fasta file + pattern: "*.fasta" + ontologies: [] + - fai: + type: file + description: Index of reference fasta file + pattern: "*.fasta.fai" + ontologies: [] + - dict: + type: file + description: GATK sequence dictionary + pattern: "*.dict" + ontologies: [] output: - - bam: - - meta: + bam: + - - meta: type: map description: | Groovy Map containing sample information @@ -60,8 +67,9 @@ output: type: file description: Recalibrated BAM file pattern: "*.{bam}" - - cram: - - meta: + ontologies: [] + cram: + - - meta: type: map description: | Groovy Map containing sample information @@ -70,11 +78,14 @@ output: type: file description: Recalibrated CRAM file pattern: "*.{cram}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@yocra3" - "@FriederikeHanssen" diff --git a/modules/nf-core/gatk4/applyvqsr/meta.yml b/modules/nf-core/gatk4/applyvqsr/meta.yml index ceedff621..d7c6e905f 100644 --- a/modules/nf-core/gatk4/applyvqsr/meta.yml +++ b/modules/nf-core/gatk4/applyvqsr/meta.yml @@ -31,60 +31,77 @@ input: description: VCF file to be recalibrated, this should be the same file as used for the first stage VariantRecalibrator. pattern: "*.vcf" + ontologies: [] - vcf_tbi: type: file description: tabix index for the input vcf file. pattern: "*.vcf.tbi" + ontologies: [] - recal: type: file description: Recalibration file produced when the input vcf was run through VariantRecalibrator in stage 1. pattern: "*.recal" + ontologies: [] - recal_index: type: file description: Index file for the recalibration file. pattern: ".recal.idx" + ontologies: [] - tranches: type: file description: Tranches file produced when the input vcf was run through VariantRecalibrator in stage 1. pattern: ".tranches" - - - fasta: - type: file - description: The reference fasta file - pattern: "*.fasta" - - - fai: - type: file - description: Index of reference fasta file - pattern: "*.fasta.fai" - - - dict: - type: file - description: GATK sequence dictionary - pattern: "*.dict" + ontologies: [] + - fasta: + type: file + description: The reference fasta file + pattern: "*.fasta" + ontologies: [] + - fai: + type: file + description: Index of reference fasta file + pattern: "*.fasta.fai" + ontologies: [] + - dict: + type: file + description: GATK sequence dictionary + pattern: "*.dict" + ontologies: [] output: - - vcf: - - meta: + vcf: + - - meta: type: file description: compressed vcf file containing the recalibrated variants. pattern: "*.vcf.gz" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format - "*.vcf.gz": type: file description: compressed vcf file containing the recalibrated variants. pattern: "*.vcf.gz" - - tbi: - - meta: + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + tbi: + - - meta: type: file - description: Index of recalibrated vcf file. - pattern: "*vcf.gz.tbi" + description: compressed vcf file containing the recalibrated variants. + pattern: "*.vcf.gz" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format - "*.tbi": type: file description: Index of recalibrated vcf file. pattern: "*vcf.gz.tbi" - - versions: - - versions.yml: - type: file - description: File containing software versions. - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions. + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@GCJMackenzie" maintainers: diff --git a/modules/nf-core/gatk4/baserecalibrator/meta.yml b/modules/nf-core/gatk4/baserecalibrator/meta.yml index c3caeb808..a34c2fa6f 100644 --- a/modules/nf-core/gatk4/baserecalibrator/meta.yml +++ b/modules/nf-core/gatk4/baserecalibrator/meta.yml @@ -27,13 +27,16 @@ input: type: file description: BAM/CRAM file from alignment pattern: "*.{bam,cram}" + ontologies: [] - input_index: type: file description: BAI/CRAI file from alignment pattern: "*.{bai,crai}" + ontologies: [] - intervals: type: file description: Bed file with the genomic regions included in the library (optional) + ontologies: [] - - meta2: type: map description: | @@ -43,6 +46,7 @@ input: type: file description: The reference fasta file pattern: "*.fasta" + ontologies: [] - - meta3: type: map description: | @@ -52,6 +56,7 @@ input: type: file description: Index of reference fasta file pattern: "*.fasta.fai" + ontologies: [] - - meta4: type: map description: | @@ -61,6 +66,7 @@ input: type: file description: GATK sequence dictionary pattern: "*.dict" + ontologies: [] - - meta5: type: map description: | @@ -68,8 +74,10 @@ input: e.g. [ id:'genome'] - known_sites: type: file - description: VCF files with known sites for indels / snps (optional) + description: VCF files with known sites for indels / snps pattern: "*.vcf.gz" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format - - meta6: type: map description: | @@ -77,11 +85,12 @@ input: e.g. [ id:'genome'] - known_sites_tbi: type: file - description: Tabix index of the known_sites (optional) + description: Tabix index of the known_sites pattern: "*.vcf.gz.tbi" + ontologies: [] output: - - table: - - meta: + table: + - - meta: type: map description: | Groovy Map containing sample information @@ -90,11 +99,14 @@ output: type: file description: Recalibration table from BaseRecalibrator pattern: "*.{table}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@yocra3" - "@FriederikeHanssen" diff --git a/modules/nf-core/gatk4/calculatecontamination/meta.yml b/modules/nf-core/gatk4/calculatecontamination/meta.yml index ee90a4825..477e9d3b1 100644 --- a/modules/nf-core/gatk4/calculatecontamination/meta.yml +++ b/modules/nf-core/gatk4/calculatecontamination/meta.yml @@ -29,38 +29,45 @@ input: description: File containing the pileups summary table of a tumor sample to be used to calculate contamination. pattern: "*.pileups.table" + ontologies: [] - matched: type: file description: File containing the pileups summary table of a normal sample that matches with the tumor sample specified in pileup argument. This is an optional input. pattern: "*.pileups.table" + ontologies: [] output: - - contamination: - - meta: + contamination: + - - meta: type: file description: File containing the contamination table. pattern: "*.contamination.table" + ontologies: [] - "*.contamination.table": type: file description: File containing the contamination table. pattern: "*.contamination.table" - - segmentation: - - meta: + ontologies: [] + segmentation: + - - meta: type: file - description: output table containing segmentation of tumor minor allele fractions - (optional) - pattern: "*.segmentation.table" + description: File containing the contamination table. + pattern: "*.contamination.table" + ontologies: [] - "*.segmentation.table": type: file description: output table containing segmentation of tumor minor allele fractions (optional) pattern: "*.segmentation.table" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@GCJMackenzie" - "@maxulysse" diff --git a/modules/nf-core/gatk4/cnnscorevariants/meta.yml b/modules/nf-core/gatk4/cnnscorevariants/meta.yml index b55c9d999..ad1f7f91e 100644 --- a/modules/nf-core/gatk4/cnnscorevariants/meta.yml +++ b/modules/nf-core/gatk4/cnnscorevariants/meta.yml @@ -25,40 +25,51 @@ input: type: file description: VCF file pattern: "*.vcf.gz" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format - tbi: type: file description: VCF index file pattern: "*.vcf.gz.tbi" + ontologies: [] - aligned_input: type: file description: BAM/CRAM file from alignment (optional) pattern: "*.{bam,cram}" + ontologies: [] - intervals: type: file description: Bed file with the genomic regions included in the library (optional) - - - fasta: - type: file - description: The reference fasta file - pattern: "*.fasta" - - - fai: - type: file - description: Index of reference fasta file - pattern: "*.fasta.fai" - - - dict: - type: file - description: GATK sequence dictionary - pattern: "*.dict" - - - architecture: - type: file - description: Neural Net architecture configuration json file (optional) - pattern: "*.json" - - - weights: - type: file - description: Keras model HD5 file with neural net weights. (optional) - pattern: "*.hd5" + ontologies: [] + - fasta: + type: file + description: The reference fasta file + pattern: "*.fasta" + ontologies: [] + - fai: + type: file + description: Index of reference fasta file + pattern: "*.fasta.fai" + ontologies: [] + - dict: + type: file + description: GATK sequence dictionary + pattern: "*.dict" + ontologies: [] + - architecture: + type: file + description: Neural Net architecture configuration json file (optional) + pattern: "*.json" + ontologies: + - edam: http://edamontology.org/format_3464 # JSON + - weights: + type: file + description: Keras model HD5 file with neural net weights. (optional) + pattern: "*.hd5" + ontologies: [] output: - - vcf: - - meta: + vcf: + - - meta: type: map description: | Groovy Map containing sample information @@ -67,8 +78,9 @@ output: type: file description: Annotated VCF file pattern: "*.vcf" - - tbi: - - meta: + ontologies: [] + tbi: + - - meta: type: map description: | Groovy Map containing sample information @@ -77,11 +89,14 @@ output: type: file description: VCF index file pattern: "*.vcf.gz.tbi" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@FriederikeHanssen" maintainers: diff --git a/modules/nf-core/gatk4/createsequencedictionary/meta.yml b/modules/nf-core/gatk4/createsequencedictionary/meta.yml index 7b5156bb3..72dced28c 100644 --- a/modules/nf-core/gatk4/createsequencedictionary/meta.yml +++ b/modules/nf-core/gatk4/createsequencedictionary/meta.yml @@ -26,21 +26,26 @@ input: type: file description: Input fasta file pattern: "*.{fasta,fa}" + ontologies: [] output: - - dict: - - meta: + dict: + - - meta: type: file description: gatk dictionary file pattern: "*.{dict}" + ontologies: [] - "*.dict": type: file description: gatk dictionary file pattern: "*.{dict}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@maxulysse" - "@ramprasadn" diff --git a/modules/nf-core/gatk4/estimatelibrarycomplexity/meta.yml b/modules/nf-core/gatk4/estimatelibrarycomplexity/meta.yml index 4fb06a3a2..9220592ae 100644 --- a/modules/nf-core/gatk4/estimatelibrarycomplexity/meta.yml +++ b/modules/nf-core/gatk4/estimatelibrarycomplexity/meta.yml @@ -24,21 +24,25 @@ input: type: file description: BAM/CRAM/SAM file pattern: "*.{bam,cram,sam}" - - - fasta: - type: file - description: The reference fasta file - pattern: "*.fasta" - - - fai: - type: file - description: Index of reference fasta file - pattern: "fasta.fai" - - - dict: - type: file - description: GATK sequence dictionary - pattern: "*.dict" + ontologies: [] + - fasta: + type: file + description: The reference fasta file + pattern: "*.fasta" + ontologies: [] + - fai: + type: file + description: Index of reference fasta file + pattern: "fasta.fai" + ontologies: [] + - dict: + type: file + description: GATK sequence dictionary + pattern: "*.dict" + ontologies: [] output: - - metrics: - - meta: + metrics: + - - meta: type: map description: | Groovy Map containing sample information @@ -47,11 +51,14 @@ output: type: file description: File containing metrics on the input files pattern: "*.{metrics}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@FriederikeHanssen" - "@maxulysse" diff --git a/modules/nf-core/gatk4/filtermutectcalls/meta.yml b/modules/nf-core/gatk4/filtermutectcalls/meta.yml index 9287277eb..fa49f284e 100644 --- a/modules/nf-core/gatk4/filtermutectcalls/meta.yml +++ b/modules/nf-core/gatk4/filtermutectcalls/meta.yml @@ -27,28 +27,36 @@ input: type: file description: compressed vcf file of mutect2calls pattern: "*.vcf.gz" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format - vcf_tbi: type: file description: Tabix index of vcf file pattern: "*vcf.gz.tbi" + ontologies: [] - stats: type: file description: Stats file that pairs with output vcf file pattern: "*vcf.gz.stats" + ontologies: [] - orientationbias: type: file description: files containing artifact priors for input vcf. Optional input. pattern: "*.artifact-prior.tar.gz" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format - segmentation: type: file description: tables containing segmentation information for input vcf. Optional input. pattern: "*.segmentation.table" + ontologies: [] - table: type: file description: table(s) containing contamination data for input vcf. Optional input, takes priority over estimate. pattern: "*.contamination.table" + ontologies: [] - estimate: type: float description: estimation of contamination value as a double. Optional input, @@ -62,6 +70,7 @@ input: type: file description: The reference fasta file pattern: "*.fasta" + ontologies: [] - - meta3: type: map description: | @@ -71,6 +80,7 @@ input: type: file description: Index of reference fasta file pattern: "*.fasta.fai" + ontologies: [] - - meta4: type: map description: | @@ -80,39 +90,53 @@ input: type: file description: GATK sequence dictionary pattern: "*.dict" + ontologies: [] output: - - vcf: - - meta: + vcf: + - - meta: type: file description: file containing filtered mutect2 calls. pattern: "*.vcf.gz" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format - "*.vcf.gz": type: file description: file containing filtered mutect2 calls. pattern: "*.vcf.gz" - - tbi: - - meta: + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + tbi: + - - meta: type: file - description: tbi file that pairs with vcf. - pattern: "*.vcf.gz.tbi" + description: file containing filtered mutect2 calls. + pattern: "*.vcf.gz" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format - "*.vcf.gz.tbi": type: file description: tbi file that pairs with vcf. pattern: "*.vcf.gz.tbi" - - stats: - - meta: + ontologies: [] + stats: + - - meta: type: file - description: file containing statistics of the filtermutectcalls run. - pattern: "*.filteringStats.tsv" + description: file containing filtered mutect2 calls. + pattern: "*.vcf.gz" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format - "*.filteringStats.tsv": type: file description: file containing statistics of the filtermutectcalls run. pattern: "*.filteringStats.tsv" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3475 # TSV + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@GCJMackenzie" - "@maxulysse" diff --git a/modules/nf-core/gatk4/filtervarianttranches/meta.yml b/modules/nf-core/gatk4/filtervarianttranches/meta.yml index 398bbb07c..f40301520 100644 --- a/modules/nf-core/gatk4/filtervarianttranches/meta.yml +++ b/modules/nf-core/gatk4/filtervarianttranches/meta.yml @@ -25,38 +25,45 @@ input: type: file description: a VCF file containing variants, must have info key:CNN_2D pattern: "*.vcf.gz" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format - tbi: type: file description: tbi file matching with -vcf pattern: "*.vcf.gz.tbi" + ontologies: [] - intervals: type: file description: Intervals - - - resources: - type: list - description: resource A VCF containing known SNP and or INDEL sites. Can be - supplied as many times as necessary - pattern: "*.vcf.gz" - - - resources_index: - type: list - description: Index of resource VCF containing known SNP and or INDEL sites. - Can be supplied as many times as necessary - pattern: "*.vcf.gz" - - - fasta: - type: file - description: The reference fasta file - pattern: "*.fasta" - - - fai: - type: file - description: Index of reference fasta file - pattern: "fasta.fai" - - - dict: - type: file - description: GATK sequence dictionary - pattern: ".dict" + ontologies: [] + - resources: + type: list + description: resource A VCF containing known SNP and or INDEL sites. Can be supplied + as many times as necessary + pattern: "*.vcf.gz" + - resources_index: + type: list + description: Index of resource VCF containing known SNP and or INDEL sites. Can + be supplied as many times as necessary + pattern: "*.vcf.gz" + - fasta: + type: file + description: The reference fasta file + pattern: "*.fasta" + ontologies: [] + - fai: + type: file + description: Index of reference fasta file + pattern: "fasta.fai" + ontologies: [] + - dict: + type: file + description: GATK sequence dictionary + pattern: ".dict" + ontologies: [] output: - - vcf: - - meta: + vcf: + - - meta: type: map description: | Groovy Map containing sample information @@ -65,8 +72,10 @@ output: type: file description: VCF file pattern: "*.vcf.gz" - - tbi: - - meta: + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + tbi: + - - meta: type: map description: | Groovy Map containing sample information @@ -75,11 +84,14 @@ output: type: file description: VCF index file pattern: "*.vcf.gz.tbi" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@FriederikeHanssen" maintainers: diff --git a/modules/nf-core/gatk4/gatherbqsrreports/meta.yml b/modules/nf-core/gatk4/gatherbqsrreports/meta.yml index 587175b3a..0d880d040 100644 --- a/modules/nf-core/gatk4/gatherbqsrreports/meta.yml +++ b/modules/nf-core/gatk4/gatherbqsrreports/meta.yml @@ -24,9 +24,10 @@ input: type: file description: File(s) containing BQSR table(s) pattern: "*.table" + ontologies: [] output: - - table: - - meta: + table: + - - meta: type: map description: | Groovy Map containing sample information @@ -35,11 +36,14 @@ output: type: file description: File containing joined BQSR table pattern: "*.table" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@FriederikeHanssen" maintainers: diff --git a/modules/nf-core/gatk4/gatherpileupsummaries/meta.yml b/modules/nf-core/gatk4/gatherpileupsummaries/meta.yml index d8b29d210..1e5d08556 100644 --- a/modules/nf-core/gatk4/gatherpileupsummaries/meta.yml +++ b/modules/nf-core/gatk4/gatherpileupsummaries/meta.yml @@ -23,12 +23,14 @@ input: type: file description: Pileup files from gatk4/getpileupsummaries pattern: "*.pileups.table" - - - dict: - type: file - description: dictionary + ontologies: [] + - dict: + type: file + description: dictionary + ontologies: [] output: - - table: - - meta: + table: + - - meta: type: map description: | Groovy Map containing sample information @@ -37,11 +39,14 @@ output: type: file description: pileup summaries table file pattern: "*.pileups.table" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@FriederikeHanssen" - "@maxulysse" diff --git a/modules/nf-core/gatk4/genomicsdbimport/meta.yml b/modules/nf-core/gatk4/genomicsdbimport/meta.yml index ba734b288..3a472e11d 100644 --- a/modules/nf-core/gatk4/genomicsdbimport/meta.yml +++ b/modules/nf-core/gatk4/genomicsdbimport/meta.yml @@ -36,6 +36,7 @@ input: type: file description: file containing the intervals to be used when creating the genomicsdb pattern: "*.interval_list" + ontologies: [] - interval_value: type: string description: if an intervals file has not been specified, the value entered @@ -47,68 +48,60 @@ input: get intervals mode. This WILL NOT specify name of a new genomicsdb in create db mode. pattern: "/path/to/existing/gendb" - - - run_intlist: - type: boolean - description: Specify whether to run get interval list mode, this option cannot - be specified at the same time as run_updatewspace. - pattern: "true/false" - - - run_updatewspace: - type: boolean - description: Specify whether to run update genomicsdb mode, this option takes - priority over run_intlist. - pattern: "true/false" - - - input_map: - type: boolean - description: Specify whether the vcf input is providing a list of vcf file(s) - or a single file containing a map of paths to vcf files to be used to create - or update a genomicsdb. - pattern: "*.sample_map" + ontologies: [] + - run_intlist: + type: boolean + description: Specify whether to run get interval list mode, this option cannot + be specified at the same time as run_updatewspace. + pattern: "true/false" + - run_updatewspace: + type: boolean + description: Specify whether to run update genomicsdb mode, this option takes + priority over run_intlist. + pattern: "true/false" + - input_map: + type: boolean + description: Specify whether the vcf input is providing a list of vcf file(s) + or a single file containing a map of paths to vcf files to be used to create + or update a genomicsdb. + pattern: "*.sample_map" output: - - genomicsdb: - - meta: - type: directory - description: Directory containing the files that compose the genomicsdb workspace, - this is only output for create mode, as update changes an existing db - pattern: "*/$prefix" + genomicsdb: + - - meta: + type: map + description: A Groovy map containing sample information - $prefix: type: directory description: Directory containing the files that compose the genomicsdb workspace, this is only output for create mode, as update changes an existing db pattern: "*/$prefix" - - updatedb: - - meta: - type: directory - description: Directory containing the files that compose the updated genomicsdb - workspace, this is only output for update mode, and should be the same path - as the input wspace. - pattern: "same/path/as/wspace" + updatedb: + - - meta: + type: map + description: A Groovy map containing sample information - $updated_db: type: directory description: Directory containing the files that compose the updated genomicsdb workspace, this is only output for update mode, and should be the same path as the input wspace. pattern: "same/path/as/wspace" - - intervallist: - - meta: - type: file - description: File containing the intervals used to generate the genomicsdb, - only created by get intervals mode. - pattern: "*.interval_list" + intervallist: + - - meta: + type: map + description: A Groovy map containing sample information - "*.interval_list": type: file description: File containing the intervals used to generate the genomicsdb, only created by get intervals mode. pattern: "*.interval_list" - - list: - type: file - description: File containing the intervals used to generate the genomicsdb, - only created by get intervals mode. - pattern: "*.interval_list" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@GCJMackenzie" maintainers: diff --git a/modules/nf-core/gatk4/genotypegvcfs/meta.yml b/modules/nf-core/gatk4/genotypegvcfs/meta.yml index 0c1fe491f..7bc1b25e8 100644 --- a/modules/nf-core/gatk4/genotypegvcfs/meta.yml +++ b/modules/nf-core/gatk4/genotypegvcfs/meta.yml @@ -26,18 +26,22 @@ input: description: | gVCF(.gz) file or a GenomicsDB pattern: "*.{vcf,vcf.gz}" + ontologies: [] - gvcf_index: type: file description: | index of gvcf file, or empty when providing GenomicsDB pattern: "*.{idx,tbi}" + ontologies: [] - intervals: type: file description: Interval file with the genomic regions included in the library (optional) + ontologies: [] - intervals_index: type: file description: Interval index file (optional) + ontologies: [] - - meta2: type: map description: | @@ -47,6 +51,7 @@ input: type: file description: Reference fasta file pattern: "*.fasta" + ontologies: [] - - meta3: type: map description: | @@ -56,6 +61,7 @@ input: type: file description: Reference fasta index file pattern: "*.fai" + ontologies: [] - - meta4: type: map description: | @@ -65,6 +71,7 @@ input: type: file description: Reference fasta sequence dict file pattern: "*.dict" + ontologies: [] - - meta5: type: map description: | @@ -74,6 +81,8 @@ input: type: file description: dbSNP VCF file pattern: "*.vcf.gz" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format - - meta6: type: map description: | @@ -83,9 +92,10 @@ input: type: file description: dbSNP VCF index file pattern: "*.tbi" + ontologies: [] output: - - vcf: - - meta: + vcf: + - - meta: type: map description: | Groovy Map containing sample information @@ -94,8 +104,10 @@ output: type: file description: Genotyped VCF file pattern: "*.vcf.gz" - - tbi: - - meta: + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + tbi: + - - meta: type: map description: | Groovy Map containing sample information @@ -104,11 +116,15 @@ output: type: file description: Tbi index for VCF file pattern: "*.vcf.gz" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@santiagorevale" - "@maxulysse" diff --git a/modules/nf-core/gatk4/getpileupsummaries/meta.yml b/modules/nf-core/gatk4/getpileupsummaries/meta.yml index 86b851e13..d7f66ad19 100644 --- a/modules/nf-core/gatk4/getpileupsummaries/meta.yml +++ b/modules/nf-core/gatk4/getpileupsummaries/meta.yml @@ -27,15 +27,18 @@ input: type: file description: BAM/CRAM file to be summarised. pattern: "*.{bam,cram}" + ontologies: [] - index: type: file description: Index file for the input BAM/CRAM file. pattern: "*.{bam.bai,cram.crai}" + ontologies: [] - intervals: type: file description: File containing specified sites to be used for the summary. If this option is not specified, variants file is used instead automatically. pattern: "*.interval_list" + ontologies: [] - - meta2: type: map description: | @@ -45,6 +48,7 @@ input: type: file description: The reference fasta file pattern: "*.fasta" + ontologies: [] - - meta3: type: map description: | @@ -54,6 +58,7 @@ input: type: file description: Index of reference fasta file pattern: "*.fasta.fai" + ontologies: [] - - meta4: type: map description: | @@ -63,18 +68,22 @@ input: type: file description: GATK sequence dictionary pattern: "*.dict" - - - variants: - type: file - description: Population vcf of germline sequencing, containing allele fractions. - Is also used as sites file if no separate sites file is specified. - pattern: "*.vcf.gz" - - - variants_tbi: - type: file - description: Index file for the germline resource. - pattern: "*.vcf.gz.tbi" + ontologies: [] + - variants: + type: file + description: Population vcf of germline sequencing, containing allele fractions. + Is also used as sites file if no separate sites file is specified. + pattern: "*.vcf.gz" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + - variants_tbi: + type: file + description: Index file for the germline resource. + pattern: "*.vcf.gz.tbi" + ontologies: [] output: - - table: - - meta: + table: + - - meta: type: map description: | Groovy Map containing sample information @@ -83,11 +92,14 @@ output: type: file description: Table containing read counts for each site. pattern: "*.pileups.table" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@GCJMackenzie" maintainers: diff --git a/modules/nf-core/gatk4/haplotypecaller/meta.yml b/modules/nf-core/gatk4/haplotypecaller/meta.yml index 9d4a05e91..5f9dbd504 100644 --- a/modules/nf-core/gatk4/haplotypecaller/meta.yml +++ b/modules/nf-core/gatk4/haplotypecaller/meta.yml @@ -25,18 +25,22 @@ input: type: file description: BAM/CRAM file from alignment pattern: "*.{bam,cram}" + ontologies: [] - input_index: type: file description: BAI/CRAI file from alignment pattern: "*.{bai,crai}" + ontologies: [] - intervals: type: file description: Bed file with the genomic regions included in the library (optional) + ontologies: [] - dragstr_model: type: file description: Text file containing the DragSTR model of the used BAM/CRAM file (optional) pattern: "*.txt" + ontologies: [] - - meta2: type: map description: | @@ -46,6 +50,7 @@ input: type: file description: The reference fasta file pattern: "*.fasta" + ontologies: [] - - meta3: type: map description: | @@ -55,6 +60,7 @@ input: type: file description: Index of reference fasta file pattern: "fasta.fai" + ontologies: [] - - meta4: type: map description: | @@ -64,6 +70,7 @@ input: type: file description: GATK sequence dictionary pattern: "*.dict" + ontologies: [] - - meta5: type: map description: | @@ -72,6 +79,7 @@ input: - dbsnp: type: file description: VCF file containing known sites (optional) + ontologies: [] - - meta6: type: map description: | @@ -80,9 +88,10 @@ input: - dbsnp_tbi: type: file description: VCF index of dbsnp (optional) + ontologies: [] output: - - vcf: - - meta: + vcf: + - - meta: type: map description: | Groovy Map containing sample information @@ -91,8 +100,10 @@ output: type: file description: Compressed VCF file pattern: "*.vcf.gz" - - tbi: - - meta: + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + tbi: + - - meta: type: map description: | Groovy Map containing sample information @@ -101,8 +112,9 @@ output: type: file description: Index of VCF file pattern: "*.vcf.gz.tbi" - - bam: - - meta: + ontologies: [] + bam: + - - meta: type: map description: | Groovy Map containing sample information @@ -111,11 +123,14 @@ output: type: file description: Assembled haplotypes and locally realigned reads pattern: "*.realigned.bam" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@suzannejin" - "@FriederikeHanssen" diff --git a/modules/nf-core/gatk4/intervallisttobed/meta.yml b/modules/nf-core/gatk4/intervallisttobed/meta.yml index f151daafd..94c9f71de 100644 --- a/modules/nf-core/gatk4/intervallisttobed/meta.yml +++ b/modules/nf-core/gatk4/intervallisttobed/meta.yml @@ -23,9 +23,10 @@ input: - intervals: type: file description: IntervalList file + ontologies: [] output: - - bed: - - meta: + bed: + - - meta: type: map description: | Groovy Map containing sample information @@ -36,11 +37,13 @@ output: Groovy Map containing sample information e.g. [ id:'test', single_end:false ] pattern: "${prefix}.bed" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@FriederikeHanssen" maintainers: diff --git a/modules/nf-core/gatk4/learnreadorientationmodel/main.nf b/modules/nf-core/gatk4/learnreadorientationmodel/main.nf index 86e7daaa6..c3169fda5 100644 --- a/modules/nf-core/gatk4/learnreadorientationmodel/main.nf +++ b/modules/nf-core/gatk4/learnreadorientationmodel/main.nf @@ -1,18 +1,18 @@ process GATK4_LEARNREADORIENTATIONMODEL { - tag "$meta.id" + tag "${meta.id}" label 'process_low' 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/b2/b28daf5d9bb2f0d129dcad1b7410e0dd8a9b087aaf3ec7ced929b1f57624ad98/data': - 'community.wave.seqera.io/library/gatk4_gcnvkernel:e48d414933d188cd' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/b2/b28daf5d9bb2f0d129dcad1b7410e0dd8a9b087aaf3ec7ced929b1f57624ad98/data' + : 'community.wave.seqera.io/library/gatk4_gcnvkernel:e48d414933d188cd'}" input: tuple val(meta), path(f1r2) output: tuple val(meta), path("*.tar.gz"), emit: artifactprior - path "versions.yml" , emit: versions + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when @@ -20,21 +20,33 @@ process GATK4_LEARNREADORIENTATIONMODEL { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def input_list = f1r2.collect{"--input $it"}.join(' ') + def input_list = f1r2.collect { "--input ${it}" }.join(' ') def avail_mem = 3072 if (!task.memory) { - log.info '[GATK LearnReadOrientationModel] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.' - } else { - avail_mem = (task.memory.mega*0.8).intValue() + log.info('[GATK LearnReadOrientationModel] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.') + } + else { + avail_mem = (task.memory.mega * 0.8).intValue() } """ gatk --java-options "-Xmx${avail_mem}M -XX:-UsePerfData" \\ LearnReadOrientationModel \\ - $input_list \\ + ${input_list} \\ --output ${prefix}.tar.gz \\ --tmp-dir . \\ - $args + ${args} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + gatk4: \$(echo \$(gatk --version 2>&1) | sed 's/^.*(GATK) v//; s/ .*\$//') + END_VERSIONS + """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + echo "" | gzip > ${prefix}.tar.gz cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/gatk4/learnreadorientationmodel/meta.yml b/modules/nf-core/gatk4/learnreadorientationmodel/meta.yml index fde7829c8..aeda97b03 100644 --- a/modules/nf-core/gatk4/learnreadorientationmodel/meta.yml +++ b/modules/nf-core/gatk4/learnreadorientationmodel/meta.yml @@ -28,20 +28,26 @@ input: description: list of f1r2 files to be used as input. pattern: "*.f1r2.tar.gz" output: - - artifactprior: - - meta: + artifactprior: + - - meta: type: file description: file containing artifact-priors to be used by filtermutectcalls pattern: "*.tar.gz" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format - "*.tar.gz": type: file description: file containing artifact-priors to be used by filtermutectcalls pattern: "*.tar.gz" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@GCJMackenzie" maintainers: diff --git a/modules/nf-core/gatk4/markduplicates/meta.yml b/modules/nf-core/gatk4/markduplicates/meta.yml index 4772c5f39..335c309a9 100644 --- a/modules/nf-core/gatk4/markduplicates/meta.yml +++ b/modules/nf-core/gatk4/markduplicates/meta.yml @@ -28,17 +28,20 @@ input: type: file description: Sorted BAM file pattern: "*.{bam}" - - - fasta: - type: file - description: Fasta file - pattern: "*.{fasta}" - - - fasta_fai: - type: file - description: Fasta index file - pattern: "*.{fai}" + ontologies: [] + - fasta: + type: file + description: Fasta file + pattern: "*.{fasta}" + ontologies: [] + - fasta_fai: + type: file + description: Fasta index file + pattern: "*.{fai}" + ontologies: [] output: - - cram: - - meta: + cram: + - - meta: type: map description: | Groovy Map containing sample information @@ -47,8 +50,9 @@ output: type: file description: Marked duplicates CRAM file pattern: "*.{cram}" - - bam: - - meta: + ontologies: [] + bam: + - - meta: type: map description: | Groovy Map containing sample information @@ -57,8 +61,9 @@ output: type: file description: Marked duplicates BAM file pattern: "*.{bam}" - - crai: - - meta: + ontologies: [] + crai: + - - meta: type: map description: | Groovy Map containing sample information @@ -67,8 +72,9 @@ output: type: file description: CRAM index file pattern: "*.{cram.crai}" - - bai: - - meta: + ontologies: [] + bai: + - - meta: type: map description: | Groovy Map containing sample information @@ -77,8 +83,9 @@ output: type: file description: BAM index file pattern: "*.{bam.bai}" - - metrics: - - meta: + ontologies: [] + metrics: + - - meta: type: map description: | Groovy Map containing sample information @@ -87,11 +94,14 @@ output: type: file description: Duplicate metrics file generated by GATK pattern: "*.{metrics.txt}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@ajodeh-juma" - "@FriederikeHanssen" diff --git a/modules/nf-core/gatk4/mergemutectstats/meta.yml b/modules/nf-core/gatk4/mergemutectstats/meta.yml index 09c8a5472..1c414404a 100644 --- a/modules/nf-core/gatk4/mergemutectstats/meta.yml +++ b/modules/nf-core/gatk4/mergemutectstats/meta.yml @@ -24,9 +24,10 @@ input: type: file description: Stats file pattern: "*.{stats}" + ontologies: [] output: - - stats: - - meta: + stats: + - - meta: type: map description: | Groovy Map containing sample information @@ -35,11 +36,14 @@ output: type: file description: Stats file pattern: "*.vcf.gz.stats" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@FriederikeHanssen" maintainers: diff --git a/modules/nf-core/gatk4/mergevcfs/meta.yml b/modules/nf-core/gatk4/mergevcfs/meta.yml index b4f61d780..aa99a463b 100644 --- a/modules/nf-core/gatk4/mergevcfs/meta.yml +++ b/modules/nf-core/gatk4/mergevcfs/meta.yml @@ -34,30 +34,40 @@ input: type: file description: Optional Sequence Dictionary as input pattern: "*.dict" + ontologies: [] output: - - vcf: - - meta: + vcf: + - - meta: type: file description: merged vcf file pattern: "*.vcf.gz" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format - "*.vcf.gz": type: file description: merged vcf file pattern: "*.vcf.gz" - - tbi: - - meta: + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + tbi: + - - meta: type: file - description: index files for the merged vcf files - pattern: "*.tbi" + description: merged vcf file + pattern: "*.vcf.gz" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format - "*.tbi": type: file description: index files for the merged vcf files pattern: "*.tbi" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@kevinmenden" maintainers: diff --git a/modules/nf-core/gatk4/mutect2/meta.yml b/modules/nf-core/gatk4/mutect2/meta.yml index 27fd63a24..176f05a47 100644 --- a/modules/nf-core/gatk4/mutect2/meta.yml +++ b/modules/nf-core/gatk4/mutect2/meta.yml @@ -37,6 +37,7 @@ input: type: file description: Specify region the tools is run on. pattern: ".{bed,interval_list}" + ontologies: [] - - meta2: type: map description: | @@ -46,6 +47,7 @@ input: type: file description: The reference fasta file pattern: "*.fasta" + ontologies: [] - - meta3: type: map description: | @@ -55,6 +57,7 @@ input: type: file description: Index of reference fasta file pattern: "*.fasta.fai" + ontologies: [] - - meta4: type: map description: | @@ -64,66 +67,76 @@ input: type: file description: GATK sequence dictionary pattern: "*.dict" - - - germline_resource: - type: file - description: Population vcf of germline sequencing, containing allele fractions. - pattern: "*.vcf.gz" - - - germline_resource_tbi: - type: file - description: Index file for the germline resource. - pattern: "*.vcf.gz.tbi" - - - panel_of_normals: - type: file - description: vcf file to be used as a panel of normals. - pattern: "*.vcf.gz" - - - panel_of_normals_tbi: - type: file - description: Index for the panel of normals. - pattern: "*.vcf.gz.tbi" + ontologies: [] + - germline_resource: + type: file + description: Population vcf of germline sequencing, containing allele fractions. + pattern: "*.vcf.gz" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + - germline_resource_tbi: + type: file + description: Index file for the germline resource. + pattern: "*.vcf.gz.tbi" + ontologies: [] + - panel_of_normals: + type: file + description: vcf file to be used as a panel of normals. + pattern: "*.vcf.gz" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + - panel_of_normals_tbi: + type: file + description: Index for the panel of normals. + pattern: "*.vcf.gz.tbi" + ontologies: [] output: - - vcf: - - meta: - type: file - description: compressed vcf file - pattern: "*.vcf.gz" + vcf: + - - meta: + type: map + description: A Groovy map containing sample information - "*.vcf.gz": type: file description: compressed vcf file pattern: "*.vcf.gz" - - tbi: - - meta: - type: file - description: Index of vcf file - pattern: "*vcf.gz.tbi" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + tbi: + - - meta: + type: map + description: A Groovy map containing sample information - "*.tbi": type: file description: Index of vcf file pattern: "*vcf.gz.tbi" - - stats: - - meta: - type: file - description: Stats file that pairs with output vcf file - pattern: "*vcf.gz.stats" + ontologies: [] + stats: + - - meta: + type: map + description: A Groovy map containing sample information - "*.stats": type: file description: Stats file that pairs with output vcf file pattern: "*vcf.gz.stats" - - f1r2: - - meta: - type: file - description: file containing information to be passed to LearnReadOrientationModel - (only outputted when tumor_normal_pair mode is run) - pattern: "*.f1r2.tar.gz" + ontologies: [] + f1r2: + - - meta: + type: map + description: A Groovy map containing sample information - "*.f1r2.tar.gz": type: file description: file containing information to be passed to LearnReadOrientationModel (only outputted when tumor_normal_pair mode is run) pattern: "*.f1r2.tar.gz" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@GCJMackenzie" - "@ramprasadn" diff --git a/modules/nf-core/gatk4/variantrecalibrator/meta.yml b/modules/nf-core/gatk4/variantrecalibrator/meta.yml index 72fcfd601..256f1fb70 100644 --- a/modules/nf-core/gatk4/variantrecalibrator/meta.yml +++ b/modules/nf-core/gatk4/variantrecalibrator/meta.yml @@ -29,81 +29,100 @@ input: type: file description: input vcf file containing the variants to be recalibrated pattern: "*.vcf.gz" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format - tbi: type: file description: tbi file matching with -vcf pattern: "*.vcf.gz.tbi" - - - resource_vcf: - type: file - description: all resource vcf files that are used with the corresponding '--resource' - label - pattern: "*.vcf.gz" - - - resource_tbi: - type: file - description: all resource tbi files that are used with the corresponding '--resource' - label - pattern: "*.vcf.gz.tbi" - - - labels: - type: string - description: necessary arguments for GATK VariantRecalibrator. Specified to - directly match the resources provided. More information can be found at - https://gatk.broadinstitute.org/hc/en-us/articles/5358906115227-VariantRecalibrator - - - fasta: - type: file - description: The reference fasta file - pattern: "*.fasta" - - - fai: - type: file - description: Index of reference fasta file - pattern: "fasta.fai" - - - dict: - type: file - description: GATK sequence dictionary - pattern: "*.dict" + ontologies: [] + - resource_vcf: + type: file + description: all resource vcf files that are used with the corresponding '--resource' + label + pattern: "*.vcf.gz" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + - resource_tbi: + type: file + description: all resource tbi files that are used with the corresponding '--resource' + label + pattern: "*.vcf.gz.tbi" + ontologies: [] + - labels: + type: string + description: necessary arguments for GATK VariantRecalibrator. Specified to directly + match the resources provided. More information can be found at + https://gatk.broadinstitute.org/hc/en-us/articles/5358906115227-VariantRecalibrator + - fasta: + type: file + description: The reference fasta file + pattern: "*.fasta" + ontologies: [] + - fai: + type: file + description: Index of reference fasta file + pattern: "fasta.fai" + ontologies: [] + - dict: + type: file + description: GATK sequence dictionary + pattern: "*.dict" + ontologies: [] output: - - recal: - - meta: + recal: + - - meta: type: file description: Output recal file used by ApplyVQSR pattern: "*.recal" + ontologies: [] - "*.recal": type: file description: Output recal file used by ApplyVQSR pattern: "*.recal" - - idx: - - meta: + ontologies: [] + idx: + - - meta: type: file - description: Index file for the recal output file - pattern: "*.idx" + description: Output recal file used by ApplyVQSR + pattern: "*.recal" + ontologies: [] - "*.idx": type: file description: Index file for the recal output file pattern: "*.idx" - - tranches: - - meta: + ontologies: [] + tranches: + - - meta: type: file - description: Output tranches file used by ApplyVQSR - pattern: "*.tranches" + description: Output recal file used by ApplyVQSR + pattern: "*.recal" + ontologies: [] - "*.tranches": type: file description: Output tranches file used by ApplyVQSR pattern: "*.tranches" - - plots: - - meta: + ontologies: [] + plots: + - - meta: type: file - description: Optional output rscript file to aid in visualization of the input - data and learned model. - pattern: "*plots.R" + description: Output recal file used by ApplyVQSR + pattern: "*.recal" + ontologies: [] - "*plots.R": type: file description: Optional output rscript file to aid in visualization of the input data and learned model. pattern: "*plots.R" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3999 # R script + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@GCJMackenzie" - "@nickhsmith" diff --git a/modules/nf-core/gatk4spark/baserecalibrator/meta.yml b/modules/nf-core/gatk4spark/baserecalibrator/meta.yml index abb0e1a65..eaade6f55 100644 --- a/modules/nf-core/gatk4spark/baserecalibrator/meta.yml +++ b/modules/nf-core/gatk4spark/baserecalibrator/meta.yml @@ -27,36 +27,45 @@ input: type: file description: BAM/CRAM file from alignment pattern: "*.{bam,cram}" + ontologies: [] - input_index: type: file description: BAI/CRAI file from alignment pattern: "*.{bai,crai}" + ontologies: [] - intervals: type: file description: Bed file with the genomic regions included in the library (optional) - - - fasta: - type: file - description: The reference fasta file - pattern: "*.fasta" - - - fai: - type: file - description: Index of reference fasta file - pattern: "*.fasta.fai" - - - dict: - type: file - description: GATK sequence dictionary - pattern: "*.dict" - - - known_sites: - type: file - description: VCF files with known sites for indels / snps (optional) - pattern: "*.vcf.gz" - - - known_sites_tbi: - type: file - description: Tabix index of the known_sites (optional) - pattern: "*.vcf.gz.tbi" + ontologies: [] + - fasta: + type: file + description: The reference fasta file + pattern: "*.fasta" + ontologies: [] + - fai: + type: file + description: Index of reference fasta file + pattern: "*.fasta.fai" + ontologies: [] + - dict: + type: file + description: GATK sequence dictionary + pattern: "*.dict" + ontologies: [] + - known_sites: + type: file + description: VCF files with known sites for indels / snps (optional) + pattern: "*.vcf.gz" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + - known_sites_tbi: + type: file + description: Tabix index of the known_sites (optional) + pattern: "*.vcf.gz.tbi" + ontologies: [] output: - - table: - - meta: + table: + - - meta: type: map description: | Groovy Map containing sample information @@ -65,11 +74,14 @@ output: type: file description: Recalibration table from BaseRecalibrator pattern: "*.{table}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@yocra3" - "@FriederikeHanssen" diff --git a/modules/nf-core/gatk4spark/markduplicates/meta.yml b/modules/nf-core/gatk4spark/markduplicates/meta.yml index fc8dee3df..9024e8126 100644 --- a/modules/nf-core/gatk4spark/markduplicates/meta.yml +++ b/modules/nf-core/gatk4spark/markduplicates/meta.yml @@ -28,21 +28,25 @@ input: type: file description: Sorted BAM file pattern: "*.{bam}" - - - fasta: - type: file - description: The reference fasta file - pattern: "*.fasta" - - - fasta_fai: - type: file - description: Index of reference fasta file - pattern: "*.fai" - - - dict: - type: file - description: GATK sequence dictionary - pattern: "*.dict" + ontologies: [] + - fasta: + type: file + description: The reference fasta file + pattern: "*.fasta" + ontologies: [] + - fasta_fai: + type: file + description: Index of reference fasta file + pattern: "*.fai" + ontologies: [] + - dict: + type: file + description: GATK sequence dictionary + pattern: "*.dict" + ontologies: [] output: - - output: - - meta: + output: + - - meta: type: map description: | Groovy Map containing sample information @@ -51,8 +55,9 @@ output: type: file description: Marked duplicates BAM/CRAM file pattern: "*.{bam,cram}" - - bam_index: - - meta: + ontologies: [] + bam_index: + - - meta: type: map description: | Groovy Map containing sample information @@ -61,8 +66,9 @@ output: type: file description: Optional BAM index file pattern: "*.bai" - - metrics: - - meta: + ontologies: [] + metrics: + - - meta: type: map description: | Groovy Map containing sample information @@ -71,11 +77,14 @@ output: type: file description: Metrics file pattern: "*.metrics" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@ajodeh-juma" - "@FriederikeHanssen" diff --git a/modules/nf-core/gawk/meta.yml b/modules/nf-core/gawk/meta.yml index 34c50b125..732e18a97 100644 --- a/modules/nf-core/gawk/meta.yml +++ b/modules/nf-core/gawk/meta.yml @@ -26,37 +26,42 @@ input: - input: type: file description: The input file - Specify the logic that needs to be executed on - this file on the `ext.args2` or in the program file. - If the files have a `.gz` extension, they will be unzipped using `zcat`. + this file on the `ext.args2` or in the program file. If the files have a `.gz` + extension, they will be unzipped using `zcat`. pattern: "*" - - - program_file: - type: file - description: Optional file containing logic for awk to execute. If you don't - wish to use a file, you can use `ext.args2` to specify the logic. - pattern: "*" - - - disable_redirect_output: - type: boolean - description: Disable the redirection of awk output to a given file. This is - useful if you want to use awk's built-in redirect to write files instead - of the shell's redirect. + ontologies: [] + - program_file: + type: file + description: Optional file containing logic for awk to execute. If you don't wish + to use a file, you can use `ext.args2` to specify the logic. + pattern: "*" + ontologies: [] + - disable_redirect_output: + type: boolean + description: Disable the redirection of awk output to a given file. This is useful + if you want to use awk's built-in redirect to write files instead of the shell's + redirect. output: - - output: - - meta: + output: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - "*.${suffix}": type: file - description: The output file - if using shell redirection, specify the name of this - file using `ext.prefix` and the extension using `ext.suffix`. Otherwise, ensure - the awk program produces files with the extension in `ext.suffix`. + description: The output file - if using shell redirection, specify the name + of this file using `ext.prefix` and the extension using `ext.suffix`. Otherwise, + ensure the awk program produces files with the extension in `ext.suffix`. pattern: "*" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@nvnieuwk" maintainers: diff --git a/modules/nf-core/goleft/indexcov/meta.yml b/modules/nf-core/goleft/indexcov/meta.yml index 1619caf32..18ecc4b16 100644 --- a/modules/nf-core/goleft/indexcov/meta.yml +++ b/modules/nf-core/goleft/indexcov/meta.yml @@ -28,10 +28,12 @@ input: type: file description: Sorted BAM/CRAM/SAM files pattern: "*.{bam,cram,sam}" + ontologies: [] - indexes: type: file description: BAI/CRAI files pattern: "*.{bai,crai}" + ontologies: [] - - meta2: type: map description: | @@ -41,9 +43,10 @@ input: type: file description: FASTA index pattern: "*.{fai}" + ontologies: [] output: - - output: - - meta: + output: + - - meta: type: map description: | Groovy Map containing sample information @@ -51,8 +54,9 @@ output: - ${prefix}/*: type: file description: Files generated by indexcov - - ped: - - meta: + ontologies: [] + ped: + - - meta: type: map description: | Groovy Map containing sample information @@ -61,8 +65,9 @@ output: type: file description: ped files pattern: "*ped" - - bed: - - meta: + ontologies: [] + bed: + - - meta: type: map description: | Groovy Map containing sample information @@ -71,8 +76,10 @@ output: type: file description: bed files pattern: "*bed.gz" - - bed_index: - - meta: + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + bed_index: + - - meta: type: map description: | Groovy Map containing sample information @@ -81,8 +88,9 @@ output: type: file description: bed index files pattern: "*bed.gz.tbi" - - roc: - - meta: + ontologies: [] + roc: + - - meta: type: map description: | Groovy Map containing sample information @@ -91,8 +99,9 @@ output: type: file description: roc files pattern: "*roc" - - html: - - meta: + ontologies: [] + html: + - - meta: type: map description: | Groovy Map containing sample information @@ -101,8 +110,9 @@ output: type: file description: html files pattern: "*html" - - png: - - meta: + ontologies: [] + png: + - - meta: type: map description: | Groovy Map containing sample information @@ -111,11 +121,14 @@ output: type: file description: png files pattern: "*png" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@lindenb" maintainers: diff --git a/modules/nf-core/lofreq/callparallel/meta.yml b/modules/nf-core/lofreq/callparallel/meta.yml index 25a33e85c..a607bab8f 100644 --- a/modules/nf-core/lofreq/callparallel/meta.yml +++ b/modules/nf-core/lofreq/callparallel/meta.yml @@ -25,14 +25,17 @@ input: type: file description: Tumor sample sorted BAM file pattern: "*.{bam}" + ontologies: [] - bai: type: file description: BAM index file pattern: "*.{bam.bai}" + ontologies: [] - intervals: type: file description: BED file containing target regions for variant calling pattern: "*.{bed}" + ontologies: [] - - meta2: type: map description: | @@ -42,6 +45,7 @@ input: type: file description: Reference genome FASTA file pattern: "*.{fasta}" + ontologies: [] - - meta3: type: map description: | @@ -51,9 +55,10 @@ input: type: file description: Reference genome FASTA index file pattern: "*.{fai}" + ontologies: [] output: - - vcf: - - meta: + vcf: + - - meta: type: map description: | Groovy Map containing sample information @@ -62,8 +67,9 @@ output: type: file description: Predicted variants file pattern: "*.{vcf}" - - tbi: - - meta: + ontologies: [] + tbi: + - - meta: type: map description: | Groovy Map containing sample information @@ -72,11 +78,14 @@ output: type: file description: Index of vcf file pattern: "*.{vcf.gz.tbi}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@kaurravneet4123" - "@bjohnnyd" diff --git a/modules/nf-core/manta/germline/meta.yml b/modules/nf-core/manta/germline/meta.yml index 4072ab8e5..9774e1a05 100644 --- a/modules/nf-core/manta/germline/meta.yml +++ b/modules/nf-core/manta/germline/meta.yml @@ -29,18 +29,22 @@ input: type: file description: BAM/CRAM/SAM file. For joint calling use a list of files. pattern: "*.{bam,cram,sam}" + ontologies: [] - index: type: file description: BAM/CRAM/SAM index file. For joint calling use a list of files. pattern: "*.{bai,crai,sai}" + ontologies: [] - target_bed: type: file description: BED file containing target regions for variant calling pattern: "*.{bed}" + ontologies: [] - target_bed_tbi: type: file description: Index for BED file containing target regions for variant calling pattern: "*.{bed.tbi}" + ontologies: [] - - meta2: type: map description: | @@ -50,6 +54,7 @@ input: type: file description: Genome reference FASTA file pattern: "*.{fa,fasta}" + ontologies: [] - - meta3: type: map description: | @@ -59,13 +64,15 @@ input: type: file description: Genome reference FASTA index file pattern: "*.{fa.fai,fasta.fai}" - - - config: - type: file - description: Manta configuration file - pattern: "*.{ini,conf,config}" + ontologies: [] + - config: + type: file + description: Manta configuration file + pattern: "*.{ini,conf,config}" + ontologies: [] output: - - candidate_small_indels_vcf: - - meta: + candidate_small_indels_vcf: + - - meta: type: map description: | Groovy Map containing sample information @@ -74,8 +81,9 @@ output: type: file description: Gzipped VCF file containing variants pattern: "*.{vcf.gz}" - - candidate_small_indels_vcf_tbi: - - meta: + ontologies: [] + candidate_small_indels_vcf_tbi: + - - meta: type: map description: | Groovy Map containing sample information @@ -84,8 +92,9 @@ output: type: file description: Index for gzipped VCF file containing variants pattern: "*.{vcf.gz.tbi}" - - candidate_sv_vcf: - - meta: + ontologies: [] + candidate_sv_vcf: + - - meta: type: map description: | Groovy Map containing sample information @@ -94,8 +103,9 @@ output: type: file description: Gzipped VCF file containing variants pattern: "*.{vcf.gz}" - - candidate_sv_vcf_tbi: - - meta: + ontologies: [] + candidate_sv_vcf_tbi: + - - meta: type: map description: | Groovy Map containing sample information @@ -104,8 +114,9 @@ output: type: file description: Index for gzipped VCF file containing variants pattern: "*.{vcf.gz.tbi}" - - diploid_sv_vcf: - - meta: + ontologies: [] + diploid_sv_vcf: + - - meta: type: map description: | Groovy Map containing sample information @@ -114,8 +125,9 @@ output: type: file description: Gzipped VCF file containing variants pattern: "*.{vcf.gz}" - - diploid_sv_vcf_tbi: - - meta: + ontologies: [] + diploid_sv_vcf_tbi: + - - meta: type: map description: | Groovy Map containing sample information @@ -124,11 +136,14 @@ output: type: file description: Index for gzipped VCF file containing variants pattern: "*.{vcf.gz.tbi}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@maxulysse" - "@ramprasadn" diff --git a/modules/nf-core/manta/somatic/meta.yml b/modules/nf-core/manta/somatic/meta.yml index 11f1fc1ca..3d619dd58 100644 --- a/modules/nf-core/manta/somatic/meta.yml +++ b/modules/nf-core/manta/somatic/meta.yml @@ -29,26 +29,32 @@ input: type: file description: BAM/CRAM/SAM file pattern: "*.{bam,cram,sam}" + ontologies: [] - input_index_normal: type: file description: BAM/CRAM/SAM index file pattern: "*.{bai,crai,sai}" + ontologies: [] - input_tumor: type: file description: BAM/CRAM/SAM file pattern: "*.{bam,cram,sam}" + ontologies: [] - input_index_tumor: type: file description: BAM/CRAM/SAM index file pattern: "*.{bai,crai,sai}" + ontologies: [] - target_bed: type: file description: BED file containing target regions for variant calling pattern: "*.{bed}" + ontologies: [] - target_bed_tbi: type: file description: Index for BED file containing target regions for variant calling pattern: "*.{bed.tbi}" + ontologies: [] - - meta2: type: map description: | @@ -58,6 +64,7 @@ input: type: file description: Genome reference FASTA file pattern: "*.{fa,fasta}" + ontologies: [] - - meta3: type: map description: | @@ -67,13 +74,15 @@ input: type: file description: Genome reference FASTA index file pattern: "*.{fa.fai,fasta.fai}" - - - config: - type: file - description: Manta configuration file - pattern: "*.{ini,conf,config}" + ontologies: [] + - config: + type: file + description: Manta configuration file + pattern: "*.{ini,conf,config}" + ontologies: [] output: - - candidate_small_indels_vcf: - - meta: + candidate_small_indels_vcf: + - - meta: type: map description: | Groovy Map containing sample information @@ -82,8 +91,9 @@ output: type: file description: Gzipped VCF file containing variants pattern: "*.{vcf.gz}" - - candidate_small_indels_vcf_tbi: - - meta: + ontologies: [] + candidate_small_indels_vcf_tbi: + - - meta: type: map description: | Groovy Map containing sample information @@ -92,8 +102,9 @@ output: type: file description: Index for gzipped VCF file containing variants pattern: "*.{vcf.gz.tbi}" - - candidate_sv_vcf: - - meta: + ontologies: [] + candidate_sv_vcf: + - - meta: type: map description: | Groovy Map containing sample information @@ -102,8 +113,9 @@ output: type: file description: Gzipped VCF file containing variants pattern: "*.{vcf.gz}" - - candidate_sv_vcf_tbi: - - meta: + ontologies: [] + candidate_sv_vcf_tbi: + - - meta: type: map description: | Groovy Map containing sample information @@ -112,8 +124,9 @@ output: type: file description: Index for gzipped VCF file containing variants pattern: "*.{vcf.gz.tbi}" - - diploid_sv_vcf: - - meta: + ontologies: [] + diploid_sv_vcf: + - - meta: type: map description: | Groovy Map containing sample information @@ -122,8 +135,9 @@ output: type: file description: Gzipped VCF file containing variants pattern: "*.{vcf.gz}" - - diploid_sv_vcf_tbi: - - meta: + ontologies: [] + diploid_sv_vcf_tbi: + - - meta: type: map description: | Groovy Map containing sample information @@ -132,8 +146,9 @@ output: type: file description: Index for gzipped VCF file containing variants pattern: "*.{vcf.gz.tbi}" - - somatic_sv_vcf: - - meta: + ontologies: [] + somatic_sv_vcf: + - - meta: type: map description: | Groovy Map containing sample information @@ -142,8 +157,9 @@ output: type: file description: Gzipped VCF file containing variants pattern: "*.{vcf.gz}" - - somatic_sv_vcf_tbi: - - meta: + ontologies: [] + somatic_sv_vcf_tbi: + - - meta: type: map description: | Groovy Map containing sample information @@ -152,11 +168,14 @@ output: type: file description: Index for gzipped VCF file containing variants pattern: "*.{vcf.gz.tbi}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@FriederikeHanssen" - "@nvnieuwk" diff --git a/modules/nf-core/manta/tumoronly/meta.yml b/modules/nf-core/manta/tumoronly/meta.yml index 6f629b24d..0773760b5 100644 --- a/modules/nf-core/manta/tumoronly/meta.yml +++ b/modules/nf-core/manta/tumoronly/meta.yml @@ -29,18 +29,22 @@ input: type: file description: BAM/CRAM/SAM file pattern: "*.{bam,cram,sam}" + ontologies: [] - input_index: type: file description: BAM/CRAM/SAM index file pattern: "*.{bai,crai,sai}" + ontologies: [] - target_bed: type: file description: BED file containing target regions for variant calling pattern: "*.{bed}" + ontologies: [] - target_bed_tbi: type: file description: Index for BED file containing target regions for variant calling pattern: "*.{bed.tbi}" + ontologies: [] - - meta2: type: map description: | @@ -50,6 +54,7 @@ input: type: file description: Genome reference FASTA file pattern: "*.{fa,fasta}" + ontologies: [] - - meta3: type: map description: | @@ -59,13 +64,15 @@ input: type: file description: Genome reference FASTA index file pattern: "*.{fa.fai,fasta.fai}" - - - config: - type: file - description: Manta configuration file - pattern: "*.{ini,conf,config}" + ontologies: [] + - config: + type: file + description: Manta configuration file + pattern: "*.{ini,conf,config}" + ontologies: [] output: - - candidate_small_indels_vcf: - - meta: + candidate_small_indels_vcf: + - - meta: type: map description: | Groovy Map containing sample information @@ -74,8 +81,9 @@ output: type: file description: Gzipped VCF file containing variants pattern: "*.{vcf.gz}" - - candidate_small_indels_vcf_tbi: - - meta: + ontologies: [] + candidate_small_indels_vcf_tbi: + - - meta: type: map description: | Groovy Map containing sample information @@ -84,8 +92,9 @@ output: type: file description: Index for gzipped VCF file containing variants pattern: "*.{vcf.gz.tbi}" - - candidate_sv_vcf: - - meta: + ontologies: [] + candidate_sv_vcf: + - - meta: type: map description: | Groovy Map containing sample information @@ -94,8 +103,9 @@ output: type: file description: Gzipped VCF file containing variants pattern: "*.{vcf.gz}" - - candidate_sv_vcf_tbi: - - meta: + ontologies: [] + candidate_sv_vcf_tbi: + - - meta: type: map description: | Groovy Map containing sample information @@ -104,8 +114,9 @@ output: type: file description: Index for gzipped VCF file containing variants pattern: "*.{vcf.gz.tbi}" - - tumor_sv_vcf: - - meta: + ontologies: [] + tumor_sv_vcf: + - - meta: type: map description: | Groovy Map containing sample information @@ -114,8 +125,9 @@ output: type: file description: Gzipped VCF file containing variants pattern: "*.{vcf.gz}" - - tumor_sv_vcf_tbi: - - meta: + ontologies: [] + tumor_sv_vcf_tbi: + - - meta: type: map description: | Groovy Map containing sample information @@ -124,11 +136,14 @@ output: type: file description: Index for gzipped VCF file containing variants pattern: "*.{vcf.gz.tbi}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@maxulysse" - "@nvnieuwk" diff --git a/modules/nf-core/mosdepth/meta.yml b/modules/nf-core/mosdepth/meta.yml index dc783c900..af1ea44ad 100644 --- a/modules/nf-core/mosdepth/meta.yml +++ b/modules/nf-core/mosdepth/meta.yml @@ -23,14 +23,17 @@ input: type: file description: Input BAM/CRAM file pattern: "*.{bam,cram}" + ontologies: [] - bai: type: file description: Index for BAM/CRAM file pattern: "*.{bai,crai}" + ontologies: [] - bed: type: file description: BED file with intersected intervals pattern: "*.{bed}" + ontologies: [] - - meta2: type: map description: | @@ -40,9 +43,10 @@ input: type: file description: Reference genome FASTA file pattern: "*.{fa,fasta}" + ontologies: [] output: - - global_txt: - - meta: + global_txt: + - - meta: type: map description: | Groovy Map containing sample information @@ -51,8 +55,9 @@ output: type: file description: Text file with global cumulative coverage distribution pattern: "*.{global.dist.txt}" - - summary_txt: - - meta: + ontologies: [] + summary_txt: + - - meta: type: map description: | Groovy Map containing sample information @@ -61,8 +66,9 @@ output: type: file description: Text file with summary mean depths per chromosome and regions pattern: "*.{summary.txt}" - - regions_txt: - - meta: + ontologies: [] + regions_txt: + - - meta: type: map description: | Groovy Map containing sample information @@ -71,8 +77,9 @@ output: type: file description: Text file with region cumulative coverage distribution pattern: "*.{region.dist.txt}" - - per_base_d4: - - meta: + ontologies: [] + per_base_d4: + - - meta: type: map description: | Groovy Map containing sample information @@ -81,8 +88,9 @@ output: type: file description: D4 file with per-base coverage pattern: "*.{per-base.d4}" - - per_base_bed: - - meta: + ontologies: [] + per_base_bed: + - - meta: type: map description: | Groovy Map containing sample information @@ -91,8 +99,9 @@ output: type: file description: BED file with per-base coverage pattern: "*.{per-base.bed.gz}" - - per_base_csi: - - meta: + ontologies: [] + per_base_csi: + - - meta: type: map description: | Groovy Map containing sample information @@ -101,8 +110,9 @@ output: type: file description: Index file for BED file with per-base coverage pattern: "*.{per-base.bed.gz.csi}" - - regions_bed: - - meta: + ontologies: [] + regions_bed: + - - meta: type: map description: | Groovy Map containing sample information @@ -111,8 +121,9 @@ output: type: file description: BED file with per-region coverage pattern: "*.{regions.bed.gz}" - - regions_csi: - - meta: + ontologies: [] + regions_csi: + - - meta: type: map description: | Groovy Map containing sample information @@ -121,8 +132,9 @@ output: type: file description: Index file for BED file with per-region coverage pattern: "*.{regions.bed.gz.csi}" - - quantized_bed: - - meta: + ontologies: [] + quantized_bed: + - - meta: type: map description: | Groovy Map containing sample information @@ -131,8 +143,9 @@ output: type: file description: BED file with binned coverage pattern: "*.{quantized.bed.gz}" - - quantized_csi: - - meta: + ontologies: [] + quantized_csi: + - - meta: type: map description: | Groovy Map containing sample information @@ -141,8 +154,9 @@ output: type: file description: Index file for BED file with binned coverage pattern: "*.{quantized.bed.gz.csi}" - - thresholds_bed: - - meta: + ontologies: [] + thresholds_bed: + - - meta: type: map description: | Groovy Map containing sample information @@ -152,8 +166,9 @@ output: description: BED file with the number of bases in each region that are covered at or above each threshold pattern: "*.{thresholds.bed.gz}" - - thresholds_csi: - - meta: + ontologies: [] + thresholds_csi: + - - meta: type: map description: | Groovy Map containing sample information @@ -162,11 +177,14 @@ output: type: file description: Index file for BED file with threshold coverage pattern: "*.{thresholds.bed.gz.csi}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@joseespinosa" - "@drpatelh" diff --git a/modules/nf-core/msisensorpro/msisomatic/environment.yml b/modules/nf-core/msisensorpro/msisomatic/environment.yml index f17216d6c..3b66afc67 100644 --- a/modules/nf-core/msisensorpro/msisomatic/environment.yml +++ b/modules/nf-core/msisensorpro/msisomatic/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::msisensor-pro=1.2.0 + - bioconda::msisensor-pro=1.3.0 diff --git a/modules/nf-core/msisensorpro/msisomatic/main.nf b/modules/nf-core/msisensorpro/msisomatic/main.nf index 9b0084d94..41e8a04cf 100644 --- a/modules/nf-core/msisensorpro/msisomatic/main.nf +++ b/modules/nf-core/msisensorpro/msisomatic/main.nf @@ -4,19 +4,19 @@ process MSISENSORPRO_MSISOMATIC { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/msisensor-pro:1.2.0--hfc31af2_0' : - 'biocontainers/msisensor-pro:1.2.0--hfc31af2_0' }" + 'https://depot.galaxyproject.org/singularity/msisensor-pro%3A1.3.0--hfef96ef_0': + 'biocontainers/msisensor-pro:1.3.0--hfef96ef_0' }" input: tuple val(meta), path(normal), path(normal_index), path(tumor), path(tumor_index), path(intervals) - path (fasta) - path (msisensor_scan) + tuple val(meta2), path(fasta) + path(msisensor_scan) output: tuple val(meta), path("${prefix}") , emit: output_report tuple val(meta), path("${prefix}_dis") , emit: output_dis - tuple val(meta), path("${prefix}_germline"), emit: output_germline - tuple val(meta), path("${prefix}_somatic") , emit: output_somatic + tuple val(meta), path("${prefix}_germline"), emit: output_germline, optional: true + tuple val(meta), path("${prefix}_somatic") , emit: output_somatic, optional: true path "versions.yml" , emit: versions when: @@ -25,19 +25,35 @@ process MSISENSORPRO_MSISOMATIC { script: def args = task.ext.args ?: '' prefix = task.ext.prefix ?: "${meta.id}" - def fasta = fasta ? "-g ${fasta}" : "" - def intervals = intervals ? " -e ${intervals} " : "" + def fasta_cmd = fasta ? "-g ${fasta}" : "" + def intervals_cmd = intervals ? " -e ${intervals} " : "" + """ msisensor-pro \\ msi \\ -d ${msisensor_scan} \\ -n ${normal} \\ -t ${tumor} \\ - ${fasta} \\ - -o $prefix \\ + ${fasta_cmd} \\ + -o ${prefix} \\ -b ${task.cpus} \\ - ${intervals} \\ - $args + ${intervals_cmd} \\ + ${args} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + msisensor-pro: \$(msisensor-pro 2>&1 | sed -nE 's/Version:\\sv([0-9]\\.[0-9])/\\1/ p') + END_VERSIONS + """ + + stub: + prefix = task.ext.prefix ?: "${meta.id}" + + """ + touch ${prefix} + touch ${prefix}_dis + touch ${prefix}_germline + touch ${prefix}_somatic cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/msisensorpro/msisomatic/meta.yml b/modules/nf-core/msisensorpro/msisomatic/meta.yml index 48daa6cc6..1c05e25e3 100644 --- a/modules/nf-core/msisensorpro/msisomatic/meta.yml +++ b/modules/nf-core/msisensorpro/msisomatic/meta.yml @@ -27,33 +27,45 @@ input: type: file description: BAM/CRAM/SAM file pattern: "*.{bam,cram,sam}" + ontologies: [] - normal_index: type: file description: BAM/CRAM/SAM index file pattern: "*.{bai,crai,sai}" + ontologies: [] - tumor: type: file description: BAM/CRAM/SAM file pattern: "*.{bam,cram,sam}" + ontologies: [] - tumor_index: type: file description: BAM/CRAM/SAM index file pattern: "*.{bai,crai,sai}" + ontologies: [] - intervals: type: file description: bed file containing interval information, optional pattern: "*.{bed}" - - - fasta: + ontologies: [] + - - meta2: + type: map + description: | + Groovy Map containing genome information + e.g. [ id:'genome' ] + - fasta: type: file description: Reference genome pattern: "*.{fasta}" - - - msisensor_scan: - type: file - description: Output from msisensor-pro/scan, containing list of msi regions - pattern: "*.list" + ontologies: [] + - msisensor_scan: + type: file + description: Output from msisensor-pro/scan, containing list of msi regions + pattern: "*.list" + ontologies: [] output: - - output_report: - - meta: + output_report: + - - meta: type: map description: | Groovy Map containing sample information @@ -62,8 +74,9 @@ output: type: file description: File containing final report with all detected microsatellites, unstable somatic microsatellites, msi score - - output_dis: - - meta: + ontologies: [] + output_dis: + - - meta: type: map description: | Groovy Map containing sample information @@ -71,8 +84,9 @@ output: - ${prefix}_dis: type: file description: File containing distribution results - - output_germline: - - meta: + ontologies: [] + output_germline: + - - meta: type: map description: | Groovy Map containing sample information @@ -80,8 +94,9 @@ output: - ${prefix}_germline: type: file description: File containing germline results - - output_somatic: - - meta: + ontologies: [] + output_somatic: + - - meta: type: map description: | Groovy Map containing sample information @@ -89,11 +104,14 @@ output: - ${prefix}_somatic: type: file description: File containing somatic results - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@FriederikeHanssen" maintainers: diff --git a/modules/nf-core/msisensorpro/scan/environment.yml b/modules/nf-core/msisensorpro/scan/environment.yml index f17216d6c..3b66afc67 100644 --- a/modules/nf-core/msisensorpro/scan/environment.yml +++ b/modules/nf-core/msisensorpro/scan/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::msisensor-pro=1.2.0 + - bioconda::msisensor-pro=1.3.0 diff --git a/modules/nf-core/msisensorpro/scan/main.nf b/modules/nf-core/msisensorpro/scan/main.nf index 265e6a132..7ef4ae172 100644 --- a/modules/nf-core/msisensorpro/scan/main.nf +++ b/modules/nf-core/msisensorpro/scan/main.nf @@ -4,8 +4,8 @@ process MSISENSORPRO_SCAN { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/msisensor-pro:1.2.0--hfc31af2_0' : - 'biocontainers/msisensor-pro:1.2.0--hfc31af2_0' }" + 'https://depot.galaxyproject.org/singularity/msisensor-pro%3A1.3.0--hfef96ef_0': + 'biocontainers/msisensor-pro:1.3.0--hfef96ef_0' }" input: tuple val(meta), path(fasta) diff --git a/modules/nf-core/msisensorpro/scan/meta.yml b/modules/nf-core/msisensorpro/scan/meta.yml index ac9674b83..2380922c2 100644 --- a/modules/nf-core/msisensorpro/scan/meta.yml +++ b/modules/nf-core/msisensorpro/scan/meta.yml @@ -26,9 +26,10 @@ input: type: file description: Reference genome pattern: "*.{fasta}" + ontologies: [] output: - - list: - - meta: + list: + - - meta: type: map description: | Groovy Map containing sample information @@ -37,11 +38,14 @@ output: type: file description: File containing microsatellite list pattern: "*.{list}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@FriederikeHanssen" maintainers: diff --git a/modules/nf-core/multiqc/main.nf b/modules/nf-core/multiqc/main.nf index a508541ba..67460de9a 100644 --- a/modules/nf-core/multiqc/main.nf +++ b/modules/nf-core/multiqc/main.nf @@ -3,8 +3,8 @@ process MULTIQC { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/multiqc:1.30--pyhdfd78af_0' : - 'biocontainers/multiqc:1.30--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/multiqc:1.30--pyhdfd78af_1' : + 'biocontainers/multiqc:1.30--pyhdfd78af_1' }" input: path multiqc_files, stageAs: "?/*" diff --git a/modules/nf-core/muse/call/meta.yml b/modules/nf-core/muse/call/meta.yml index 6733677db..aa8b3e2c4 100644 --- a/modules/nf-core/muse/call/meta.yml +++ b/modules/nf-core/muse/call/meta.yml @@ -29,18 +29,22 @@ input: type: file description: Sorted tumor BAM file pattern: "*.bam" + ontologies: [] - tumor_bai: type: file description: Index file for the tumor BAM file pattern: "*.bai" + ontologies: [] - normal_bam: type: file description: Sorted matched normal BAM file pattern: "*.bam" + ontologies: [] - normal_bai: type: file description: Index file for the normal BAM file pattern: "*.bai" + ontologies: [] - - meta2: type: map description: | @@ -50,9 +54,10 @@ input: type: file description: reference genome file pattern: ".fasta" + ontologies: [] output: - - txt: - - meta: + txt: + - - meta: type: map description: | Groovy Map containing sample information @@ -61,11 +66,14 @@ output: type: file description: position-specific summary statistics pattern: "*.MuSE.txt" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@famosab" maintainers: diff --git a/modules/nf-core/muse/sump/meta.yml b/modules/nf-core/muse/sump/meta.yml index 1f5f38842..7ce9bb764 100644 --- a/modules/nf-core/muse/sump/meta.yml +++ b/modules/nf-core/muse/sump/meta.yml @@ -29,6 +29,7 @@ input: type: file description: single input file generated by 'MuSE call' pattern: "*.MuSE.txt" + ontologies: [] - - meta2: type: map description: | @@ -40,13 +41,16 @@ input: dbSNP vcf file that should be bgzip compressed, tabix indexed and based on the same reference genome used in 'MuSE call' pattern: ".vcf.gz" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format - ref_vcf_tbi: type: file description: Tabix index for the dbSNP vcf file pattern: ".vcf.gz.tbi" + ontologies: [] output: - - vcf: - - meta: + vcf: + - - meta: type: map description: | Groovy Map containing sample information @@ -55,8 +59,8 @@ output: type: map description: bgzipped vcf file with called variants pattern: "*.vcf.gz" - - tbi: - - meta: + tbi: + - - meta: type: map description: | Groovy Map containing sample information @@ -65,11 +69,13 @@ output: type: map description: tabix index of bgzipped vcf file with called variants pattern: "*.vcf.gz.tbi" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@famosab" maintainers: diff --git a/modules/nf-core/ngscheckmate/ncm/environment.yml b/modules/nf-core/ngscheckmate/ncm/environment.yml index 734821656..20851c488 100644 --- a/modules/nf-core/ngscheckmate/ncm/environment.yml +++ b/modules/nf-core/ngscheckmate/ncm/environment.yml @@ -4,5 +4,5 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::ngscheckmate=1.0.1 - bioconda::bcftools=1.21 + - bioconda::ngscheckmate=1.0.1 diff --git a/modules/nf-core/ngscheckmate/ncm/meta.yml b/modules/nf-core/ngscheckmate/ncm/meta.yml index 06c131d6b..45fedd045 100644 --- a/modules/nf-core/ngscheckmate/ncm/meta.yml +++ b/modules/nf-core/ngscheckmate/ncm/meta.yml @@ -27,6 +27,7 @@ input: description: VCF or BAM files for each sample, in a merged channel (possibly gzipped). BAM files require an index too. pattern: "*.{vcf,vcf.gz,bam,bai}" + ontologies: [] - - meta2: type: map description: | @@ -36,6 +37,7 @@ input: type: file description: BED file containing the SNPs to analyse pattern: "*.{bed}" + ontologies: [] - - meta3: type: map description: | @@ -45,61 +47,72 @@ input: type: file description: fasta file for the genome, only used in the bam mode pattern: "*.{bed}" + ontologies: [] output: - - corr_matrix: - - meta: + corr_matrix: + - - meta: type: file description: A text file containing the correlation matrix between each sample pattern: "*corr_matrix.txt" + ontologies: [] - "*_corr_matrix.txt": type: file description: A text file containing the correlation matrix between each sample pattern: "*corr_matrix.txt" - - matched: - - meta: + ontologies: [] + matched: + - - meta: type: file - description: A txt file containing only the samples that match with each other - pattern: "*matched.txt" + description: A text file containing the correlation matrix between each sample + pattern: "*corr_matrix.txt" + ontologies: [] - "*_matched.txt": type: file description: A txt file containing only the samples that match with each other pattern: "*matched.txt" - - all: - - meta: + ontologies: [] + all: + - - meta: type: file - description: A txt file containing all the sample comparisons, whether they - match or not - pattern: "*all.txt" + description: A text file containing the correlation matrix between each sample + pattern: "*corr_matrix.txt" + ontologies: [] - "*_all.txt": type: file description: A txt file containing all the sample comparisons, whether they match or not pattern: "*all.txt" - - pdf: - - meta: + ontologies: [] + pdf: + - - meta: type: file - description: A pdf containing a dendrogram showing how the samples match up - pattern: "*.{pdf}" + description: A text file containing the correlation matrix between each sample + pattern: "*corr_matrix.txt" + ontologies: [] - "*.pdf": type: file description: A pdf containing a dendrogram showing how the samples match up pattern: "*.{pdf}" - - vcf: - - meta: + ontologies: [] + vcf: + - - meta: type: file - description: If ran in bam mode, vcf files for each sample giving the SNP calls - used - pattern: "*.vcf" + description: A text file containing the correlation matrix between each sample + pattern: "*corr_matrix.txt" + ontologies: [] - "*.vcf": type: file - description: If ran in bam mode, vcf files for each sample giving the SNP calls - used + description: If ran in bam mode, vcf files for each sample giving the SNP + calls used pattern: "*.vcf" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@sppearce" maintainers: diff --git a/modules/nf-core/parabricks/fq2bam/meta.yml b/modules/nf-core/parabricks/fq2bam/meta.yml index 29db75620..199b4f6ab 100644 --- a/modules/nf-core/parabricks/fq2bam/meta.yml +++ b/modules/nf-core/parabricks/fq2bam/meta.yml @@ -24,6 +24,8 @@ input: type: file description: fastq.gz files pattern: "*.fastq.gz" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format - - meta2: type: map description: | @@ -32,6 +34,7 @@ input: type: file description: reference fasta file - must be unzipped pattern: "*.fasta" + ontologies: [] - - meta3: type: map description: | @@ -40,6 +43,7 @@ input: type: file description: reference BWA index pattern: "*.{amb,ann,bwt,pac,sa}" + ontologies: [] - - meta4: type: map description: | @@ -49,6 +53,7 @@ input: description: (optional) file(s) containing genomic intervals for use in base quality score recalibration (BQSR) pattern: "*.{bed,interval_list,picard,list,intervals}" + ontologies: [] - - meta5: type: map description: | @@ -58,13 +63,15 @@ input: 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}" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + - output_fmt: + type: string + description: Output format for the alignment. Options are 'bam' or 'cram' + pattern: "{bam,cram}" output: - - bam: - - meta: + bam: + - - meta: type: map description: | Groovy Map containing sample information @@ -73,8 +80,9 @@ output: type: file description: Sorted BAM file pattern: "*.bam" - - bai: - - meta: + ontologies: [] + bai: + - - meta: type: map description: | Groovy Map containing sample information @@ -83,8 +91,9 @@ output: type: file description: index corresponding to sorted BAM file pattern: "*.bai" - - cram: - - meta: + ontologies: [] + cram: + - - meta: type: map description: | Groovy Map containing sample information @@ -93,8 +102,9 @@ output: type: file description: Sorted CRAM file pattern: "*.cram" - - crai: - - meta: + ontologies: [] + crai: + - - meta: type: map description: | Groovy Map containing sample information @@ -103,41 +113,48 @@ output: type: file description: index corresponding to sorted CRAM file pattern: "*.crai" - - bqsr_table: - - meta: + ontologies: [] + bqsr_table: + - - meta: type: map description: | Groovy Map containing sample information - e.g. [ id:'test'] + e.g. [ id:'test', single_end:false ] - "*.table": type: file description: (optional) table from base quality score recalibration calculation, to be used with parabricks/applybqsr pattern: "*.table" - - qc_metrics: - - meta: + ontologies: [] + qc_metrics: + - - meta: type: map description: | Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] - "*_qc_metrics": type: directory description: (optional) optional directory of qc metrics pattern: "*_qc_metrics" - - duplicate_metrics: - - meta: + duplicate_metrics: + - - meta: type: map description: | Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] - "*.duplicate-metrics.txt": type: file - description: (optional) metrics calculated from marking duplicates in the bam - file + description: (optional) metrics calculated from marking duplicates in the + bam file pattern: "*.duplicate-metrics.txt" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@bsiranosian" - "@adamrtalbot" diff --git a/modules/nf-core/samblaster/meta.yml b/modules/nf-core/samblaster/meta.yml index 5faf3a6c3..48fc89aa0 100644 --- a/modules/nf-core/samblaster/meta.yml +++ b/modules/nf-core/samblaster/meta.yml @@ -34,9 +34,10 @@ input: type: file description: BAM file pattern: "*.bam" + ontologies: [] output: - - bam: - - meta: + bam: + - - meta: type: map description: | Groovy Map containing sample information @@ -45,11 +46,14 @@ output: type: file description: Tagged or filtered BAM file pattern: "*.bam" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@lescai" maintainers: diff --git a/modules/nf-core/samtools/bam2fq/meta.yml b/modules/nf-core/samtools/bam2fq/meta.yml index b17ed608d..e51f5a6a5 100644 --- a/modules/nf-core/samtools/bam2fq/meta.yml +++ b/modules/nf-core/samtools/bam2fq/meta.yml @@ -22,17 +22,18 @@ input: type: file description: BAM/CRAM/SAM file pattern: "*.{bam,cram,sam}" - - - split: - type: boolean - description: | - TRUE/FALSE value to indicate if reads should be separated into - /1, /2 and if present other, or singleton. - Note: choosing TRUE will generate 4 different files. - Choosing FALSE will produce a single file, which will be interleaved in case - the input contains paired reads. + ontologies: [] + - split: + type: boolean + description: | + TRUE/FALSE value to indicate if reads should be separated into + /1, /2 and if present other, or singleton. + Note: choosing TRUE will generate 4 different files. + Choosing FALSE will produce a single file, which will be interleaved in case + the input contains paired reads. output: - - reads: - - meta: + reads: + - - meta: type: map description: | Groovy Map containing sample information @@ -43,11 +44,15 @@ output: FASTQ files, which will be either a group of 4 files (read_1, read_2, other and singleton) or a single interleaved .fq.gz file if the user chooses not to split the reads. pattern: "*.fq.gz" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@lescai" maintainers: diff --git a/modules/nf-core/samtools/collatefastq/meta.yml b/modules/nf-core/samtools/collatefastq/meta.yml index 5bc912496..10325a614 100644 --- a/modules/nf-core/samtools/collatefastq/meta.yml +++ b/modules/nf-core/samtools/collatefastq/meta.yml @@ -9,9 +9,13 @@ keywords: tools: - samtools: description: Tools for dealing with SAM, BAM and CRAM files - documentation: http://www.htslib.org/doc/1.1/samtools.html + homepage: "http://www.htslib.org" + documentation: "https://www.htslib.org/doc/samtools.html" + tool_dev_url: "https://github.com/samtools/samtools" + doi: "10.1093/bioinformatics/btp352" licence: ["MIT"] identifier: biotools:samtools + input: - - meta: type: map @@ -22,6 +26,7 @@ input: type: file description: BAM/CRAM/SAM file pattern: "*.{bam,cram,sam}" + ontologies: [] - - meta2: type: map description: | @@ -31,75 +36,74 @@ input: type: file description: Reference genome fasta file pattern: "*.{fasta,fa}" - - - interleave: - type: boolean - description: | - If true, the output is a single interleaved paired-end FASTQ - If false, the output split paired-end FASTQ - default: false + ontologies: [] + - interleave: + type: boolean + description: | + If true, the output is a single interleaved paired-end FASTQ + If false, the output split paired-end FASTQ + default: false output: - - fastq: - - meta: + fastq: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - pattern: "*_{1,2}.fq.gz" - "*_{1,2}.fq.gz": - type: map + type: file description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] + R1 and R2 FASTQ files pattern: "*_{1,2}.fq.gz" - - fastq_interleaved: - - meta: + ontologies: [] + fastq_interleaved: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - pattern: "*_interleaved.fq.gz" - "*_interleaved.fq": - type: map + type: file description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] + Interleaved paired end FASTQ files pattern: "*_interleaved.fq.gz" - - fastq_other: - - meta: + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + fastq_other: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - pattern: "*_other.fq.gz" - "*_other.fq.gz": - type: map + type: file description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] + FASTQ files with reads where the READ1 and READ2 FLAG bits set are either both set or both unset. pattern: "*_other.fq.gz" - - fastq_singleton: - - meta: + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + fastq_singleton: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - pattern: "*_singleton.fq.gz" - "*_singleton.fq.gz": - type: map + type: file description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] + FASTQ files with singleton reads. pattern: "*_singleton.fq.gz" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@lescai" - "@maxulysse" - "@matthdsm" -maintainers: - - "@lescai" - - "@maxulysse" - - "@matthdsm" diff --git a/modules/nf-core/samtools/convert/meta.yml b/modules/nf-core/samtools/convert/meta.yml index d5bfa161b..519812ab5 100644 --- a/modules/nf-core/samtools/convert/meta.yml +++ b/modules/nf-core/samtools/convert/meta.yml @@ -26,10 +26,12 @@ input: type: file description: BAM/CRAM file pattern: "*.{bam,cram}" + ontologies: [] - index: type: file description: BAM/CRAM index file pattern: "*.{bai,crai}" + ontologies: [] - - meta2: type: map description: | @@ -39,6 +41,7 @@ input: type: file description: Reference file to create the CRAM file pattern: "*.{fasta,fa}" + ontologies: [] - - meta3: type: map description: | @@ -48,9 +51,10 @@ input: type: file description: Reference index file to create the CRAM file pattern: "*.{fai}" + ontologies: [] output: - - bam: - - meta: + bam: + - - meta: type: map description: | Groovy Map containing sample information @@ -59,8 +63,9 @@ output: type: file description: filtered/converted BAM file pattern: "*{.bam}" - - cram: - - meta: + ontologies: [] + cram: + - - meta: type: map description: | Groovy Map containing sample information @@ -69,8 +74,9 @@ output: type: file description: filtered/converted CRAM file pattern: "*{cram}" - - bai: - - meta: + ontologies: [] + bai: + - - meta: type: map description: | Groovy Map containing sample information @@ -79,8 +85,9 @@ output: type: file description: filtered/converted BAM index pattern: "*{.bai}" - - crai: - - meta: + ontologies: [] + crai: + - - meta: type: map description: | Groovy Map containing sample information @@ -89,11 +96,14 @@ output: type: file description: filtered/converted CRAM index pattern: "*{.crai}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@FriederikeHanssen" - "@maxulysse" diff --git a/modules/nf-core/samtools/faidx/meta.yml b/modules/nf-core/samtools/faidx/meta.yml index 256a330a1..b7a2e0c1a 100644 --- a/modules/nf-core/samtools/faidx/meta.yml +++ b/modules/nf-core/samtools/faidx/meta.yml @@ -26,6 +26,7 @@ input: type: file description: FASTA file pattern: "*.{fa,fasta}" + ontologies: [] - - meta2: type: map description: | @@ -35,13 +36,14 @@ input: type: file description: FASTA index file pattern: "*.{fai}" - - - get_sizes: - type: boolean - description: use cut to get the sizes of the index (true) or not (false) + ontologies: [] + - get_sizes: + type: boolean + description: use cut to get the sizes of the index (true) or not (false) output: - - fa: - - meta: + fa: + - - meta: type: map description: | Groovy Map containing sample information @@ -50,28 +52,31 @@ output: type: file description: FASTA file pattern: "*.{fa}" - - fai: - - meta: + ontologies: [] + sizes: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - - "*.fai": + - "*.sizes": type: file - description: FASTA index file - pattern: "*.{fai}" - - sizes: - - meta: + description: File containing chromosome lengths + pattern: "*.{sizes}" + ontologies: [] + fai: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - - "*.sizes": + - "*.fai": type: file - description: File containing chromosome lengths - pattern: "*.{sizes}" - - gzi: - - meta: + description: FASTA index file + pattern: "*.{fai}" + ontologies: [] + gzi: + - - meta: type: map description: | Groovy Map containing sample information @@ -80,11 +85,14 @@ output: type: file description: Optional gzip index file for compressed inputs pattern: "*.gzi" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@drpatelh" - "@ewels" diff --git a/modules/nf-core/samtools/index/main.nf b/modules/nf-core/samtools/index/main.nf index 311756102..7019a72e4 100644 --- a/modules/nf-core/samtools/index/main.nf +++ b/modules/nf-core/samtools/index/main.nf @@ -24,7 +24,7 @@ process SAMTOOLS_INDEX { """ samtools \\ index \\ - -@ ${task.cpus-1} \\ + -@ ${task.cpus} \\ $args \\ $input diff --git a/modules/nf-core/samtools/index/meta.yml b/modules/nf-core/samtools/index/meta.yml index db8df0d50..1bed6bca6 100644 --- a/modules/nf-core/samtools/index/meta.yml +++ b/modules/nf-core/samtools/index/meta.yml @@ -25,9 +25,10 @@ input: - input: type: file description: input file + ontologies: [] output: - - bai: - - meta: + bai: + - - meta: type: map description: | Groovy Map containing sample information @@ -36,8 +37,9 @@ output: type: file description: BAM/CRAM/SAM index file pattern: "*.{bai,crai,sai}" - - csi: - - meta: + ontologies: [] + csi: + - - meta: type: map description: | Groovy Map containing sample information @@ -46,8 +48,9 @@ output: type: file description: CSI index file pattern: "*.{csi}" - - crai: - - meta: + ontologies: [] + crai: + - - meta: type: map description: | Groovy Map containing sample information @@ -56,11 +59,14 @@ output: type: file description: BAM/CRAM/SAM index file pattern: "*.{bai,crai,sai}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@drpatelh" - "@ewels" diff --git a/modules/nf-core/samtools/merge/main.nf b/modules/nf-core/samtools/merge/main.nf index 34da4c7c8..631b20257 100644 --- a/modules/nf-core/samtools/merge/main.nf +++ b/modules/nf-core/samtools/merge/main.nf @@ -11,6 +11,7 @@ process SAMTOOLS_MERGE { tuple val(meta), path(input_files, stageAs: "?/*") tuple val(meta2), path(fasta) tuple val(meta3), path(fai) + tuple val(meta4), path(gzi) output: tuple val(meta), path("${prefix}.bam") , optional:true, emit: bam @@ -29,6 +30,7 @@ process SAMTOOLS_MERGE { def file_type = input_files instanceof List ? input_files[0].getExtension() : input_files.getExtension() def reference = fasta ? "--reference ${fasta}" : "" """ + # Note: --threads value represents *additional* CPUs to allocate (total CPUs = 1 + --threads). samtools \\ merge \\ --threads ${task.cpus-1} \\ diff --git a/modules/nf-core/samtools/merge/meta.yml b/modules/nf-core/samtools/merge/meta.yml index 235aa2194..9ef34840f 100644 --- a/modules/nf-core/samtools/merge/meta.yml +++ b/modules/nf-core/samtools/merge/meta.yml @@ -26,6 +26,7 @@ input: type: file description: BAM/CRAM file pattern: "*.{bam,cram,sam}" + ontologies: [] - - meta2: type: map description: | @@ -35,6 +36,7 @@ input: type: file description: Reference file the CRAM was created with (optional) pattern: "*.{fasta,fa}" + ontologies: [] - - meta3: type: map description: | @@ -44,9 +46,21 @@ input: type: file description: Index of the reference file the CRAM was created with (optional) pattern: "*.fai" + ontologies: [] + - - meta4: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + - gzi: + type: file + description: Index of the compressed reference file the CRAM was created with + (optional) + pattern: "*.gzi" + ontologies: [] output: - - bam: - - meta: + bam: + - - meta: type: map description: | Groovy Map containing sample information @@ -55,8 +69,9 @@ output: type: file description: BAM file pattern: "*.{bam}" - - cram: - - meta: + ontologies: [] + cram: + - - meta: type: map description: | Groovy Map containing sample information @@ -65,8 +80,9 @@ output: type: file description: CRAM file pattern: "*.{cram}" - - csi: - - meta: + ontologies: [] + csi: + - - meta: type: map description: | Groovy Map containing sample information @@ -75,8 +91,9 @@ output: type: file description: BAM index file (optional) pattern: "*.csi" - - crai: - - meta: + ontologies: [] + crai: + - - meta: type: map description: | Groovy Map containing sample information @@ -85,11 +102,14 @@ output: type: file description: CRAM index file (optional) pattern: "*.crai" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@drpatelh" - "@yuukiiwa " diff --git a/modules/nf-core/samtools/mpileup/meta.yml b/modules/nf-core/samtools/mpileup/meta.yml index 6195138ef..e809fec40 100644 --- a/modules/nf-core/samtools/mpileup/meta.yml +++ b/modules/nf-core/samtools/mpileup/meta.yml @@ -1,5 +1,5 @@ name: samtools_mpileup -description: BAM +description: Generate text pileup output for one or multiple BAM files. Each input file produces a separate group of pileup columns in the output. keywords: - mpileup - bam @@ -26,10 +26,12 @@ input: type: file description: BAM/CRAM/SAM file pattern: "*.{bam,cram,sam}" + ontologies: [] - intervals: type: file description: Interval FILE pattern: "*.bed" + ontologies: [] - - meta2: type: map description: | @@ -39,9 +41,10 @@ input: type: file description: FASTA reference file pattern: "*.{fasta,fa}" + ontologies: [] output: - - mpileup: - - meta: + mpileup: + - - meta: type: map description: | Groovy Map containing sample information @@ -50,11 +53,14 @@ output: type: file description: mpileup file pattern: "*.{mpileup}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@drpatelh" - "@joseespinosa" diff --git a/modules/nf-core/samtools/stats/meta.yml b/modules/nf-core/samtools/stats/meta.yml index 77b020f76..6dc51885d 100644 --- a/modules/nf-core/samtools/stats/meta.yml +++ b/modules/nf-core/samtools/stats/meta.yml @@ -27,10 +27,12 @@ input: type: file description: BAM/CRAM file from alignment pattern: "*.{bam,cram}" + ontologies: [] - input_index: type: file description: BAI/CRAI file from alignment pattern: "*.{bai,crai}" + ontologies: [] - - meta2: type: map description: | @@ -40,9 +42,10 @@ input: type: file description: Reference file the CRAM was created with (optional) pattern: "*.{fasta,fa}" + ontologies: [] output: - - stats: - - meta: + stats: + - - meta: type: map description: | Groovy Map containing sample information @@ -51,11 +54,14 @@ output: type: file description: File containing samtools stats output pattern: "*.{stats}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@drpatelh" - "@FriederikeHanssen" diff --git a/modules/nf-core/samtools/view/main.nf b/modules/nf-core/samtools/view/main.nf index f43a4c6e7..c34cab919 100644 --- a/modules/nf-core/samtools/view/main.nf +++ b/modules/nf-core/samtools/view/main.nf @@ -50,6 +50,7 @@ process SAMTOOLS_VIEW { } } """ + # Note: --threads value represents *additional* CPUs to allocate (total CPUs = 1 + --threads). samtools \\ view \\ --threads ${task.cpus-1} \\ diff --git a/modules/nf-core/samtools/view/meta.yml b/modules/nf-core/samtools/view/meta.yml index 28c268a65..3ebbdb891 100644 --- a/modules/nf-core/samtools/view/meta.yml +++ b/modules/nf-core/samtools/view/meta.yml @@ -26,10 +26,12 @@ input: type: file description: BAM/CRAM/SAM file pattern: "*.{bam,cram,sam}" + ontologies: [] - index: type: file description: BAM.BAI/BAM.CSI/CRAM.CRAI file (optional) pattern: "*.{.bai,.csi,.crai}" + ontologies: [] - - meta2: type: map description: | @@ -39,17 +41,19 @@ input: type: file description: Reference file the CRAM was created with (optional) pattern: "*.{fasta,fa}" - - - qname: - type: file - description: Optional file with read names to output only select alignments - pattern: "*.{txt,list}" - - - index_format: - type: string - description: Index format, used together with ext.args = '--write-index' - pattern: "bai|csi|crai" + ontologies: [] + - qname: + type: file + description: Optional file with read names to output only select alignments + pattern: "*.{txt,list}" + ontologies: [] + - index_format: + type: string + description: Index format, used together with ext.args = '--write-index' + pattern: "bai|csi|crai" output: - - bam: - - meta: + bam: + - - meta: type: map description: | Groovy Map containing sample information @@ -58,8 +62,9 @@ output: type: file description: optional filtered/converted BAM file pattern: "*.{bam}" - - cram: - - meta: + ontologies: [] + cram: + - - meta: type: map description: | Groovy Map containing sample information @@ -68,8 +73,9 @@ output: type: file description: optional filtered/converted CRAM file pattern: "*.{cram}" - - sam: - - meta: + ontologies: [] + sam: + - - meta: type: map description: | Groovy Map containing sample information @@ -78,8 +84,9 @@ output: type: file description: optional filtered/converted SAM file pattern: "*.{sam}" - - bai: - - meta: + ontologies: [] + bai: + - - meta: type: map description: | Groovy Map containing sample information @@ -88,8 +95,9 @@ output: type: file description: optional BAM file index pattern: "*.{bai}" - - csi: - - meta: + ontologies: [] + csi: + - - meta: type: map description: | Groovy Map containing sample information @@ -98,8 +106,9 @@ output: type: file description: optional tabix BAM file index pattern: "*.{csi}" - - crai: - - meta: + ontologies: [] + crai: + - - meta: type: map description: | Groovy Map containing sample information @@ -108,8 +117,9 @@ output: type: file description: optional CRAM file index pattern: "*.{crai}" - - unselected: - - meta: + ontologies: [] + unselected: + - - meta: type: map description: | Groovy Map containing sample information @@ -118,8 +128,9 @@ output: type: file description: optional file with unselected alignments pattern: "*.unselected.{bam,cram,sam}" - - unselected_index: - - meta: + ontologies: [] + unselected_index: + - - meta: type: map description: | Groovy Map containing sample information @@ -128,11 +139,14 @@ output: type: file description: index for the "unselected" file pattern: "*.unselected.{csi,crai}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@drpatelh" - "@joseespinosa" diff --git a/modules/nf-core/sentieon/applyvarcal/meta.yml b/modules/nf-core/sentieon/applyvarcal/meta.yml index e8505a2ae..9e4a21554 100644 --- a/modules/nf-core/sentieon/applyvarcal/meta.yml +++ b/modules/nf-core/sentieon/applyvarcal/meta.yml @@ -29,24 +29,29 @@ input: description: VCF file to be recalibrated, this should be the same file as used for the first stage VariantRecalibrator. pattern: "*.vcf" + ontologies: [] - vcf_tbi: type: file description: tabix index for the input vcf file. pattern: "*.vcf.tbi" + ontologies: [] - recal: type: file description: Recalibration file produced when the input vcf was run through VariantRecalibrator in stage 1. pattern: "*.recal" + ontologies: [] - recal_index: type: file description: Index file for the recalibration file. pattern: ".recal.idx" + ontologies: [] - tranches: type: file description: Tranches file produced when the input vcf was run through VariantRecalibrator in stage 1. pattern: ".tranches" + ontologies: [] - - meta2: type: map description: | @@ -56,6 +61,7 @@ input: type: file description: The reference fasta file pattern: "*.fasta" + ontologies: [] - - meta3: type: map description: | @@ -65,9 +71,10 @@ input: type: file description: Index of reference fasta file pattern: "*.fasta.fai" + ontologies: [] output: - - vcf: - - meta: + vcf: + - - meta: type: map description: | Groovy Map containing sample information @@ -76,8 +83,10 @@ output: type: file description: compressed vcf file containing the recalibrated variants. pattern: "*.vcf.gz" - - tbi: - - meta: + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + tbi: + - - meta: type: map description: | Groovy Map containing sample information @@ -86,11 +95,14 @@ output: type: file description: Index of recalibrated vcf file. pattern: "*vcf.gz.tbi" - - versions: - - versions.yml: - type: file - description: File containing software versions. - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions. + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@assp8200" maintainers: diff --git a/modules/nf-core/sentieon/bwamem/meta.yml b/modules/nf-core/sentieon/bwamem/meta.yml index b27dd4877..3f4f99e5c 100644 --- a/modules/nf-core/sentieon/bwamem/meta.yml +++ b/modules/nf-core/sentieon/bwamem/meta.yml @@ -25,6 +25,7 @@ input: - reads: type: file description: Genome fastq files (single-end or paired-end) + ontologies: [] - - meta2: type: map description: | @@ -34,6 +35,7 @@ input: type: file description: BWA genome index files pattern: "*.{amb,ann,bwt,pac,sa}" + ontologies: [] - - meta3: type: map description: | @@ -43,6 +45,7 @@ input: type: file description: Genome fasta file pattern: "*.{fa,fasta}" + ontologies: [] - - meta4: type: map description: | @@ -52,9 +55,10 @@ input: type: file description: The index of the FASTA reference. pattern: "*.fai" + ontologies: [] output: - - bam_and_bai: - - meta: + bam_and_bai: + - - meta: type: map description: | Groovy Map containing reference information. @@ -63,15 +67,19 @@ output: type: file description: BAM file with corresponding index. pattern: "*.{bam,bai}" + ontologies: [] - ${prefix}.{bai,crai}: type: file description: BAM file with corresponding index. pattern: "*.{bam,bai}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@asp8200" maintainers: diff --git a/modules/nf-core/sentieon/dedup/meta.yml b/modules/nf-core/sentieon/dedup/meta.yml index 003d74bef..1a26d5429 100644 --- a/modules/nf-core/sentieon/dedup/meta.yml +++ b/modules/nf-core/sentieon/dedup/meta.yml @@ -27,10 +27,12 @@ input: type: file description: BAM file. pattern: "*.bam" + ontologies: [] - bai: type: file description: BAI file pattern: "*.bai" + ontologies: [] - - meta2: type: map description: | @@ -40,6 +42,7 @@ input: type: file description: Genome fasta file pattern: "*.{fa,fasta}" + ontologies: [] - - meta3: type: map description: | @@ -49,9 +52,10 @@ input: type: file description: The index of the FASTA reference. pattern: "*.fai" + ontologies: [] output: - - cram: - - meta: + cram: + - - meta: type: map description: | Groovy Map containing reference information. @@ -60,8 +64,9 @@ output: type: file description: CRAM file pattern: "*.cram" - - crai: - - meta: + ontologies: [] + crai: + - - meta: type: map description: | Groovy Map containing reference information. @@ -70,8 +75,9 @@ output: type: file description: CRAM index file pattern: "*.crai" - - bam: - - meta: + ontologies: [] + bam: + - - meta: type: map description: | Groovy Map containing reference information. @@ -80,8 +86,9 @@ output: type: file description: BAM file. pattern: "*.bam" - - bai: - - meta: + ontologies: [] + bai: + - - meta: type: map description: | Groovy Map containing reference information. @@ -90,19 +97,21 @@ output: type: file description: BAI file pattern: "*.bai" - - score: - - meta: + ontologies: [] + score: + - - meta: type: map description: | Groovy Map containing reference information. e.g. [ id:'test', single_end:false ] - "*.score": type: file - description: The score file indicates which reads LocusCollector finds are likely - duplicates. + description: The score file indicates which reads LocusCollector finds are + likely duplicates. pattern: "*.score" - - metrics: - - meta: + ontologies: [] + metrics: + - - meta: type: map description: | Groovy Map containing reference information. @@ -111,8 +120,9 @@ output: type: file description: Output file containing Dedup metrics incl. histogram data. pattern: "*.metrics" - - metrics_multiqc_tsv: - - meta: + ontologies: [] + metrics_multiqc_tsv: + - - meta: type: map description: | Groovy Map containing reference information. @@ -121,11 +131,15 @@ output: type: file description: Output tsv-file containing Dedup metrics excl. histogram data. pattern: "*.metrics.multiqc.tsv" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3475 # TSV + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@asp8200" maintainers: diff --git a/modules/nf-core/sentieon/dnamodelapply/meta.yml b/modules/nf-core/sentieon/dnamodelapply/meta.yml index b73064111..8338129ba 100644 --- a/modules/nf-core/sentieon/dnamodelapply/meta.yml +++ b/modules/nf-core/sentieon/dnamodelapply/meta.yml @@ -23,10 +23,12 @@ input: type: file description: INPUT VCF file pattern: "*.{vcf,vcf.gz}" + ontologies: [] - idx: type: file description: Index of the input VCF file pattern: "*.{tbi}" + ontologies: [] - - meta2: type: map description: | @@ -36,6 +38,7 @@ input: type: file description: Genome fasta file pattern: "*.{fa,fasta}" + ontologies: [] - - meta3: type: map description: | @@ -45,6 +48,7 @@ input: type: file description: Index of the genome fasta file pattern: "*.fai" + ontologies: [] - - meta4: type: map description: | @@ -54,9 +58,10 @@ input: type: file description: machine learning model file pattern: "*.model" + ontologies: [] output: - - vcf: - - meta: + vcf: + - - meta: type: map description: | Groovy Map containing sample information @@ -65,8 +70,9 @@ output: type: file description: INPUT VCF file pattern: "*.{vcf,vcf.gz}" - - tbi: - - meta: + ontologies: [] + tbi: + - - meta: type: map description: | Groovy Map containing sample information @@ -75,11 +81,14 @@ output: type: file description: Index of the input VCF file pattern: "*.{tbi}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@ramprasadn" maintainers: diff --git a/modules/nf-core/sentieon/dnascope/meta.yml b/modules/nf-core/sentieon/dnascope/meta.yml index e3e0eba8c..767da593f 100644 --- a/modules/nf-core/sentieon/dnascope/meta.yml +++ b/modules/nf-core/sentieon/dnascope/meta.yml @@ -23,15 +23,18 @@ input: type: file description: BAM file. pattern: "*.bam" + ontologies: [] - bai: type: file description: BAI file pattern: "*.bai" + ontologies: [] - intervals: type: file description: bed or interval_list file containing interval in the reference that will be used in the analysis pattern: "*.{bed,interval_list}" + ontologies: [] - - meta2: type: map description: | @@ -40,6 +43,7 @@ input: type: file description: Genome fasta file pattern: "*.{fa,fasta}" + ontologies: [] - - meta3: type: map description: | @@ -48,6 +52,7 @@ input: type: file description: Index of the genome fasta file pattern: "*.fai" + ontologies: [] - - meta4: type: map description: | @@ -56,6 +61,8 @@ input: type: file description: Single Nucleotide Polymorphism database (dbSNP) file pattern: "*.vcf.gz" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format - - meta5: type: map description: | @@ -64,6 +71,7 @@ input: type: file description: Index of the Single Nucleotide Polymorphism database (dbSNP) file pattern: "*.vcf.gz.tbi" + ontologies: [] - - meta6: type: map description: | @@ -72,24 +80,25 @@ input: type: file description: machine learning model file pattern: "*.model" - - - pcr_indel_model: - type: string - description: | - Controls the option pcr_indel_model for Dnascope. - The possible options are "NONE" (used for PCR free samples), and "HOSTILE", "AGGRESSIVE" and "CONSERVATIVE". - See Sentieons documentation for further explanation. - - - emit_vcf: - type: string - description: | - Controls the vcf output from Dnascope. - Possible options are "all", "confident" and "variant". - See Sentieons documentation for further explanation. - - - emit_gvcf: - type: boolean - description: If true, the haplotyper will output a gvcf + ontologies: [] + - pcr_indel_model: + type: string + description: | + Controls the option pcr_indel_model for Dnascope. + The possible options are "NONE" (used for PCR free samples), and "HOSTILE", "AGGRESSIVE" and "CONSERVATIVE". + See Sentieons documentation for further explanation. + - emit_vcf: + type: string + description: | + Controls the vcf output from Dnascope. + Possible options are "all", "confident" and "variant". + See Sentieons documentation for further explanation. + - emit_gvcf: + type: boolean + description: If true, the haplotyper will output a gvcf output: - - vcf: - - meta: + vcf: + - - meta: type: map description: | Groovy Map containing reference information. @@ -98,8 +107,10 @@ output: type: file description: Compressed VCF file pattern: "*.unfiltered.vcf.gz" - - vcf_tbi: - - meta: + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + vcf_tbi: + - - meta: type: map description: | Groovy Map containing reference information. @@ -108,8 +119,9 @@ output: type: file description: Index of VCF file pattern: "*.unfiltered.vcf.gz.tbi" - - gvcf: - - meta: + ontologies: [] + gvcf: + - - meta: type: map description: | Groovy Map containing reference information. @@ -118,8 +130,10 @@ output: type: file description: Compressed GVCF file pattern: "*.g.vcf.gz" - - gvcf_tbi: - - meta: + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + gvcf_tbi: + - - meta: type: map description: | Groovy Map containing reference information. @@ -128,11 +142,14 @@ output: type: file description: Index of GVCF file pattern: "*.g.vcf.gz.tbi" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@ramprasadn" maintainers: diff --git a/modules/nf-core/sentieon/gvcftyper/meta.yml b/modules/nf-core/sentieon/gvcftyper/meta.yml index f02255371..a45971ea0 100644 --- a/modules/nf-core/sentieon/gvcftyper/meta.yml +++ b/modules/nf-core/sentieon/gvcftyper/meta.yml @@ -24,15 +24,18 @@ input: description: | gVCF(.gz) file pattern: "*.{vcf,vcf.gz}" + ontologies: [] - tbis: type: file description: | index of gvcf file pattern: "*.tbi" + ontologies: [] - intervals: type: file description: Interval file with the genomic regions included in the library (optional) + ontologies: [] - - meta1: type: map description: | @@ -42,6 +45,7 @@ input: type: file description: Reference fasta file pattern: "*.fasta" + ontologies: [] - - meta2: type: map description: | @@ -51,6 +55,7 @@ input: type: file description: Reference fasta index file pattern: "*.fai" + ontologies: [] - - meta3: type: map description: | @@ -60,6 +65,8 @@ input: type: file description: dbSNP VCF file pattern: "*.vcf.gz" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format - - meta4: type: map description: | @@ -69,9 +76,10 @@ input: type: file description: dbSNP VCF index file pattern: "*.tbi" + ontologies: [] output: - - vcf_gz: - - meta: + vcf_gz: + - - meta: type: map description: | Groovy Map containing sample information @@ -80,8 +88,10 @@ output: type: file description: VCF file pattern: "*.vcf.gz" - - vcf_gz_tbi: - - meta: + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + vcf_gz_tbi: + - - meta: type: map description: | Groovy Map containing sample information @@ -90,11 +100,14 @@ output: type: file description: VCF index file pattern: "*.vcf.gz.tbi" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@asp8200" maintainers: diff --git a/modules/nf-core/sentieon/haplotyper/meta.yml b/modules/nf-core/sentieon/haplotyper/meta.yml index 779d674db..f63eff8c3 100644 --- a/modules/nf-core/sentieon/haplotyper/meta.yml +++ b/modules/nf-core/sentieon/haplotyper/meta.yml @@ -22,16 +22,20 @@ input: type: file description: BAM/CRAM file from alignment pattern: "*.{bam,cram}" + ontologies: [] - input_index: type: file description: BAI/CRAI file from alignment pattern: "*.{bai,crai}" + ontologies: [] - intervals: type: file description: Bed file with the genomic regions included in the library (optional) + ontologies: [] - recal_table: type: file description: Recalibration table from sentieon/qualcal (optional) + ontologies: [] - - meta2: type: map description: | @@ -41,6 +45,7 @@ input: type: file description: Genome fasta file pattern: "*.{fa,fasta}" + ontologies: [] - - meta3: type: map description: | @@ -50,6 +55,7 @@ input: type: file description: The index of the FASTA reference. pattern: "*.fai" + ontologies: [] - - meta4: type: map description: | @@ -58,6 +64,7 @@ input: - dbsnp: type: file description: VCF file containing known sites (optional) + ontologies: [] - - meta5: type: map description: | @@ -66,19 +73,20 @@ input: - dbsnp_tbi: type: file description: VCF index of dbsnp (optional) - - - emit_vcf: - type: string - description: | - Controls the vcf output from the haplotyper. - If emit_vcf is set to "all" then the haplotyper will output a vcf generated by the haplotyper in emit-mode "all". - If emit_vcf is set to "confident" then the haplotyper will output a vcf generated by the haplotyper in emit-mode "confident". - If emit_vcf is set to "variant" then the haplotyper will output a vcf generated by the haplotyper in emit_mode "confident". - - - emit_gvcf: - type: boolean - description: If true, the haplotyper will output a gvcf + ontologies: [] + - emit_vcf: + type: string + description: | + Controls the vcf output from the haplotyper. + If emit_vcf is set to "all" then the haplotyper will output a vcf generated by the haplotyper in emit-mode "all". + If emit_vcf is set to "confident" then the haplotyper will output a vcf generated by the haplotyper in emit-mode "confident". + If emit_vcf is set to "variant" then the haplotyper will output a vcf generated by the haplotyper in emit_mode "confident". + - emit_gvcf: + type: boolean + description: If true, the haplotyper will output a gvcf output: - - vcf: - - meta: + vcf: + - - meta: type: map description: | Groovy Map containing reference information. @@ -87,8 +95,10 @@ output: type: file description: Compressed VCF file pattern: "*.unfiltered.vcf.gz" - - vcf_tbi: - - meta: + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + vcf_tbi: + - - meta: type: map description: | Groovy Map containing reference information. @@ -97,8 +107,9 @@ output: type: file description: Index of VCF file pattern: "*.unfiltered.vcf.gz.tbi" - - gvcf: - - meta: + ontologies: [] + gvcf: + - - meta: type: map description: | Groovy Map containing reference information. @@ -107,8 +118,10 @@ output: type: file description: Compressed GVCF file pattern: "*.g.vcf.gz" - - gvcf_tbi: - - meta: + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + gvcf_tbi: + - - meta: type: map description: | Groovy Map containing reference information. @@ -117,11 +130,14 @@ output: type: file description: Index of GVCF file pattern: "*.g.vcf.gz.tbi" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@asp8200" maintainers: diff --git a/modules/nf-core/sentieon/varcal/meta.yml b/modules/nf-core/sentieon/varcal/meta.yml index 4661dc92d..9d7bd79ae 100644 --- a/modules/nf-core/sentieon/varcal/meta.yml +++ b/modules/nf-core/sentieon/varcal/meta.yml @@ -25,76 +25,94 @@ input: type: file description: input vcf file containing the variants to be recalibrated pattern: "*.vcf.gz" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format - tbi: type: file description: tbi file matching with -vcf pattern: "*.vcf.gz.tbi" - - - resource_vcf: - type: file - description: all resource vcf files that are used with the corresponding '--resource' - label - pattern: "*.vcf.gz" - - - resource_tbi: - type: file - description: all resource tbi files that are used with the corresponding '--resource' - label - pattern: "*.vcf.gz.tbi" - - - labels: - type: string - description: necessary arguments for Sentieon's VarCal. Specified to directly - match the resources provided. More information can be found at https://support.sentieon.com/manual/usages/general/#varcal-algorithm - - - fasta: - type: file - description: The reference fasta file - pattern: "*.fasta" - - - fai: - type: file - description: Index of reference fasta file - pattern: "fasta.fai" + ontologies: [] + - resource_vcf: + type: file + description: all resource vcf files that are used with the corresponding '--resource' + label + pattern: "*.vcf.gz" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + - resource_tbi: + type: file + description: all resource tbi files that are used with the corresponding '--resource' + label + pattern: "*.vcf.gz.tbi" + ontologies: [] + - labels: + type: string + description: necessary arguments for Sentieon's VarCal. Specified to directly + match the resources provided. More information can be found at https://support.sentieon.com/manual/usages/general/#varcal-algorithm + - fasta: + type: file + description: The reference fasta file + pattern: "*.fasta" + ontologies: [] + - fai: + type: file + description: Index of reference fasta file + pattern: "fasta.fai" + ontologies: [] output: - - recal: - - meta: + recal: + - - meta: type: file description: Output recal file used by ApplyVQSR pattern: "*.recal" + ontologies: [] - "*.recal": type: file description: Output recal file used by ApplyVQSR pattern: "*.recal" - - idx: - - meta: + ontologies: [] + idx: + - - meta: type: file - description: Index file for the recal output file - pattern: "*.idx" + description: Output recal file used by ApplyVQSR + pattern: "*.recal" + ontologies: [] - "*.idx": type: file description: Index file for the recal output file pattern: "*.idx" - - tranches: - - meta: + ontologies: [] + tranches: + - - meta: type: file - description: Output tranches file used by ApplyVQSR - pattern: "*.tranches" + description: Output recal file used by ApplyVQSR + pattern: "*.recal" + ontologies: [] - "*.tranches": type: file description: Output tranches file used by ApplyVQSR pattern: "*.tranches" - - plots: - - meta: + ontologies: [] + plots: + - - meta: type: file - description: Optional output rscript file to aid in visualization of the input - data and learned model. - pattern: "*plots.R" + description: Output recal file used by ApplyVQSR + pattern: "*.recal" + ontologies: [] - "*plots.R": type: file description: Optional output rscript file to aid in visualization of the input data and learned model. pattern: "*plots.R" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3999 # R script + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@asp8200" maintainers: diff --git a/modules/nf-core/snpeff/download/meta.yml b/modules/nf-core/snpeff/download/meta.yml index a3211fc7c..c82cf2f3f 100644 --- a/modules/nf-core/snpeff/download/meta.yml +++ b/modules/nf-core/snpeff/download/meta.yml @@ -21,28 +21,26 @@ input: description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - - genome: - type: file - description: Reference genome in FASTA format - pattern: "*.{fasta,fna,fa}" - - cache_version: - type: string - description: Version of the snpEff cache to download + - snpeff_db: {} output: - - cache: - - meta: + cache: + - - meta: type: file description: | snpEff cache + ontologies: [] - snpeff_cache: type: file description: | snpEff cache - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@maxulysse" maintainers: diff --git a/modules/nf-core/snpeff/snpeff/meta.yml b/modules/nf-core/snpeff/snpeff/meta.yml index ef3d495ae..624a62421 100644 --- a/modules/nf-core/snpeff/snpeff/meta.yml +++ b/modules/nf-core/snpeff/snpeff/meta.yml @@ -25,10 +25,11 @@ input: type: file description: | vcf to annotate - - - db: - type: string - description: | - which db to annotate with + ontologies: [] + - db: + type: string + description: | + which db to annotate with - - meta2: type: map description: | @@ -38,52 +39,66 @@ input: type: file description: | path to snpEff cache (optional) + ontologies: [] output: - - vcf: - - meta: + vcf: + - - meta: type: file description: | annotated vcf pattern: "*.ann.vcf" + ontologies: [] - "*.ann.vcf": type: file description: | annotated vcf pattern: "*.ann.vcf" - - report: - - meta: + ontologies: [] + report: + - - meta: type: file - description: snpEff report csv file - pattern: "*.csv" + description: | + annotated vcf + pattern: "*.ann.vcf" + ontologies: [] - "*.csv": type: file description: snpEff report csv file pattern: "*.csv" - - summary_html: - - meta: + ontologies: + - edam: http://edamontology.org/format_3752 # CSV + summary_html: + - - meta: type: file - description: snpEff summary statistics in html file - pattern: "*.html" + description: | + annotated vcf + pattern: "*.ann.vcf" + ontologies: [] - "*.html": type: file description: snpEff summary statistics in html file pattern: "*.html" - - genes_txt: - - meta: + ontologies: [] + genes_txt: + - - meta: type: file - description: txt (tab separated) file having counts of the number of variants - affecting each transcript and gene - pattern: "*.genes.txt" + description: | + annotated vcf + pattern: "*.ann.vcf" + ontologies: [] - "*.genes.txt": type: file description: txt (tab separated) file having counts of the number of variants affecting each transcript and gene pattern: "*.genes.txt" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@maxulysse" maintainers: diff --git a/modules/nf-core/spring/decompress/meta.yml b/modules/nf-core/spring/decompress/meta.yml index 72b72b75d..980ffafa8 100644 --- a/modules/nf-core/spring/decompress/meta.yml +++ b/modules/nf-core/spring/decompress/meta.yml @@ -24,14 +24,15 @@ input: type: file description: Spring file to decompress. pattern: "*.{spring}" - - - write_one_fastq_gz: - type: boolean - description: | - Controls whether spring should write one fastq.gz file with reads from both directions or two fastq.gz files with reads from distinct directions - pattern: "true or false" + ontologies: [] + - write_one_fastq_gz: + type: boolean + description: | + Controls whether spring should write one fastq.gz file with reads from both directions or two fastq.gz files with reads from distinct directions + pattern: "true or false" output: - - fastq: - - meta: + fastq: + - - meta: type: map description: | Groovy Map containing sample information @@ -40,11 +41,14 @@ output: type: file description: Decompressed FASTQ file(s). pattern: "*.{fastq.gz}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@xec-cm" maintainers: diff --git a/modules/nf-core/strelka/germline/meta.yml b/modules/nf-core/strelka/germline/meta.yml index 5536dd8a5..c20bf89a6 100644 --- a/modules/nf-core/strelka/germline/meta.yml +++ b/modules/nf-core/strelka/germline/meta.yml @@ -27,29 +27,35 @@ input: type: file description: BAM/CRAM file pattern: "*.{bam,cram}" + ontologies: [] - input_index: type: file description: BAM/CRAI index file pattern: "*.{bai,crai}" + ontologies: [] - target_bed: type: file description: BED file containing target regions for variant calling pattern: "*.{bed}" + ontologies: [] - target_bed_index: type: file description: Index for BED file containing target regions for variant calling pattern: "*.{bed.tbi}" - - - fasta: - type: file - description: Genome reference FASTA file - pattern: "*.{fa,fasta}" - - - fai: - type: file - description: Genome reference FASTA index file - pattern: "*.{fa.fai,fasta.fai}" + ontologies: [] + - fasta: + type: file + description: Genome reference FASTA file + pattern: "*.{fa,fasta}" + ontologies: [] + - fai: + type: file + description: Genome reference FASTA index file + pattern: "*.{fa.fai,fasta.fai}" + ontologies: [] output: - - vcf: - - meta: + vcf: + - - meta: type: map description: | Groovy Map containing sample information @@ -58,8 +64,9 @@ output: type: file description: gzipped germline variant file pattern: "*.{vcf.gz}" - - vcf_tbi: - - meta: + ontologies: [] + vcf_tbi: + - - meta: type: map description: | Groovy Map containing sample information @@ -68,8 +75,9 @@ output: type: file description: index file for the vcf file pattern: "*.vcf.gz.tbi" - - genome_vcf: - - meta: + ontologies: [] + genome_vcf: + - - meta: type: map description: | Groovy Map containing sample information @@ -78,8 +86,10 @@ output: type: file description: variant records and compressed non-variant blocks pattern: "*_genome.vcf.gz" - - genome_vcf_tbi: - - meta: + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format + genome_vcf_tbi: + - - meta: type: map description: | Groovy Map containing sample information @@ -88,11 +98,14 @@ output: type: file description: index file for the genome_vcf file pattern: "*_genome.vcf.gz.tbi" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@arontommi" maintainers: diff --git a/modules/nf-core/strelka/somatic/meta.yml b/modules/nf-core/strelka/somatic/meta.yml index 6f2caaa3e..eca9ea43f 100644 --- a/modules/nf-core/strelka/somatic/meta.yml +++ b/modules/nf-core/strelka/somatic/meta.yml @@ -28,45 +28,55 @@ input: type: file description: BAM/CRAM/SAM file pattern: "*.{bam,cram,sam}" + ontologies: [] - input_index_normal: type: file description: BAM/CRAM/SAM index file pattern: "*.{bai,crai,sai}" + ontologies: [] - input_tumor: type: file description: BAM/CRAM/SAM file pattern: "*.{bam,cram,sam}" + ontologies: [] - input_index_tumor: type: file description: BAM/CRAM/SAM index file pattern: "*.{bai,crai,sai}" + ontologies: [] - manta_candidate_small_indels: type: file description: VCF.gz file pattern: "*.{vcf.gz}" + ontologies: [] - manta_candidate_small_indels_tbi: type: file description: VCF.gz index file pattern: "*.tbi" + ontologies: [] - target_bed: type: file description: BED file containing target regions for variant calling pattern: "*.{bed}" + ontologies: [] - target_bed_index: type: file description: Index for BED file containing target regions for variant calling pattern: "*.{bed.tbi}" - - - fasta: - type: file - description: Genome reference FASTA file - pattern: "*.{fa,fasta}" - - - fai: - type: file - description: Genome reference FASTA index file - pattern: "*.{fa.fai,fasta.fai}" + ontologies: [] + - fasta: + type: file + description: Genome reference FASTA file + pattern: "*.{fa,fasta}" + ontologies: [] + - fai: + type: file + description: Genome reference FASTA index file + pattern: "*.{fa.fai,fasta.fai}" + ontologies: [] output: - - vcf_indels: - - meta: + vcf_indels: + - - meta: type: map description: | Groovy Map containing sample information @@ -75,8 +85,9 @@ output: type: file description: Gzipped VCF file containing variants pattern: "*.{vcf.gz}" - - vcf_indels_tbi: - - meta: + ontologies: [] + vcf_indels_tbi: + - - meta: type: map description: | Groovy Map containing sample information @@ -85,8 +96,9 @@ output: type: file description: Index for gzipped VCF file containing variants pattern: "*.{vcf.gz.tbi}" - - vcf_snvs: - - meta: + ontologies: [] + vcf_snvs: + - - meta: type: map description: | Groovy Map containing sample information @@ -95,8 +107,9 @@ output: type: file description: Gzipped VCF file containing variants pattern: "*.{vcf.gz}" - - vcf_snvs_tbi: - - meta: + ontologies: [] + vcf_snvs_tbi: + - - meta: type: map description: | Groovy Map containing sample information @@ -105,11 +118,14 @@ output: type: file description: Index for gzipped VCF file containing variants pattern: "*.{vcf.gz.tbi}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@drpatelh" maintainers: diff --git a/modules/nf-core/svdb/merge/meta.yml b/modules/nf-core/svdb/merge/meta.yml index c34a9cb15..574fbad16 100644 --- a/modules/nf-core/svdb/merge/meta.yml +++ b/modules/nf-core/svdb/merge/meta.yml @@ -23,20 +23,20 @@ input: One or more VCF files. The order and number of files should correspond to the order and number of tags in the `priority` input channel. pattern: "*.{vcf,vcf.gz}" - - - input_priority: - type: list - description: | - Prioritize the input VCF files according to this list, - e.g ['tiddit','cnvnator']. The order and number of tags should correspond to - the order and number of VCFs in the `vcfs` input channel. - - - sort_inputs: - type: boolean - description: | - Should the input files be sorted by name. The priority tag will be sorted - together with it's corresponding VCF file. + - input_priority: + type: list + description: | + Prioritize the input VCF files according to this list, + e.g ['tiddit','cnvnator']. The order and number of tags should correspond to + the order and number of VCFs in the `vcfs` input channel. + - sort_inputs: + type: boolean + description: | + Should the input files be sorted by name. The priority tag will be sorted + together with it's corresponding VCF file. output: - - vcf: - - meta: + vcf: + - - meta: type: map description: | Groovy Map containing sample information @@ -45,8 +45,9 @@ output: type: file description: VCF output file pattern: "*.{vcf,vcf.gz,bcf,bcf.gz}" - - tbi: - - meta: + ontologies: [] + tbi: + - - meta: type: map description: | Groovy Map containing sample information @@ -55,8 +56,9 @@ output: type: file description: Alternative VCF file index pattern: "*.tbi" - - csi: - - meta: + ontologies: [] + csi: + - - meta: type: map description: | Groovy Map containing sample information @@ -65,11 +67,14 @@ output: type: file description: Default VCF file index pattern: "*.csi" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@ramprasadn" maintainers: diff --git a/modules/nf-core/tabix/bgziptabix/environment.yml b/modules/nf-core/tabix/bgziptabix/environment.yml index 6221bb53a..771b13870 100644 --- a/modules/nf-core/tabix/bgziptabix/environment.yml +++ b/modules/nf-core/tabix/bgziptabix/environment.yml @@ -6,4 +6,3 @@ channels: dependencies: - bioconda::htslib=1.21 - - bioconda::tabix=1.11 diff --git a/modules/nf-core/tabix/bgziptabix/meta.yml b/modules/nf-core/tabix/bgziptabix/meta.yml index 806fbc121..9c2c46d1c 100644 --- a/modules/nf-core/tabix/bgziptabix/meta.yml +++ b/modules/nf-core/tabix/bgziptabix/meta.yml @@ -23,9 +23,10 @@ input: - input: type: file description: Sorted tab-delimited genome file + ontologies: [] output: - - gz_tbi: - - meta: + gz_tbi: + - - meta: type: map description: | Groovy Map containing sample information @@ -34,12 +35,15 @@ output: type: file description: bgzipped tab-delimited genome file pattern: "*.gz" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format - "*.tbi": type: file description: tabix index file pattern: "*.tbi" - - gz_csi: - - meta: + ontologies: [] + gz_csi: + - - meta: type: map description: | Groovy Map containing sample information @@ -48,15 +52,20 @@ output: type: file description: bgzipped tab-delimited genome file pattern: "*.gz" + ontologies: + - edam: http://edamontology.org/format_3989 # GZIP format - "*.csi": type: file description: csi index file pattern: "*.csi" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@maxulysse" - "@DLBPointon" diff --git a/modules/nf-core/tabix/tabix/environment.yml b/modules/nf-core/tabix/tabix/environment.yml index 6221bb53a..771b13870 100644 --- a/modules/nf-core/tabix/tabix/environment.yml +++ b/modules/nf-core/tabix/tabix/environment.yml @@ -6,4 +6,3 @@ channels: dependencies: - bioconda::htslib=1.21 - - bioconda::tabix=1.11 diff --git a/modules/nf-core/tabix/tabix/meta.yml b/modules/nf-core/tabix/tabix/meta.yml index 7864832d9..c172968d8 100644 --- a/modules/nf-core/tabix/tabix/meta.yml +++ b/modules/nf-core/tabix/tabix/meta.yml @@ -22,9 +22,10 @@ input: type: file description: TAB-delimited genome position file compressed with bgzip pattern: "*.{bed.gz,gff.gz,sam.gz,vcf.gz}" + ontologies: [] output: - - tbi: - - meta: + tbi: + - - meta: type: map description: | Groovy Map containing sample information @@ -33,8 +34,9 @@ output: type: file description: tabix index file pattern: "*.{tbi}" - - csi: - - meta: + ontologies: [] + csi: + - - meta: type: map description: | Groovy Map containing sample information @@ -43,11 +45,14 @@ output: type: file description: coordinate sorted index file pattern: "*.{csi}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@joseespinosa" - "@drpatelh" diff --git a/modules/nf-core/tiddit/sv/meta.yml b/modules/nf-core/tiddit/sv/meta.yml index 21527baf1..f89fe94b3 100644 --- a/modules/nf-core/tiddit/sv/meta.yml +++ b/modules/nf-core/tiddit/sv/meta.yml @@ -22,10 +22,12 @@ input: type: file description: BAM/CRAM file pattern: "*.{bam,cram}" + ontologies: [] - input_index: type: file description: BAM/CRAM index file pattern: "*.{bai,crai}" + ontologies: [] - - meta2: type: map description: | @@ -35,6 +37,7 @@ input: type: file description: Input FASTA file pattern: "*.{fasta,fa}" + ontologies: [] - - meta3: type: map description: | @@ -44,9 +47,10 @@ input: type: file description: BWA genome index files pattern: "Directory containing BWA index *.{amb,ann,bwt,pac,sa}" + ontologies: [] output: - - vcf: - - meta: + vcf: + - - meta: type: map description: | Groovy Map containing sample information @@ -55,8 +59,9 @@ output: type: file description: vcf pattern: "*.{vcf}" - - ploidy: - - meta: + ontologies: [] + ploidy: + - - meta: type: map description: | Groovy Map containing sample information @@ -65,11 +70,14 @@ output: type: file description: tab pattern: "*.{ploidies.tab}" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@maxulysse" maintainers: diff --git a/modules/nf-core/untar/meta.yml b/modules/nf-core/untar/meta.yml index 3a37bb35c..1b6bf491e 100644 --- a/modules/nf-core/untar/meta.yml +++ b/modules/nf-core/untar/meta.yml @@ -21,9 +21,12 @@ input: type: file description: File to be untar pattern: "*.{tar}.{gz}" + ontologies: + - edam: http://edamontology.org/format_3981 # TAR format + - edam: http://edamontology.org/format_3989 # GZIP format output: - - untar: - - meta: + untar: + - - meta: type: map description: | Groovy Map containing sample information @@ -35,11 +38,13 @@ output: Groovy Map containing sample information e.g. [ id:'test', single_end:false ] pattern: "*/" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@joseespinosa" - "@drpatelh" diff --git a/modules/nf-core/unzip/meta.yml b/modules/nf-core/unzip/meta.yml index 426fccb76..ba1eb9129 100644 --- a/modules/nf-core/unzip/meta.yml +++ b/modules/nf-core/unzip/meta.yml @@ -24,9 +24,11 @@ input: type: file description: ZIP file pattern: "*.zip" + ontologies: + - edam: http://edamontology.org/format_3987 # ZIP format output: - - unzipped_archive: - - meta: + unzipped_archive: + - - meta: type: map description: | Groovy Map containing sample information @@ -35,11 +37,13 @@ output: type: directory description: Directory contents of the unzipped archive pattern: "${archive.baseName}/" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@jfy133" maintainers: diff --git a/modules/nf-core/vcftools/meta.yml b/modules/nf-core/vcftools/meta.yml index b9bae4df1..79acf37ed 100644 --- a/modules/nf-core/vcftools/meta.yml +++ b/modules/nf-core/vcftools/meta.yml @@ -22,17 +22,19 @@ input: - variant_file: type: file description: variant input file which can be vcf, vcf.gz, or bcf format. - - - bed: - type: file - description: bed file which can be used with different arguments in vcftools - (optional) - - - diff_variant_file: - type: file - description: secondary variant file which can be used with the 'diff' suite - of tools (optional) + ontologies: [] + - bed: + type: file + description: bed file which can be used with different arguments in vcftools (optional) + ontologies: [] + - diff_variant_file: + type: file + description: secondary variant file which can be used with the 'diff' suite of + tools (optional) + ontologies: [] output: - - vcf: - - meta: + vcf: + - - meta: type: map description: | Groovy Map containing sample information @@ -41,8 +43,9 @@ output: type: file description: vcf file (optional) pattern: "*.vcf" - - bcf: - - meta: + ontologies: [] + bcf: + - - meta: type: map description: | Groovy Map containing sample information @@ -51,8 +54,9 @@ output: type: file description: bcf file (optional) pattern: "*.bcf" - - frq: - - meta: + ontologies: [] + frq: + - - meta: type: map description: | Groovy Map containing sample information @@ -61,8 +65,9 @@ output: type: file description: Allele frequency for each site (optional) pattern: "*.frq" - - frq_count: - - meta: + ontologies: [] + frq_count: + - - meta: type: map description: | Groovy Map containing sample information @@ -71,8 +76,9 @@ output: type: file description: Allele counts for each site (optional) pattern: "*.frq.count" - - idepth: - - meta: + ontologies: [] + idepth: + - - meta: type: map description: | Groovy Map containing sample information @@ -81,8 +87,9 @@ output: type: file description: mean depth per individual (optional) pattern: "*.idepth" - - ldepth: - - meta: + ontologies: [] + ldepth: + - - meta: type: map description: | Groovy Map containing sample information @@ -91,8 +98,9 @@ output: type: file description: depth per site summed across individuals (optional) pattern: "*.ildepth" - - ldepth_mean: - - meta: + ontologies: [] + ldepth_mean: + - - meta: type: map description: | Groovy Map containing sample information @@ -101,8 +109,9 @@ output: type: file description: mean depth per site calculated across individuals (optional) pattern: "*.ldepth.mean" - - gdepth: - - meta: + ontologies: [] + gdepth: + - - meta: type: map description: | Groovy Map containing sample information @@ -111,8 +120,9 @@ output: type: file description: depth for each genotype in vcf file (optional) pattern: "*.gdepth" - - hap_ld: - - meta: + ontologies: [] + hap_ld: + - - meta: type: map description: | Groovy Map containing sample information @@ -121,30 +131,34 @@ output: type: file description: r2, D, and D’ statistics using phased haplotypes (optional) pattern: "*.hap.ld" - - geno_ld: - - meta: + ontologies: [] + geno_ld: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - "*.geno.ld": type: file - description: squared correlation coefficient between genotypes encoded as 0, - 1 and 2 to represent the number of non-reference alleles in each individual + description: squared correlation coefficient between genotypes encoded as + 0, 1 and 2 to represent the number of non-reference alleles in each individual (optional) pattern: "*.geno.ld" - - geno_chisq: - - meta: + ontologies: [] + geno_chisq: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - "*.geno.chisq": type: file - description: test for genotype independence via the chi-squared statistic (optional) + description: test for genotype independence via the chi-squared statistic + (optional) pattern: "*.geno.chisq" - - list_hap_ld: - - meta: + ontologies: [] + list_hap_ld: + - - meta: type: map description: | Groovy Map containing sample information @@ -154,8 +168,9 @@ output: description: r2 statistics of the sites contained in the provided input file verses all other sites (optional) pattern: "*.list.hap.ld" - - list_geno_ld: - - meta: + ontologies: [] + list_geno_ld: + - - meta: type: map description: | Groovy Map containing sample information @@ -165,28 +180,33 @@ output: description: r2 statistics of the sites contained in the provided input file verses all other sites (optional) pattern: "*.list.geno.ld" - - interchrom_hap_ld: - - meta: + ontologies: [] + interchrom_hap_ld: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - "*.interchrom.hap.ld": type: file - description: r2 statistics for sites (haplotypes) on different chromosomes (optional) + description: r2 statistics for sites (haplotypes) on different chromosomes + (optional) pattern: "*.interchrom.hap.ld" - - interchrom_geno_ld: - - meta: + ontologies: [] + interchrom_geno_ld: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - "*.interchrom.geno.ld": type: file - description: r2 statistics for sites (genotypes) on different chromosomes (optional) + description: r2 statistics for sites (genotypes) on different chromosomes + (optional) pattern: "*.interchrom.geno.ld" - - tstv: - - meta: + ontologies: [] + tstv: + - - meta: type: map description: | Groovy Map containing sample information @@ -196,8 +216,9 @@ output: description: Transition / Transversion ratio in bins of size defined in options (optional) pattern: "*.TsTv" - - tstv_summary: - - meta: + ontologies: [] + tstv_summary: + - - meta: type: map description: | Groovy Map containing sample information @@ -206,41 +227,45 @@ output: type: file description: Summary of all Transitions and Transversions (optional) pattern: "*.TsTv.summary" - - tstv_count: - - meta: + ontologies: [] + tstv_count: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - "*.TsTv.count": type: file - description: Transition / Transversion ratio as a function of alternative allele - count (optional) + description: Transition / Transversion ratio as a function of alternative + allele count (optional) pattern: "*.TsTv.count" - - tstv_qual: - - meta: + ontologies: [] + tstv_qual: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - "*.TsTv.qual": type: file - description: Transition / Transversion ratio as a function of SNP quality threshold - (optional) + description: Transition / Transversion ratio as a function of SNP quality + threshold (optional) pattern: "*.TsTv.qual" - - filter_summary: - - meta: + ontologies: [] + filter_summary: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - "*.FILTER.summary": type: file - description: Summary of the number of SNPs and Ts/Tv ratio for each FILTER category - (optional) + description: Summary of the number of SNPs and Ts/Tv ratio for each FILTER + category (optional) pattern: "*.FILTER.summary" - - sites_pi: - - meta: + ontologies: [] + sites_pi: + - - meta: type: map description: | Groovy Map containing sample information @@ -249,19 +274,21 @@ output: type: file description: Nucleotide divergency on a per-site basis (optional) pattern: "*.sites.pi" - - windowed_pi: - - meta: + ontologies: [] + windowed_pi: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - "*.windowed.pi": type: file - description: Nucleotide diversity in windows, with window size determined by - options (optional) + description: Nucleotide diversity in windows, with window size determined + by options (optional) pattern: "*windowed.pi" - - weir_fst: - - meta: + ontologies: [] + weir_fst: + - - meta: type: map description: | Groovy Map containing sample information @@ -270,8 +297,9 @@ output: type: file description: Fst estimate from Weir and Cockerham’s 1984 paper (optional) pattern: "*.weir.fst" - - heterozygosity: - - meta: + ontologies: [] + heterozygosity: + - - meta: type: map description: | Groovy Map containing sample information @@ -280,8 +308,9 @@ output: type: file description: Heterozygosity on a per-individual basis (optional) pattern: "*.het" - - hwe: - - meta: + ontologies: [] + hwe: + - - meta: type: map description: | Groovy Map containing sample information @@ -291,8 +320,9 @@ output: description: Contains the Observed numbers of Homozygotes and Heterozygotes and the corresponding Expected numbers under HWE (optional) pattern: "*.hwe" - - tajima_d: - - meta: + ontologies: [] + tajima_d: + - - meta: type: map description: | Groovy Map containing sample information @@ -302,8 +332,9 @@ output: description: Tajima’s D statistic in bins with size of the specified number in options (optional) pattern: "*.Tajima.D" - - freq_burden: - - meta: + ontologies: [] + freq_burden: + - - meta: type: map description: | Groovy Map containing sample information @@ -313,8 +344,9 @@ output: description: Number of variants within each individual of a specific frequency in options (optional) pattern: "*.ifreqburden" - - lroh: - - meta: + ontologies: [] + lroh: + - - meta: type: map description: | Groovy Map containing sample information @@ -323,8 +355,9 @@ output: type: file description: Long Runs of Homozygosity (optional) pattern: "*.LROH" - - relatedness: - - meta: + ontologies: [] + relatedness: + - - meta: type: map description: | Groovy Map containing sample information @@ -334,8 +367,9 @@ output: description: Relatedness statistic based on the method of Yang et al, Nature Genetics 2010 (doi:10.1038/ng.608) (optional) pattern: "*.relatedness" - - relatedness2: - - meta: + ontologies: [] + relatedness2: + - - meta: type: map description: | Groovy Map containing sample information @@ -345,8 +379,9 @@ output: description: Relatedness statistic based on the method of Manichaikul et al., BIOINFORMATICS 2010 (doi:10.1093/bioinformatics/btq559) (optional) pattern: "*.relatedness2" - - lqual: - - meta: + ontologies: [] + lqual: + - - meta: type: map description: | Groovy Map containing sample information @@ -355,8 +390,9 @@ output: type: file description: per-site SNP quality (optional) pattern: "*.lqual" - - missing_individual: - - meta: + ontologies: [] + missing_individual: + - - meta: type: map description: | Groovy Map containing sample information @@ -365,8 +401,9 @@ output: type: file description: Missingness on a per-individual basis (optional) pattern: "*.imiss" - - missing_site: - - meta: + ontologies: [] + missing_site: + - - meta: type: map description: | Groovy Map containing sample information @@ -375,18 +412,21 @@ output: type: file description: Missingness on a per-site basis (optional) pattern: "*.lmiss" - - snp_density: - - meta: + ontologies: [] + snp_density: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - "*.snpden": type: file - description: Number and density of SNPs in bins of size defined by option (optional) + description: Number and density of SNPs in bins of size defined by option + (optional) pattern: "*.snpden" - - kept_sites: - - meta: + ontologies: [] + kept_sites: + - - meta: type: map description: | Groovy Map containing sample information @@ -395,8 +435,9 @@ output: type: file description: All sites that have been kept after filtering (optional) pattern: "*.kept.sites" - - removed_sites: - - meta: + ontologies: [] + removed_sites: + - - meta: type: map description: | Groovy Map containing sample information @@ -405,8 +446,9 @@ output: type: file description: All sites that have been removed after filtering (optional) pattern: "*.removed.sites" - - singeltons: - - meta: + ontologies: [] + singeltons: + - - meta: type: map description: | Groovy Map containing sample information @@ -415,8 +457,9 @@ output: type: file description: Location of singletons, and the individual they occur in (optional) pattern: "*.singeltons" - - indel_hist: - - meta: + ontologies: [] + indel_hist: + - - meta: type: map description: | Groovy Map containing sample information @@ -425,8 +468,9 @@ output: type: file description: Histogram file of the length of all indels (including SNPs) (optional) pattern: "*.indel_hist" - - hapcount: - - meta: + ontologies: [] + hapcount: + - - meta: type: map description: | Groovy Map containing sample information @@ -435,8 +479,9 @@ output: type: file description: Unique haplotypes within user specified bins (optional) pattern: "*.hapcount" - - mendel: - - meta: + ontologies: [] + mendel: + - - meta: type: map description: | Groovy Map containing sample information @@ -445,8 +490,9 @@ output: type: file description: Mendel errors identified in trios (optional) pattern: "*.mendel" - - format: - - meta: + ontologies: [] + format: + - - meta: type: map description: | Groovy Map containing sample information @@ -456,8 +502,9 @@ output: description: Extracted information from the genotype fields in the VCF file relating to a specified FORMAT identifier (optional) pattern: "*.FORMAT" - - info: - - meta: + ontologies: [] + info: + - - meta: type: map description: | Groovy Map containing sample information @@ -466,8 +513,9 @@ output: type: file description: Extracted information from the INFO field in the VCF file (optional) pattern: "*.INFO" - - genotypes_matrix: - - meta: + ontologies: [] + genotypes_matrix: + - - meta: type: map description: | Groovy Map containing sample information @@ -480,19 +528,21 @@ output: Genotypes are represented as 0, 1 and 2, where the number represent that number of non-reference alleles. Missing genotypes are represented by -1 (optional) pattern: "*.012" - - genotypes_matrix_individual: - - meta: + ontologies: [] + genotypes_matrix_individual: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - "*.012.indv": type: file - description: Details the individuals included in the main genotypes_matrix file - (optional) + description: Details the individuals included in the main genotypes_matrix + file (optional) pattern: "*.012.indv" - - genotypes_matrix_position: - - meta: + ontologies: [] + genotypes_matrix_position: + - - meta: type: map description: | Groovy Map containing sample information @@ -502,8 +552,9 @@ output: description: Details the site locations included in the main genotypes_matrix file (optional) pattern: "*.012.pos" - - impute_hap: - - meta: + ontologies: [] + impute_hap: + - - meta: type: map description: | Groovy Map containing sample information @@ -512,8 +563,9 @@ output: type: file description: Phased haplotypes in IMPUTE reference-panel format (optional) pattern: "*.impute.hap" - - impute_hap_legend: - - meta: + ontologies: [] + impute_hap_legend: + - - meta: type: map description: | Groovy Map containing sample information @@ -522,8 +574,9 @@ output: type: file description: Impute haplotype legend file (optional) pattern: "*.impute.hap.legend" - - impute_hap_indv: - - meta: + ontologies: [] + impute_hap_indv: + - - meta: type: map description: | Groovy Map containing sample information @@ -532,8 +585,9 @@ output: type: file description: Impute haplotype individuals file (optional) pattern: "*.impute.hap.indv" - - ldhat_sites: - - meta: + ontologies: [] + ldhat_sites: + - - meta: type: map description: | Groovy Map containing sample information @@ -542,8 +596,9 @@ output: type: file description: Output data in LDhat format, sites (optional) pattern: "*.ldhat.sites" - - ldhat_locs: - - meta: + ontologies: [] + ldhat_locs: + - - meta: type: map description: | Groovy Map containing sample information @@ -552,8 +607,9 @@ output: type: file description: output data in LDhat format, locations (optional) pattern: "*.ldhat.locs" - - beagle_gl: - - meta: + ontologies: [] + beagle_gl: + - - meta: type: map description: | Groovy Map containing sample information @@ -562,8 +618,9 @@ output: type: file description: Genotype likelihoods for biallelic sites (optional) pattern: "*.BEAGLE.GL" - - beagle_pl: - - meta: + ontologies: [] + beagle_pl: + - - meta: type: map description: | Groovy Map containing sample information @@ -572,8 +629,9 @@ output: type: file description: Genotype likelihoods for biallelic sites (optional) pattern: "*.BEAGLE.PL" - - ped: - - meta: + ontologies: [] + ped: + - - meta: type: map description: | Groovy Map containing sample information @@ -582,8 +640,9 @@ output: type: file description: output the genotype data in PLINK PED format (optional) pattern: "*.ped" - - map_: - - meta: + ontologies: [] + map_: + - - meta: type: map description: | Groovy Map containing sample information @@ -592,8 +651,9 @@ output: type: file description: output the genotype data in PLINK PED format (optional) pattern: "*.map" - - tped: - - meta: + ontologies: [] + tped: + - - meta: type: map description: | Groovy Map containing sample information @@ -602,8 +662,9 @@ output: type: file description: output the genotype data in PLINK PED format (optional) pattern: "*.tped" - - tfam: - - meta: + ontologies: [] + tfam: + - - meta: type: map description: | Groovy Map containing sample information @@ -612,8 +673,9 @@ output: type: file description: output the genotype data in PLINK PED format (optional) pattern: "*.tfam" - - diff_sites_in_files: - - meta: + ontologies: [] + diff_sites_in_files: + - - meta: type: map description: | Groovy Map containing sample information @@ -623,8 +685,9 @@ output: description: Sites that are common / unique to each file specified in optional inputs (optional) pattern: "*.diff.sites.in.files" - - diff_indv_in_files: - - meta: + ontologies: [] + diff_indv_in_files: + - - meta: type: map description: | Groovy Map containing sample information @@ -634,8 +697,9 @@ output: description: Individuals that are common / unique to each file specified in optional inputs (optional) pattern: "*.diff.indv.in.files" - - diff_sites: - - meta: + ontologies: [] + diff_sites: + - - meta: type: map description: | Groovy Map containing sample information @@ -645,29 +709,33 @@ output: description: Discordance on a site by site basis, specified in optional inputs (optional) pattern: "*.diff.sites" - - diff_indv: - - meta: + ontologies: [] + diff_indv: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - "*.diff.indv": type: file - description: Discordance on a individual by individual basis, specified in optional - inputs (optional) + description: Discordance on a individual by individual basis, specified in + optional inputs (optional) pattern: "*.diff.indv" - - diff_discd_matrix: - - meta: + ontologies: [] + diff_discd_matrix: + - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - "*.diff.discordance.matrix": type: file - description: Discordance matrix between files specified in optional inputs (optional) + description: Discordance matrix between files specified in optional inputs + (optional) pattern: "*.diff.discordance.matrix" - - diff_switch_error: - - meta: + ontologies: [] + diff_switch_error: + - - meta: type: map description: | Groovy Map containing sample information @@ -676,11 +744,14 @@ output: type: file description: Switch errors found between sites (optional) pattern: "*.diff.switch" - - versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + ontologies: [] + versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@Mark-S-Hill" maintainers: diff --git a/subworkflows/nf-core/bam_ngscheckmate/main.nf b/subworkflows/nf-core/bam_ngscheckmate/main.nf index d698dd3f2..ff5c0885d 100644 --- a/subworkflows/nf-core/bam_ngscheckmate/main.nf +++ b/subworkflows/nf-core/bam_ngscheckmate/main.nf @@ -1,6 +1,6 @@ include { BCFTOOLS_MPILEUP } from '../../../modules/nf-core/bcftools/mpileup/main' include { NGSCHECKMATE_NCM } from '../../../modules/nf-core/ngscheckmate/ncm/main' - +// please note this subworkflow requires the options for bcltools_mpileup that are included in the nextflow.config workflow BAM_NGSCHECKMATE { take: @@ -12,7 +12,6 @@ workflow BAM_NGSCHECKMATE { ch_versions = Channel.empty() ch_input_bed = ch_input.combine(ch_snp_bed) - // do something to combine the metas? .map{ input_meta, input_file, _bed_meta, bed_file -> [input_meta, input_file, bed_file] } diff --git a/subworkflows/nf-core/vcf_annotate_ensemblvep/main.nf b/subworkflows/nf-core/vcf_annotate_ensemblvep/main.nf index d9c9e834f..4d3e89e24 100644 --- a/subworkflows/nf-core/vcf_annotate_ensemblvep/main.nf +++ b/subworkflows/nf-core/vcf_annotate_ensemblvep/main.nf @@ -2,18 +2,18 @@ // Run VEP to annotate VCF files // -include { ENSEMBLVEP_VEP } from '../../../modules/nf-core/ensemblvep/vep/main' -include { TABIX_TABIX } from '../../../modules/nf-core/tabix/tabix/main' +include { ENSEMBLVEP_VEP } from '../../../modules/nf-core/ensemblvep/vep' +include { TABIX_TABIX } from '../../../modules/nf-core/tabix/tabix' workflow VCF_ANNOTATE_ENSEMBLVEP { take: - ch_vcf // channel: [ val(meta), path(vcf), [path(custom_file1), path(custom_file2)... (optional)]] - ch_fasta // channel: [ val(meta2), path(fasta) ] (optional) - val_genome // value: genome to use - val_species // value: species to use - val_cache_version // value: cache version to use - ch_cache // channel: [ val(meta3), path(cache) ] (optional) - ch_extra_files // channel: [ path(file1), path(file2)... ] (optional) + ch_vcf // channel: [ val(meta), path(vcf), [path(custom_file1), path(custom_file2)... (optional)]] + ch_fasta // channel: [ val(meta2), path(fasta) ] (optional) + val_genome // value: genome to use + val_species // value: species to use + val_cache_version // value: cache version to use + ch_cache // channel: [ val(meta3), path(cache) ] (optional) + ch_extra_files // channel: [ path(file1), path(file2)... ] (optional) main: ch_versions = Channel.empty() @@ -25,7 +25,7 @@ workflow VCF_ANNOTATE_ENSEMBLVEP { val_cache_version, ch_cache, ch_fasta, - ch_extra_files + ch_extra_files, ) TABIX_TABIX(ENSEMBLVEP_VEP.out.vcf) @@ -37,9 +37,9 @@ workflow VCF_ANNOTATE_ENSEMBLVEP { ch_versions = ch_versions.mix(TABIX_TABIX.out.versions) emit: - vcf_tbi = ch_vcf_tbi // channel: [ val(meta), path(vcf), path(tbi) ] - json = ENSEMBLVEP_VEP.out.json // channel: [ val(meta), path(json) ] - tab = ENSEMBLVEP_VEP.out.tab // channel: [ val(meta), path(tab) ] - reports = ENSEMBLVEP_VEP.out.report // channel: [ path(html) ] - versions = ch_versions // channel: [ versions.yml ] + vcf_tbi = ch_vcf_tbi // channel: [ val(meta), path(vcf), path(tbi) ] + json = ENSEMBLVEP_VEP.out.json // channel: [ val(meta), path(json) ] + tab = ENSEMBLVEP_VEP.out.tab // channel: [ val(meta), path(tab) ] + reports = ENSEMBLVEP_VEP.out.report // channel: [ path(html) ] + versions = ch_versions // channel: [ versions.yml ] } diff --git a/subworkflows/nf-core/vcf_annotate_snpeff/main.nf b/subworkflows/nf-core/vcf_annotate_snpeff/main.nf index 3570a5b7c..07e3041e4 100644 --- a/subworkflows/nf-core/vcf_annotate_snpeff/main.nf +++ b/subworkflows/nf-core/vcf_annotate_snpeff/main.nf @@ -2,8 +2,8 @@ // Run SNPEFF to annotate VCF files // -include { SNPEFF_SNPEFF } from '../../../modules/nf-core/snpeff/snpeff/main.nf' -include { TABIX_BGZIPTABIX } from '../../../modules/nf-core/tabix/bgziptabix/main.nf' +include { SNPEFF_SNPEFF } from '../../../modules/nf-core/snpeff/snpeff' +include { TABIX_BGZIPTABIX } from '../../../modules/nf-core/tabix/bgziptabix' workflow VCF_ANNOTATE_SNPEFF { take: @@ -22,7 +22,9 @@ workflow VCF_ANNOTATE_SNPEFF { ch_versions = ch_versions.mix(TABIX_BGZIPTABIX.out.versions) emit: - vcf_tbi = TABIX_BGZIPTABIX.out.gz_tbi // channel: [ val(meta), path(vcf), path(tbi) ] - reports = SNPEFF_SNPEFF.out.report // channel: [ path(html) ] - versions = ch_versions // channel: [ path(versions.yml) ] + vcf_tbi = TABIX_BGZIPTABIX.out.gz_tbi // channel: [ val(meta), path(vcf), path(tbi) ] + reports = SNPEFF_SNPEFF.out.report // channel: [ path(html) ] + summary = SNPEFF_SNPEFF.out.summary_html // channel: [ path(html) ] + genes_txt = SNPEFF_SNPEFF.out.genes_txt // channel: [ path(genes.txt) ] + versions = ch_versions // channel: [ path(versions.yml) ] } diff --git a/subworkflows/nf-core/vcf_annotate_snpeff/meta.yml b/subworkflows/nf-core/vcf_annotate_snpeff/meta.yml index c8d5a635e..bf2db6523 100644 --- a/subworkflows/nf-core/vcf_annotate_snpeff/meta.yml +++ b/subworkflows/nf-core/vcf_annotate_snpeff/meta.yml @@ -30,6 +30,14 @@ output: description: | html reports Structure: [ path(html) ] + - summary: + description: | + html reports + Structure: [ path(csv) ] + - genes_txt: + description: | + html reports + Structure: [ path(txt) ] - versions: description: | Files containing software versions From cdbececaa42ead357fe381366b64abc0362333fa Mon Sep 17 00:00:00 2001 From: maxulysse Date: Thu, 14 Aug 2025 12:00:37 +0200 Subject: [PATCH 07/34] update snapshots --- tests/aligner-parabricks.nf.test.snap | 6 +++ tests/default.nf.test.snap | 12 ++++++ ...joint_calling_haplotypecaller.nf.test.snap | 12 ++++++ tests/postprocess_concatenation.nf.test.snap | 6 +++ ...s_concatenation_normalization.nf.test.snap | 6 +++ tests/postprocess_normalization.nf.test.snap | 6 +++ ...art_from_preparerecalibration.nf.test.snap | 12 ++++++ tests/start_from_recalibration.nf.test.snap | 12 ++++++ tests/tumor-normal-pair.nf.test.snap | 6 +++ .../variant_calling_deepvariant.nf.test.snap | 24 +++++++++++ tests/variant_calling_freebayes.nf.test.snap | 36 ++++++++++++++++ ...riant_calling_haplotypecaller.nf.test.snap | 24 +++++++++++ tests/variant_calling_manta.nf.test.snap | 42 +++++++++++++++++++ tests/variant_calling_mpileup.nf.test.snap | 24 +++++++++++ tests/variant_calling_muse.nf.test.snap | 12 ++++++ ...ant_calling_sentieon_dnascope.nf.test.snap | 18 ++++++++ ...ling_sentieon_haplotypecaller.nf.test.snap | 24 +++++++++++ ...iant_calling_sentieon_tnscope.nf.test.snap | 24 +++++++++++ tests/variant_calling_strelka.nf.test.snap | 30 +++++++++++++ tests/variant_calling_strelka_bp.nf.test.snap | 12 ++++++ tests/variant_calling_tiddit.nf.test.snap | 18 ++++++++ 21 files changed, 366 insertions(+) diff --git a/tests/aligner-parabricks.nf.test.snap b/tests/aligner-parabricks.nf.test.snap index ca477e922..2087d44aa 100644 --- a/tests/aligner-parabricks.nf.test.snap +++ b/tests/aligner-parabricks.nf.test.snap @@ -266,8 +266,14 @@ "TABIX_BGZIPTABIX_INTERVAL_SPLIT": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ diff --git a/tests/default.nf.test.snap b/tests/default.nf.test.snap index 1b92db083..6b65be8a7 100644 --- a/tests/default.nf.test.snap +++ b/tests/default.nf.test.snap @@ -50,8 +50,14 @@ "TABIX_BGZIPTABIX_INTERVAL_SPLIT": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ @@ -341,8 +347,14 @@ "TABIX_BGZIPTABIX_INTERVAL_SPLIT": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ diff --git a/tests/joint_calling_haplotypecaller.nf.test.snap b/tests/joint_calling_haplotypecaller.nf.test.snap index b19e3708a..c9abb70c2 100644 --- a/tests/joint_calling_haplotypecaller.nf.test.snap +++ b/tests/joint_calling_haplotypecaller.nf.test.snap @@ -33,8 +33,14 @@ "TABIX_BGZIPTABIX_INTERVAL_SPLIT": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ @@ -242,8 +248,14 @@ "TABIX_BGZIPTABIX_INTERVAL_SPLIT": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ diff --git a/tests/postprocess_concatenation.nf.test.snap b/tests/postprocess_concatenation.nf.test.snap index 5cccb6f23..b18c47fdd 100644 --- a/tests/postprocess_concatenation.nf.test.snap +++ b/tests/postprocess_concatenation.nf.test.snap @@ -57,8 +57,14 @@ "TABIX_VC_FREEBAYES": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ diff --git a/tests/postprocess_concatenation_normalization.nf.test.snap b/tests/postprocess_concatenation_normalization.nf.test.snap index 5f370842f..edc29a9c8 100644 --- a/tests/postprocess_concatenation_normalization.nf.test.snap +++ b/tests/postprocess_concatenation_normalization.nf.test.snap @@ -66,8 +66,14 @@ "VCFS_NORM_SORT": { "bcftools": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ diff --git a/tests/postprocess_normalization.nf.test.snap b/tests/postprocess_normalization.nf.test.snap index 9e02ed418..c063b891b 100644 --- a/tests/postprocess_normalization.nf.test.snap +++ b/tests/postprocess_normalization.nf.test.snap @@ -57,8 +57,14 @@ "VCFS_NORM_SORT": { "bcftools": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ diff --git a/tests/start_from_preparerecalibration.nf.test.snap b/tests/start_from_preparerecalibration.nf.test.snap index 2b206f734..4422fe511 100644 --- a/tests/start_from_preparerecalibration.nf.test.snap +++ b/tests/start_from_preparerecalibration.nf.test.snap @@ -95,8 +95,14 @@ "TABIX_BGZIPTABIX_INTERVAL_SPLIT": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ @@ -219,8 +225,14 @@ "TABIX_BGZIPTABIX_INTERVAL_SPLIT": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ diff --git a/tests/start_from_recalibration.nf.test.snap b/tests/start_from_recalibration.nf.test.snap index 2014cd61d..da09c2abe 100644 --- a/tests/start_from_recalibration.nf.test.snap +++ b/tests/start_from_recalibration.nf.test.snap @@ -71,8 +71,14 @@ "TABIX_BGZIPTABIX_INTERVAL_SPLIT": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ @@ -195,8 +201,14 @@ "TABIX_BGZIPTABIX_INTERVAL_SPLIT": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ diff --git a/tests/tumor-normal-pair.nf.test.snap b/tests/tumor-normal-pair.nf.test.snap index 2cf05bee5..8fb55883d 100644 --- a/tests/tumor-normal-pair.nf.test.snap +++ b/tests/tumor-normal-pair.nf.test.snap @@ -53,8 +53,14 @@ "TABIX_BGZIPTABIX_INTERVAL_SPLIT": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ diff --git a/tests/variant_calling_deepvariant.nf.test.snap b/tests/variant_calling_deepvariant.nf.test.snap index e0f8ec91a..07e747653 100644 --- a/tests/variant_calling_deepvariant.nf.test.snap +++ b/tests/variant_calling_deepvariant.nf.test.snap @@ -27,8 +27,14 @@ "TABIX_BGZIPTABIX_INTERVAL_SPLIT": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ @@ -203,8 +209,14 @@ "TABIX_BGZIPTABIX_INTERVAL_SPLIT": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ @@ -338,8 +350,14 @@ "TABIX_BGZIPTABIX_INTERVAL_COMBINED": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ @@ -476,8 +494,14 @@ "TABIX_BGZIPTABIX_INTERVAL_COMBINED": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ diff --git a/tests/variant_calling_freebayes.nf.test.snap b/tests/variant_calling_freebayes.nf.test.snap index 98bc86ed7..2dd34c85a 100644 --- a/tests/variant_calling_freebayes.nf.test.snap +++ b/tests/variant_calling_freebayes.nf.test.snap @@ -33,8 +33,14 @@ "TABIX_BGZIPTABIX_INTERVAL_SPLIT": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ @@ -249,8 +255,14 @@ "TABIX_VC_FREEBAYES": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ @@ -655,8 +667,14 @@ "TABIX_BGZIPTABIX_INTERVAL_SPLIT": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ @@ -999,8 +1017,14 @@ "TABIX_VC_FREEBAYES": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ @@ -1318,8 +1342,14 @@ "TABIX_VC_FREEBAYES": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ @@ -1543,8 +1573,14 @@ "TABIX_BGZIPTABIX_INTERVAL_SPLIT": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ diff --git a/tests/variant_calling_haplotypecaller.nf.test.snap b/tests/variant_calling_haplotypecaller.nf.test.snap index a7f49a118..5d1796947 100644 --- a/tests/variant_calling_haplotypecaller.nf.test.snap +++ b/tests/variant_calling_haplotypecaller.nf.test.snap @@ -18,8 +18,14 @@ "TABIX_BGZIPTABIX_INTERVAL_COMBINED": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ @@ -196,8 +202,14 @@ "TABIX_BGZIPTABIX_INTERVAL_SPLIT": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ @@ -374,8 +386,14 @@ "TABIX_BGZIPTABIX_INTERVAL_COMBINED": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ @@ -561,8 +579,14 @@ "TABIX_BGZIPTABIX_INTERVAL_SPLIT": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ diff --git a/tests/variant_calling_manta.nf.test.snap b/tests/variant_calling_manta.nf.test.snap index 79faed3d2..c451a5bdb 100644 --- a/tests/variant_calling_manta.nf.test.snap +++ b/tests/variant_calling_manta.nf.test.snap @@ -24,8 +24,14 @@ "TABIX_BGZIPTABIX_INTERVAL_SPLIT": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ @@ -155,8 +161,14 @@ "TABIX_BGZIPTABIX_INTERVAL_COMBINED": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ @@ -292,8 +304,14 @@ "TABIX_BGZIPTABIX_INTERVAL_COMBINED": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ @@ -468,8 +486,14 @@ "TABIX_BGZIPTABIX_INTERVAL_SPLIT": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ @@ -611,8 +635,14 @@ "TABIX_BGZIPTABIX_INTERVAL_SPLIT": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ @@ -826,8 +856,14 @@ "TABIX_BGZIPTABIX_INTERVAL_SPLIT": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ @@ -993,8 +1029,14 @@ "TABIX_BGZIPTABIX_INTERVAL_COMBINED": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ diff --git a/tests/variant_calling_mpileup.nf.test.snap b/tests/variant_calling_mpileup.nf.test.snap index 1296df5c3..2d9e87d07 100644 --- a/tests/variant_calling_mpileup.nf.test.snap +++ b/tests/variant_calling_mpileup.nf.test.snap @@ -24,8 +24,14 @@ "TABIX_BGZIPTABIX_INTERVAL_SPLIT": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ @@ -192,8 +198,14 @@ "TABIX_BGZIPTABIX_INTERVAL_COMBINED": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ @@ -363,8 +375,14 @@ "TABIX_BGZIPTABIX_INTERVAL_COMBINED": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ @@ -540,8 +558,14 @@ "TABIX_BGZIPTABIX_INTERVAL_SPLIT": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ diff --git a/tests/variant_calling_muse.nf.test.snap b/tests/variant_calling_muse.nf.test.snap index 38f19bdee..9a9ac55c7 100644 --- a/tests/variant_calling_muse.nf.test.snap +++ b/tests/variant_calling_muse.nf.test.snap @@ -37,8 +37,14 @@ "TABIX_BGZIPTABIX_INTERVAL_SPLIT": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ @@ -211,8 +217,14 @@ "TABIX_BGZIPTABIX_INTERVAL_SPLIT": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ diff --git a/tests/variant_calling_sentieon_dnascope.nf.test.snap b/tests/variant_calling_sentieon_dnascope.nf.test.snap index f30702ea7..35a49942d 100644 --- a/tests/variant_calling_sentieon_dnascope.nf.test.snap +++ b/tests/variant_calling_sentieon_dnascope.nf.test.snap @@ -27,8 +27,14 @@ "TABIX_BGZIPTABIX_INTERVAL_SPLIT": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ @@ -207,8 +213,14 @@ "TABIX_BGZIPTABIX_INTERVAL_SPLIT": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ @@ -390,8 +402,14 @@ "TABIX_BGZIPTABIX_INTERVAL_SPLIT": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ diff --git a/tests/variant_calling_sentieon_haplotypecaller.nf.test.snap b/tests/variant_calling_sentieon_haplotypecaller.nf.test.snap index 5a5e33c10..b35c572ee 100644 --- a/tests/variant_calling_sentieon_haplotypecaller.nf.test.snap +++ b/tests/variant_calling_sentieon_haplotypecaller.nf.test.snap @@ -39,8 +39,14 @@ "TABIX_BGZIPTABIX_INTERVAL_SPLIT": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ @@ -220,8 +226,14 @@ "TABIX_BGZIPTABIX_INTERVAL_COMBINED": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ @@ -403,8 +415,14 @@ "TABIX_BGZIPTABIX_INTERVAL_SPLIT": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ @@ -586,8 +604,14 @@ "TABIX_BGZIPTABIX_INTERVAL_SPLIT": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ diff --git a/tests/variant_calling_sentieon_tnscope.nf.test.snap b/tests/variant_calling_sentieon_tnscope.nf.test.snap index c694edb3a..5c9e5ca1e 100644 --- a/tests/variant_calling_sentieon_tnscope.nf.test.snap +++ b/tests/variant_calling_sentieon_tnscope.nf.test.snap @@ -28,8 +28,14 @@ "TABIX_BGZIPTABIX_INTERVAL_SPLIT": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ @@ -110,8 +116,14 @@ "TABIX_BGZIPTABIX_INTERVAL_SPLIT": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ @@ -211,8 +223,14 @@ "TABIX_BGZIPTABIX_INTERVAL_COMBINED": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ @@ -305,8 +323,14 @@ "TABIX_BGZIPTABIX_INTERVAL_SPLIT": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ diff --git a/tests/variant_calling_strelka.nf.test.snap b/tests/variant_calling_strelka.nf.test.snap index 6b35c09e3..1aa53420e 100644 --- a/tests/variant_calling_strelka.nf.test.snap +++ b/tests/variant_calling_strelka.nf.test.snap @@ -27,8 +27,14 @@ "TABIX_BGZIPTABIX_INTERVAL_SPLIT": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ @@ -240,8 +246,14 @@ "TABIX_BGZIPTABIX_INTERVAL_SPLIT": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ @@ -416,8 +428,14 @@ "TABIX_BGZIPTABIX_INTERVAL_SPLIT": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ @@ -649,8 +667,14 @@ "TABIX_BGZIPTABIX_INTERVAL_COMBINED": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ @@ -822,8 +846,14 @@ "TABIX_BGZIPTABIX_INTERVAL_COMBINED": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ diff --git a/tests/variant_calling_strelka_bp.nf.test.snap b/tests/variant_calling_strelka_bp.nf.test.snap index fc4418a6b..8122c57f5 100644 --- a/tests/variant_calling_strelka_bp.nf.test.snap +++ b/tests/variant_calling_strelka_bp.nf.test.snap @@ -27,8 +27,14 @@ "TABIX_BGZIPTABIX_INTERVAL_COMBINED": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ @@ -291,8 +297,14 @@ "TABIX_BGZIPTABIX_INTERVAL_SPLIT": { "tabix": 1.21 }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ diff --git a/tests/variant_calling_tiddit.nf.test.snap b/tests/variant_calling_tiddit.nf.test.snap index 04b68dd4a..6036794a0 100644 --- a/tests/variant_calling_tiddit.nf.test.snap +++ b/tests/variant_calling_tiddit.nf.test.snap @@ -27,8 +27,14 @@ "TIDDIT_SV": { "tiddit": "3.6.1" }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ @@ -168,8 +174,14 @@ "TIDDIT_SV": { "tiddit": "3.6.1" }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ @@ -313,8 +325,14 @@ "TIDDIT_SV": { "tiddit": "3.6.1" }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, "VCFTOOLS_TSTV_COUNT": { "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ From a83e3cd17255391f8bd0cb9250d2437fb7ada4a1 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Thu, 14 Aug 2025 12:10:18 +0200 Subject: [PATCH 08/34] update CHANGELOG --- CHANGELOG.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 13ffad709..5b13cb14d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -47,11 +47,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 | -------------------------------------- | ----------- | ----------- | | `ASCAT` | 3.1.1 | 3.2.0 | | `bcftools` | 1.20 | 1.21 | +| `cnvkit` | 0.9.10 | 0.9.12 | +| `deepvariant` | 1.8.0 | 1.9.0 | | `ensemblvep` | 113.0 | 113.4 | | `fastp` | 0.23.4 | 0.24.0 | -| `fgbio` | 2.2.1 | 2.4.0 | +| `fgbio` | 2.2.1 | 2.5.21 | +| `freebayes` | 1.3.6 | 1.3.10 | | `gatk4` | 4.5.0.0 | 4.6.1.0 | | `mosdepth` | 0.3.8 | 0.3.10 | +| `msisensor-pro` | 1.2.0 | 1.3.0 | | `MuSE` | | 2.1.2 | | `MultiQC` | 1.25.1 | 1.30 | | `samtools` (in `BWAMEM1_MEM`) | 1.2 | 1.21 | @@ -117,6 +121,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [1932](https://github.com/nf-core/sarek/pull/1932) - Refactor and simplify pipeline test suite - [1936](https://github.com/nf-core/sarek/pull/1936) - Template update for nf-core/tools v3.3.2 - [1954](https://github.com/nf-core/sarek/pull/1954) - Refactor bcftools annotation subworkflows so that no diff is necessary from nf-core/modules +- [1955](https://github.com/nf-core/sarek/pull/1955) - Update all modules and subworkflows #### Fixed From fb57dd66a96231f883ebbca29105d8ce31eb9387 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Thu, 14 Aug 2025 12:21:36 +0200 Subject: [PATCH 09/34] fix modules usage --- .../local/bam_convert_samtools/main.nf | 23 +++++++++---------- .../local/bam_merge_index_samtools/main.nf | 16 ++++++------- .../local/cram_merge_index_samtools/main.nf | 14 +++++------ 3 files changed, 25 insertions(+), 28 deletions(-) diff --git a/subworkflows/local/bam_convert_samtools/main.nf b/subworkflows/local/bam_convert_samtools/main.nf index c20001d08..924593f95 100644 --- a/subworkflows/local/bam_convert_samtools/main.nf +++ b/subworkflows/local/bam_convert_samtools/main.nf @@ -2,14 +2,14 @@ // BAM/CRAM to FASTQ conversion, paired end only // -include { SAMTOOLS_VIEW as SAMTOOLS_VIEW_MAP_MAP } from '../../../modules/nf-core/samtools/view' -include { SAMTOOLS_VIEW as SAMTOOLS_VIEW_UNMAP_UNMAP } from '../../../modules/nf-core/samtools/view' -include { SAMTOOLS_VIEW as SAMTOOLS_VIEW_UNMAP_MAP } from '../../../modules/nf-core/samtools/view' -include { SAMTOOLS_VIEW as SAMTOOLS_VIEW_MAP_UNMAP } from '../../../modules/nf-core/samtools/view' -include { SAMTOOLS_MERGE as SAMTOOLS_MERGE_UNMAP } from '../../../modules/nf-core/samtools/merge' -include { SAMTOOLS_COLLATEFASTQ as COLLATE_FASTQ_UNMAP } from '../../../modules/nf-core/samtools/collatefastq' -include { SAMTOOLS_COLLATEFASTQ as COLLATE_FASTQ_MAP } from '../../../modules/nf-core/samtools/collatefastq' -include { CAT_FASTQ } from '../../../modules/nf-core/cat/fastq' +include { CAT_FASTQ } from '../../../modules/nf-core/cat/fastq' +include { SAMTOOLS_COLLATEFASTQ as COLLATE_FASTQ_MAP } from '../../../modules/nf-core/samtools/collatefastq' +include { SAMTOOLS_COLLATEFASTQ as COLLATE_FASTQ_UNMAP } from '../../../modules/nf-core/samtools/collatefastq' +include { SAMTOOLS_MERGE as SAMTOOLS_MERGE_UNMAP } from '../../../modules/nf-core/samtools/merge' +include { SAMTOOLS_VIEW as SAMTOOLS_VIEW_MAP_MAP } from '../../../modules/nf-core/samtools/view' +include { SAMTOOLS_VIEW as SAMTOOLS_VIEW_MAP_UNMAP } from '../../../modules/nf-core/samtools/view' +include { SAMTOOLS_VIEW as SAMTOOLS_VIEW_UNMAP_MAP } from '../../../modules/nf-core/samtools/view' +include { SAMTOOLS_VIEW as SAMTOOLS_VIEW_UNMAP_UNMAP } from '../../../modules/nf-core/samtools/view' workflow BAM_CONVERT_SAMTOOLS { take: @@ -39,9 +39,9 @@ workflow BAM_CONVERT_SAMTOOLS { all_unmapped_bam = SAMTOOLS_VIEW_UNMAP_UNMAP.out.bam .join(SAMTOOLS_VIEW_UNMAP_MAP.out.bam, failOnDuplicate: true, remainder: true) .join(SAMTOOLS_VIEW_MAP_UNMAP.out.bam, failOnDuplicate: true, remainder: true) - .map{ meta, unmap_unmap, unmap_map, map_unmap -> [ meta, [ unmap_unmap, unmap_map, map_unmap ] ] } + .map { meta, unmap_unmap, unmap_map, map_unmap -> [meta, [unmap_unmap, unmap_map, map_unmap]] } - SAMTOOLS_MERGE_UNMAP(all_unmapped_bam, fasta, fasta_fai) + SAMTOOLS_MERGE_UNMAP(all_unmapped_bam, fasta, fasta_fai, [[:], []]) // Collate & convert unmapped COLLATE_FASTQ_UNMAP(SAMTOOLS_MERGE_UNMAP.out.bam, fasta, interleaved) @@ -53,7 +53,7 @@ workflow BAM_CONVERT_SAMTOOLS { reads_to_concat = COLLATE_FASTQ_MAP.out.fastq .join(COLLATE_FASTQ_UNMAP.out.fastq, failOnDuplicate: true, failOnMismatch: true) - .map{ meta, mapped_reads, unmapped_reads -> [ meta, [ mapped_reads[0], mapped_reads[1], unmapped_reads[0], unmapped_reads[1] ] ] } + .map { meta, mapped_reads, unmapped_reads -> [meta, [mapped_reads[0], mapped_reads[1], unmapped_reads[0], unmapped_reads[1]]] } // Concatenate Mapped_R1 with Unmapped_R1 and Mapped_R2 with Unmapped_R2 CAT_FASTQ(reads_to_concat) @@ -71,6 +71,5 @@ workflow BAM_CONVERT_SAMTOOLS { emit: reads - versions } diff --git a/subworkflows/local/bam_merge_index_samtools/main.nf b/subworkflows/local/bam_merge_index_samtools/main.nf index f615b1c3d..f007d4a84 100644 --- a/subworkflows/local/bam_merge_index_samtools/main.nf +++ b/subworkflows/local/bam_merge_index_samtools/main.nf @@ -4,8 +4,8 @@ // For all modules here: // A when clause condition is defined in the conf/modules.config to determine if the module should be run -include { SAMTOOLS_INDEX as INDEX_MERGE_BAM } from '../../../modules/nf-core/samtools/index/main' -include { SAMTOOLS_MERGE as MERGE_BAM } from '../../../modules/nf-core/samtools/merge/main' +include { SAMTOOLS_INDEX as INDEX_MERGE_BAM } from '../../../modules/nf-core/samtools/index' +include { SAMTOOLS_MERGE as MERGE_BAM } from '../../../modules/nf-core/samtools/merge' workflow BAM_MERGE_INDEX_SAMTOOLS { take: @@ -15,15 +15,14 @@ workflow BAM_MERGE_INDEX_SAMTOOLS { versions = Channel.empty() // Figuring out if there is one or more bam(s) from the same sample - bam_to_merge = bam.branch{ meta, bam -> - // bam is a list, so use bam.size() to asses number of intervals - single: bam.size() <= 1 - return [ meta, bam[0] ] - multiple: bam.size() > 1 + bam_to_merge = bam.branch { meta, bam_ -> + single: bam_.size() <= 1 + return [meta, bam_[0]] + multiple: bam_.size() > 1 } // Only when using intervals - MERGE_BAM(bam_to_merge.multiple, [ [ id:'null' ], []], [ [ id:'null' ], []]) + MERGE_BAM(bam_to_merge.multiple, [[id: 'null'], []], [[id: 'null'], []], [[:], []]) // Mix intervals and no_intervals channels together bam_all = MERGE_BAM.out.bam.mix(bam_to_merge.single) @@ -40,6 +39,5 @@ workflow BAM_MERGE_INDEX_SAMTOOLS { emit: bam_bai - versions } diff --git a/subworkflows/local/cram_merge_index_samtools/main.nf b/subworkflows/local/cram_merge_index_samtools/main.nf index 6bfe9fbe9..226ca28a6 100644 --- a/subworkflows/local/cram_merge_index_samtools/main.nf +++ b/subworkflows/local/cram_merge_index_samtools/main.nf @@ -4,8 +4,8 @@ // For all modules here: // A when clause condition is defined in the conf/modules.config to determine if the module should be run -include { SAMTOOLS_INDEX as INDEX_CRAM } from '../../../modules/nf-core/samtools/index/main' -include { SAMTOOLS_MERGE as MERGE_CRAM } from '../../../modules/nf-core/samtools/merge/main' +include { SAMTOOLS_INDEX as INDEX_CRAM } from '../../../modules/nf-core/samtools/index' +include { SAMTOOLS_MERGE as MERGE_CRAM } from '../../../modules/nf-core/samtools/merge' workflow CRAM_MERGE_INDEX_SAMTOOLS { take: @@ -17,14 +17,14 @@ workflow CRAM_MERGE_INDEX_SAMTOOLS { versions = Channel.empty() // Figuring out if there is one or more cram(s) from the same sample - cram_to_merge = cram.branch { meta, cram -> - single: cram.size() <= 1 - return [meta, cram[0]] - multiple: cram.size() > 1 + cram_to_merge = cram.branch { meta, cram_ -> + single: cram_.size() <= 1 + return [meta, cram_[0]] + multiple: cram_.size() > 1 } // Only when using intervals - MERGE_CRAM(cram_to_merge.multiple, fasta.map { it -> [[id: 'fasta'], it] }, fasta_fai.map { it -> [[id: 'fasta_fai'], it] }) + MERGE_CRAM(cram_to_merge.multiple, fasta.map { it -> [[id: 'fasta'], it] }, fasta_fai.map { it -> [[id: 'fasta_fai'], it] }, [[:], []]) // Mix intervals and no_intervals channels together cram_all = MERGE_CRAM.out.cram.mix(cram_to_merge.single) From a6ab063995af9662dc0cf33455d86e6cc24e4180 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Thu, 14 Aug 2025 15:20:31 +0200 Subject: [PATCH 10/34] fix APPLYBQSR --- conf/modules/recalibrate.config | 2 +- subworkflows/local/bam_merge_index_samtools/main.nf | 1 + subworkflows/local/cram_merge_index_samtools/main.nf | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/conf/modules/recalibrate.config b/conf/modules/recalibrate.config index 309a5d60f..a74f2fe0e 100644 --- a/conf/modules/recalibrate.config +++ b/conf/modules/recalibrate.config @@ -19,7 +19,7 @@ process { if (params.use_gatk_spark) { containerOptions = '' } - ext.prefix = { meta.num_intervals <= 1 ? "${meta.id}.recal" : "${meta.id}_${intervals.baseName}.recal" } + ext.prefix = { meta.num_intervals <= 1 ? "${meta.id}.recal.cram" : "${meta.id}_${intervals.baseName}.recal.cram" } publishDir = [ mode: params.publish_dir_mode, path: { "${params.outdir}/preprocessing/" }, diff --git a/subworkflows/local/bam_merge_index_samtools/main.nf b/subworkflows/local/bam_merge_index_samtools/main.nf index f007d4a84..3d52a992d 100644 --- a/subworkflows/local/bam_merge_index_samtools/main.nf +++ b/subworkflows/local/bam_merge_index_samtools/main.nf @@ -15,6 +15,7 @@ workflow BAM_MERGE_INDEX_SAMTOOLS { versions = Channel.empty() // Figuring out if there is one or more bam(s) from the same sample + // bam is a list, so use bam.size() to asses number of intervals bam_to_merge = bam.branch { meta, bam_ -> single: bam_.size() <= 1 return [meta, bam_[0]] diff --git a/subworkflows/local/cram_merge_index_samtools/main.nf b/subworkflows/local/cram_merge_index_samtools/main.nf index 226ca28a6..65beb6caf 100644 --- a/subworkflows/local/cram_merge_index_samtools/main.nf +++ b/subworkflows/local/cram_merge_index_samtools/main.nf @@ -17,6 +17,7 @@ workflow CRAM_MERGE_INDEX_SAMTOOLS { versions = Channel.empty() // Figuring out if there is one or more cram(s) from the same sample + // cram is a list, so use cram.size() to asses number of intervals cram_to_merge = cram.branch { meta, cram_ -> single: cram_.size() <= 1 return [meta, cram_[0]] From 849f587422da723e66a0b9ce23f10af0555a3ddd Mon Sep 17 00:00:00 2001 From: maxulysse Date: Thu, 14 Aug 2025 15:20:45 +0200 Subject: [PATCH 11/34] fix freebayes versions --- tests/postprocess_concatenation.nf.test.snap | 2 +- ...tprocess_concatenation_normalization.nf.test.snap | 2 +- tests/postprocess_normalization.nf.test.snap | 2 +- tests/variant_calling_freebayes.nf.test.snap | 12 ++++++------ 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/tests/postprocess_concatenation.nf.test.snap b/tests/postprocess_concatenation.nf.test.snap index b18c47fdd..6a88c66e9 100644 --- a/tests/postprocess_concatenation.nf.test.snap +++ b/tests/postprocess_concatenation.nf.test.snap @@ -22,7 +22,7 @@ "gatk4": "4.6.1.0" }, "FREEBAYES": { - "freebayes": "1.3.6" + "freebayes": "1.3.10" }, "GATK4_HAPLOTYPECALLER": { "gatk4": "4.6.1.0" diff --git a/tests/postprocess_concatenation_normalization.nf.test.snap b/tests/postprocess_concatenation_normalization.nf.test.snap index edc29a9c8..dd868dc90 100644 --- a/tests/postprocess_concatenation_normalization.nf.test.snap +++ b/tests/postprocess_concatenation_normalization.nf.test.snap @@ -22,7 +22,7 @@ "gatk4": "4.6.1.0" }, "FREEBAYES": { - "freebayes": "1.3.6" + "freebayes": "1.3.10" }, "GATK4_HAPLOTYPECALLER": { "gatk4": "4.6.1.0" diff --git a/tests/postprocess_normalization.nf.test.snap b/tests/postprocess_normalization.nf.test.snap index c063b891b..e31497496 100644 --- a/tests/postprocess_normalization.nf.test.snap +++ b/tests/postprocess_normalization.nf.test.snap @@ -22,7 +22,7 @@ "gatk4": "4.6.1.0" }, "FREEBAYES": { - "freebayes": "1.3.6" + "freebayes": "1.3.10" }, "GATK4_HAPLOTYPECALLER": { "gatk4": "4.6.1.0" diff --git a/tests/variant_calling_freebayes.nf.test.snap b/tests/variant_calling_freebayes.nf.test.snap index 2dd34c85a..613f3347b 100644 --- a/tests/variant_calling_freebayes.nf.test.snap +++ b/tests/variant_calling_freebayes.nf.test.snap @@ -13,7 +13,7 @@ "gawk": "5.1.0" }, "FREEBAYES": { - "freebayes": "1.3.6" + "freebayes": "1.3.10" }, "GATK4_CREATESEQUENCEDICTIONARY": { "gatk4": "4.6.1.0" @@ -228,7 +228,7 @@ "fastqc": "0.12.1" }, "FREEBAYES": { - "freebayes": "1.3.6" + "freebayes": "1.3.10" }, "GATK4_APPLYBQSR": { "gatk4": "4.6.1.0" @@ -631,7 +631,7 @@ "fastqc": "0.12.1" }, "FREEBAYES": { - "freebayes": "1.3.6" + "freebayes": "1.3.10" }, "GATK4_APPLYBQSR": { "gatk4": "4.6.1.0" @@ -990,7 +990,7 @@ "fastqc": "0.12.1" }, "FREEBAYES": { - "freebayes": "1.3.6" + "freebayes": "1.3.10" }, "GATK4_APPLYBQSR": { "gatk4": "4.6.1.0" @@ -1325,7 +1325,7 @@ "bcftools": 1.21 }, "FREEBAYES": { - "freebayes": "1.3.6" + "freebayes": "1.3.10" }, "GATK4_CREATESEQUENCEDICTIONARY": { "gatk4": "4.6.1.0" @@ -1537,7 +1537,7 @@ "fastqc": "0.12.1" }, "FREEBAYES": { - "freebayes": "1.3.6" + "freebayes": "1.3.10" }, "GATK4_APPLYBQSR": { "gatk4": "4.6.1.0" From 316ca9a34c83101c87c96dc7f9c3696208932e61 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Thu, 14 Aug 2025 15:40:09 +0200 Subject: [PATCH 12/34] fix cnvkit versions in snapshots --- tests/variant_calling_cnvkit.nf.test.snap | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tests/variant_calling_cnvkit.nf.test.snap b/tests/variant_calling_cnvkit.nf.test.snap index 242f972ef..12477a87f 100644 --- a/tests/variant_calling_cnvkit.nf.test.snap +++ b/tests/variant_calling_cnvkit.nf.test.snap @@ -4,7 +4,7 @@ 26, { "CNVKIT_ANTITARGET": { - "cnvkit": "0.9.11" + "cnvkit": "0.9.12" }, "CNVKIT_BATCH": { "cnvkit": "0.9.10", @@ -20,7 +20,7 @@ "cnvkit": "0.9.10" }, "CNVKIT_REFERENCE": { - "cnvkit": "0.9.11" + "cnvkit": "0.9.12" }, "CREATE_INTERVALS_BED": { "gawk": "5.1.0" @@ -252,7 +252,7 @@ 12, { "CNVKIT_ANTITARGET": { - "cnvkit": "0.9.11" + "cnvkit": "0.9.12" }, "CNVKIT_BATCH": { "cnvkit": "0.9.10", @@ -268,7 +268,7 @@ "cnvkit": "0.9.10" }, "CNVKIT_REFERENCE": { - "cnvkit": "0.9.11" + "cnvkit": "0.9.12" }, "CREATE_INTERVALS_BED": { "gawk": "5.1.0" @@ -403,7 +403,7 @@ 18, { "CNVKIT_ANTITARGET": { - "cnvkit": "0.9.11" + "cnvkit": "0.9.12" }, "CNVKIT_BATCH": { "cnvkit": "0.9.10", @@ -419,7 +419,7 @@ "cnvkit": "0.9.10" }, "CNVKIT_REFERENCE": { - "cnvkit": "0.9.11" + "cnvkit": "0.9.12" }, "CREATE_INTERVALS_BED": { "gawk": "5.1.0" @@ -599,7 +599,7 @@ 12, { "CNVKIT_ANTITARGET": { - "cnvkit": "0.9.11" + "cnvkit": "0.9.12" }, "CNVKIT_BATCH": { "cnvkit": "0.9.10", @@ -615,7 +615,7 @@ "cnvkit": "0.9.10" }, "CNVKIT_REFERENCE": { - "cnvkit": "0.9.11" + "cnvkit": "0.9.12" }, "CREATE_INTERVALS_BED": { "gawk": "5.1.0" From c610992775b09f8e9e81c673d68d5fce4b623581 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Thu, 14 Aug 2025 16:45:57 +0200 Subject: [PATCH 13/34] fix applybqsr outputs --- conf/modules/recalibrate.config | 6 ++- tests/start_from_markduplicates.nf.test.snap | 39 +++++++++++++++----- 2 files changed, 35 insertions(+), 10 deletions(-) diff --git a/conf/modules/recalibrate.config b/conf/modules/recalibrate.config index a74f2fe0e..8bcda608c 100644 --- a/conf/modules/recalibrate.config +++ b/conf/modules/recalibrate.config @@ -19,7 +19,11 @@ process { if (params.use_gatk_spark) { containerOptions = '' } - ext.prefix = { meta.num_intervals <= 1 ? "${meta.id}.recal.cram" : "${meta.id}_${intervals.baseName}.recal.cram" } + ext.prefix = { + meta.num_intervals <= 1 ? + "${meta.id}.recal." + (params.save_output_as_bam ? 'bam' : 'cram') : + "${meta.id}_${intervals.baseName}.recal." + (params.save_output_as_bam ? 'bam' : 'cram') + } publishDir = [ mode: params.publish_dir_mode, path: { "${params.outdir}/preprocessing/" }, diff --git a/tests/start_from_markduplicates.nf.test.snap b/tests/start_from_markduplicates.nf.test.snap index 2bcdada7a..8c6a5cca3 100644 --- a/tests/start_from_markduplicates.nf.test.snap +++ b/tests/start_from_markduplicates.nf.test.snap @@ -501,7 +501,7 @@ }, "-profile test --input tests/csv/3.0/mapped_single_bam.csv --step markduplicates --skip_tools markduplicates --tools null": { "content": [ - 9, + 12, { "CREATE_INTERVALS_BED": { "gawk": "5.1.0" @@ -515,6 +515,9 @@ "GATK4_INTERVALLISTTOBED": { "gatk4": "4.6.1.0" }, + "INDEX_CRAM": { + "samtools": 1.21 + }, "MOSDEPTH": { "mosdepth": "0.3.10" }, @@ -530,6 +533,7 @@ }, [ "csv", + "csv/recalibrated.csv", "multiqc", "multiqc/multiqc_data", "multiqc/multiqc_data/BETA-multiqc.parquet", @@ -590,10 +594,19 @@ "preprocessing/recal_table", "preprocessing/recal_table/test", "preprocessing/recal_table/test/test.recal.table", + "preprocessing/recalibrated", + "preprocessing/recalibrated/test", + "preprocessing/recalibrated/test/test.recal.cram", + "preprocessing/recalibrated/test/test.recal.cram.crai", "reference", "reports", "reports/mosdepth", "reports/mosdepth/test", + "reports/mosdepth/test/test.recal.mosdepth.global.dist.txt", + "reports/mosdepth/test/test.recal.mosdepth.region.dist.txt", + "reports/mosdepth/test/test.recal.mosdepth.summary.txt", + "reports/mosdepth/test/test.recal.regions.bed.gz", + "reports/mosdepth/test/test.recal.regions.bed.gz.csi", "reports/mosdepth/test/test.sorted.mosdepth.global.dist.txt", "reports/mosdepth/test/test.sorted.mosdepth.region.dist.txt", "reports/mosdepth/test/test.sorted.mosdepth.summary.txt", @@ -601,15 +614,21 @@ "reports/mosdepth/test/test.sorted.regions.bed.gz.csi", "reports/samtools", "reports/samtools/test", + "reports/samtools/test/test.recal.cram.stats", "reports/samtools/test/test.sorted.cram.stats" ], [ - "mosdepth-coverage-per-contig-single.txt:md5,8b48f3336b063dcb1e086928b28a2cc6", - "mosdepth-cumcoverage-dist-id.txt:md5,3148977f0c4684ba681ee298d677fe38", - "mosdepth_perchrom.txt:md5,8b48f3336b063dcb1e086928b28a2cc6", + "mosdepth-coverage-per-contig-single.txt:md5,4153678ed78ce01defe11f5b9fb8deb4", + "mosdepth-cumcoverage-dist-id.txt:md5,fcecb7f7ed584a1395065568e0ec1259", + "mosdepth_perchrom.txt:md5,4153678ed78ce01defe11f5b9fb8deb4", "multiqc_citations.txt:md5,7d0b4b866fa577272c48a1f3ad72e75d", - "samtools-stats-dp.txt:md5,85c4ca7a3a6f2534d4d329937be49966", - "samtools_alignment_plot.txt:md5,301dda049c8aa2f848c98c81f584c315", + "samtools-stats-dp.txt:md5,dae2fa55a81049479a787e0fe5a64289", + "samtools_alignment_plot.txt:md5,b693942009526869bd21cbc42d54f53c", + "test.recal.mosdepth.global.dist.txt:md5,bdb8f185c35dd1eec7ce2f69bce57972", + "test.recal.mosdepth.region.dist.txt:md5,f1f1ad86fc280bced1888a5d7d25a3f2", + "test.recal.mosdepth.summary.txt:md5,32ea70ef1b99def3dc900b4afd513a40", + "test.recal.regions.bed.gz:md5,07bbc084a889f1cece4307fd00214a6e", + "test.recal.regions.bed.gz.csi:md5,b3716e5cd1744610e69c29bd4ffad259", "test.sorted.mosdepth.global.dist.txt:md5,bdb8f185c35dd1eec7ce2f69bce57972", "test.sorted.mosdepth.region.dist.txt:md5,f1f1ad86fc280bced1888a5d7d25a3f2", "test.sorted.mosdepth.summary.txt:md5,32ea70ef1b99def3dc900b4afd513a40", @@ -617,13 +636,15 @@ "test.sorted.regions.bed.gz.csi:md5,b3716e5cd1744610e69c29bd4ffad259" ], "No BAM files", - "No CRAM files", + [ + "test.recal.cram:md5,463ac3b905fbf4ddf113a94dbfa8d69f" + ], "No VCF files" ], "meta": { "nf-test": "0.9.2", - "nextflow": "25.04.3" + "nextflow": "25.04.6" }, - "timestamp": "2025-06-12T16:34:13.509967515" + "timestamp": "2025-08-14T16:33:39.953684195" } } \ No newline at end of file From a0d4e0bf3f2407671391a663de1e49b4e244896b Mon Sep 17 00:00:00 2001 From: maxulysse Date: Thu, 14 Aug 2025 17:12:40 +0200 Subject: [PATCH 14/34] update more snapshots --- ...art_from_preparerecalibration.nf.test.snap | 76 +++++++++++++++++-- tests/variant_calling_cnvkit.nf.test.snap | 30 ++++---- .../variant_calling_msisensorpro.nf.test.snap | 8 +- 3 files changed, 89 insertions(+), 25 deletions(-) diff --git a/tests/start_from_preparerecalibration.nf.test.snap b/tests/start_from_preparerecalibration.nf.test.snap index 4422fe511..bba38c58d 100644 --- a/tests/start_from_preparerecalibration.nf.test.snap +++ b/tests/start_from_preparerecalibration.nf.test.snap @@ -1,7 +1,7 @@ { "-profile test --input tests/csv/3.0/mapped_single_bam.csv --step prepare_recalibration --tools null": { "content": [ - 7, + 10, { "CREATE_INTERVALS_BED": { "gawk": "5.1.0" @@ -15,6 +15,15 @@ "GATK4_INTERVALLISTTOBED": { "gatk4": "4.6.1.0" }, + "INDEX_CRAM": { + "samtools": 1.21 + }, + "MOSDEPTH": { + "mosdepth": "0.3.10" + }, + "SAMTOOLS_STATS": { + "samtools": 1.21 + }, "TABIX_BGZIPTABIX_INTERVAL_COMBINED": { "tabix": 1.21 }, @@ -25,6 +34,7 @@ [ "csv", "csv/markduplicates.csv", + "csv/recalibrated.csv", "multiqc", "multiqc/multiqc_data", "multiqc/multiqc_data/BETA-multiqc.parquet", @@ -33,24 +43,51 @@ "multiqc/multiqc_data/gatk-base-recalibrator-reported-empirical-plot.txt", "multiqc/multiqc_data/gatk_base_recalibrator.txt", "multiqc/multiqc_data/llms-full.txt", + "multiqc/multiqc_data/mosdepth-coverage-per-contig-single.txt", + "multiqc/multiqc_data/mosdepth-cumcoverage-dist-id.txt", + "multiqc/multiqc_data/mosdepth_cov_dist.txt", + "multiqc/multiqc_data/mosdepth_cumcov_dist.txt", + "multiqc/multiqc_data/mosdepth_perchrom.txt", "multiqc/multiqc_data/multiqc.log", "multiqc/multiqc_data/multiqc_citations.txt", "multiqc/multiqc_data/multiqc_data.json", + "multiqc/multiqc_data/multiqc_general_stats.txt", + "multiqc/multiqc_data/multiqc_samtools_stats.txt", "multiqc/multiqc_data/multiqc_software_versions.txt", "multiqc/multiqc_data/multiqc_sources.txt", + "multiqc/multiqc_data/samtools-stats-dp.txt", + "multiqc/multiqc_data/samtools_alignment_plot.txt", "multiqc/multiqc_plots", "multiqc/multiqc_plots/pdf", "multiqc/multiqc_plots/pdf/gatk-base-recalibrator-quality-scores-plot_Pre-recalibration_Count.pdf", "multiqc/multiqc_plots/pdf/gatk-base-recalibrator-quality-scores-plot_Pre-recalibration_Percent.pdf", "multiqc/multiqc_plots/pdf/gatk-base-recalibrator-reported-empirical-plot.pdf", + "multiqc/multiqc_plots/pdf/mosdepth-coverage-per-contig-single-cnt.pdf", + "multiqc/multiqc_plots/pdf/mosdepth-coverage-per-contig-single-pct.pdf", + "multiqc/multiqc_plots/pdf/mosdepth-cumcoverage-dist-id.pdf", + "multiqc/multiqc_plots/pdf/samtools-stats-dp.pdf", + "multiqc/multiqc_plots/pdf/samtools_alignment_plot-cnt.pdf", + "multiqc/multiqc_plots/pdf/samtools_alignment_plot-pct.pdf", "multiqc/multiqc_plots/png", "multiqc/multiqc_plots/png/gatk-base-recalibrator-quality-scores-plot_Pre-recalibration_Count.png", "multiqc/multiqc_plots/png/gatk-base-recalibrator-quality-scores-plot_Pre-recalibration_Percent.png", "multiqc/multiqc_plots/png/gatk-base-recalibrator-reported-empirical-plot.png", + "multiqc/multiqc_plots/png/mosdepth-coverage-per-contig-single-cnt.png", + "multiqc/multiqc_plots/png/mosdepth-coverage-per-contig-single-pct.png", + "multiqc/multiqc_plots/png/mosdepth-cumcoverage-dist-id.png", + "multiqc/multiqc_plots/png/samtools-stats-dp.png", + "multiqc/multiqc_plots/png/samtools_alignment_plot-cnt.png", + "multiqc/multiqc_plots/png/samtools_alignment_plot-pct.png", "multiqc/multiqc_plots/svg", "multiqc/multiqc_plots/svg/gatk-base-recalibrator-quality-scores-plot_Pre-recalibration_Count.svg", "multiqc/multiqc_plots/svg/gatk-base-recalibrator-quality-scores-plot_Pre-recalibration_Percent.svg", "multiqc/multiqc_plots/svg/gatk-base-recalibrator-reported-empirical-plot.svg", + "multiqc/multiqc_plots/svg/mosdepth-coverage-per-contig-single-cnt.svg", + "multiqc/multiqc_plots/svg/mosdepth-coverage-per-contig-single-pct.svg", + "multiqc/multiqc_plots/svg/mosdepth-cumcoverage-dist-id.svg", + "multiqc/multiqc_plots/svg/samtools-stats-dp.svg", + "multiqc/multiqc_plots/svg/samtools_alignment_plot-cnt.svg", + "multiqc/multiqc_plots/svg/samtools_alignment_plot-pct.svg", "multiqc/multiqc_report.html", "pipeline_info", "pipeline_info/nf_core_sarek_software_mqc_versions.yml", @@ -58,20 +95,47 @@ "preprocessing/recal_table", "preprocessing/recal_table/test", "preprocessing/recal_table/test/test.recal.table", - "reference" + "preprocessing/recalibrated", + "preprocessing/recalibrated/test", + "preprocessing/recalibrated/test/test.recal.cram", + "preprocessing/recalibrated/test/test.recal.cram.crai", + "reference", + "reports", + "reports/mosdepth", + "reports/mosdepth/test", + "reports/mosdepth/test/test.recal.mosdepth.global.dist.txt", + "reports/mosdepth/test/test.recal.mosdepth.region.dist.txt", + "reports/mosdepth/test/test.recal.mosdepth.summary.txt", + "reports/mosdepth/test/test.recal.regions.bed.gz", + "reports/mosdepth/test/test.recal.regions.bed.gz.csi", + "reports/samtools", + "reports/samtools/test", + "reports/samtools/test/test.recal.cram.stats" ], [ - "multiqc_citations.txt:md5,3815a9f79e41890653a0e0d602c92ac9" + "mosdepth-coverage-per-contig-single.txt:md5,115b9a93bcf511419e6622919172f321", + "mosdepth-cumcoverage-dist-id.txt:md5,df2fc825dfc41e30f72f5d125a6447ee", + "mosdepth_perchrom.txt:md5,115b9a93bcf511419e6622919172f321", + "multiqc_citations.txt:md5,7d0b4b866fa577272c48a1f3ad72e75d", + "samtools-stats-dp.txt:md5,c8deaa643c44fd800cbf14ac35fb7719", + "samtools_alignment_plot.txt:md5,8908b56b3040f2c53b15591adf93a266", + "test.recal.mosdepth.global.dist.txt:md5,bdb8f185c35dd1eec7ce2f69bce57972", + "test.recal.mosdepth.region.dist.txt:md5,f1f1ad86fc280bced1888a5d7d25a3f2", + "test.recal.mosdepth.summary.txt:md5,32ea70ef1b99def3dc900b4afd513a40", + "test.recal.regions.bed.gz:md5,07bbc084a889f1cece4307fd00214a6e", + "test.recal.regions.bed.gz.csi:md5,b3716e5cd1744610e69c29bd4ffad259" ], "No BAM files", - "No CRAM files", + [ + "test.recal.cram:md5,463ac3b905fbf4ddf113a94dbfa8d69f" + ], "No VCF files" ], "meta": { "nf-test": "0.9.2", - "nextflow": "25.04.3" + "nextflow": "25.04.6" }, - "timestamp": "2025-06-12T16:42:13.73709257" + "timestamp": "2025-08-14T17:01:02.705029842" }, "-profile test --input tests/csv/3.0/mapped_single_cram.csv --step prepare_recalibration --skip_tools baserecalibrator --tools strelka": { "content": [ diff --git a/tests/variant_calling_cnvkit.nf.test.snap b/tests/variant_calling_cnvkit.nf.test.snap index 12477a87f..9be82adfd 100644 --- a/tests/variant_calling_cnvkit.nf.test.snap +++ b/tests/variant_calling_cnvkit.nf.test.snap @@ -11,13 +11,13 @@ "samtools": 1.17 }, "CNVKIT_CALL": { - "cnvkit": "0.9.10" + "cnvkit": "0.9.12" }, "CNVKIT_EXPORT": { - "cnvkit": "0.9.10" + "cnvkit": "0.9.12" }, "CNVKIT_GENEMETRICS": { - "cnvkit": "0.9.10" + "cnvkit": "0.9.12" }, "CNVKIT_REFERENCE": { "cnvkit": "0.9.12" @@ -259,13 +259,13 @@ "samtools": 1.17 }, "CNVKIT_CALL": { - "cnvkit": "0.9.10" + "cnvkit": "0.9.12" }, "CNVKIT_EXPORT": { - "cnvkit": "0.9.10" + "cnvkit": "0.9.12" }, "CNVKIT_GENEMETRICS": { - "cnvkit": "0.9.10" + "cnvkit": "0.9.12" }, "CNVKIT_REFERENCE": { "cnvkit": "0.9.12" @@ -410,13 +410,13 @@ "samtools": 1.17 }, "CNVKIT_CALL": { - "cnvkit": "0.9.10" + "cnvkit": "0.9.12" }, "CNVKIT_EXPORT": { - "cnvkit": "0.9.10" + "cnvkit": "0.9.12" }, "CNVKIT_GENEMETRICS": { - "cnvkit": "0.9.10" + "cnvkit": "0.9.12" }, "CNVKIT_REFERENCE": { "cnvkit": "0.9.12" @@ -606,13 +606,13 @@ "samtools": 1.17 }, "CNVKIT_CALL": { - "cnvkit": "0.9.10" + "cnvkit": "0.9.12" }, "CNVKIT_EXPORT": { - "cnvkit": "0.9.10" + "cnvkit": "0.9.12" }, "CNVKIT_GENEMETRICS": { - "cnvkit": "0.9.10" + "cnvkit": "0.9.12" }, "CNVKIT_REFERENCE": { "cnvkit": "0.9.12" @@ -850,13 +850,13 @@ "samtools": 1.17 }, "CNVKIT_CALL": { - "cnvkit": "0.9.10" + "cnvkit": "0.9.12" }, "CNVKIT_EXPORT": { - "cnvkit": "0.9.10" + "cnvkit": "0.9.12" }, "CNVKIT_GENEMETRICS": { - "cnvkit": "0.9.10" + "cnvkit": "0.9.12" }, "MOSDEPTH": { "mosdepth": "0.3.10" diff --git a/tests/variant_calling_msisensorpro.nf.test.snap b/tests/variant_calling_msisensorpro.nf.test.snap index 7bc37bed1..0208dff6d 100644 --- a/tests/variant_calling_msisensorpro.nf.test.snap +++ b/tests/variant_calling_msisensorpro.nf.test.snap @@ -191,7 +191,7 @@ "gatk4": "4.6.1.0" }, "MSISENSORPRO_SCAN": { - "msisensor-pro": "1.2.0" + "msisensor-pro": "1.3.0" }, "TABIX_BGZIPTABIX_INTERVAL_COMBINED": { "tabix": 1.21 @@ -226,7 +226,7 @@ "multiqc_citations.txt:md5,4c806e63a283ec1b7e78cdae3a923d4f", "genome.dict:md5,de4ff13287d28c1679a11ae989a3a980", "no_intervals.bed.gz:md5,f3dac01ea66b95fe477446fde2d31489", - "genome.msisensor_scan.list:md5,309d41b136993db24a9f3dade877753b" + "genome.msisensor_scan.list:md5,614754c7f1f44d5988dd80f8f21f69d1" ], "No BAM files", "No CRAM files", @@ -234,8 +234,8 @@ ], "meta": { "nf-test": "0.9.2", - "nextflow": "25.04.3" + "nextflow": "25.04.6" }, - "timestamp": "2025-06-16T13:36:29.780998379" + "timestamp": "2025-08-14T17:10:49.686457084" } } \ No newline at end of file From d5f1b71fe30dbafc8df265986d9ed306de30f8da Mon Sep 17 00:00:00 2001 From: maxulysse Date: Thu, 14 Aug 2025 19:07:18 +0200 Subject: [PATCH 15/34] update cnvkit --- modules.json | 12 +-- modules/nf-core/cnvkit/antitarget/main.nf | 12 +-- modules/nf-core/cnvkit/batch/environment.yml | 6 +- modules/nf-core/cnvkit/batch/main.nf | 84 +++++++++++-------- modules/nf-core/cnvkit/call/main.nf | 20 ++--- modules/nf-core/cnvkit/export/main.nf | 14 ++-- modules/nf-core/cnvkit/genemetrics/main.nf | 14 ++-- modules/nf-core/cnvkit/reference/main.nf | 12 +-- tests/variant_calling_cnvkit.nf.test.snap | 20 ++--- ...ling_sentieon_haplotypecaller.nf.test.snap | 6 ++ 10 files changed, 112 insertions(+), 88 deletions(-) diff --git a/modules.json b/modules.json index 0c9bd498f..e327e5f10 100644 --- a/modules.json +++ b/modules.json @@ -72,32 +72,32 @@ }, "cnvkit/antitarget": { "branch": "master", - "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", + "git_sha": "7a7676e7e9343eb9814c47ab617a00302ce70277", "installed_by": ["modules"] }, "cnvkit/batch": { "branch": "master", - "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", + "git_sha": "7a7676e7e9343eb9814c47ab617a00302ce70277", "installed_by": ["modules"] }, "cnvkit/call": { "branch": "master", - "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", + "git_sha": "7a7676e7e9343eb9814c47ab617a00302ce70277", "installed_by": ["modules"] }, "cnvkit/export": { "branch": "master", - "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", + "git_sha": "7a7676e7e9343eb9814c47ab617a00302ce70277", "installed_by": ["modules"] }, "cnvkit/genemetrics": { "branch": "master", - "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", + "git_sha": "7a7676e7e9343eb9814c47ab617a00302ce70277", "installed_by": ["modules"] }, "cnvkit/reference": { "branch": "master", - "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", + "git_sha": "7a7676e7e9343eb9814c47ab617a00302ce70277", "installed_by": ["modules"] }, "controlfreec/assesssignificance": { diff --git a/modules/nf-core/cnvkit/antitarget/main.nf b/modules/nf-core/cnvkit/antitarget/main.nf index 37da41a5a..3a754c472 100644 --- a/modules/nf-core/cnvkit/antitarget/main.nf +++ b/modules/nf-core/cnvkit/antitarget/main.nf @@ -1,24 +1,24 @@ process CNVKIT_ANTITARGET { - tag "$meta.id" + tag "${meta.id}" label 'process_low' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/cnvkit:0.9.12--pyhdfd78af_0': - 'biocontainers/cnvkit:0.9.12--pyhdfd78af_0' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://depot.galaxyproject.org/singularity/cnvkit:0.9.12--pyhdfd78af_0' + : 'biocontainers/cnvkit:0.9.12--pyhdfd78af_0'}" input: tuple val(meta), path(targets) output: tuple val(meta), path("*.bed"), emit: bed - path "versions.yml" , emit: versions + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' + def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" """ diff --git a/modules/nf-core/cnvkit/batch/environment.yml b/modules/nf-core/cnvkit/batch/environment.yml index a2466da99..76271e4aa 100644 --- a/modules/nf-core/cnvkit/batch/environment.yml +++ b/modules/nf-core/cnvkit/batch/environment.yml @@ -5,6 +5,6 @@ channels: - bioconda dependencies: - - bioconda::cnvkit=0.9.10 - - bioconda::htslib=1.17 - - bioconda::samtools=1.17 + - bioconda::cnvkit=0.9.12 + - bioconda::htslib=1.21 + - bioconda::samtools=1.21 diff --git a/modules/nf-core/cnvkit/batch/main.nf b/modules/nf-core/cnvkit/batch/main.nf index 9e8aafac6..aaf55cc32 100644 --- a/modules/nf-core/cnvkit/batch/main.nf +++ b/modules/nf-core/cnvkit/batch/main.nf @@ -1,11 +1,11 @@ process CNVKIT_BATCH { - tag "$meta.id" + tag "${meta.id}" label 'process_low' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/mulled-v2-780d630a9bb6a0ff2e7b6f730906fd703e40e98f:c94363856059151a2974dc501fb07a0360cc60a3-0' : - 'biocontainers/mulled-v2-780d630a9bb6a0ff2e7b6f730906fd703e40e98f:c94363856059151a2974dc501fb07a0360cc60a3-0' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/3e/3e8542cdb0190cfe2cedd74f714f021a2ffa94be3ec2a5b95ff52610cb3e2c34/data' + : 'community.wave.seqera.io/library/cnvkit_htslib_samtools:86928c121163aca7'}" input: tuple val(meta), path(tumor), path(normal) @@ -13,7 +13,7 @@ process CNVKIT_BATCH { tuple val(meta3), path(fasta_fai) tuple val(meta4), path(targets) tuple val(meta5), path(reference) - val panel_of_normals + val panel_of_normals output: tuple val(meta), path("*.bed"), emit: bed @@ -22,7 +22,7 @@ process CNVKIT_BATCH { tuple val(meta), path("*.cns"), emit: cns, optional: true tuple val(meta), path("*.pdf"), emit: pdf, optional: true tuple val(meta), path("*.png"), emit: png, optional: true - path "versions.yml" , emit: versions + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when @@ -37,8 +37,6 @@ process CNVKIT_BATCH { // execute samtools only when cram files are input, cnvkit runs natively on bam but is prohibitively slow def tumor_cram = tumor_exists && tumor.Extension == "cram" ? true : false def normal_cram = normal_exists && normal.Extension == "cram" ? true : false - def tumor_bam = tumor_exists && tumor.Extension == "bam" ? true : false - def normal_bam = normal_exists && normal.Extension == "bam" ? true : false def tumor_out = tumor_cram ? tumor.BaseName + ".bam" : "${tumor}" @@ -47,23 +45,22 @@ process CNVKIT_BATCH { def (normal_out, normal_args, fasta_args) = ["", "", ""] def fai_reference = fasta_fai ? "--fai-reference ${fasta_fai}" : "" - if (normal_exists){ + if (normal_exists) { def normal_prefix = normal.BaseName normal_out = normal_cram ? "${normal_prefix}" + ".bam" : "${normal}" - fasta_args = fasta ? "--fasta $fasta" : "" + fasta_args = fasta ? "--fasta ${fasta}" : "" // germline mode // normal samples must be input without a flag // requires flag --normal to be empty [] - if(!tumor_exists){ + if (!tumor_exists) { tumor_out = "${normal_prefix}" + ".bam" normal_args = "--normal " } - // somatic mode else { - normal_args = normal_prefix ? "--normal $normal_out" : "" + normal_args = normal_prefix ? "--normal ${normal_out}" : "" } - if (reference_exists){ + if (reference_exists) { fasta_args = "" normal_args = "" } @@ -72,35 +69,56 @@ process CNVKIT_BATCH { // generation of panel of normals def generate_pon = panel_of_normals ? true : false - if (generate_pon && !tumor_exists){ + if (generate_pon && !tumor_exists) { def pon_input = normal.join(' ') - normal_args = "--normal $pon_input" + normal_args = "--normal ${pon_input}" tumor_out = "" } - def target_args = targets && !reference_exists ? "--targets $targets" : "" - def reference_args = reference ? "--reference $reference" : "" + def target_args = targets && !reference_exists ? "--targets ${targets}" : "" + def reference_args = reference ? "--reference ${reference}" : "" def samtools_cram_convert = '' - samtools_cram_convert += normal_cram ? " samtools view -T $fasta $fai_reference $normal -@ $task.cpus -o $normal_out\n" : '' - samtools_cram_convert += normal_cram ? " samtools index $normal_out\n" : '' - samtools_cram_convert += tumor_cram ? " samtools view -T $fasta $fai_reference $tumor -@ $task.cpus -o $tumor_out\n" : '' - samtools_cram_convert += tumor_cram ? " samtools index $tumor_out\n" : '' - def versions = normal_cram || tumor_cram ? - "samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//')\n cnvkit: \$(cnvkit.py version | sed -e 's/cnvkit v//g')" : - "cnvkit: \$(cnvkit.py version | sed -e 's/cnvkit v//g')" + samtools_cram_convert += normal_cram ? " samtools view -T ${fasta} ${fai_reference} ${normal} -@ ${task.cpus} -o ${normal_out}\n" : '' + samtools_cram_convert += normal_cram ? " samtools index ${normal_out}\n" : '' + samtools_cram_convert += tumor_cram ? " samtools view -T ${fasta} ${fai_reference} ${tumor} -@ ${task.cpus} -o ${tumor_out}\n" : '' + samtools_cram_convert += tumor_cram ? " samtools index ${tumor_out}\n" : '' + def versions = normal_cram || tumor_cram + ? "samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//')\n cnvkit: \$(cnvkit.py version | sed -e 's/cnvkit v//g')" + : "cnvkit: \$(cnvkit.py version | sed -e 's/cnvkit v//g')" """ - $samtools_cram_convert + ${samtools_cram_convert} cnvkit.py \\ batch \\ - $tumor_out \\ - $normal_args \\ - $fasta_args \\ - $reference_args \\ - $target_args \\ - --processes $task.cpus \\ - $args + ${tumor_out} \\ + ${normal_args} \\ + ${fasta_args} \\ + ${reference_args} \\ + ${target_args} \\ + --processes ${task.cpus} \\ + ${args} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + ${versions} + END_VERSIONS + """ + + stub: + def tumor_exists = tumor ? true : false + def normal_exists = normal ? true : false + + // execute samtools only when cram files are input, cnvkit runs natively on bam but is prohibitively slow + def tumor_cram = tumor_exists && tumor.Extension == "cram" ? true : false + def normal_cram = normal_exists && normal.Extension == "cram" ? true : false + + def versions = normal_cram || tumor_cram + ? "samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//')\n cnvkit: \$(cnvkit.py version | sed -e 's/cnvkit v//g')" + : "cnvkit: \$(cnvkit.py version | sed -e 's/cnvkit v//g')" + """ + touch ${targets.simpleName}.antitarget.bed + touch ${targets.simpleName}.target.bed cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/cnvkit/call/main.nf b/modules/nf-core/cnvkit/call/main.nf index a27a3ffa1..25a91559e 100644 --- a/modules/nf-core/cnvkit/call/main.nf +++ b/modules/nf-core/cnvkit/call/main.nf @@ -1,18 +1,18 @@ process CNVKIT_CALL { - tag "$meta.id" + tag "${meta.id}" label 'process_single' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/cnvkit:0.9.12--pyhdfd78af_0': - 'biocontainers/cnvkit:0.9.12--pyhdfd78af_0' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://depot.galaxyproject.org/singularity/cnvkit:0.9.12--pyhdfd78af_0' + : 'biocontainers/cnvkit:0.9.12--pyhdfd78af_0'}" input: - tuple val(meta) , path(cns), path(vcf) + tuple val(meta), path(cns), path(vcf) output: tuple val(meta), path("*.cns"), emit: cns - path "versions.yml" , emit: versions + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when @@ -20,12 +20,12 @@ process CNVKIT_CALL { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def vcf_cmd = vcf ? "-v $vcf" : "" + def vcf_cmd = vcf ? "-v ${vcf}" : "" """ cnvkit.py call \\ - $cns \\ - $vcf_cmd \\ - $args \\ + ${cns} \\ + ${vcf_cmd} \\ + ${args} \\ -o ${prefix}.cns cat <<-END_VERSIONS > versions.yml diff --git a/modules/nf-core/cnvkit/export/main.nf b/modules/nf-core/cnvkit/export/main.nf index e8c303b28..4b161a92f 100644 --- a/modules/nf-core/cnvkit/export/main.nf +++ b/modules/nf-core/cnvkit/export/main.nf @@ -1,18 +1,18 @@ process CNVKIT_EXPORT { - tag "$meta.id" + tag "${meta.id}" label 'process_single' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/cnvkit:0.9.12--pyhdfd78af_0': - 'biocontainers/cnvkit:0.9.12--pyhdfd78af_0' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://depot.galaxyproject.org/singularity/cnvkit:0.9.12--pyhdfd78af_0' + : 'biocontainers/cnvkit:0.9.12--pyhdfd78af_0'}" input: tuple val(meta), path(cns) output: tuple val(meta), path("${prefix}.${suffix}"), emit: output - path "versions.yml" , emit: versions + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when @@ -23,8 +23,8 @@ process CNVKIT_EXPORT { suffix = task.ext.args.tokenize(" ")[0] """ cnvkit.py export \\ - $args \\ - $cns \\ + ${args} \\ + ${cns} \\ -o ${prefix}.${suffix} cat <<-END_VERSIONS > versions.yml diff --git a/modules/nf-core/cnvkit/genemetrics/main.nf b/modules/nf-core/cnvkit/genemetrics/main.nf index aafe28598..44971d9a0 100644 --- a/modules/nf-core/cnvkit/genemetrics/main.nf +++ b/modules/nf-core/cnvkit/genemetrics/main.nf @@ -1,25 +1,25 @@ process CNVKIT_GENEMETRICS { - tag "$meta.id" + tag "${meta.id}" label 'process_low' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/cnvkit:0.9.12--pyhdfd78af_0': - 'biocontainers/cnvkit:0.9.12--pyhdfd78af_0' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://depot.galaxyproject.org/singularity/cnvkit:0.9.12--pyhdfd78af_0' + : 'biocontainers/cnvkit:0.9.12--pyhdfd78af_0'}" input: tuple val(meta), path(cnr), path(cns) output: tuple val(meta), path("*.tsv"), emit: tsv - path "versions.yml" , emit: versions + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" def segments = cns ? "--segment ${cns}" : "" """ diff --git a/modules/nf-core/cnvkit/reference/main.nf b/modules/nf-core/cnvkit/reference/main.nf index 2138b5a24..1636cd21b 100644 --- a/modules/nf-core/cnvkit/reference/main.nf +++ b/modules/nf-core/cnvkit/reference/main.nf @@ -1,11 +1,11 @@ process CNVKIT_REFERENCE { - tag "$fasta" + tag "${fasta}" label 'process_low' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/cnvkit:0.9.12--pyhdfd78af_0': - 'biocontainers/cnvkit:0.9.12--pyhdfd78af_0' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://depot.galaxyproject.org/singularity/cnvkit:0.9.12--pyhdfd78af_0' + : 'biocontainers/cnvkit:0.9.12--pyhdfd78af_0'}" input: path fasta @@ -13,14 +13,14 @@ process CNVKIT_REFERENCE { path antitargets output: - path "*.cnn" , emit: cnn + path "*.cnn", emit: cnn path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' + def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: targets.BaseName """ diff --git a/tests/variant_calling_cnvkit.nf.test.snap b/tests/variant_calling_cnvkit.nf.test.snap index 9be82adfd..ce6ca20e0 100644 --- a/tests/variant_calling_cnvkit.nf.test.snap +++ b/tests/variant_calling_cnvkit.nf.test.snap @@ -7,8 +7,8 @@ "cnvkit": "0.9.12" }, "CNVKIT_BATCH": { - "cnvkit": "0.9.10", - "samtools": 1.17 + "cnvkit": "0.9.12", + "samtools": 1.21 }, "CNVKIT_CALL": { "cnvkit": "0.9.12" @@ -255,8 +255,8 @@ "cnvkit": "0.9.12" }, "CNVKIT_BATCH": { - "cnvkit": "0.9.10", - "samtools": 1.17 + "cnvkit": "0.9.12", + "samtools": 1.21 }, "CNVKIT_CALL": { "cnvkit": "0.9.12" @@ -406,8 +406,8 @@ "cnvkit": "0.9.12" }, "CNVKIT_BATCH": { - "cnvkit": "0.9.10", - "samtools": 1.17 + "cnvkit": "0.9.12", + "samtools": 1.21 }, "CNVKIT_CALL": { "cnvkit": "0.9.12" @@ -602,8 +602,8 @@ "cnvkit": "0.9.12" }, "CNVKIT_BATCH": { - "cnvkit": "0.9.10", - "samtools": 1.17 + "cnvkit": "0.9.12", + "samtools": 1.21 }, "CNVKIT_CALL": { "cnvkit": "0.9.12" @@ -846,8 +846,8 @@ 14, { "CNVKIT_BATCH": { - "cnvkit": "0.9.10", - "samtools": 1.17 + "cnvkit": "0.9.12", + "samtools": 1.21 }, "CNVKIT_CALL": { "cnvkit": "0.9.12" diff --git a/tests/variant_calling_sentieon_haplotypecaller.nf.test.snap b/tests/variant_calling_sentieon_haplotypecaller.nf.test.snap index b35c572ee..041d3ff47 100644 --- a/tests/variant_calling_sentieon_haplotypecaller.nf.test.snap +++ b/tests/variant_calling_sentieon_haplotypecaller.nf.test.snap @@ -3,6 +3,9 @@ "content": [ 19, { + "BCFTOOLS_SORT": { + "bcftools": 1.21 + }, "BCFTOOLS_STATS": { "bcftools": 1.21 }, @@ -12,6 +15,9 @@ "GATK4_INTERVALLISTTOBED": { "gatk4": "4.6.1.0" }, + "MERGE_GENOTYPEGVCFS": { + "gatk4": "4.6.1.0" + }, "MOSDEPTH": { "mosdepth": "0.3.10" }, From f073996a36bf31652c4d029366cd5587cde22741 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Fri, 15 Aug 2025 09:30:17 +0200 Subject: [PATCH 16/34] update cnvkit tests --- tests/variant_calling_cnvkit.nf.test.snap | 370 +++++++++++----------- 1 file changed, 185 insertions(+), 185 deletions(-) diff --git a/tests/variant_calling_cnvkit.nf.test.snap b/tests/variant_calling_cnvkit.nf.test.snap index ce6ca20e0..f95d53cb3 100644 --- a/tests/variant_calling_cnvkit.nf.test.snap +++ b/tests/variant_calling_cnvkit.nf.test.snap @@ -1,7 +1,7 @@ { - "-profile test --tools cnvkit --input recalibrated.csv --only_paired_variant_calling": { + "-profile test --tools cnvkit --input recalibrated_somatic.csv": { "content": [ - 26, + 18, { "CNVKIT_ANTITARGET": { "cnvkit": "0.9.12" @@ -86,18 +86,6 @@ "reference", "reports", "reports/mosdepth", - "reports/mosdepth/sample1", - "reports/mosdepth/sample1/sample1.recal.mosdepth.global.dist.txt", - "reports/mosdepth/sample1/sample1.recal.mosdepth.region.dist.txt", - "reports/mosdepth/sample1/sample1.recal.mosdepth.summary.txt", - "reports/mosdepth/sample1/sample1.recal.regions.bed.gz", - "reports/mosdepth/sample1/sample1.recal.regions.bed.gz.csi", - "reports/mosdepth/sample2", - "reports/mosdepth/sample2/sample2.recal.mosdepth.global.dist.txt", - "reports/mosdepth/sample2/sample2.recal.mosdepth.region.dist.txt", - "reports/mosdepth/sample2/sample2.recal.mosdepth.summary.txt", - "reports/mosdepth/sample2/sample2.recal.regions.bed.gz", - "reports/mosdepth/sample2/sample2.recal.regions.bed.gz.csi", "reports/mosdepth/sample3", "reports/mosdepth/sample3/sample3.recal.mosdepth.global.dist.txt", "reports/mosdepth/sample3/sample3.recal.mosdepth.region.dist.txt", @@ -111,45 +99,27 @@ "reports/mosdepth/sample4/sample4.recal.regions.bed.gz", "reports/mosdepth/sample4/sample4.recal.regions.bed.gz.csi", "reports/samtools", - "reports/samtools/sample1", - "reports/samtools/sample1/sample1.recal.cram.stats", - "reports/samtools/sample2", - "reports/samtools/sample2/sample2.recal.cram.stats", "reports/samtools/sample3", "reports/samtools/sample3/sample3.recal.cram.stats", "reports/samtools/sample4", "reports/samtools/sample4/sample4.recal.cram.stats", "variant_calling", "variant_calling/cnvkit", - "variant_calling/cnvkit/sample1", - "variant_calling/cnvkit/sample1/multi_intervals.antitarget.bed", - "variant_calling/cnvkit/sample1/multi_intervals.target.bed", - "variant_calling/cnvkit/sample1/reference.cnn", - "variant_calling/cnvkit/sample1/sample1.cnvcall.vcf", - "variant_calling/cnvkit/sample1/test.paired_end.recalibrated.sorted-diagram.pdf", - "variant_calling/cnvkit/sample1/test.paired_end.recalibrated.sorted-scatter.png", - "variant_calling/cnvkit/sample1/test.paired_end.recalibrated.sorted.antitargetcoverage.cnn", - "variant_calling/cnvkit/sample1/test.paired_end.recalibrated.sorted.bintest.cns", - "variant_calling/cnvkit/sample1/test.paired_end.recalibrated.sorted.call.cns", - "variant_calling/cnvkit/sample1/test.paired_end.recalibrated.sorted.cnr", - "variant_calling/cnvkit/sample1/test.paired_end.recalibrated.sorted.cns", - "variant_calling/cnvkit/sample1/test.paired_end.recalibrated.sorted.genemetrics.tsv", - "variant_calling/cnvkit/sample1/test.paired_end.recalibrated.sorted.germline.call.cns", - "variant_calling/cnvkit/sample1/test.paired_end.recalibrated.sorted.targetcoverage.cnn", - "variant_calling/cnvkit/sample2", - "variant_calling/cnvkit/sample2/cnvkit.reference.antitarget-tmp.bed", - "variant_calling/cnvkit/sample2/cnvkit.reference.target-tmp.bed", - "variant_calling/cnvkit/sample2/sample2.cnvcall.vcf", - "variant_calling/cnvkit/sample2/test2.paired_end.recalibrated.sorted-diagram.pdf", - "variant_calling/cnvkit/sample2/test2.paired_end.recalibrated.sorted-scatter.png", - "variant_calling/cnvkit/sample2/test2.paired_end.recalibrated.sorted.antitargetcoverage.cnn", - "variant_calling/cnvkit/sample2/test2.paired_end.recalibrated.sorted.bintest.cns", - "variant_calling/cnvkit/sample2/test2.paired_end.recalibrated.sorted.call.cns", - "variant_calling/cnvkit/sample2/test2.paired_end.recalibrated.sorted.cnr", - "variant_calling/cnvkit/sample2/test2.paired_end.recalibrated.sorted.cns", - "variant_calling/cnvkit/sample2/test2.paired_end.recalibrated.sorted.genemetrics.tsv", - "variant_calling/cnvkit/sample2/test2.paired_end.recalibrated.sorted.targetcoverage.cnn", - "variant_calling/cnvkit/sample2/test2.paired_end.recalibrated.sorted.tumor_only.call.cns", + "variant_calling/cnvkit/sample3", + "variant_calling/cnvkit/sample3/multi_intervals.antitarget.bed", + "variant_calling/cnvkit/sample3/multi_intervals.target.bed", + "variant_calling/cnvkit/sample3/reference.cnn", + "variant_calling/cnvkit/sample3/sample3.cnvcall.vcf", + "variant_calling/cnvkit/sample3/test.paired_end.recalibrated.sorted-diagram.pdf", + "variant_calling/cnvkit/sample3/test.paired_end.recalibrated.sorted-scatter.png", + "variant_calling/cnvkit/sample3/test.paired_end.recalibrated.sorted.antitargetcoverage.cnn", + "variant_calling/cnvkit/sample3/test.paired_end.recalibrated.sorted.bintest.cns", + "variant_calling/cnvkit/sample3/test.paired_end.recalibrated.sorted.call.cns", + "variant_calling/cnvkit/sample3/test.paired_end.recalibrated.sorted.cnr", + "variant_calling/cnvkit/sample3/test.paired_end.recalibrated.sorted.cns", + "variant_calling/cnvkit/sample3/test.paired_end.recalibrated.sorted.genemetrics.tsv", + "variant_calling/cnvkit/sample3/test.paired_end.recalibrated.sorted.germline.call.cns", + "variant_calling/cnvkit/sample3/test.paired_end.recalibrated.sorted.targetcoverage.cnn", "variant_calling/cnvkit/sample4_vs_sample3", "variant_calling/cnvkit/sample4_vs_sample3/multi_intervals.antitarget.bed", "variant_calling/cnvkit/sample4_vs_sample3/multi_intervals.target.bed", @@ -169,22 +139,12 @@ "variant_calling/cnvkit/sample4_vs_sample3/test2.paired_end.recalibrated.sorted.targetcoverage.cnn" ], [ - "mosdepth-coverage-per-contig-single.txt:md5,73ef9a077df1887f9021a581fbf207bc", - "mosdepth-cumcoverage-dist-id.txt:md5,ad0637d55d7025330f2f6cb7f9680e64", - "mosdepth_perchrom.txt:md5,73ef9a077df1887f9021a581fbf207bc", + "mosdepth-coverage-per-contig-single.txt:md5,336d786b273c4d4e714d51c44207ff56", + "mosdepth-cumcoverage-dist-id.txt:md5,0cc87c596a0fc30ebb676c4587e986de", + "mosdepth_perchrom.txt:md5,336d786b273c4d4e714d51c44207ff56", "multiqc_citations.txt:md5,6239b0f0a9736ccaf3baff3014dd585b", - "samtools-stats-dp.txt:md5,b446a47b182d93a9e7e74f5f7c8d41c2", - "samtools_alignment_plot.txt:md5,7138a2d29f515993e1df8d745e27b757", - "sample1.recal.mosdepth.global.dist.txt:md5,d9a4dd6429560b2b647da346050766c5", - "sample1.recal.mosdepth.region.dist.txt:md5,1f3dab381958e08eb00f7c5e1135f677", - "sample1.recal.mosdepth.summary.txt:md5,d7676e7c1de851b0ee5185d21096123b", - "sample1.recal.regions.bed.gz:md5,6edeb8f7041a4403cb73651744b5bc82", - "sample1.recal.regions.bed.gz.csi:md5,5fc6f880df27ca754ab229f0ccad2aea", - "sample2.recal.mosdepth.global.dist.txt:md5,53f9ae9ab5002ffba340fa8cef7d70e4", - "sample2.recal.mosdepth.region.dist.txt:md5,17600d21ac453506c52249cf435ad8ea", - "sample2.recal.mosdepth.summary.txt:md5,7141030385af1f653718c9e0c9a5be80", - "sample2.recal.regions.bed.gz:md5,c680c5d75f0cea068e3f917f4cf9bf52", - "sample2.recal.regions.bed.gz.csi:md5,68b7a9a98053b1122bdca68a1e1c87dd", + "samtools-stats-dp.txt:md5,e0a8d8867064083908a8ca1ea782d7ac", + "samtools_alignment_plot.txt:md5,f4b1a7cef760291172144a8614b4a1cd", "sample3.recal.mosdepth.global.dist.txt:md5,d9a4dd6429560b2b647da346050766c5", "sample3.recal.mosdepth.region.dist.txt:md5,1f3dab381958e08eb00f7c5e1135f677", "sample3.recal.mosdepth.summary.txt:md5,d7676e7c1de851b0ee5185d21096123b", @@ -198,7 +158,7 @@ "multi_intervals.antitarget.bed:md5,d41d8cd98f00b204e9800998ecf8427e", "multi_intervals.target.bed:md5,f7474a0afbf5565c5675916606f2d9bd", "reference.cnn:md5,891454915f82d0eeda0be13d71e0d5d7", - "test.paired_end.recalibrated.sorted-scatter.png:md5,2a82254094015efde86e78f38c6487f0", + "test.paired_end.recalibrated.sorted-scatter.png:md5,e85e5dcdfb83af481813f7fabf05feb2", "test.paired_end.recalibrated.sorted.antitargetcoverage.cnn:md5,203caf8cef6935bb50b4138097955cb8", "test.paired_end.recalibrated.sorted.bintest.cns:md5,8d0301673b584a6a8d88bdaad87ba09d", "test.paired_end.recalibrated.sorted.call.cns:md5,9254686f5d1a2718cc2a20f28d0ef3d7", @@ -207,23 +167,12 @@ "test.paired_end.recalibrated.sorted.genemetrics.tsv:md5,5ec3555520f502f00f551ae7900a3824", "test.paired_end.recalibrated.sorted.germline.call.cns:md5,5bba48aecc2282971b9d4c562bec4591", "test.paired_end.recalibrated.sorted.targetcoverage.cnn:md5,4153756b30abc934f10717c023bd262f", - "cnvkit.reference.antitarget-tmp.bed:md5,3d4d20f9f23b39970865d29ef239d20b", - "cnvkit.reference.target-tmp.bed:md5,657b25dbda8516624efa8cb2cf3716ca", - "test2.paired_end.recalibrated.sorted-scatter.png:md5,d9a4a27a7a93eca23108b43dea09c140", - "test2.paired_end.recalibrated.sorted.antitargetcoverage.cnn:md5,067115082c4af4b64d58c0dc3a3642e4", - "test2.paired_end.recalibrated.sorted.bintest.cns:md5,7a66b5f63acb05e6dfb0784c215851ec", - "test2.paired_end.recalibrated.sorted.call.cns:md5,f7caeca04aba28b125ce26b511f42afb", - "test2.paired_end.recalibrated.sorted.cnr:md5,d9bdb71ce807051369577ee7f807a40c", - "test2.paired_end.recalibrated.sorted.cns:md5,2b56aac606ba6183d018b30ca58afcec", - "test2.paired_end.recalibrated.sorted.genemetrics.tsv:md5,5ec3555520f502f00f551ae7900a3824", - "test2.paired_end.recalibrated.sorted.targetcoverage.cnn:md5,e6d0190c1c37ce6e41f76ca5b24ccca3", - "test2.paired_end.recalibrated.sorted.tumor_only.call.cns:md5,70a308c6db7acf1a5fd623936cac6412", "multi_intervals.antitarget.bed:md5,d41d8cd98f00b204e9800998ecf8427e", "multi_intervals.target.bed:md5,f9e727147a7cbca46c2b9b2de3ecae91", - "reference.cnn:md5,e0aefc1c8a40e6919dc9cfb686e51f7c", + "reference.cnn:md5,dfc49a037a468bef43a33b5dd4a2bc05", "test.paired_end.recalibrated.sorted.antitargetcoverage.cnn:md5,203caf8cef6935bb50b4138097955cb8", "test.paired_end.recalibrated.sorted.targetcoverage.cnn:md5,826087b08d380135a271e2774c94084c", - "test2.paired_end.recalibrated.sorted-scatter.png:md5,b0bec8dbcccad43b186521b8265f7684", + "test2.paired_end.recalibrated.sorted-scatter.png:md5,aa5c9aab65a0b1c1a32c5431ea6075c3", "test2.paired_end.recalibrated.sorted.antitargetcoverage.cnn:md5,203caf8cef6935bb50b4138097955cb8", "test2.paired_end.recalibrated.sorted.bintest.cns:md5,b5ccf48e99562082026e94f8d8aa1133", "test2.paired_end.recalibrated.sorted.call.cns:md5,8202ec610e834c58bb7199761fccd9e5", @@ -236,20 +185,19 @@ "No BAM files", "No CRAM files", [ - "sample1.cnvcall.vcf:md5,6f8c517f62715c47674c79ffd1e9babb", - "sample2.cnvcall.vcf:md5,35662b51f071469c6227be15114eb824", + "sample3.cnvcall.vcf:md5,6f8c517f62715c47674c79ffd1e9babb", "sample4_vs_sample3.cnvcall.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "meta": { "nf-test": "0.9.2", - "nextflow": "25.04.3" + "nextflow": "25.04.6" }, - "timestamp": "2025-06-16T20:25:45.5400706" + "timestamp": "2025-08-15T09:23:30.341681654" }, - "-profile test --tools cnvkit --input recalibrated_germline.csv": { + "-profile test --tools cnvkit --input recalibrated.csv --only_paired_variant_calling": { "content": [ - 12, + 26, { "CNVKIT_ANTITARGET": { "cnvkit": "0.9.12" @@ -340,9 +288,33 @@ "reports/mosdepth/sample1/sample1.recal.mosdepth.summary.txt", "reports/mosdepth/sample1/sample1.recal.regions.bed.gz", "reports/mosdepth/sample1/sample1.recal.regions.bed.gz.csi", + "reports/mosdepth/sample2", + "reports/mosdepth/sample2/sample2.recal.mosdepth.global.dist.txt", + "reports/mosdepth/sample2/sample2.recal.mosdepth.region.dist.txt", + "reports/mosdepth/sample2/sample2.recal.mosdepth.summary.txt", + "reports/mosdepth/sample2/sample2.recal.regions.bed.gz", + "reports/mosdepth/sample2/sample2.recal.regions.bed.gz.csi", + "reports/mosdepth/sample3", + "reports/mosdepth/sample3/sample3.recal.mosdepth.global.dist.txt", + "reports/mosdepth/sample3/sample3.recal.mosdepth.region.dist.txt", + "reports/mosdepth/sample3/sample3.recal.mosdepth.summary.txt", + "reports/mosdepth/sample3/sample3.recal.regions.bed.gz", + "reports/mosdepth/sample3/sample3.recal.regions.bed.gz.csi", + "reports/mosdepth/sample4", + "reports/mosdepth/sample4/sample4.recal.mosdepth.global.dist.txt", + "reports/mosdepth/sample4/sample4.recal.mosdepth.region.dist.txt", + "reports/mosdepth/sample4/sample4.recal.mosdepth.summary.txt", + "reports/mosdepth/sample4/sample4.recal.regions.bed.gz", + "reports/mosdepth/sample4/sample4.recal.regions.bed.gz.csi", "reports/samtools", "reports/samtools/sample1", "reports/samtools/sample1/sample1.recal.cram.stats", + "reports/samtools/sample2", + "reports/samtools/sample2/sample2.recal.cram.stats", + "reports/samtools/sample3", + "reports/samtools/sample3/sample3.recal.cram.stats", + "reports/samtools/sample4", + "reports/samtools/sample4/sample4.recal.cram.stats", "variant_calling", "variant_calling/cnvkit", "variant_calling/cnvkit/sample1", @@ -359,24 +331,70 @@ "variant_calling/cnvkit/sample1/test.paired_end.recalibrated.sorted.cns", "variant_calling/cnvkit/sample1/test.paired_end.recalibrated.sorted.genemetrics.tsv", "variant_calling/cnvkit/sample1/test.paired_end.recalibrated.sorted.germline.call.cns", - "variant_calling/cnvkit/sample1/test.paired_end.recalibrated.sorted.targetcoverage.cnn" + "variant_calling/cnvkit/sample1/test.paired_end.recalibrated.sorted.targetcoverage.cnn", + "variant_calling/cnvkit/sample2", + "variant_calling/cnvkit/sample2/cnvkit.reference.antitarget-tmp.bed", + "variant_calling/cnvkit/sample2/cnvkit.reference.target-tmp.bed", + "variant_calling/cnvkit/sample2/sample2.cnvcall.vcf", + "variant_calling/cnvkit/sample2/test2.paired_end.recalibrated.sorted-diagram.pdf", + "variant_calling/cnvkit/sample2/test2.paired_end.recalibrated.sorted-scatter.png", + "variant_calling/cnvkit/sample2/test2.paired_end.recalibrated.sorted.antitargetcoverage.cnn", + "variant_calling/cnvkit/sample2/test2.paired_end.recalibrated.sorted.bintest.cns", + "variant_calling/cnvkit/sample2/test2.paired_end.recalibrated.sorted.call.cns", + "variant_calling/cnvkit/sample2/test2.paired_end.recalibrated.sorted.cnr", + "variant_calling/cnvkit/sample2/test2.paired_end.recalibrated.sorted.cns", + "variant_calling/cnvkit/sample2/test2.paired_end.recalibrated.sorted.genemetrics.tsv", + "variant_calling/cnvkit/sample2/test2.paired_end.recalibrated.sorted.targetcoverage.cnn", + "variant_calling/cnvkit/sample2/test2.paired_end.recalibrated.sorted.tumor_only.call.cns", + "variant_calling/cnvkit/sample4_vs_sample3", + "variant_calling/cnvkit/sample4_vs_sample3/multi_intervals.antitarget.bed", + "variant_calling/cnvkit/sample4_vs_sample3/multi_intervals.target.bed", + "variant_calling/cnvkit/sample4_vs_sample3/reference.cnn", + "variant_calling/cnvkit/sample4_vs_sample3/sample4_vs_sample3.cnvcall.vcf", + "variant_calling/cnvkit/sample4_vs_sample3/test.paired_end.recalibrated.sorted.antitargetcoverage.cnn", + "variant_calling/cnvkit/sample4_vs_sample3/test.paired_end.recalibrated.sorted.targetcoverage.cnn", + "variant_calling/cnvkit/sample4_vs_sample3/test2.paired_end.recalibrated.sorted-diagram.pdf", + "variant_calling/cnvkit/sample4_vs_sample3/test2.paired_end.recalibrated.sorted-scatter.png", + "variant_calling/cnvkit/sample4_vs_sample3/test2.paired_end.recalibrated.sorted.antitargetcoverage.cnn", + "variant_calling/cnvkit/sample4_vs_sample3/test2.paired_end.recalibrated.sorted.bintest.cns", + "variant_calling/cnvkit/sample4_vs_sample3/test2.paired_end.recalibrated.sorted.call.cns", + "variant_calling/cnvkit/sample4_vs_sample3/test2.paired_end.recalibrated.sorted.cnr", + "variant_calling/cnvkit/sample4_vs_sample3/test2.paired_end.recalibrated.sorted.cns", + "variant_calling/cnvkit/sample4_vs_sample3/test2.paired_end.recalibrated.sorted.genemetrics.tsv", + "variant_calling/cnvkit/sample4_vs_sample3/test2.paired_end.recalibrated.sorted.somatic.call.cns", + "variant_calling/cnvkit/sample4_vs_sample3/test2.paired_end.recalibrated.sorted.targetcoverage.cnn" ], [ - "mosdepth-coverage-per-contig-single.txt:md5,49fd828d21d79a5c9430cdb30d7f0126", - "mosdepth-cumcoverage-dist-id.txt:md5,edd8dfc8023e629e476e01c3a1448d30", - "mosdepth_perchrom.txt:md5,49fd828d21d79a5c9430cdb30d7f0126", + "mosdepth-coverage-per-contig-single.txt:md5,73ef9a077df1887f9021a581fbf207bc", + "mosdepth-cumcoverage-dist-id.txt:md5,ad0637d55d7025330f2f6cb7f9680e64", + "mosdepth_perchrom.txt:md5,73ef9a077df1887f9021a581fbf207bc", "multiqc_citations.txt:md5,6239b0f0a9736ccaf3baff3014dd585b", - "samtools-stats-dp.txt:md5,41d36c1a8413d565788a1a364b467606", - "samtools_alignment_plot.txt:md5,35f8fd2a557568b2237193f46afbab5c", + "samtools-stats-dp.txt:md5,b446a47b182d93a9e7e74f5f7c8d41c2", + "samtools_alignment_plot.txt:md5,7138a2d29f515993e1df8d745e27b757", "sample1.recal.mosdepth.global.dist.txt:md5,d9a4dd6429560b2b647da346050766c5", "sample1.recal.mosdepth.region.dist.txt:md5,1f3dab381958e08eb00f7c5e1135f677", "sample1.recal.mosdepth.summary.txt:md5,d7676e7c1de851b0ee5185d21096123b", "sample1.recal.regions.bed.gz:md5,6edeb8f7041a4403cb73651744b5bc82", "sample1.recal.regions.bed.gz.csi:md5,5fc6f880df27ca754ab229f0ccad2aea", + "sample2.recal.mosdepth.global.dist.txt:md5,53f9ae9ab5002ffba340fa8cef7d70e4", + "sample2.recal.mosdepth.region.dist.txt:md5,17600d21ac453506c52249cf435ad8ea", + "sample2.recal.mosdepth.summary.txt:md5,7141030385af1f653718c9e0c9a5be80", + "sample2.recal.regions.bed.gz:md5,c680c5d75f0cea068e3f917f4cf9bf52", + "sample2.recal.regions.bed.gz.csi:md5,68b7a9a98053b1122bdca68a1e1c87dd", + "sample3.recal.mosdepth.global.dist.txt:md5,d9a4dd6429560b2b647da346050766c5", + "sample3.recal.mosdepth.region.dist.txt:md5,1f3dab381958e08eb00f7c5e1135f677", + "sample3.recal.mosdepth.summary.txt:md5,d7676e7c1de851b0ee5185d21096123b", + "sample3.recal.regions.bed.gz:md5,6edeb8f7041a4403cb73651744b5bc82", + "sample3.recal.regions.bed.gz.csi:md5,5fc6f880df27ca754ab229f0ccad2aea", + "sample4.recal.mosdepth.global.dist.txt:md5,53f9ae9ab5002ffba340fa8cef7d70e4", + "sample4.recal.mosdepth.region.dist.txt:md5,17600d21ac453506c52249cf435ad8ea", + "sample4.recal.mosdepth.summary.txt:md5,7141030385af1f653718c9e0c9a5be80", + "sample4.recal.regions.bed.gz:md5,c680c5d75f0cea068e3f917f4cf9bf52", + "sample4.recal.regions.bed.gz.csi:md5,68b7a9a98053b1122bdca68a1e1c87dd", "multi_intervals.antitarget.bed:md5,d41d8cd98f00b204e9800998ecf8427e", "multi_intervals.target.bed:md5,f7474a0afbf5565c5675916606f2d9bd", "reference.cnn:md5,891454915f82d0eeda0be13d71e0d5d7", - "test.paired_end.recalibrated.sorted-scatter.png:md5,2a82254094015efde86e78f38c6487f0", + "test.paired_end.recalibrated.sorted-scatter.png:md5,e85e5dcdfb83af481813f7fabf05feb2", "test.paired_end.recalibrated.sorted.antitargetcoverage.cnn:md5,203caf8cef6935bb50b4138097955cb8", "test.paired_end.recalibrated.sorted.bintest.cns:md5,8d0301673b584a6a8d88bdaad87ba09d", "test.paired_end.recalibrated.sorted.call.cns:md5,9254686f5d1a2718cc2a20f28d0ef3d7", @@ -384,23 +402,50 @@ "test.paired_end.recalibrated.sorted.cns:md5,e25853dfbbb65f5294a45a2530cded76", "test.paired_end.recalibrated.sorted.genemetrics.tsv:md5,5ec3555520f502f00f551ae7900a3824", "test.paired_end.recalibrated.sorted.germline.call.cns:md5,5bba48aecc2282971b9d4c562bec4591", - "test.paired_end.recalibrated.sorted.targetcoverage.cnn:md5,4153756b30abc934f10717c023bd262f" + "test.paired_end.recalibrated.sorted.targetcoverage.cnn:md5,4153756b30abc934f10717c023bd262f", + "cnvkit.reference.antitarget-tmp.bed:md5,3d4d20f9f23b39970865d29ef239d20b", + "cnvkit.reference.target-tmp.bed:md5,657b25dbda8516624efa8cb2cf3716ca", + "test2.paired_end.recalibrated.sorted-scatter.png:md5,836711bd6d8a47b62bfb69c90e2f26a8", + "test2.paired_end.recalibrated.sorted.antitargetcoverage.cnn:md5,067115082c4af4b64d58c0dc3a3642e4", + "test2.paired_end.recalibrated.sorted.bintest.cns:md5,7a66b5f63acb05e6dfb0784c215851ec", + "test2.paired_end.recalibrated.sorted.call.cns:md5,f7caeca04aba28b125ce26b511f42afb", + "test2.paired_end.recalibrated.sorted.cnr:md5,d9bdb71ce807051369577ee7f807a40c", + "test2.paired_end.recalibrated.sorted.cns:md5,2b56aac606ba6183d018b30ca58afcec", + "test2.paired_end.recalibrated.sorted.genemetrics.tsv:md5,5ec3555520f502f00f551ae7900a3824", + "test2.paired_end.recalibrated.sorted.targetcoverage.cnn:md5,e6d0190c1c37ce6e41f76ca5b24ccca3", + "test2.paired_end.recalibrated.sorted.tumor_only.call.cns:md5,70a308c6db7acf1a5fd623936cac6412", + "multi_intervals.antitarget.bed:md5,d41d8cd98f00b204e9800998ecf8427e", + "multi_intervals.target.bed:md5,f9e727147a7cbca46c2b9b2de3ecae91", + "reference.cnn:md5,dfc49a037a468bef43a33b5dd4a2bc05", + "test.paired_end.recalibrated.sorted.antitargetcoverage.cnn:md5,203caf8cef6935bb50b4138097955cb8", + "test.paired_end.recalibrated.sorted.targetcoverage.cnn:md5,826087b08d380135a271e2774c94084c", + "test2.paired_end.recalibrated.sorted-scatter.png:md5,aa5c9aab65a0b1c1a32c5431ea6075c3", + "test2.paired_end.recalibrated.sorted.antitargetcoverage.cnn:md5,203caf8cef6935bb50b4138097955cb8", + "test2.paired_end.recalibrated.sorted.bintest.cns:md5,b5ccf48e99562082026e94f8d8aa1133", + "test2.paired_end.recalibrated.sorted.call.cns:md5,8202ec610e834c58bb7199761fccd9e5", + "test2.paired_end.recalibrated.sorted.cnr:md5,47d799d37af7ca8022fcac0ec705a3b8", + "test2.paired_end.recalibrated.sorted.cns:md5,50352818fd705424a7ab770d7707c312", + "test2.paired_end.recalibrated.sorted.genemetrics.tsv:md5,5ec3555520f502f00f551ae7900a3824", + "test2.paired_end.recalibrated.sorted.somatic.call.cns:md5,1cb4febd5c88d306277f3c4c3117d68c", + "test2.paired_end.recalibrated.sorted.targetcoverage.cnn:md5,62c2d1f8765618c454bf4455c2298344" ], "No BAM files", "No CRAM files", [ - "sample1.cnvcall.vcf:md5,6f8c517f62715c47674c79ffd1e9babb" + "sample1.cnvcall.vcf:md5,6f8c517f62715c47674c79ffd1e9babb", + "sample2.cnvcall.vcf:md5,35662b51f071469c6227be15114eb824", + "sample4_vs_sample3.cnvcall.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "meta": { "nf-test": "0.9.2", - "nextflow": "25.04.3" + "nextflow": "25.04.6" }, - "timestamp": "2025-06-16T20:19:26.196282244" + "timestamp": "2025-08-15T09:26:29.938634546" }, - "-profile test --tools cnvkit --input recalibrated_somatic.csv": { + "-profile test --tools cnvkit --input recalibrated_germline.csv": { "content": [ - 18, + 12, { "CNVKIT_ANTITARGET": { "cnvkit": "0.9.12" @@ -485,79 +530,49 @@ "reference", "reports", "reports/mosdepth", - "reports/mosdepth/sample3", - "reports/mosdepth/sample3/sample3.recal.mosdepth.global.dist.txt", - "reports/mosdepth/sample3/sample3.recal.mosdepth.region.dist.txt", - "reports/mosdepth/sample3/sample3.recal.mosdepth.summary.txt", - "reports/mosdepth/sample3/sample3.recal.regions.bed.gz", - "reports/mosdepth/sample3/sample3.recal.regions.bed.gz.csi", - "reports/mosdepth/sample4", - "reports/mosdepth/sample4/sample4.recal.mosdepth.global.dist.txt", - "reports/mosdepth/sample4/sample4.recal.mosdepth.region.dist.txt", - "reports/mosdepth/sample4/sample4.recal.mosdepth.summary.txt", - "reports/mosdepth/sample4/sample4.recal.regions.bed.gz", - "reports/mosdepth/sample4/sample4.recal.regions.bed.gz.csi", + "reports/mosdepth/sample1", + "reports/mosdepth/sample1/sample1.recal.mosdepth.global.dist.txt", + "reports/mosdepth/sample1/sample1.recal.mosdepth.region.dist.txt", + "reports/mosdepth/sample1/sample1.recal.mosdepth.summary.txt", + "reports/mosdepth/sample1/sample1.recal.regions.bed.gz", + "reports/mosdepth/sample1/sample1.recal.regions.bed.gz.csi", "reports/samtools", - "reports/samtools/sample3", - "reports/samtools/sample3/sample3.recal.cram.stats", - "reports/samtools/sample4", - "reports/samtools/sample4/sample4.recal.cram.stats", + "reports/samtools/sample1", + "reports/samtools/sample1/sample1.recal.cram.stats", "variant_calling", "variant_calling/cnvkit", - "variant_calling/cnvkit/sample3", - "variant_calling/cnvkit/sample3/multi_intervals.antitarget.bed", - "variant_calling/cnvkit/sample3/multi_intervals.target.bed", - "variant_calling/cnvkit/sample3/reference.cnn", - "variant_calling/cnvkit/sample3/sample3.cnvcall.vcf", - "variant_calling/cnvkit/sample3/test.paired_end.recalibrated.sorted-diagram.pdf", - "variant_calling/cnvkit/sample3/test.paired_end.recalibrated.sorted-scatter.png", - "variant_calling/cnvkit/sample3/test.paired_end.recalibrated.sorted.antitargetcoverage.cnn", - "variant_calling/cnvkit/sample3/test.paired_end.recalibrated.sorted.bintest.cns", - "variant_calling/cnvkit/sample3/test.paired_end.recalibrated.sorted.call.cns", - "variant_calling/cnvkit/sample3/test.paired_end.recalibrated.sorted.cnr", - "variant_calling/cnvkit/sample3/test.paired_end.recalibrated.sorted.cns", - "variant_calling/cnvkit/sample3/test.paired_end.recalibrated.sorted.genemetrics.tsv", - "variant_calling/cnvkit/sample3/test.paired_end.recalibrated.sorted.germline.call.cns", - "variant_calling/cnvkit/sample3/test.paired_end.recalibrated.sorted.targetcoverage.cnn", - "variant_calling/cnvkit/sample4_vs_sample3", - "variant_calling/cnvkit/sample4_vs_sample3/multi_intervals.antitarget.bed", - "variant_calling/cnvkit/sample4_vs_sample3/multi_intervals.target.bed", - "variant_calling/cnvkit/sample4_vs_sample3/reference.cnn", - "variant_calling/cnvkit/sample4_vs_sample3/sample4_vs_sample3.cnvcall.vcf", - "variant_calling/cnvkit/sample4_vs_sample3/test.paired_end.recalibrated.sorted.antitargetcoverage.cnn", - "variant_calling/cnvkit/sample4_vs_sample3/test.paired_end.recalibrated.sorted.targetcoverage.cnn", - "variant_calling/cnvkit/sample4_vs_sample3/test2.paired_end.recalibrated.sorted-diagram.pdf", - "variant_calling/cnvkit/sample4_vs_sample3/test2.paired_end.recalibrated.sorted-scatter.png", - "variant_calling/cnvkit/sample4_vs_sample3/test2.paired_end.recalibrated.sorted.antitargetcoverage.cnn", - "variant_calling/cnvkit/sample4_vs_sample3/test2.paired_end.recalibrated.sorted.bintest.cns", - "variant_calling/cnvkit/sample4_vs_sample3/test2.paired_end.recalibrated.sorted.call.cns", - "variant_calling/cnvkit/sample4_vs_sample3/test2.paired_end.recalibrated.sorted.cnr", - "variant_calling/cnvkit/sample4_vs_sample3/test2.paired_end.recalibrated.sorted.cns", - "variant_calling/cnvkit/sample4_vs_sample3/test2.paired_end.recalibrated.sorted.genemetrics.tsv", - "variant_calling/cnvkit/sample4_vs_sample3/test2.paired_end.recalibrated.sorted.somatic.call.cns", - "variant_calling/cnvkit/sample4_vs_sample3/test2.paired_end.recalibrated.sorted.targetcoverage.cnn" + "variant_calling/cnvkit/sample1", + "variant_calling/cnvkit/sample1/multi_intervals.antitarget.bed", + "variant_calling/cnvkit/sample1/multi_intervals.target.bed", + "variant_calling/cnvkit/sample1/reference.cnn", + "variant_calling/cnvkit/sample1/sample1.cnvcall.vcf", + "variant_calling/cnvkit/sample1/test.paired_end.recalibrated.sorted-diagram.pdf", + "variant_calling/cnvkit/sample1/test.paired_end.recalibrated.sorted-scatter.png", + "variant_calling/cnvkit/sample1/test.paired_end.recalibrated.sorted.antitargetcoverage.cnn", + "variant_calling/cnvkit/sample1/test.paired_end.recalibrated.sorted.bintest.cns", + "variant_calling/cnvkit/sample1/test.paired_end.recalibrated.sorted.call.cns", + "variant_calling/cnvkit/sample1/test.paired_end.recalibrated.sorted.cnr", + "variant_calling/cnvkit/sample1/test.paired_end.recalibrated.sorted.cns", + "variant_calling/cnvkit/sample1/test.paired_end.recalibrated.sorted.genemetrics.tsv", + "variant_calling/cnvkit/sample1/test.paired_end.recalibrated.sorted.germline.call.cns", + "variant_calling/cnvkit/sample1/test.paired_end.recalibrated.sorted.targetcoverage.cnn" ], [ - "mosdepth-coverage-per-contig-single.txt:md5,336d786b273c4d4e714d51c44207ff56", - "mosdepth-cumcoverage-dist-id.txt:md5,0cc87c596a0fc30ebb676c4587e986de", - "mosdepth_perchrom.txt:md5,336d786b273c4d4e714d51c44207ff56", + "mosdepth-coverage-per-contig-single.txt:md5,49fd828d21d79a5c9430cdb30d7f0126", + "mosdepth-cumcoverage-dist-id.txt:md5,edd8dfc8023e629e476e01c3a1448d30", + "mosdepth_perchrom.txt:md5,49fd828d21d79a5c9430cdb30d7f0126", "multiqc_citations.txt:md5,6239b0f0a9736ccaf3baff3014dd585b", - "samtools-stats-dp.txt:md5,e0a8d8867064083908a8ca1ea782d7ac", - "samtools_alignment_plot.txt:md5,f4b1a7cef760291172144a8614b4a1cd", - "sample3.recal.mosdepth.global.dist.txt:md5,d9a4dd6429560b2b647da346050766c5", - "sample3.recal.mosdepth.region.dist.txt:md5,1f3dab381958e08eb00f7c5e1135f677", - "sample3.recal.mosdepth.summary.txt:md5,d7676e7c1de851b0ee5185d21096123b", - "sample3.recal.regions.bed.gz:md5,6edeb8f7041a4403cb73651744b5bc82", - "sample3.recal.regions.bed.gz.csi:md5,5fc6f880df27ca754ab229f0ccad2aea", - "sample4.recal.mosdepth.global.dist.txt:md5,53f9ae9ab5002ffba340fa8cef7d70e4", - "sample4.recal.mosdepth.region.dist.txt:md5,17600d21ac453506c52249cf435ad8ea", - "sample4.recal.mosdepth.summary.txt:md5,7141030385af1f653718c9e0c9a5be80", - "sample4.recal.regions.bed.gz:md5,c680c5d75f0cea068e3f917f4cf9bf52", - "sample4.recal.regions.bed.gz.csi:md5,68b7a9a98053b1122bdca68a1e1c87dd", + "samtools-stats-dp.txt:md5,41d36c1a8413d565788a1a364b467606", + "samtools_alignment_plot.txt:md5,35f8fd2a557568b2237193f46afbab5c", + "sample1.recal.mosdepth.global.dist.txt:md5,d9a4dd6429560b2b647da346050766c5", + "sample1.recal.mosdepth.region.dist.txt:md5,1f3dab381958e08eb00f7c5e1135f677", + "sample1.recal.mosdepth.summary.txt:md5,d7676e7c1de851b0ee5185d21096123b", + "sample1.recal.regions.bed.gz:md5,6edeb8f7041a4403cb73651744b5bc82", + "sample1.recal.regions.bed.gz.csi:md5,5fc6f880df27ca754ab229f0ccad2aea", "multi_intervals.antitarget.bed:md5,d41d8cd98f00b204e9800998ecf8427e", "multi_intervals.target.bed:md5,f7474a0afbf5565c5675916606f2d9bd", "reference.cnn:md5,891454915f82d0eeda0be13d71e0d5d7", - "test.paired_end.recalibrated.sorted-scatter.png:md5,2a82254094015efde86e78f38c6487f0", + "test.paired_end.recalibrated.sorted-scatter.png:md5,e85e5dcdfb83af481813f7fabf05feb2", "test.paired_end.recalibrated.sorted.antitargetcoverage.cnn:md5,203caf8cef6935bb50b4138097955cb8", "test.paired_end.recalibrated.sorted.bintest.cns:md5,8d0301673b584a6a8d88bdaad87ba09d", "test.paired_end.recalibrated.sorted.call.cns:md5,9254686f5d1a2718cc2a20f28d0ef3d7", @@ -565,34 +580,19 @@ "test.paired_end.recalibrated.sorted.cns:md5,e25853dfbbb65f5294a45a2530cded76", "test.paired_end.recalibrated.sorted.genemetrics.tsv:md5,5ec3555520f502f00f551ae7900a3824", "test.paired_end.recalibrated.sorted.germline.call.cns:md5,5bba48aecc2282971b9d4c562bec4591", - "test.paired_end.recalibrated.sorted.targetcoverage.cnn:md5,4153756b30abc934f10717c023bd262f", - "multi_intervals.antitarget.bed:md5,d41d8cd98f00b204e9800998ecf8427e", - "multi_intervals.target.bed:md5,f9e727147a7cbca46c2b9b2de3ecae91", - "reference.cnn:md5,e0aefc1c8a40e6919dc9cfb686e51f7c", - "test.paired_end.recalibrated.sorted.antitargetcoverage.cnn:md5,203caf8cef6935bb50b4138097955cb8", - "test.paired_end.recalibrated.sorted.targetcoverage.cnn:md5,826087b08d380135a271e2774c94084c", - "test2.paired_end.recalibrated.sorted-scatter.png:md5,b0bec8dbcccad43b186521b8265f7684", - "test2.paired_end.recalibrated.sorted.antitargetcoverage.cnn:md5,203caf8cef6935bb50b4138097955cb8", - "test2.paired_end.recalibrated.sorted.bintest.cns:md5,b5ccf48e99562082026e94f8d8aa1133", - "test2.paired_end.recalibrated.sorted.call.cns:md5,8202ec610e834c58bb7199761fccd9e5", - "test2.paired_end.recalibrated.sorted.cnr:md5,47d799d37af7ca8022fcac0ec705a3b8", - "test2.paired_end.recalibrated.sorted.cns:md5,50352818fd705424a7ab770d7707c312", - "test2.paired_end.recalibrated.sorted.genemetrics.tsv:md5,5ec3555520f502f00f551ae7900a3824", - "test2.paired_end.recalibrated.sorted.somatic.call.cns:md5,1cb4febd5c88d306277f3c4c3117d68c", - "test2.paired_end.recalibrated.sorted.targetcoverage.cnn:md5,62c2d1f8765618c454bf4455c2298344" + "test.paired_end.recalibrated.sorted.targetcoverage.cnn:md5,4153756b30abc934f10717c023bd262f" ], "No BAM files", "No CRAM files", [ - "sample3.cnvcall.vcf:md5,6f8c517f62715c47674c79ffd1e9babb", - "sample4_vs_sample3.cnvcall.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + "sample1.cnvcall.vcf:md5,6f8c517f62715c47674c79ffd1e9babb" ] ], "meta": { "nf-test": "0.9.2", - "nextflow": "25.04.3" + "nextflow": "25.04.6" }, - "timestamp": "2025-06-16T20:21:14.228472159" + "timestamp": "2025-08-15T09:21:56.985571203" }, "-profile test --tools cnvkit --input recalibrated_tumoronly.csv": { "content": [ @@ -721,7 +721,7 @@ "sample2.recal.regions.bed.gz.csi:md5,68b7a9a98053b1122bdca68a1e1c87dd", "cnvkit.reference.antitarget-tmp.bed:md5,3d4d20f9f23b39970865d29ef239d20b", "cnvkit.reference.target-tmp.bed:md5,657b25dbda8516624efa8cb2cf3716ca", - "test2.paired_end.recalibrated.sorted-scatter.png:md5,d9a4a27a7a93eca23108b43dea09c140", + "test2.paired_end.recalibrated.sorted-scatter.png:md5,836711bd6d8a47b62bfb69c90e2f26a8", "test2.paired_end.recalibrated.sorted.antitargetcoverage.cnn:md5,067115082c4af4b64d58c0dc3a3642e4", "test2.paired_end.recalibrated.sorted.bintest.cns:md5,7a66b5f63acb05e6dfb0784c215851ec", "test2.paired_end.recalibrated.sorted.call.cns:md5,f7caeca04aba28b125ce26b511f42afb", @@ -739,9 +739,9 @@ ], "meta": { "nf-test": "0.9.2", - "nextflow": "25.04.3" + "nextflow": "25.04.6" }, - "timestamp": "2025-06-16T20:23:03.772807676" + "timestamp": "2025-08-15T09:24:44.579085014" }, "-profile test --tools cnvkit --input recalibrated_tumoronly.csv --no_intervals": { "content": [ @@ -994,7 +994,7 @@ "genome.bed:md5,9c6cc178da8c2c27364be9f25c9df96d", "genome.target.bed:md5,d6bb0e93de375af227a800a032f08f03", "reference.cnn:md5,3fa091a8b523751440fcd28dbf8a07ad", - "test.paired_end.recalibrated.sorted-scatter.png:md5,366fa8776337f7b1ec8dc7273d2a8069", + "test.paired_end.recalibrated.sorted-scatter.png:md5,6799f3f26e83687da76f9f21d3019f9d", "test.paired_end.recalibrated.sorted.antitargetcoverage.cnn:md5,203caf8cef6935bb50b4138097955cb8", "test.paired_end.recalibrated.sorted.bintest.cns:md5,0eee70a9c66e9fe98deb5ca66b7bced5", "test.paired_end.recalibrated.sorted.call.cns:md5,2613ce28533ce6b6a81a9225cc3ad498", @@ -1006,10 +1006,10 @@ "genome.antitarget.bed:md5,d41d8cd98f00b204e9800998ecf8427e", "genome.bed:md5,9c6cc178da8c2c27364be9f25c9df96d", "genome.target.bed:md5,ee8081becc36524d35889e3b5f70961b", - "reference.cnn:md5,8c53491ff76a2a06b7a977714db862bb", + "reference.cnn:md5,b43c5b91bf2da9efe4dc9631cbb46c44", "test.paired_end.recalibrated.sorted.antitargetcoverage.cnn:md5,203caf8cef6935bb50b4138097955cb8", "test.paired_end.recalibrated.sorted.targetcoverage.cnn:md5,0067cc3a0e479b23ab3bf056cead31b4", - "test2.paired_end.recalibrated.sorted-scatter.png:md5,ade63003456dca889b2b59af6941d417", + "test2.paired_end.recalibrated.sorted-scatter.png:md5,dc305d31e9057301827c452e605dd536", "test2.paired_end.recalibrated.sorted.antitargetcoverage.cnn:md5,203caf8cef6935bb50b4138097955cb8", "test2.paired_end.recalibrated.sorted.bintest.cns:md5,b6701cceb525c3087f4dad432d20100c", "test2.paired_end.recalibrated.sorted.call.cns:md5,2e0cc8813e274b25175b4346f4698fbb", @@ -1030,6 +1030,6 @@ "nf-test": "0.9.2", "nextflow": "25.04.6" }, - "timestamp": "2025-07-03T16:52:02.29498932" + "timestamp": "2025-08-15T09:27:53.824047762" } } \ No newline at end of file From 5fb62eb0e90f0772fbaf2514dfbff8d02c7c4f5e Mon Sep 17 00:00:00 2001 From: maxulysse Date: Fri, 15 Aug 2025 10:38:42 +0200 Subject: [PATCH 17/34] update gatk4spark/applybqsr --- modules.json | 2 +- modules/nf-core/gatk4spark/applybqsr/main.nf | 18 ++++++++---------- modules/nf-core/gatk4spark/applybqsr/meta.yml | 4 ++-- 3 files changed, 11 insertions(+), 13 deletions(-) diff --git a/modules.json b/modules.json index e327e5f10..9dc0e60cd 100644 --- a/modules.json +++ b/modules.json @@ -293,7 +293,7 @@ }, "gatk4spark/applybqsr": { "branch": "master", - "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", + "git_sha": "6e831d8a7e6519c239d209cfd1cad7f27511e1c5", "installed_by": ["modules"] }, "gatk4spark/baserecalibrator": { diff --git a/modules/nf-core/gatk4spark/applybqsr/main.nf b/modules/nf-core/gatk4spark/applybqsr/main.nf index da1776096..89ffee1b3 100644 --- a/modules/nf-core/gatk4spark/applybqsr/main.nf +++ b/modules/nf-core/gatk4spark/applybqsr/main.nf @@ -14,16 +14,16 @@ process GATK4SPARK_APPLYBQSR { path dict output: - tuple val(meta), path("${prefix}.bam"), emit: bam, optional: true - tuple val(meta), path("${prefix}.cram"), emit: cram, optional: true - path "versions.yml", emit: versions + tuple val(meta), path("*.bam"), emit: bam, optional: true + tuple val(meta), path("*.cram"), emit: cram, optional: true + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when script: def args = task.ext.args ?: '' - prefix = task.ext.prefix ?: "${meta.id}" + def prefix = task.ext.prefix ?: "${meta.id}.cram" def interval_command = intervals ? "--intervals ${intervals}" : "" def avail_mem = 3072 @@ -34,11 +34,10 @@ process GATK4SPARK_APPLYBQSR { avail_mem = (task.memory.mega * 0.8).intValue() } """ - gatk \\ - --java-options "-Xmx${avail_mem}M -XX:-UsePerfData" \\ + gatk --java-options "-Xmx${avail_mem}M -XX:-UsePerfData" \\ ApplyBQSRSpark \\ --input ${input} \\ - --output ${prefix}.${input.getExtension()} \\ + --output ${prefix} \\ --reference ${fasta} \\ --bqsr-recal-file ${bqsr_table} \\ ${interval_command} \\ @@ -53,10 +52,9 @@ process GATK4SPARK_APPLYBQSR { """ stub: - prefix = task.ext.prefix ?: "${meta.id}" + def prefix = task.ext.prefix ?: "${meta.id}.cram" """ - touch ${prefix}.bam - touch ${prefix}.cram + touch ${prefix} cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/gatk4spark/applybqsr/meta.yml b/modules/nf-core/gatk4spark/applybqsr/meta.yml index 93c0add91..fe8c41387 100644 --- a/modules/nf-core/gatk4spark/applybqsr/meta.yml +++ b/modules/nf-core/gatk4spark/applybqsr/meta.yml @@ -63,7 +63,7 @@ output: description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - - ${prefix}.bam: + - '*.bam': type: file description: BAM file pattern: "*.{bam}" @@ -73,7 +73,7 @@ output: description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - - ${prefix}.cram: + - '*.cram': type: file description: CRAM file pattern: "*.{cram}" From f41c2edfb59eec7e1157289bc76f55d9dd310470 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Fri, 15 Aug 2025 13:25:05 +0200 Subject: [PATCH 18/34] fix failure and snapshot --- .../bam_variant_calling_somatic_all/main.nf | 168 ++++++++---------- tests/variant_calling_lofreq.nf.test.snap | 12 ++ .../variant_calling_msisensorpro.nf.test.snap | 18 +- ...ling_sentieon_haplotypecaller.nf.test.snap | 3 + 4 files changed, 101 insertions(+), 100 deletions(-) diff --git a/subworkflows/local/bam_variant_calling_somatic_all/main.nf b/subworkflows/local/bam_variant_calling_somatic_all/main.nf index 6e27eab59..09e7b39e6 100644 --- a/subworkflows/local/bam_variant_calling_somatic_all/main.nf +++ b/subworkflows/local/bam_variant_calling_somatic_all/main.nf @@ -2,20 +2,20 @@ // PAIRED VARIANT CALLING // -include { BAM_VARIANT_CALLING_CNVKIT } from '../bam_variant_calling_cnvkit/main' -include { BAM_VARIANT_CALLING_FREEBAYES } from '../bam_variant_calling_freebayes/main' -include { BAM_VARIANT_CALLING_MPILEUP as MPILEUP_NORMAL } from '../bam_variant_calling_mpileup/main' -include { BAM_VARIANT_CALLING_MPILEUP as MPILEUP_TUMOR } from '../bam_variant_calling_mpileup/main' -include { BAM_VARIANT_CALLING_SOMATIC_ASCAT } from '../bam_variant_calling_somatic_ascat/main' -include { BAM_VARIANT_CALLING_SOMATIC_CONTROLFREEC } from '../bam_variant_calling_somatic_controlfreec/main' -include { BAM_VARIANT_CALLING_SOMATIC_MANTA } from '../bam_variant_calling_somatic_manta/main' -include { BAM_VARIANT_CALLING_SOMATIC_MUSE } from '../bam_variant_calling_somatic_muse/main' -include { BAM_VARIANT_CALLING_SOMATIC_MUTECT2 } from '../bam_variant_calling_somatic_mutect2/main' -include { BAM_VARIANT_CALLING_SOMATIC_STRELKA } from '../bam_variant_calling_somatic_strelka/main' -include { BAM_VARIANT_CALLING_SOMATIC_TIDDIT } from '../bam_variant_calling_somatic_tiddit/main' -include { BAM_VARIANT_CALLING_SOMATIC_TNSCOPE } from '../bam_variant_calling_somatic_tnscope/main' -include { BAM_VARIANT_CALLING_INDEXCOV } from '../bam_variant_calling_indexcov/main' -include { MSISENSORPRO_MSISOMATIC } from '../../../modules/nf-core/msisensorpro/msisomatic/main' +include { BAM_VARIANT_CALLING_CNVKIT } from '../bam_variant_calling_cnvkit' +include { BAM_VARIANT_CALLING_FREEBAYES } from '../bam_variant_calling_freebayes' +include { BAM_VARIANT_CALLING_MPILEUP as MPILEUP_NORMAL } from '../bam_variant_calling_mpileup' +include { BAM_VARIANT_CALLING_MPILEUP as MPILEUP_TUMOR } from '../bam_variant_calling_mpileup' +include { BAM_VARIANT_CALLING_SOMATIC_ASCAT } from '../bam_variant_calling_somatic_ascat' +include { BAM_VARIANT_CALLING_SOMATIC_CONTROLFREEC } from '../bam_variant_calling_somatic_controlfreec' +include { BAM_VARIANT_CALLING_SOMATIC_MANTA } from '../bam_variant_calling_somatic_manta' +include { BAM_VARIANT_CALLING_SOMATIC_MUSE } from '../bam_variant_calling_somatic_muse' +include { BAM_VARIANT_CALLING_SOMATIC_MUTECT2 } from '../bam_variant_calling_somatic_mutect2' +include { BAM_VARIANT_CALLING_SOMATIC_STRELKA } from '../bam_variant_calling_somatic_strelka' +include { BAM_VARIANT_CALLING_SOMATIC_TIDDIT } from '../bam_variant_calling_somatic_tiddit' +include { BAM_VARIANT_CALLING_SOMATIC_TNSCOPE } from '../bam_variant_calling_somatic_tnscope' +include { BAM_VARIANT_CALLING_INDEXCOV } from '../bam_variant_calling_indexcov' +include { MSISENSORPRO_MSISOMATIC } from '../../../modules/nf-core/msisensorpro/msisomatic' workflow BAM_VARIANT_CALLING_SOMATIC_ALL { take: @@ -47,28 +47,28 @@ workflow BAM_VARIANT_CALLING_SOMATIC_ALL { wes // boolean: [mandatory] [default: false] whether targeted data is processed main: - versions = Channel.empty() + versions = Channel.empty() //TODO: Temporary until the if's can be removed and printing to terminal is prevented with "when" in the modules.config - vcf_freebayes = Channel.empty() - vcf_manta = Channel.empty() - out_msisensorpro = Channel.empty() - vcf_muse = Channel.empty() - vcf_mutect2 = Channel.empty() - vcf_strelka = Channel.empty() - vcf_tnscope = Channel.empty() - vcf_tiddit = Channel.empty() - out_indexcov = Channel.empty() + vcf_freebayes = Channel.empty() + vcf_manta = Channel.empty() + out_msisensorpro = Channel.empty() + vcf_muse = Channel.empty() + vcf_mutect2 = Channel.empty() + vcf_strelka = Channel.empty() + vcf_tnscope = Channel.empty() + vcf_tiddit = Channel.empty() + out_indexcov = Channel.empty() if (tools.split(',').contains('ascat')) { BAM_VARIANT_CALLING_SOMATIC_ASCAT( cram, allele_files, loci_files, - (wes ? intervals_bed_combined : []), // No intervals needed if not WES - fasta.map{ meta, fasta -> [ fasta ] }, + (wes ? intervals_bed_combined : []), + fasta.map { _meta, fasta_ -> [fasta_] }, gc_file, - rt_file + rt_file, ) versions = versions.mix(BAM_VARIANT_CALLING_SOMATIC_ASCAT.out.versions) @@ -77,41 +77,41 @@ workflow BAM_VARIANT_CALLING_SOMATIC_ALL { // CONTROLFREEC if (tools.split(',').contains('controlfreec')) { // Remap channels to match module/subworkflow - cram_normal = cram.map{ meta, normal_cram, normal_crai, tumor_cram, tumor_crai -> [ meta, normal_cram, normal_crai ] } - cram_tumor = cram.map{ meta, normal_cram, normal_crai, tumor_cram, tumor_crai -> [ meta, tumor_cram, tumor_crai ] } + cram_normal = cram.map { meta, normal_cram, normal_crai, _tumor_cram, _tumor_crai -> [meta, normal_cram, normal_crai] } + cram_tumor = cram.map { meta, _normal_cram, _normal_crai, tumor_cram, tumor_crai -> [meta, tumor_cram, tumor_crai] } MPILEUP_NORMAL( cram_normal, dict, fasta, - intervals + intervals, ) MPILEUP_TUMOR( cram_tumor, dict, fasta, - intervals + intervals, ) mpileup_normal = MPILEUP_NORMAL.out.mpileup mpileup_tumor = MPILEUP_TUMOR.out.mpileup - // Remap channel to match module/subworkflow - mpileup_pair = mpileup_normal.cross(mpileup_tumor).map{ normal, tumor -> [ normal[0], normal[1], tumor[1], [], [], [], [] ] } + // Remap channel to match module/subworkflow + mpileup_pair = mpileup_normal.cross(mpileup_tumor).map { normal, tumor -> [normal[0], normal[1], tumor[1], [], [], [], []] } - length_file = cf_chrom_len ?: fasta_fai.map{ meta, fasta_fai -> [ fasta_fai ] } + length_file = cf_chrom_len ?: fasta_fai.map { _meta, fasta_fai_ -> [fasta_fai_] } intervals_controlfreec = wes ? intervals_bed_combined : [] BAM_VARIANT_CALLING_SOMATIC_CONTROLFREEC( mpileup_pair, - fasta.map{ meta, fasta -> [ fasta ] }, + fasta.map { _meta, fasta_ -> [fasta_] }, length_file, dbsnp, dbsnp_tbi, chr_files, mappability, - intervals_controlfreec + intervals_controlfreec, ) versions = versions.mix(MPILEUP_NORMAL.out.versions) @@ -122,12 +122,11 @@ workflow BAM_VARIANT_CALLING_SOMATIC_ALL { // CNVKIT if (tools.split(',').contains('cnvkit')) { BAM_VARIANT_CALLING_CNVKIT( - // Remap channel to match module/subworkflow - cram.map{ meta, normal_cram, normal_crai, tumor_cram, tumor_crai -> [ meta, tumor_cram, normal_cram ] }, + cram.map { meta, normal_cram, _normal_crai, tumor_cram, _tumor_crai -> [meta, tumor_cram, normal_cram] }, fasta, fasta_fai, - intervals_bed_combined.map{it -> it ? [[id:it[0].baseName], it]: [[id:'no_intervals'], []]}, - [[id:"null"], []] + intervals_bed_combined.map { it -> it ? [[id: it[0].baseName], it] : [[id: 'no_intervals'], []] }, + [[id: "null"], []], ) versions = versions.mix(BAM_VARIANT_CALLING_CNVKIT.out.versions) @@ -140,11 +139,11 @@ workflow BAM_VARIANT_CALLING_SOMATIC_ALL { dict, fasta, fasta_fai, - intervals + intervals, ) vcf_freebayes = BAM_VARIANT_CALLING_FREEBAYES.out.vcf - versions = versions.mix(BAM_VARIANT_CALLING_FREEBAYES.out.versions) + versions = versions.mix(BAM_VARIANT_CALLING_FREEBAYES.out.versions) } // MANTA @@ -153,7 +152,7 @@ workflow BAM_VARIANT_CALLING_SOMATIC_ALL { cram, fasta, fasta_fai, - intervals_bed_gz_tbi_combined + intervals_bed_gz_tbi_combined, ) vcf_manta = BAM_VARIANT_CALLING_SOMATIC_MANTA.out.vcf @@ -162,11 +161,11 @@ workflow BAM_VARIANT_CALLING_SOMATIC_ALL { // INDEXCOV, for WGS only - if (params.wes==false && tools.split(',').contains('indexcov')) { - BAM_VARIANT_CALLING_INDEXCOV ( + if (params.wes == false && tools.split(',').contains('indexcov')) { + BAM_VARIANT_CALLING_INDEXCOV( cram, fasta, - fasta_fai + fasta_fai, ) out_indexcov = BAM_VARIANT_CALLING_INDEXCOV.out.out_indexcov @@ -177,17 +176,16 @@ workflow BAM_VARIANT_CALLING_SOMATIC_ALL { // STRELKA if (tools.split(',').contains('strelka')) { // Remap channel to match module/subworkflow - cram_strelka = (tools.split(',').contains('manta')) ? - cram.join(BAM_VARIANT_CALLING_SOMATIC_MANTA.out.candidate_small_indels_vcf, failOnDuplicate: true, failOnMismatch: true).join(BAM_VARIANT_CALLING_SOMATIC_MANTA.out.candidate_small_indels_vcf_tbi, failOnDuplicate: true, failOnMismatch: true) : - cram.map{ meta, normal_cram, normal_crai, tumor_cram, tumor_crai -> [ meta, normal_cram, normal_crai, tumor_cram, tumor_crai, [], [] ] } + cram_strelka = tools.split(',').contains('manta') + ? cram.join(BAM_VARIANT_CALLING_SOMATIC_MANTA.out.candidate_small_indels_vcf, failOnDuplicate: true, failOnMismatch: true).join(BAM_VARIANT_CALLING_SOMATIC_MANTA.out.candidate_small_indels_vcf_tbi, failOnDuplicate: true, failOnMismatch: true) + : cram.map { meta, normal_cram, normal_crai, tumor_cram, tumor_crai -> [meta, normal_cram, normal_crai, tumor_cram, tumor_crai, [], []] } BAM_VARIANT_CALLING_SOMATIC_STRELKA( cram_strelka, - // Remap channel to match module/subworkflow dict, - fasta.map{ meta, fasta -> [ fasta ] }, - fasta_fai.map{ meta, fasta_fai -> [ fasta_fai ] }, - intervals_bed_gz_tbi + fasta.map { _meta, fasta_ -> [fasta_] }, + fasta_fai.map { _meta, fasta_fai_ -> [fasta_fai_] }, + intervals_bed_gz_tbi, ) vcf_strelka = Channel.empty().mix(BAM_VARIANT_CALLING_SOMATIC_STRELKA.out.vcf) @@ -196,7 +194,7 @@ workflow BAM_VARIANT_CALLING_SOMATIC_ALL { // MSISENSOR if (tools.split(',').contains('msisensorpro')) { - MSISENSORPRO_MSISOMATIC(cram.combine(intervals_bed_combined), fasta.map{ meta, fasta -> [ fasta ] }, msisensorpro_scan) + MSISENSORPRO_MSISOMATIC(cram.combine(intervals_bed_combined), fasta, msisensorpro_scan) versions = versions.mix(MSISENSORPRO_MSISOMATIC.out.versions) out_msisensorpro = out_msisensorpro.mix(MSISENSORPRO_MSISOMATIC.out.output_report) @@ -204,32 +202,28 @@ workflow BAM_VARIANT_CALLING_SOMATIC_ALL { // MuSE if (tools.split(',').contains('muse')) { - cram_normal = cram.map{ meta, normal_cram, normal_crai, tumor_cram, tumor_crai -> [ meta, normal_cram, normal_crai ] } - cram_tumor = cram.map{ meta, normal_cram, normal_crai, tumor_cram, tumor_crai -> [ meta, tumor_cram, tumor_crai ] } + cram_normal = cram.map { meta, normal_cram, normal_crai, _tumor_cram, _tumor_crai -> [meta, normal_cram, normal_crai] } + cram_tumor = cram.map { meta, _normal_cram, _normal_crai, tumor_cram, tumor_crai -> [meta, tumor_cram, tumor_crai] } BAM_VARIANT_CALLING_SOMATIC_MUSE( cram_normal, cram_tumor, fasta, fasta_fai, dbsnp, - dbsnp_tbi + dbsnp_tbi, ) - vcf_muse = BAM_VARIANT_CALLING_SOMATIC_MUSE.out.vcf - versions = versions.mix(BAM_VARIANT_CALLING_SOMATIC_MUSE.out.versions) + vcf_muse = BAM_VARIANT_CALLING_SOMATIC_MUSE.out.vcf + versions = versions.mix(BAM_VARIANT_CALLING_SOMATIC_MUSE.out.versions) } // MUTECT2 if (tools.split(',').contains('mutect2')) { BAM_VARIANT_CALLING_SOMATIC_MUTECT2( - // Remap channel to match module/subworkflow - // Adjust meta.map to simplify joining channels - // joint_mutect2 mode needs different meta.map than regular mode - cram.map{ meta, normal_cram, normal_crai, tumor_cram, tumor_crai -> - joint_mutect2 ? - //we need to keep all fields and then remove on a per-tool-basis to ensure proper joining at the filtering step - [ meta + [ id:meta.patient ], [ normal_cram, tumor_cram ], [ normal_crai, tumor_crai ] ] : - [ meta, [ normal_cram, tumor_cram ], [ normal_crai, tumor_crai ] ] + cram.map { meta, normal_cram, normal_crai, tumor_cram, tumor_crai -> + joint_mutect2 + ? [meta + [id: meta.patient], [normal_cram, tumor_cram], [normal_crai, tumor_crai]] + : [meta, [normal_cram, tumor_cram], [normal_crai, tumor_crai]] }, fasta, fasta_fai, @@ -239,7 +233,7 @@ workflow BAM_VARIANT_CALLING_SOMATIC_ALL { panel_of_normals, panel_of_normals_tbi, intervals, - joint_mutect2 + joint_mutect2, ) vcf_mutect2 = BAM_VARIANT_CALLING_SOMATIC_MUTECT2.out.vcf_filtered @@ -250,10 +244,8 @@ workflow BAM_VARIANT_CALLING_SOMATIC_ALL { if (tools.split(',').contains('sentieon_tnscope')) { BAM_VARIANT_CALLING_SOMATIC_TNSCOPE( - // Remap channel to match module/subworkflow - // Adjust meta.map to simplify joining channels - cram.map{ meta, normal_cram, normal_crai, tumor_cram, tumor_crai -> - [ meta, [ normal_cram, tumor_cram ], [ normal_crai, tumor_crai ] ] + cram.map { meta, normal_cram, normal_crai, tumor_cram, tumor_crai -> + [meta, [normal_cram, tumor_cram], [normal_crai, tumor_crai]] }, fasta, fasta_fai, @@ -262,37 +254,36 @@ workflow BAM_VARIANT_CALLING_SOMATIC_ALL { germline_resource_tbi, panel_of_normals, panel_of_normals_tbi, - intervals + intervals, ) vcf_tnscope = BAM_VARIANT_CALLING_SOMATIC_TNSCOPE.out.vcf versions = versions.mix(BAM_VARIANT_CALLING_SOMATIC_TNSCOPE.out.versions) - } // TIDDIT if (tools.split(',').contains('tiddit')) { BAM_VARIANT_CALLING_SOMATIC_TIDDIT( - // Remap channel to match module/subworkflow - cram.map{ meta, normal_cram, normal_crai, tumor_cram, tumor_crai -> [ meta, normal_cram, normal_crai ] }, - // Remap channel to match module/subworkflow - cram.map{ meta, normal_cram, normal_crai, tumor_cram, tumor_crai -> [ meta, tumor_cram, tumor_crai ] }, + cram.map { meta, normal_cram, normal_crai, _tumor_cram, _tumor_crai -> [meta, normal_cram, normal_crai] }, + cram.map { meta, _normal_cram, _normal_crai, tumor_cram, tumor_crai -> [meta, tumor_cram, tumor_crai] }, fasta, - bwa) + bwa, + ) vcf_tiddit = BAM_VARIANT_CALLING_SOMATIC_TIDDIT.out.vcf versions = versions.mix(BAM_VARIANT_CALLING_SOMATIC_TIDDIT.out.versions) } - vcf_all = Channel.empty().mix( - vcf_freebayes, - vcf_manta, - vcf_muse, - vcf_mutect2, - vcf_strelka, - vcf_tiddit, - vcf_tnscope - ) + vcf_all = Channel.empty() + .mix( + vcf_freebayes, + vcf_manta, + vcf_muse, + vcf_mutect2, + vcf_strelka, + vcf_tiddit, + vcf_tnscope, + ) emit: out_indexcov @@ -305,6 +296,5 @@ workflow BAM_VARIANT_CALLING_SOMATIC_ALL { vcf_strelka vcf_tiddit vcf_tnscope - versions } diff --git a/tests/variant_calling_lofreq.nf.test.snap b/tests/variant_calling_lofreq.nf.test.snap index e891a0a8a..b5cfac7c8 100644 --- a/tests/variant_calling_lofreq.nf.test.snap +++ b/tests/variant_calling_lofreq.nf.test.snap @@ -26,6 +26,12 @@ }, "TABIX_BGZIPTABIX_INTERVAL_SPLIT": { "tabix": 1.21 + }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ @@ -193,6 +199,12 @@ }, "TABIX_BGZIPTABIX_INTERVAL_COMBINED": { "tabix": 1.21 + }, + "VCFTOOLS_SUMMARY": { + "vcftools": "0.1.16" + }, + "VCFTOOLS_TSTV_QUAL": { + "vcftools": "0.1.16" } }, [ diff --git a/tests/variant_calling_msisensorpro.nf.test.snap b/tests/variant_calling_msisensorpro.nf.test.snap index 0208dff6d..90d4ed03d 100644 --- a/tests/variant_calling_msisensorpro.nf.test.snap +++ b/tests/variant_calling_msisensorpro.nf.test.snap @@ -53,10 +53,10 @@ "mosdepth": "0.3.10" }, "MSISENSORPRO_MSISOMATIC": { - "msisensor-pro": "1.2.0" + "msisensor-pro": "1.3.0" }, "MSISENSORPRO_SCAN": { - "msisensor-pro": "1.2.0" + "msisensor-pro": "1.3.0" }, "SAMTOOLS_STATS": { "samtools": 1.21 @@ -143,9 +143,7 @@ "variant_calling/msisensorpro", "variant_calling/msisensorpro/sample4_vs_sample3", "variant_calling/msisensorpro/sample4_vs_sample3/sample4_vs_sample3", - "variant_calling/msisensorpro/sample4_vs_sample3/sample4_vs_sample3_dis", - "variant_calling/msisensorpro/sample4_vs_sample3/sample4_vs_sample3_germline", - "variant_calling/msisensorpro/sample4_vs_sample3/sample4_vs_sample3_somatic" + "variant_calling/msisensorpro/sample4_vs_sample3/sample4_vs_sample3_dis" ], [ "mosdepth-coverage-per-contig-single.txt:md5,4ee05f71086179b42a01cd2fb450346f", @@ -168,10 +166,8 @@ "sample4.recal.per-base.bed.gz.csi:md5,cfb07b0ba46e8468b4342edb243536f3", "sample4.recal.regions.bed.gz:md5,b7561bc56a955f7db0f11e67e2ec0386", "sample4.recal.regions.bed.gz.csi:md5,393c2749068304d8545b501b9d4658e4", - "sample4_vs_sample3:md5,db7f2cc99ea79f79b0ba011c4bcbb43d", - "sample4_vs_sample3_dis:md5,e2fd47a3359bb562f604a6f0a126e107", - "sample4_vs_sample3_germline:md5,ba585b355c08877b8bca4901f49d9311", - "sample4_vs_sample3_somatic:md5,836e617ddded07ec1e39089fd595c3d8" + "sample4_vs_sample3:md5,efc7a09642d444d7475d976c7c8110f4", + "sample4_vs_sample3_dis:md5,780b282473e51808c5ae32b50b4a6406" ], "No BAM files", "No CRAM files", @@ -179,9 +175,9 @@ ], "meta": { "nf-test": "0.9.2", - "nextflow": "25.04.3" + "nextflow": "25.04.6" }, - "timestamp": "2025-06-16T13:35:44.903853389" + "timestamp": "2025-08-15T13:23:51.133965534" }, "-profile test --tools msisensorpro somatic --build_only_index --input false": { "content": [ diff --git a/tests/variant_calling_sentieon_haplotypecaller.nf.test.snap b/tests/variant_calling_sentieon_haplotypecaller.nf.test.snap index 041d3ff47..4bc88f9bd 100644 --- a/tests/variant_calling_sentieon_haplotypecaller.nf.test.snap +++ b/tests/variant_calling_sentieon_haplotypecaller.nf.test.snap @@ -27,6 +27,9 @@ "SENTIEON_APPLYVARCAL_INDEL": { "sentieon": 202503 }, + "SENTIEON_APPLYVARCAL_SNP": { + "sentieon": 202503 + }, "SENTIEON_GVCFTYPER": { "sentieon": 202503 }, From d27972dd75c5c9c33b04be9c667ec6699f33b8e6 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Fri, 15 Aug 2025 13:35:26 +0200 Subject: [PATCH 19/34] update deepvariant --- .../variant_calling_deepvariant.nf.test.snap | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/tests/variant_calling_deepvariant.nf.test.snap b/tests/variant_calling_deepvariant.nf.test.snap index 07e747653..598a2eff9 100644 --- a/tests/variant_calling_deepvariant.nf.test.snap +++ b/tests/variant_calling_deepvariant.nf.test.snap @@ -10,7 +10,7 @@ "gawk": "5.1.0" }, "DEEPVARIANT_RUNDEEPVARIANT": { - "deepvariant": "1.8.0" + "deepvariant": "1.9.0" }, "GATK4_INTERVALLISTTOBED": { "gatk4": "4.6.1.0" @@ -159,7 +159,7 @@ "multiqc_citations.txt:md5,d40980f61eb64026d58102841b7f3860", "samtools-stats-dp.txt:md5,06abce459a3e3192252b6196ae3b189e", "samtools_alignment_plot.txt:md5,3622ecb71829cc1c581157e403048fd1", - "test.deepvariant.bcftools_stats.txt:md5,942c7931ed08d691a32859dff091c22f", + "test.deepvariant.bcftools_stats.txt:md5,a19ff85c0bc9796ace876f3a9c34c6ce", "test.recal.mosdepth.global.dist.txt:md5,bdb8f185c35dd1eec7ce2f69bce57972", "test.recal.mosdepth.region.dist.txt:md5,f1f1ad86fc280bced1888a5d7d25a3f2", "test.recal.mosdepth.summary.txt:md5,32ea70ef1b99def3dc900b4afd513a40", @@ -171,15 +171,15 @@ "No BAM files", "No CRAM files", [ - "test.deepvariant.g.vcf.gz:md5,a51327a75372557eece796de33dc3318", - "test.deepvariant.vcf.gz:md5,e4a7b726e2f3db8ac15d08dd7e564519" + "test.deepvariant.g.vcf.gz:md5,706cb23dc04a7e1055f3e5739666615", + "test.deepvariant.vcf.gz:md5,dc50f0a5b27f3ade02c745e69e69ad29" ] ], "meta": { "nf-test": "0.9.2", "nextflow": "25.04.6" }, - "timestamp": "2025-07-11T14:21:37.715139375" + "timestamp": "2025-08-15T13:33:55.373929003" }, "-profile test --tools deepvariant --input tests/csv/3.0/mapped_single_cram.csv -stub": { "content": [ @@ -483,7 +483,7 @@ "bcftools": 1.21 }, "DEEPVARIANT_RUNDEEPVARIANT": { - "deepvariant": "1.8.0" + "deepvariant": "1.9.0" }, "MOSDEPTH": { "mosdepth": "0.3.10" @@ -629,7 +629,7 @@ "multiqc_citations.txt:md5,d40980f61eb64026d58102841b7f3860", "samtools-stats-dp.txt:md5,06abce459a3e3192252b6196ae3b189e", "samtools_alignment_plot.txt:md5,3622ecb71829cc1c581157e403048fd1", - "test.deepvariant.bcftools_stats.txt:md5,942c7931ed08d691a32859dff091c22f", + "test.deepvariant.bcftools_stats.txt:md5,a19ff85c0bc9796ace876f3a9c34c6ce", "test.recal.mosdepth.global.dist.txt:md5,bdb8f185c35dd1eec7ce2f69bce57972", "test.recal.mosdepth.region.dist.txt:md5,f1f1ad86fc280bced1888a5d7d25a3f2", "test.recal.mosdepth.summary.txt:md5,32ea70ef1b99def3dc900b4afd513a40", @@ -641,14 +641,14 @@ "No BAM files", "No CRAM files", [ - "test.deepvariant.g.vcf.gz:md5,a51327a75372557eece796de33dc3318", - "test.deepvariant.vcf.gz:md5,e4a7b726e2f3db8ac15d08dd7e564519" + "test.deepvariant.g.vcf.gz:md5,706cb23dc04a7e1055f3e5739666615", + "test.deepvariant.vcf.gz:md5,dc50f0a5b27f3ade02c745e69e69ad29" ] ], "meta": { "nf-test": "0.9.2", "nextflow": "25.04.6" }, - "timestamp": "2025-07-11T14:23:00.812174813" + "timestamp": "2025-08-15T13:35:04.879965529" } } \ No newline at end of file From 81a9a2c5b0aba3eda76872fa129684d094771194 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Mon, 18 Aug 2025 10:36:54 +0200 Subject: [PATCH 20/34] update more modules --- modules.json | 6 ++-- .../deepvariant/rundeepvariant/main.nf | 10 +++---- .../deepvariant/rundeepvariant/meta.yml | 12 ++++---- modules/nf-core/gatk4/mergevcfs/main.nf | 29 ++++++++++--------- modules/nf-core/gatk4spark/applybqsr/meta.yml | 4 +-- 5 files changed, 31 insertions(+), 30 deletions(-) diff --git a/modules.json b/modules.json index 9dc0e60cd..7eaf37e70 100644 --- a/modules.json +++ b/modules.json @@ -128,7 +128,7 @@ }, "deepvariant/rundeepvariant": { "branch": "master", - "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", + "git_sha": "dd78204eb24332ec3cdd512fa9a83898f9728842", "installed_by": ["modules"] }, "dragmap/align": { @@ -278,7 +278,7 @@ }, "gatk4/mergevcfs": { "branch": "master", - "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", + "git_sha": "e25f4fa1cd5a2616de54ab42c3c39178947520b8", "installed_by": ["modules"] }, "gatk4/mutect2": { @@ -293,7 +293,7 @@ }, "gatk4spark/applybqsr": { "branch": "master", - "git_sha": "6e831d8a7e6519c239d209cfd1cad7f27511e1c5", + "git_sha": "e25f4fa1cd5a2616de54ab42c3c39178947520b8", "installed_by": ["modules"] }, "gatk4spark/baserecalibrator": { diff --git a/modules/nf-core/deepvariant/rundeepvariant/main.nf b/modules/nf-core/deepvariant/rundeepvariant/main.nf index 5d99fc337..33da4675e 100644 --- a/modules/nf-core/deepvariant/rundeepvariant/main.nf +++ b/modules/nf-core/deepvariant/rundeepvariant/main.nf @@ -16,11 +16,11 @@ process DEEPVARIANT_RUNDEEPVARIANT { tuple val(meta5), path(par_bed) output: - tuple val(meta), path("${prefix}.vcf.gz") , emit: vcf - tuple val(meta), path("${prefix}.vcf.gz.tbi") , emit: vcf_tbi - tuple val(meta), path("${prefix}.g.vcf.gz") , emit: gvcf - tuple val(meta), path("${prefix}.g.vcf.gz.tbi"), emit: gvcf_tbi - path "versions.yml" , emit: versions + tuple val(meta), path("${prefix}.vcf.gz") , emit: vcf + tuple val(meta), path("${prefix}.vcf.gz.{tbi,csi}") , emit: vcf_index + tuple val(meta), path("${prefix}.g.vcf.gz") , emit: gvcf + tuple val(meta), path("${prefix}.g.vcf.gz.{tbi,csi}") , emit: gvcf_index + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when diff --git a/modules/nf-core/deepvariant/rundeepvariant/meta.yml b/modules/nf-core/deepvariant/rundeepvariant/meta.yml index 517294b08..2c3ba0ad4 100644 --- a/modules/nf-core/deepvariant/rundeepvariant/meta.yml +++ b/modules/nf-core/deepvariant/rundeepvariant/meta.yml @@ -88,16 +88,16 @@ output: pattern: "*.vcf.gz" ontologies: - edam: http://edamontology.org/format_3989 # GZIP format - vcf_tbi: + vcf_index: - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - - ${prefix}.vcf.gz.tbi: + - ${prefix}.vcf.gz.{tbi,csi}: type: file description: Tabix index file of compressed VCF - pattern: "*.vcf.gz.tbi" + pattern: "*.vcf.gz.{tbi,csi}" ontologies: [] gvcf: - - meta: @@ -111,16 +111,16 @@ output: pattern: "*.g.vcf.gz" ontologies: - edam: http://edamontology.org/format_3989 # GZIP format - gvcf_tbi: + gvcf_index: - - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - - ${prefix}.g.vcf.gz.tbi: + - ${prefix}.g.vcf.gz.{tbi,csi}: type: file description: Tabix index file of compressed GVCF - pattern: "*.g.vcf.gz.tbi" + pattern: "*.g.vcf.gz.{tbi,csi}" ontologies: [] versions: - versions.yml: diff --git a/modules/nf-core/gatk4/mergevcfs/main.nf b/modules/nf-core/gatk4/mergevcfs/main.nf index 1752f48a6..972cb0085 100644 --- a/modules/nf-core/gatk4/mergevcfs/main.nf +++ b/modules/nf-core/gatk4/mergevcfs/main.nf @@ -1,11 +1,11 @@ process GATK4_MERGEVCFS { - tag "$meta.id" + tag "${meta.id}" label 'process_low' 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/b2/b28daf5d9bb2f0d129dcad1b7410e0dd8a9b087aaf3ec7ced929b1f57624ad98/data': - 'community.wave.seqera.io/library/gatk4_gcnvkernel:e48d414933d188cd' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/b2/b28daf5d9bb2f0d129dcad1b7410e0dd8a9b087aaf3ec7ced929b1f57624ad98/data' + : 'community.wave.seqera.io/library/gatk4_gcnvkernel:e48d414933d188cd'}" input: tuple val(meta), path(vcf) @@ -13,8 +13,8 @@ process GATK4_MERGEVCFS { output: tuple val(meta), path('*.vcf.gz'), emit: vcf - tuple val(meta), path("*.tbi") , emit: tbi - path "versions.yml" , emit: versions + tuple val(meta), path("*.tbi"), emit: tbi + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when @@ -22,23 +22,24 @@ process GATK4_MERGEVCFS { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def input_list = vcf.collect{ "--INPUT $it"}.join(' ') - def reference_command = dict ? "--SEQUENCE_DICTIONARY $dict" : "" + def input_list = vcf.collect { "--INPUT ${it}" }.join(' ') + def reference_command = dict ? "--SEQUENCE_DICTIONARY ${dict}" : "" def avail_mem = 3072 if (!task.memory) { - log.info '[GATK MergeVcfs] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.' - } else { - avail_mem = (task.memory.mega*0.8).intValue() + log.info('[GATK MergeVcfs] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.') + } + else { + avail_mem = (task.memory.mega * 0.8).intValue() } """ gatk --java-options "-Xmx${avail_mem}M -XX:-UsePerfData" \\ MergeVcfs \\ - $input_list \\ + ${input_list} \\ --OUTPUT ${prefix}.vcf.gz \\ - $reference_command \\ + ${reference_command} \\ --TMP_DIR . \\ - $args + ${args} cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/gatk4spark/applybqsr/meta.yml b/modules/nf-core/gatk4spark/applybqsr/meta.yml index fe8c41387..702c5f916 100644 --- a/modules/nf-core/gatk4spark/applybqsr/meta.yml +++ b/modules/nf-core/gatk4spark/applybqsr/meta.yml @@ -63,7 +63,7 @@ output: description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - - '*.bam': + - "*.bam": type: file description: BAM file pattern: "*.{bam}" @@ -73,7 +73,7 @@ output: description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - - '*.cram': + - "*.cram": type: file description: CRAM file pattern: "*.{cram}" From 0454fa13a0b29ed009537710bb718b9604e616e4 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Mon, 18 Aug 2025 11:47:41 +0200 Subject: [PATCH 21/34] update snapshots --- tests/start_from_recalibration.nf.test.snap | 80 +++++++++++++++++++-- 1 file changed, 74 insertions(+), 6 deletions(-) diff --git a/tests/start_from_recalibration.nf.test.snap b/tests/start_from_recalibration.nf.test.snap index da09c2abe..269eb131e 100644 --- a/tests/start_from_recalibration.nf.test.snap +++ b/tests/start_from_recalibration.nf.test.snap @@ -1,7 +1,7 @@ { "-profile test --input tests/csv/3.0/mapped_single_bam.csv --step recalibrate --tools null": { "content": [ - 6, + 9, { "CREATE_INTERVALS_BED": { "gawk": "5.1.0" @@ -12,6 +12,15 @@ "GATK4_INTERVALLISTTOBED": { "gatk4": "4.6.1.0" }, + "INDEX_CRAM": { + "samtools": 1.21 + }, + "MOSDEPTH": { + "mosdepth": "0.3.10" + }, + "SAMTOOLS_STATS": { + "samtools": 1.21 + }, "TABIX_BGZIPTABIX_INTERVAL_COMBINED": { "tabix": 1.21 }, @@ -21,33 +30,92 @@ }, [ "csv", + "csv/recalibrated.csv", "multiqc", "multiqc/multiqc_data", "multiqc/multiqc_data/BETA-multiqc.parquet", "multiqc/multiqc_data/llms-full.txt", + "multiqc/multiqc_data/mosdepth-coverage-per-contig-single.txt", + "multiqc/multiqc_data/mosdepth-cumcoverage-dist-id.txt", + "multiqc/multiqc_data/mosdepth_cov_dist.txt", + "multiqc/multiqc_data/mosdepth_cumcov_dist.txt", + "multiqc/multiqc_data/mosdepth_perchrom.txt", "multiqc/multiqc_data/multiqc.log", "multiqc/multiqc_data/multiqc_citations.txt", "multiqc/multiqc_data/multiqc_data.json", + "multiqc/multiqc_data/multiqc_general_stats.txt", + "multiqc/multiqc_data/multiqc_samtools_stats.txt", "multiqc/multiqc_data/multiqc_software_versions.txt", "multiqc/multiqc_data/multiqc_sources.txt", + "multiqc/multiqc_data/samtools-stats-dp.txt", + "multiqc/multiqc_data/samtools_alignment_plot.txt", + "multiqc/multiqc_plots", + "multiqc/multiqc_plots/pdf", + "multiqc/multiqc_plots/pdf/mosdepth-coverage-per-contig-single-cnt.pdf", + "multiqc/multiqc_plots/pdf/mosdepth-coverage-per-contig-single-pct.pdf", + "multiqc/multiqc_plots/pdf/mosdepth-cumcoverage-dist-id.pdf", + "multiqc/multiqc_plots/pdf/samtools-stats-dp.pdf", + "multiqc/multiqc_plots/pdf/samtools_alignment_plot-cnt.pdf", + "multiqc/multiqc_plots/pdf/samtools_alignment_plot-pct.pdf", + "multiqc/multiqc_plots/png", + "multiqc/multiqc_plots/png/mosdepth-coverage-per-contig-single-cnt.png", + "multiqc/multiqc_plots/png/mosdepth-coverage-per-contig-single-pct.png", + "multiqc/multiqc_plots/png/mosdepth-cumcoverage-dist-id.png", + "multiqc/multiqc_plots/png/samtools-stats-dp.png", + "multiqc/multiqc_plots/png/samtools_alignment_plot-cnt.png", + "multiqc/multiqc_plots/png/samtools_alignment_plot-pct.png", + "multiqc/multiqc_plots/svg", + "multiqc/multiqc_plots/svg/mosdepth-coverage-per-contig-single-cnt.svg", + "multiqc/multiqc_plots/svg/mosdepth-coverage-per-contig-single-pct.svg", + "multiqc/multiqc_plots/svg/mosdepth-cumcoverage-dist-id.svg", + "multiqc/multiqc_plots/svg/samtools-stats-dp.svg", + "multiqc/multiqc_plots/svg/samtools_alignment_plot-cnt.svg", + "multiqc/multiqc_plots/svg/samtools_alignment_plot-pct.svg", "multiqc/multiqc_report.html", "pipeline_info", "pipeline_info/nf_core_sarek_software_mqc_versions.yml", "preprocessing", - "reference" + "preprocessing/recalibrated", + "preprocessing/recalibrated/test", + "preprocessing/recalibrated/test/test.recal.cram", + "preprocessing/recalibrated/test/test.recal.cram.crai", + "reference", + "reports", + "reports/mosdepth", + "reports/mosdepth/test", + "reports/mosdepth/test/test.recal.mosdepth.global.dist.txt", + "reports/mosdepth/test/test.recal.mosdepth.region.dist.txt", + "reports/mosdepth/test/test.recal.mosdepth.summary.txt", + "reports/mosdepth/test/test.recal.regions.bed.gz", + "reports/mosdepth/test/test.recal.regions.bed.gz.csi", + "reports/samtools", + "reports/samtools/test", + "reports/samtools/test/test.recal.cram.stats" ], [ - "multiqc_citations.txt:md5,4c806e63a283ec1b7e78cdae3a923d4f" + "mosdepth-coverage-per-contig-single.txt:md5,115b9a93bcf511419e6622919172f321", + "mosdepth-cumcoverage-dist-id.txt:md5,df2fc825dfc41e30f72f5d125a6447ee", + "mosdepth_perchrom.txt:md5,115b9a93bcf511419e6622919172f321", + "multiqc_citations.txt:md5,6239b0f0a9736ccaf3baff3014dd585b", + "samtools-stats-dp.txt:md5,c8deaa643c44fd800cbf14ac35fb7719", + "samtools_alignment_plot.txt:md5,8908b56b3040f2c53b15591adf93a266", + "test.recal.mosdepth.global.dist.txt:md5,bdb8f185c35dd1eec7ce2f69bce57972", + "test.recal.mosdepth.region.dist.txt:md5,f1f1ad86fc280bced1888a5d7d25a3f2", + "test.recal.mosdepth.summary.txt:md5,32ea70ef1b99def3dc900b4afd513a40", + "test.recal.regions.bed.gz:md5,07bbc084a889f1cece4307fd00214a6e", + "test.recal.regions.bed.gz.csi:md5,b3716e5cd1744610e69c29bd4ffad259" ], "No BAM files", - "No CRAM files", + [ + "test.recal.cram:md5,463ac3b905fbf4ddf113a94dbfa8d69f" + ], "No VCF files" ], "meta": { "nf-test": "0.9.2", - "nextflow": "25.04.3" + "nextflow": "25.04.6" }, - "timestamp": "2025-06-12T16:53:05.463394899" + "timestamp": "2025-08-18T11:44:29.232705858" }, "-profile test --input tests/csv/3.0/mapped_single_cram.csv --step recalibrate --skip_tools baserecalibrator --tools strelka": { "content": [ From c535870bb25658c54b6fa24a081ac9e2e1da9b2f Mon Sep 17 00:00:00 2001 From: maxulysse Date: Mon, 18 Aug 2025 12:19:57 +0200 Subject: [PATCH 22/34] --tools null -> --tools false --- tests/intervals.nf.test | 12 ++--- tests/intervals.nf.test.snap | 12 ++--- tests/lane_integer.nf.test | 2 +- tests/lane_integer.nf.test.snap | 2 +- tests/preprocessing_umi.nf.test | 6 +-- tests/preprocessing_umi.nf.test.snap | 54 ++++++++++--------- tests/sentieon.nf.test | 2 +- tests/sentieon.nf.test.snap | 2 +- tests/start_from_markduplicates.nf.test | 8 +-- tests/start_from_markduplicates.nf.test.snap | 8 +-- tests/start_from_preparerecalibration.nf.test | 4 +- ...art_from_preparerecalibration.nf.test.snap | 4 +- tests/start_from_recalibration.nf.test | 4 +- tests/start_from_recalibration.nf.test.snap | 4 +- 14 files changed, 63 insertions(+), 61 deletions(-) diff --git a/tests/intervals.nf.test b/tests/intervals.nf.test index 9c617bf17..7f72ecea9 100644 --- a/tests/intervals.nf.test +++ b/tests/intervals.nf.test @@ -9,7 +9,7 @@ nextflow_pipeline { def test_scenario = [ [ - name: "-profile test --intervals genome.multi_intervals.bed --tools null --skip_tools baserecalibrator,fastqc,markduplicates,mosdepth,multiqc,samtools", + name: "-profile test --intervals genome.multi_intervals.bed --tools false --skip_tools baserecalibrator,fastqc,markduplicates,mosdepth,multiqc,samtools", params: [ intervals: modules_testdata_base_path + "genomics/homo_sapiens/genome/genome.multi_intervals.bed", nucleotides_per_second: 20, @@ -19,7 +19,7 @@ nextflow_pipeline { ] ], [ - name: "-profile test --no_intervals --tools null --skip_tools baserecalibrator,fastqc,markduplicates,mosdepth,multiqc,samtools", + name: "-profile test --no_intervals --tools false --skip_tools baserecalibrator,fastqc,markduplicates,mosdepth,multiqc,samtools", params: [ no_intervals: true, skip_tools: 'baserecalibrator,fastqc,markduplicates,mosdepth,multiqc,samtools', @@ -27,7 +27,7 @@ nextflow_pipeline { ] ], [ - name: "-profile test --intervals false --save_reference --tools null --skip_tools baserecalibrator,fastqc,markduplicates,mosdepth,multiqc,samtools", + name: "-profile test --intervals false --save_reference --tools false --skip_tools baserecalibrator,fastqc,markduplicates,mosdepth,multiqc,samtools", params: [ intervals: false, save_reference: true, @@ -36,7 +36,7 @@ nextflow_pipeline { ] ], [ - name: "-profile test --intervals genome.multi_intervals.bed --tools null --skip_tools baserecalibrator,fastqc,markduplicates,mosdepth,multiqc,samtools -stub", + name: "-profile test --intervals genome.multi_intervals.bed --tools false --skip_tools baserecalibrator,fastqc,markduplicates,mosdepth,multiqc,samtools -stub", params: [ intervals: modules_testdata_base_path + "/genomics/homo_sapiens/genome/genome.multi_intervals.bed", nucleotides_per_second: 20, @@ -47,7 +47,7 @@ nextflow_pipeline { stub: true ], [ - name: "-profile test --no_intervals --tools null --skip_tools baserecalibrator,fastqc,markduplicates,mosdepth,multiqc,samtools -stub", + name: "-profile test --no_intervals --tools false --skip_tools baserecalibrator,fastqc,markduplicates,mosdepth,multiqc,samtools -stub", params: [ no_intervals: true, skip_tools: 'baserecalibrator,fastqc,markduplicates,mosdepth,multiqc,samtools', @@ -56,7 +56,7 @@ nextflow_pipeline { stub: true ], [ - name: "-profile test --intervals false --save_reference --tools null --skip_tools baserecalibrator,fastqc,markduplicates,mosdepth,multiqc,samtools -stub", + name: "-profile test --intervals false --save_reference --tools false --skip_tools baserecalibrator,fastqc,markduplicates,mosdepth,multiqc,samtools -stub", params: [ intervals: false, save_reference: true, diff --git a/tests/intervals.nf.test.snap b/tests/intervals.nf.test.snap index 6e09e3aa4..cebc9e460 100644 --- a/tests/intervals.nf.test.snap +++ b/tests/intervals.nf.test.snap @@ -1,5 +1,5 @@ { - "-profile test --intervals false --save_reference --tools null --skip_tools baserecalibrator,fastqc,markduplicates,mosdepth,multiqc,samtools": { + "-profile test --intervals false --save_reference --tools false --skip_tools baserecalibrator,fastqc,markduplicates,mosdepth,multiqc,samtools": { "content": [ 10, { @@ -79,7 +79,7 @@ }, "timestamp": "2025-06-12T14:05:08.486696871" }, - "-profile test --intervals genome.multi_intervals.bed --tools null --skip_tools baserecalibrator,fastqc,markduplicates,mosdepth,multiqc,samtools": { + "-profile test --intervals genome.multi_intervals.bed --tools false --skip_tools baserecalibrator,fastqc,markduplicates,mosdepth,multiqc,samtools": { "content": [ 10, { @@ -134,7 +134,7 @@ }, "timestamp": "2025-06-12T14:02:08.414807739" }, - "-profile test --no_intervals --tools null --skip_tools baserecalibrator,fastqc,markduplicates,mosdepth,multiqc,samtools": { + "-profile test --no_intervals --tools false --skip_tools baserecalibrator,fastqc,markduplicates,mosdepth,multiqc,samtools": { "content": [ 7, { @@ -186,7 +186,7 @@ }, "timestamp": "2025-06-12T14:03:37.066714747" }, - "-profile test --no_intervals --tools null --skip_tools baserecalibrator,fastqc,markduplicates,mosdepth,multiqc,samtools -stub": { + "-profile test --no_intervals --tools false --skip_tools baserecalibrator,fastqc,markduplicates,mosdepth,multiqc,samtools -stub": { "content": [ 7, { @@ -232,7 +232,7 @@ }, "timestamp": "2025-07-02T11:53:00.073428657" }, - "-profile test --intervals false --save_reference --tools null --skip_tools baserecalibrator,fastqc,markduplicates,mosdepth,multiqc,samtools -stub": { + "-profile test --intervals false --save_reference --tools false --skip_tools baserecalibrator,fastqc,markduplicates,mosdepth,multiqc,samtools -stub": { "content": [ 10, { @@ -296,7 +296,7 @@ }, "timestamp": "2025-07-02T11:53:44.394696186" }, - "-profile test --intervals genome.multi_intervals.bed --tools null --skip_tools baserecalibrator,fastqc,markduplicates,mosdepth,multiqc,samtools -stub": { + "-profile test --intervals genome.multi_intervals.bed --tools false --skip_tools baserecalibrator,fastqc,markduplicates,mosdepth,multiqc,samtools -stub": { "content": [ 9, { diff --git a/tests/lane_integer.nf.test b/tests/lane_integer.nf.test index 11b12b565..28d6ab4f1 100644 --- a/tests/lane_integer.nf.test +++ b/tests/lane_integer.nf.test @@ -9,7 +9,7 @@ nextflow_pipeline { def test_scenario = [ [ - name: "-profile test --input tests/csv/3.0/fastq_single_integer_lane.csv --tools null --skip_tools baserecalibrator,fastqc,markduplicates,mosdepth,multiqc,samtools", + name: "-profile test --input tests/csv/3.0/fastq_single_integer_lane.csv --tools false --skip_tools baserecalibrator,fastqc,markduplicates,mosdepth,multiqc,samtools", params: [ input: "${projectDir}/tests/csv/3.0/fastq_single_integer_lane.csv", tools: null, diff --git a/tests/lane_integer.nf.test.snap b/tests/lane_integer.nf.test.snap index a4e29b310..f4df90f39 100644 --- a/tests/lane_integer.nf.test.snap +++ b/tests/lane_integer.nf.test.snap @@ -1,5 +1,5 @@ { - "-profile test --input tests/csv/3.0/fastq_single_integer_lane.csv --tools null --skip_tools baserecalibrator,fastqc,markduplicates,mosdepth,multiqc,samtools": { + "-profile test --input tests/csv/3.0/fastq_single_integer_lane.csv --tools false --skip_tools baserecalibrator,fastqc,markduplicates,mosdepth,multiqc,samtools": { "content": [ 10, { diff --git a/tests/preprocessing_umi.nf.test b/tests/preprocessing_umi.nf.test index 599049f64..aa9b8f7ba 100644 --- a/tests/preprocessing_umi.nf.test +++ b/tests/preprocessing_umi.nf.test @@ -9,7 +9,7 @@ nextflow_pipeline { def test_scenario = [ [ - name: "-profile test --input tests/csv/3.0/fastq_umi.csv --umi_read_structure '+T 7M1S+T' --tools null", + name: "-profile test --input tests/csv/3.0/fastq_umi.csv --umi_read_structure '+T 7M1S+T' --tools false", params: [ input: "${projectDir}/tests/csv/3.0/fastq_umi.csv", tools: null, @@ -17,7 +17,7 @@ nextflow_pipeline { ] ], [ - name: "-profile test --input tests/csv/3.0/fastq_umi.csv --umi_read_structure '+T 7M1S+T' --tools null --aligner sentieon-bwamem", + name: "-profile test --input tests/csv/3.0/fastq_umi.csv --umi_read_structure '+T 7M1S+T' --tools false --aligner sentieon-bwamem", params: [ input: "${projectDir}/tests/csv/3.0/fastq_umi.csv", tools: null, @@ -28,7 +28,7 @@ nextflow_pipeline { stdout: "sentieon-bwamem is currently not compatible with FGBio UMI handling. Please choose a different aligner." ], [ - name: "-profile test --input tests/csv/3.0/fastq_umi.csv --umi_read_structure '+T 7M1S+T' --tools null --aligner parabricks", + name: "-profile test --input tests/csv/3.0/fastq_umi.csv --umi_read_structure '+T 7M1S+T' --tools false --aligner parabricks", params: [ input: "${projectDir}/tests/csv/3.0/fastq_umi.csv", tools: null, diff --git a/tests/preprocessing_umi.nf.test.snap b/tests/preprocessing_umi.nf.test.snap index ffecde54b..a9b2e4091 100644 --- a/tests/preprocessing_umi.nf.test.snap +++ b/tests/preprocessing_umi.nf.test.snap @@ -1,5 +1,5 @@ { - "-profile test --input tests/csv/3.0/fastq_umi.csv --umi_read_structure '+T 7M1S+T' --tools null": { + "-profile test --input tests/csv/3.0/fastq_umi.csv --umi_read_structure '+T 7M1S+T'": { "content": [ 30, { @@ -14,7 +14,7 @@ "samtools": 1.21 }, "CALLUMICONSENSUS": { - "fgbio": "2.4.0" + "fgbio": "2.5.21" }, "CAT_FASTQ": { "cat": 9.5 @@ -32,7 +32,7 @@ "fastqc": "0.12.1" }, "FASTQTOBAM": { - "fgbio": "2.4.0" + "fgbio": "2.5.21" }, "GATK4_APPLYBQSR": { "gatk4": "4.6.1.0" @@ -48,7 +48,7 @@ "samtools": 1.21 }, "GROUPREADSBYUMI": { - "fgbio": "2.4.0" + "fgbio": "2.5.21" }, "INDEX_CRAM": { "samtools": 1.21 @@ -252,7 +252,8 @@ "reports/samtools/test/test.md.cram.stats", "reports/samtools/test/test.recal.cram.stats", "reports/umi", - "reports/umi/test-test_L1_umi-grouped_histogram.txt" + "reports/umi/test-test_L1_umi-grouped_histogram.txt", + "reports/umi/test-test_L1_umi-grouped_read-metrics.txt" ], [ "fastqc-status-check-heatmap.txt:md5,92fcedba625d8394492d1ef6e2eb64f0", @@ -266,41 +267,42 @@ "fastqc_sequence_counts_plot.txt:md5,1a4aab87f1bd4fd9f69cabef40f5e5ed", "fastqc_sequence_duplication_levels_plot.txt:md5,72e6366160d000a2990b2bbd321300a7", "fastqc_sequence_length_distribution_plot.txt:md5,7c07faf0c0b90613cdc82a9f09bc1f19", - "mosdepth-coverage-per-contig-single.txt:md5,800ad271050c46d24bf53c0f8bdf7b6e", - "mosdepth-cumcoverage-dist-id.txt:md5,3c526ec6da433233b419bdbdd19a1b56", - "mosdepth_perchrom.txt:md5,800ad271050c46d24bf53c0f8bdf7b6e", + "mosdepth-coverage-per-contig-single.txt:md5,fc8d90478e230b3cbad16ef68ede3a62", + "mosdepth-cumcoverage-dist-id.txt:md5,7985d3196b234be9907f6c417c4fe0df", + "mosdepth_perchrom.txt:md5,fc8d90478e230b3cbad16ef68ede3a62", "multiqc_citations.txt:md5,7d0b4b866fa577272c48a1f3ad72e75d", "multiqc_fastqc.txt:md5,0ca2cba4204d9076a1eb17596379d10c", "picard_MarkIlluminaAdapters_histogram.txt:md5,d41d8cd98f00b204e9800998ecf8427e", "picard_MeanQualityByCycle_histogram.txt:md5,d41d8cd98f00b204e9800998ecf8427e", "picard_QualityScoreDistribution_histogram.txt:md5,d41d8cd98f00b204e9800998ecf8427e", - "samtools-stats-dp.txt:md5,4d27768d75a69a61daf23bf5efe17687", - "samtools_alignment_plot.txt:md5,3c2a882852a7ffe06610c9027f0a312a", - "test.md.mosdepth.global.dist.txt:md5,09d22913aa50a0207f97a3f85b182c6e", - "test.md.mosdepth.region.dist.txt:md5,61676a4a3668c0e84eb0f56dc6bda1ae", - "test.md.mosdepth.summary.txt:md5,9bbea5e4d213a51f501c2aadff8d4526", - "test.md.regions.bed.gz:md5,e24c18ad56e54376c41fdaacec372f9e", - "test.md.regions.bed.gz.csi:md5,d0713716f63ac573f4a3385733e9a537", - "test.recal.mosdepth.global.dist.txt:md5,09d22913aa50a0207f97a3f85b182c6e", - "test.recal.mosdepth.region.dist.txt:md5,61676a4a3668c0e84eb0f56dc6bda1ae", - "test.recal.mosdepth.summary.txt:md5,9bbea5e4d213a51f501c2aadff8d4526", - "test.recal.regions.bed.gz:md5,e24c18ad56e54376c41fdaacec372f9e", - "test.recal.regions.bed.gz.csi:md5,d0713716f63ac573f4a3385733e9a537", - "test-test_L1_umi-grouped_histogram.txt:md5,85292e9acb83edf17110dce17be27f44" + "samtools-stats-dp.txt:md5,7409b0ac85933f622b30f6b53777e894", + "samtools_alignment_plot.txt:md5,60b8f1d48124a8f28b06dc0d15ca4d59", + "test.md.mosdepth.global.dist.txt:md5,34135a9f55bc3ed522c38fe0cce2d89a", + "test.md.mosdepth.region.dist.txt:md5,11dc4683f9038de1938b4874e02974d6", + "test.md.mosdepth.summary.txt:md5,d6cda5af0f2bf21973e256cf198aa47a", + "test.md.regions.bed.gz:md5,2e0526a15f549024c6a7d99232543642", + "test.md.regions.bed.gz.csi:md5,5c556fe6462be13681267bb28257b654", + "test.recal.mosdepth.global.dist.txt:md5,34135a9f55bc3ed522c38fe0cce2d89a", + "test.recal.mosdepth.region.dist.txt:md5,11dc4683f9038de1938b4874e02974d6", + "test.recal.mosdepth.summary.txt:md5,d6cda5af0f2bf21973e256cf198aa47a", + "test.recal.regions.bed.gz:md5,2e0526a15f549024c6a7d99232543642", + "test.recal.regions.bed.gz.csi:md5,5c556fe6462be13681267bb28257b654", + "test-test_L1_umi-grouped_histogram.txt:md5,85292e9acb83edf17110dce17be27f44", + "test-test_L1_umi-grouped_read-metrics.txt:md5,cb2aecfe82357aa06e091d69b4606b9e" ], [ - "test-test_L1_umi-consensus.bam:md5,18d420720f72366289d3a324f4552522" + "test-test_L1_umi-consensus.bam:md5,f11107c297c012c78616d7de965a0255" ], [ - "test.md.cram:md5,2d0c176fed158d84a061b69e1947994c", - "test.recal.cram:md5,6927569ca52dbba512d27f8742bc6aae" + "test.md.cram:md5,9287aa93e5575923930765531544150", + "test.recal.cram:md5,9287aa93e5575923930765531544150" ], "No VCF files" ], "meta": { "nf-test": "0.9.2", - "nextflow": "25.04.3" + "nextflow": "25.04.6" }, - "timestamp": "2025-06-16T10:56:22.096321902" + "timestamp": "2025-08-18T11:54:00.612320399" } } \ No newline at end of file diff --git a/tests/sentieon.nf.test b/tests/sentieon.nf.test index f751388c8..b32e8d035 100644 --- a/tests/sentieon.nf.test +++ b/tests/sentieon.nf.test @@ -8,7 +8,7 @@ nextflow_pipeline { def test_scenario = [ [ - name: "-profile test --aligner sentieon-bwamem --tools null -stub", + name: "-profile test --aligner sentieon-bwamem --tools false -stub", params: [ aligner: "sentieon-bwamem", tools: '' diff --git a/tests/sentieon.nf.test.snap b/tests/sentieon.nf.test.snap index 97458ff80..02e30b38e 100644 --- a/tests/sentieon.nf.test.snap +++ b/tests/sentieon.nf.test.snap @@ -1,5 +1,5 @@ { - "-profile test --aligner sentieon-bwamem --tools null -stub": { + "-profile test --aligner sentieon-bwamem --tools false -stub": { "content": [ 18, { diff --git a/tests/start_from_markduplicates.nf.test b/tests/start_from_markduplicates.nf.test index bd6453895..e44f7675e 100644 --- a/tests/start_from_markduplicates.nf.test +++ b/tests/start_from_markduplicates.nf.test @@ -9,7 +9,7 @@ nextflow_pipeline { def test_scenario = [ [ - name: "-profile test --input tests/csv/3.0/mapped_single_bam.csv --step markduplicates --skip_tools markduplicates --tools null", + name: "-profile test --input tests/csv/3.0/mapped_single_bam.csv --step markduplicates --skip_tools markduplicates --tools false", params: [ input: "${projectDir}/tests/csv/3.0/mapped_single_bam.csv", step: 'markduplicates', @@ -18,7 +18,7 @@ nextflow_pipeline { ] ], [ - name: "-profile test --input tests/csv/3.0/mapped_single_bam.csv --step markduplicates --tools null", + name: "-profile test --input tests/csv/3.0/mapped_single_bam.csv --step markduplicates --tools false", params: [ modules_testdata_base_path: 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/', input: "${projectDir}/tests/csv/3.0/mapped_single_bam.csv", @@ -27,7 +27,7 @@ nextflow_pipeline { ] ], [ - name: "-profile test --input tests/csv/3.0/mapped_single_cram.csv --step markduplicates --skip_tools markduplicates --tools null", + name: "-profile test --input tests/csv/3.0/mapped_single_cram.csv --step markduplicates --skip_tools markduplicates --tools false", params: [ modules_testdata_base_path: 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/', input: "${projectDir}/tests/csv/3.0/mapped_single_cram.csv", @@ -37,7 +37,7 @@ nextflow_pipeline { ] ], [ - name: "-profile test --input tests/csv/3.0/mapped_single_cram.csv --step markduplicates --tools null", + name: "-profile test --input tests/csv/3.0/mapped_single_cram.csv --step markduplicates --tools false", params: [ modules_testdata_base_path: 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/', input: "${projectDir}/tests/csv/3.0/mapped_single_cram.csv", diff --git a/tests/start_from_markduplicates.nf.test.snap b/tests/start_from_markduplicates.nf.test.snap index 8c6a5cca3..2afcabb8e 100644 --- a/tests/start_from_markduplicates.nf.test.snap +++ b/tests/start_from_markduplicates.nf.test.snap @@ -1,5 +1,5 @@ { - "-profile test --input tests/csv/3.0/mapped_single_bam.csv --step markduplicates --tools null": { + "-profile test --input tests/csv/3.0/mapped_single_bam.csv --step markduplicates --tools false": { "content": [ 13, { @@ -175,7 +175,7 @@ }, "timestamp": "2025-06-16T13:03:47.021313698" }, - "-profile test --input tests/csv/3.0/mapped_single_cram.csv --step markduplicates --tools null": { + "-profile test --input tests/csv/3.0/mapped_single_cram.csv --step markduplicates --tools false": { "content": [ 13, { @@ -351,7 +351,7 @@ }, "timestamp": "2025-06-16T13:06:07.261866128" }, - "-profile test --input tests/csv/3.0/mapped_single_cram.csv --step markduplicates --skip_tools markduplicates --tools null": { + "-profile test --input tests/csv/3.0/mapped_single_cram.csv --step markduplicates --skip_tools markduplicates --tools false": { "content": [ 12, { @@ -499,7 +499,7 @@ }, "timestamp": "2025-06-16T13:04:53.758263352" }, - "-profile test --input tests/csv/3.0/mapped_single_bam.csv --step markduplicates --skip_tools markduplicates --tools null": { + "-profile test --input tests/csv/3.0/mapped_single_bam.csv --step markduplicates --skip_tools markduplicates --tools false": { "content": [ 12, { diff --git a/tests/start_from_preparerecalibration.nf.test b/tests/start_from_preparerecalibration.nf.test index afadba52e..fba4e1d42 100644 --- a/tests/start_from_preparerecalibration.nf.test +++ b/tests/start_from_preparerecalibration.nf.test @@ -10,7 +10,7 @@ nextflow_pipeline { def test_scenario = [ [ - name: "-profile test --input tests/csv/3.0/mapped_single_bam.csv --step prepare_recalibration --tools null", + name: "-profile test --input tests/csv/3.0/mapped_single_bam.csv --step prepare_recalibration --tools false", params: [ input: "${projectDir}/tests/csv/3.0/mapped_single_bam.csv", step: 'prepare_recalibration', @@ -36,7 +36,7 @@ nextflow_pipeline { ] ], [ - name: "-profile test --input tests/csv/3.0/mapped_single_cram.csv --step prepare_recalibration --tools null", + name: "-profile test --input tests/csv/3.0/mapped_single_cram.csv --step prepare_recalibration --tools false", params: [ input: "${projectDir}/tests/csv/3.0/mapped_single_cram.csv", step: 'prepare_recalibration', diff --git a/tests/start_from_preparerecalibration.nf.test.snap b/tests/start_from_preparerecalibration.nf.test.snap index bba38c58d..5b192cf7f 100644 --- a/tests/start_from_preparerecalibration.nf.test.snap +++ b/tests/start_from_preparerecalibration.nf.test.snap @@ -1,5 +1,5 @@ { - "-profile test --input tests/csv/3.0/mapped_single_bam.csv --step prepare_recalibration --tools null": { + "-profile test --input tests/csv/3.0/mapped_single_bam.csv --step prepare_recalibration --tools false": { "content": [ 10, { @@ -397,7 +397,7 @@ }, "timestamp": "2025-07-11T13:01:44.772645301" }, - "-profile test --input tests/csv/3.0/mapped_single_cram.csv --step prepare_recalibration --tools null": { + "-profile test --input tests/csv/3.0/mapped_single_cram.csv --step prepare_recalibration --tools false": { "content": [ 10, { diff --git a/tests/start_from_recalibration.nf.test b/tests/start_from_recalibration.nf.test index dfe179b1b..977a98813 100644 --- a/tests/start_from_recalibration.nf.test +++ b/tests/start_from_recalibration.nf.test @@ -9,7 +9,7 @@ nextflow_pipeline { def test_scenario = [ [ - name: "-profile test --input tests/csv/3.0/mapped_single_cram.csv --step recalibrate --tools null", + name: "-profile test --input tests/csv/3.0/mapped_single_cram.csv --step recalibrate --tools false", params: [ input: "${projectDir}/tests/csv/3.0/prepare_recalibration_single_cram.csv", @@ -38,7 +38,7 @@ nextflow_pipeline { ] ], [ - name: "-profile test --input tests/csv/3.0/mapped_single_bam.csv --step recalibrate --tools null", + name: "-profile test --input tests/csv/3.0/mapped_single_bam.csv --step recalibrate --tools false", params: [ input: "${projectDir}/tests/csv/3.0/prepare_recalibration_single_bam.csv", diff --git a/tests/start_from_recalibration.nf.test.snap b/tests/start_from_recalibration.nf.test.snap index 269eb131e..b8af0b295 100644 --- a/tests/start_from_recalibration.nf.test.snap +++ b/tests/start_from_recalibration.nf.test.snap @@ -1,5 +1,5 @@ { - "-profile test --input tests/csv/3.0/mapped_single_bam.csv --step recalibrate --tools null": { + "-profile test --input tests/csv/3.0/mapped_single_bam.csv --step recalibrate --tools false": { "content": [ 9, { @@ -377,7 +377,7 @@ }, "timestamp": "2025-07-11T13:05:42.548856225" }, - "-profile test --input tests/csv/3.0/mapped_single_cram.csv --step recalibrate --tools null": { + "-profile test --input tests/csv/3.0/mapped_single_cram.csv --step recalibrate --tools false": { "content": [ 9, { From 67ccdeec622ad6c0777808c98b8bd82c7ac6e0c7 Mon Sep 17 00:00:00 2001 From: Maxime U Garcia Date: Mon, 18 Aug 2025 12:23:10 +0200 Subject: [PATCH 23/34] Update tests/preprocessing_umi.nf.test.snap --- tests/preprocessing_umi.nf.test.snap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/preprocessing_umi.nf.test.snap b/tests/preprocessing_umi.nf.test.snap index a9b2e4091..626f64cd3 100644 --- a/tests/preprocessing_umi.nf.test.snap +++ b/tests/preprocessing_umi.nf.test.snap @@ -1,5 +1,5 @@ { - "-profile test --input tests/csv/3.0/fastq_umi.csv --umi_read_structure '+T 7M1S+T'": { + "-profile test --input tests/csv/3.0/fastq_umi.csv --umi_read_structure '+T 7M1S+T' --tools false": { "content": [ 30, { From a867abadc9d9ef86337999419e9ca4c2873270b9 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Mon, 18 Aug 2025 12:42:47 +0200 Subject: [PATCH 24/34] update all gatk4 modules --- modules.json | 42 +++++++-------- modules/nf-core/gatk4/applybqsr/main.nf | 37 ++++++------- modules/nf-core/gatk4/applyvqsr/main.nf | 37 ++++++------- .../nf-core/gatk4/baserecalibrator/main.nf | 31 +++++------ .../gatk4/calculatecontamination/main.nf | 29 +++++----- .../nf-core/gatk4/cnnscorevariants/main.nf | 39 +++++++------- .../gatk4/createsequencedictionary/main.nf | 25 ++++----- .../gatk4/estimatelibrarycomplexity/main.nf | 31 +++++------ .../nf-core/gatk4/filtermutectcalls/main.nf | 43 +++++++-------- .../gatk4/filtervarianttranches/main.nf | 28 +++++----- .../nf-core/gatk4/gatherbqsrreports/main.nf | 23 ++++---- .../gatk4/gatherpileupsummaries/main.nf | 28 +++++----- .../nf-core/gatk4/genomicsdbimport/main.nf | 49 ++++++++--------- .../nf-core/gatk4/genomicsdbimport/meta.yml | 19 +++---- modules/nf-core/gatk4/genotypegvcfs/main.nf | 35 ++++++------ .../nf-core/gatk4/getpileupsummaries/main.nf | 35 ++++++------ modules/nf-core/gatk4/haplotypecaller/main.nf | 45 ++++++++-------- .../nf-core/gatk4/intervallisttobed/main.nf | 2 +- .../gatk4/learnreadorientationmodel/main.nf | 2 +- modules/nf-core/gatk4/markduplicates/main.nf | 10 ++-- .../nf-core/gatk4/mergemutectstats/main.nf | 23 ++++---- modules/nf-core/gatk4/mutect2/main.nf | 53 ++++++++++--------- .../nf-core/gatk4/variantrecalibrator/main.nf | 49 ++++++++--------- 23 files changed, 364 insertions(+), 351 deletions(-) diff --git a/modules.json b/modules.json index 7eaf37e70..8902819d5 100644 --- a/modules.json +++ b/modules.json @@ -183,97 +183,97 @@ }, "gatk4/applybqsr": { "branch": "master", - "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", + "git_sha": "a57253204b8f4022edfeaa3ae2f5e2abecd8858b", "installed_by": ["modules"] }, "gatk4/applyvqsr": { "branch": "master", - "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", + "git_sha": "a57253204b8f4022edfeaa3ae2f5e2abecd8858b", "installed_by": ["modules"] }, "gatk4/baserecalibrator": { "branch": "master", - "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", + "git_sha": "a57253204b8f4022edfeaa3ae2f5e2abecd8858b", "installed_by": ["modules"] }, "gatk4/calculatecontamination": { "branch": "master", - "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", + "git_sha": "a57253204b8f4022edfeaa3ae2f5e2abecd8858b", "installed_by": ["modules"] }, "gatk4/cnnscorevariants": { "branch": "master", - "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", + "git_sha": "a57253204b8f4022edfeaa3ae2f5e2abecd8858b", "installed_by": ["modules"] }, "gatk4/createsequencedictionary": { "branch": "master", - "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", + "git_sha": "a57253204b8f4022edfeaa3ae2f5e2abecd8858b", "installed_by": ["modules"] }, "gatk4/estimatelibrarycomplexity": { "branch": "master", - "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", + "git_sha": "a57253204b8f4022edfeaa3ae2f5e2abecd8858b", "installed_by": ["modules"] }, "gatk4/filtermutectcalls": { "branch": "master", - "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", + "git_sha": "a57253204b8f4022edfeaa3ae2f5e2abecd8858b", "installed_by": ["modules"] }, "gatk4/filtervarianttranches": { "branch": "master", - "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", + "git_sha": "a57253204b8f4022edfeaa3ae2f5e2abecd8858b", "installed_by": ["modules"] }, "gatk4/gatherbqsrreports": { "branch": "master", - "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", + "git_sha": "a57253204b8f4022edfeaa3ae2f5e2abecd8858b", "installed_by": ["modules"] }, "gatk4/gatherpileupsummaries": { "branch": "master", - "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", + "git_sha": "a57253204b8f4022edfeaa3ae2f5e2abecd8858b", "installed_by": ["modules"] }, "gatk4/genomicsdbimport": { "branch": "master", - "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", + "git_sha": "a57253204b8f4022edfeaa3ae2f5e2abecd8858b", "installed_by": ["modules"] }, "gatk4/genotypegvcfs": { "branch": "master", - "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", + "git_sha": "a57253204b8f4022edfeaa3ae2f5e2abecd8858b", "installed_by": ["modules"] }, "gatk4/getpileupsummaries": { "branch": "master", - "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", + "git_sha": "a57253204b8f4022edfeaa3ae2f5e2abecd8858b", "installed_by": ["modules"] }, "gatk4/haplotypecaller": { "branch": "master", - "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", + "git_sha": "a57253204b8f4022edfeaa3ae2f5e2abecd8858b", "installed_by": ["modules"] }, "gatk4/intervallisttobed": { "branch": "master", - "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", + "git_sha": "a57253204b8f4022edfeaa3ae2f5e2abecd8858b", "installed_by": ["modules"] }, "gatk4/learnreadorientationmodel": { "branch": "master", - "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", + "git_sha": "a57253204b8f4022edfeaa3ae2f5e2abecd8858b", "installed_by": ["modules"] }, "gatk4/markduplicates": { "branch": "master", - "git_sha": "bac25953a52ada60e04b3b1f28afd15fef691add", + "git_sha": "a57253204b8f4022edfeaa3ae2f5e2abecd8858b", "installed_by": ["modules"] }, "gatk4/mergemutectstats": { "branch": "master", - "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", + "git_sha": "a57253204b8f4022edfeaa3ae2f5e2abecd8858b", "installed_by": ["modules"] }, "gatk4/mergevcfs": { @@ -283,12 +283,12 @@ }, "gatk4/mutect2": { "branch": "master", - "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", + "git_sha": "a57253204b8f4022edfeaa3ae2f5e2abecd8858b", "installed_by": ["modules"] }, "gatk4/variantrecalibrator": { "branch": "master", - "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", + "git_sha": "a57253204b8f4022edfeaa3ae2f5e2abecd8858b", "installed_by": ["modules"] }, "gatk4spark/applybqsr": { diff --git a/modules/nf-core/gatk4/applybqsr/main.nf b/modules/nf-core/gatk4/applybqsr/main.nf index 979cb3a70..14ba3135e 100644 --- a/modules/nf-core/gatk4/applybqsr/main.nf +++ b/modules/nf-core/gatk4/applybqsr/main.nf @@ -1,22 +1,22 @@ process GATK4_APPLYBQSR { - tag "$meta.id" + tag "${meta.id}" label 'process_low' 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/b2/b28daf5d9bb2f0d129dcad1b7410e0dd8a9b087aaf3ec7ced929b1f57624ad98/data': - 'community.wave.seqera.io/library/gatk4_gcnvkernel:e48d414933d188cd' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/b2/b28daf5d9bb2f0d129dcad1b7410e0dd8a9b087aaf3ec7ced929b1f57624ad98/data' + : 'community.wave.seqera.io/library/gatk4_gcnvkernel:e48d414933d188cd'}" input: tuple val(meta), path(input), path(input_index), path(bqsr_table), path(intervals) - path fasta - path fai - path dict + path fasta + path fai + path dict output: - tuple val(meta), path("*.bam") , emit: bam, optional: true + tuple val(meta), path("*.bam"), emit: bam, optional: true tuple val(meta), path("*.cram"), emit: cram, optional: true - path "versions.yml" , emit: versions + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when @@ -24,24 +24,25 @@ process GATK4_APPLYBQSR { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}.cram" - def interval_command = intervals ? "--intervals $intervals" : "" + def interval_command = intervals ? "--intervals ${intervals}" : "" def avail_mem = 3072 if (!task.memory) { - log.info '[GATK ApplyBQSR] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.' - } else { - avail_mem = (task.memory.mega*0.8).intValue() + log.info('[GATK ApplyBQSR] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.') + } + else { + avail_mem = (task.memory.mega * 0.8).intValue() } """ gatk --java-options "-Xmx${avail_mem}M -XX:-UsePerfData" \\ ApplyBQSR \\ - --input $input \\ + --input ${input} \\ --output ${prefix} \\ - --reference $fasta \\ - --bqsr-recal-file $bqsr_table \\ - $interval_command \\ + --reference ${fasta} \\ + --bqsr-recal-file ${bqsr_table} \\ + ${interval_command} \\ --tmp-dir . \\ - $args + ${args} cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/gatk4/applyvqsr/main.nf b/modules/nf-core/gatk4/applyvqsr/main.nf index c8ea3da5b..65d34c30d 100644 --- a/modules/nf-core/gatk4/applyvqsr/main.nf +++ b/modules/nf-core/gatk4/applyvqsr/main.nf @@ -1,22 +1,22 @@ process GATK4_APPLYVQSR { - tag "$meta.id" + tag "${meta.id}" label 'process_low' 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/b2/b28daf5d9bb2f0d129dcad1b7410e0dd8a9b087aaf3ec7ced929b1f57624ad98/data': - 'community.wave.seqera.io/library/gatk4_gcnvkernel:e48d414933d188cd' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/b2/b28daf5d9bb2f0d129dcad1b7410e0dd8a9b087aaf3ec7ced929b1f57624ad98/data' + : 'community.wave.seqera.io/library/gatk4_gcnvkernel:e48d414933d188cd'}" input: tuple val(meta), path(vcf), path(vcf_tbi), path(recal), path(recal_index), path(tranches) - path fasta - path fai - path dict + path fasta + path fai + path dict output: tuple val(meta), path("*.vcf.gz"), emit: vcf - tuple val(meta), path("*.tbi") , emit: tbi - path "versions.yml" , emit: versions + tuple val(meta), path("*.tbi"), emit: tbi + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when @@ -24,24 +24,25 @@ process GATK4_APPLYVQSR { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def reference_command = fasta ? "--reference $fasta" : '' + def reference_command = fasta ? "--reference ${fasta}" : '' def avail_mem = 3072 if (!task.memory) { - log.info '[GATK ApplyVQSR] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.' - } else { - avail_mem = (task.memory.mega*0.8).intValue() + log.info('[GATK ApplyVQSR] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.') + } + else { + avail_mem = (task.memory.mega * 0.8).intValue() } """ gatk --java-options "-Xmx${avail_mem}M -XX:-UsePerfData" \\ ApplyVQSR \\ --variant ${vcf} \\ --output ${prefix}.vcf.gz \\ - $reference_command \\ - --tranches-file $tranches \\ - --recal-file $recal \\ + ${reference_command} \\ + --tranches-file ${tranches} \\ + --recal-file ${recal} \\ --tmp-dir . \\ - $args + ${args} cat <<-END_VERSIONS > versions.yml "${task.process}": @@ -50,7 +51,7 @@ process GATK4_APPLYVQSR { """ stub: - prefix = task.ext.prefix ?: "${meta.id}" + prefix = task.ext.prefix ?: "${meta.id}" """ echo "" | gzip > ${prefix}.vcf.gz touch ${prefix}.vcf.gz.tbi diff --git a/modules/nf-core/gatk4/baserecalibrator/main.nf b/modules/nf-core/gatk4/baserecalibrator/main.nf index 493533c72..2d16c918e 100644 --- a/modules/nf-core/gatk4/baserecalibrator/main.nf +++ b/modules/nf-core/gatk4/baserecalibrator/main.nf @@ -1,11 +1,11 @@ process GATK4_BASERECALIBRATOR { - tag "$meta.id" + tag "${meta.id}" label 'process_low' 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/b2/b28daf5d9bb2f0d129dcad1b7410e0dd8a9b087aaf3ec7ced929b1f57624ad98/data': - 'community.wave.seqera.io/library/gatk4_gcnvkernel:e48d414933d188cd' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/b2/b28daf5d9bb2f0d129dcad1b7410e0dd8a9b087aaf3ec7ced929b1f57624ad98/data' + : 'community.wave.seqera.io/library/gatk4_gcnvkernel:e48d414933d188cd'}" input: tuple val(meta), path(input), path(input_index), path(intervals) @@ -17,7 +17,7 @@ process GATK4_BASERECALIBRATOR { output: tuple val(meta), path("*.table"), emit: table - path "versions.yml" , emit: versions + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when @@ -25,25 +25,26 @@ process GATK4_BASERECALIBRATOR { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def interval_command = intervals ? "--intervals $intervals" : "" - def sites_command = known_sites.collect{"--known-sites $it"}.join(' ') + def interval_command = intervals ? "--intervals ${intervals}" : "" + def sites_command = known_sites.collect { "--known-sites ${it}" }.join(' ') def avail_mem = 3072 if (!task.memory) { - log.info '[GATK BaseRecalibrator] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.' - } else { - avail_mem = (task.memory.mega*0.8).intValue() + log.info('[GATK BaseRecalibrator] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.') + } + else { + avail_mem = (task.memory.mega * 0.8).intValue() } """ gatk --java-options "-Xmx${avail_mem}M -XX:-UsePerfData" \\ BaseRecalibrator \\ - --input $input \\ + --input ${input} \\ --output ${prefix}.table \\ - --reference $fasta \\ - $interval_command \\ - $sites_command \\ + --reference ${fasta} \\ + ${interval_command} \\ + ${sites_command} \\ --tmp-dir . \\ - $args + ${args} cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/gatk4/calculatecontamination/main.nf b/modules/nf-core/gatk4/calculatecontamination/main.nf index 20fe3c5e1..ee2a0d4bd 100644 --- a/modules/nf-core/gatk4/calculatecontamination/main.nf +++ b/modules/nf-core/gatk4/calculatecontamination/main.nf @@ -1,19 +1,19 @@ process GATK4_CALCULATECONTAMINATION { - tag "$meta.id" + tag "${meta.id}" label 'process_low' 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/b2/b28daf5d9bb2f0d129dcad1b7410e0dd8a9b087aaf3ec7ced929b1f57624ad98/data': - 'community.wave.seqera.io/library/gatk4_gcnvkernel:e48d414933d188cd' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/b2/b28daf5d9bb2f0d129dcad1b7410e0dd8a9b087aaf3ec7ced929b1f57624ad98/data' + : 'community.wave.seqera.io/library/gatk4_gcnvkernel:e48d414933d188cd'}" input: tuple val(meta), path(pileup), path(matched) output: tuple val(meta), path('*.contamination.table'), emit: contamination - tuple val(meta), path('*.segmentation.table') , emit: segmentation, optional:true - path "versions.yml" , emit: versions + tuple val(meta), path('*.segmentation.table'), emit: segmentation, optional: true + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when @@ -21,22 +21,23 @@ process GATK4_CALCULATECONTAMINATION { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def matched_command = matched ? "--matched-normal $matched" : '' + def matched_command = matched ? "--matched-normal ${matched}" : '' def avail_mem = 3072 if (!task.memory) { - log.info '[GATK CalculateContamination] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.' - } else { - avail_mem = (task.memory.mega*0.8).intValue() + log.info('[GATK CalculateContamination] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.') + } + else { + avail_mem = (task.memory.mega * 0.8).intValue() } """ gatk --java-options "-Xmx${avail_mem}M -XX:-UsePerfData" \\ CalculateContamination \\ - --input $pileup \\ + --input ${pileup} \\ --output ${prefix}.contamination.table \\ - $matched_command \\ + ${matched_command} \\ --tmp-dir . \\ - $args + ${args} cat <<-END_VERSIONS > versions.yml "${task.process}": @@ -45,7 +46,7 @@ process GATK4_CALCULATECONTAMINATION { """ stub: - prefix = task.ext.prefix ?: "${meta.id}" + prefix = task.ext.prefix ?: "${meta.id}" """ touch ${prefix}.contamination.table touch ${prefix}.segmentation.table diff --git a/modules/nf-core/gatk4/cnnscorevariants/main.nf b/modules/nf-core/gatk4/cnnscorevariants/main.nf index 5ff13b41d..f44440a4a 100644 --- a/modules/nf-core/gatk4/cnnscorevariants/main.nf +++ b/modules/nf-core/gatk4/cnnscorevariants/main.nf @@ -1,9 +1,9 @@ process GATK4_CNNSCOREVARIANTS { - tag "$meta.id" + tag "${meta.id}" label 'process_low' //Conda is not supported at the moment: https://github.com/broadinstitute/gatk/issues/7811 - container "nf-core/gatk:4.5.0.0" //Biocontainers is missing a package + container "nf-core/gatk:4.5.0.0" input: tuple val(meta), path(vcf), path(tbi), path(aligned_input), path(intervals) @@ -14,9 +14,9 @@ process GATK4_CNNSCOREVARIANTS { path weights output: - tuple val(meta), path("*cnn.vcf.gz") , emit: vcf + tuple val(meta), path("*cnn.vcf.gz"), emit: vcf tuple val(meta), path("*cnn.vcf.gz.tbi"), emit: tbi - path "versions.yml" , emit: versions + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when @@ -24,35 +24,36 @@ process GATK4_CNNSCOREVARIANTS { script: // Exit if running this module with -profile conda / -profile mamba if (workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1) { - error "GATK4_CNNSCOREVARIANTS module does not support Conda. Please use Docker / Singularity / Podman instead." + error("GATK4_CNNSCOREVARIANTS module does not support Conda. Please use Docker / Singularity / Podman instead.") } def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def aligned_input_cmd = aligned_input ? "--input $aligned_input" : "" - def interval_command = intervals ? "--intervals $intervals" : "" - def architecture_cmd = architecture ? "--architecture $architecture" : "" - def weights_cmd = weights ? "--weights $weights" : "" + def aligned_input_cmd = aligned_input ? "--input ${aligned_input}" : "" + def interval_command = intervals ? "--intervals ${intervals}" : "" + def architecture_cmd = architecture ? "--architecture ${architecture}" : "" + def weights_cmd = weights ? "--weights ${weights}" : "" def avail_mem = 3072 if (!task.memory) { - log.info '[GATK CnnScoreVariants] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.' - } else { - avail_mem = (task.memory.mega*0.8).intValue() + log.info('[GATK CnnScoreVariants] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.') + } + else { + avail_mem = (task.memory.mega * 0.8).intValue() } """ export THEANO_FLAGS="base_compiledir=\$PWD" gatk --java-options "-Xmx${avail_mem}M -XX:-UsePerfData" \\ CNNScoreVariants \\ - --variant $vcf \\ + --variant ${vcf} \\ --output ${prefix}.cnn.vcf.gz \\ - --reference $fasta \\ - $interval_command \\ - $aligned_input_cmd \\ - $architecture_cmd \\ - $weights_cmd \\ + --reference ${fasta} \\ + ${interval_command} \\ + ${aligned_input_cmd} \\ + ${architecture_cmd} \\ + ${weights_cmd} \\ --tmp-dir . \\ - $args + ${args} cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/gatk4/createsequencedictionary/main.nf b/modules/nf-core/gatk4/createsequencedictionary/main.nf index 998622a06..872648a5e 100644 --- a/modules/nf-core/gatk4/createsequencedictionary/main.nf +++ b/modules/nf-core/gatk4/createsequencedictionary/main.nf @@ -1,18 +1,18 @@ process GATK4_CREATESEQUENCEDICTIONARY { - tag "$fasta" + tag "${fasta}" label 'process_single' 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/b2/b28daf5d9bb2f0d129dcad1b7410e0dd8a9b087aaf3ec7ced929b1f57624ad98/data': - 'community.wave.seqera.io/library/gatk4_gcnvkernel:e48d414933d188cd' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/b2/b28daf5d9bb2f0d129dcad1b7410e0dd8a9b087aaf3ec7ced929b1f57624ad98/data' + : 'community.wave.seqera.io/library/gatk4_gcnvkernel:e48d414933d188cd'}" input: tuple val(meta), path(fasta) output: - tuple val(meta), path('*.dict') , emit: dict - path "versions.yml" , emit: versions + tuple val(meta), path('*.dict'), emit: dict + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when @@ -22,17 +22,18 @@ process GATK4_CREATESEQUENCEDICTIONARY { def avail_mem = 6144 if (!task.memory) { - log.info '[GATK CreateSequenceDictionary] Available memory not known - defaulting to 6GB. Specify process memory requirements to change this.' - } else { - avail_mem = (task.memory.mega*0.8).intValue() + log.info('[GATK CreateSequenceDictionary] Available memory not known - defaulting to 6GB. Specify process memory requirements to change this.') + } + else { + avail_mem = (task.memory.mega * 0.8).intValue() } """ gatk --java-options "-Xmx${avail_mem}M -XX:-UsePerfData" \\ CreateSequenceDictionary \\ - --REFERENCE $fasta \\ - --URI $fasta \\ + --REFERENCE ${fasta} \\ + --URI ${fasta} \\ --TMP_DIR . \\ - $args + ${args} cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/gatk4/estimatelibrarycomplexity/main.nf b/modules/nf-core/gatk4/estimatelibrarycomplexity/main.nf index 907127957..801056975 100644 --- a/modules/nf-core/gatk4/estimatelibrarycomplexity/main.nf +++ b/modules/nf-core/gatk4/estimatelibrarycomplexity/main.nf @@ -1,21 +1,21 @@ process GATK4_ESTIMATELIBRARYCOMPLEXITY { - tag "$meta.id" + tag "${meta.id}" label 'process_single' 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/b2/b28daf5d9bb2f0d129dcad1b7410e0dd8a9b087aaf3ec7ced929b1f57624ad98/data': - 'community.wave.seqera.io/library/gatk4_gcnvkernel:e48d414933d188cd' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/b2/b28daf5d9bb2f0d129dcad1b7410e0dd8a9b087aaf3ec7ced929b1f57624ad98/data' + : 'community.wave.seqera.io/library/gatk4_gcnvkernel:e48d414933d188cd'}" input: tuple val(meta), path(input) - path fasta - path fai - path dict + path fasta + path fai + path dict output: tuple val(meta), path('*.metrics'), emit: metrics - path "versions.yml" , emit: versions + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when @@ -23,23 +23,24 @@ process GATK4_ESTIMATELIBRARYCOMPLEXITY { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def input_list = input.collect(){"--INPUT $it"}.join(" ") + def input_list = input.collect { "--INPUT ${it}" }.join(" ") def reference = fasta ? "--REFERENCE_SEQUENCE ${fasta}" : "" def avail_mem = 3072 if (!task.memory) { - log.info '[GATK EstimateLibraryComplexity] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.' - } else { - avail_mem = (task.memory.mega*0.8).intValue() + log.info('[GATK EstimateLibraryComplexity] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.') + } + else { + avail_mem = (task.memory.mega * 0.8).intValue() } """ gatk --java-options "-Xmx${avail_mem}M -XX:-UsePerfData" \\ EstimateLibraryComplexity \\ - $input_list \\ + ${input_list} \\ --OUTPUT ${prefix}.metrics \\ - $reference \\ + ${reference} \\ --TMP_DIR . \\ - $args + ${args} cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/gatk4/filtermutectcalls/main.nf b/modules/nf-core/gatk4/filtermutectcalls/main.nf index d3c5bb5ad..20346a5e0 100644 --- a/modules/nf-core/gatk4/filtermutectcalls/main.nf +++ b/modules/nf-core/gatk4/filtermutectcalls/main.nf @@ -1,11 +1,11 @@ process GATK4_FILTERMUTECTCALLS { - tag "$meta.id" + tag "${meta.id}" label 'process_low' 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/b2/b28daf5d9bb2f0d129dcad1b7410e0dd8a9b087aaf3ec7ced929b1f57624ad98/data': - 'community.wave.seqera.io/library/gatk4_gcnvkernel:e48d414933d188cd' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/b2/b28daf5d9bb2f0d129dcad1b7410e0dd8a9b087aaf3ec7ced929b1f57624ad98/data' + : 'community.wave.seqera.io/library/gatk4_gcnvkernel:e48d414933d188cd'}" input: tuple val(meta), path(vcf), path(vcf_tbi), path(stats), path(orientationbias), path(segmentation), path(table), val(estimate) @@ -14,10 +14,10 @@ process GATK4_FILTERMUTECTCALLS { tuple val(meta4), path(dict) output: - tuple val(meta), path("*.vcf.gz") , emit: vcf - tuple val(meta), path("*.vcf.gz.tbi") , emit: tbi + tuple val(meta), path("*.vcf.gz"), emit: vcf + tuple val(meta), path("*.vcf.gz.tbi"), emit: tbi tuple val(meta), path("*.filteringStats.tsv"), emit: stats - path "versions.yml" , emit: versions + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when @@ -26,29 +26,30 @@ process GATK4_FILTERMUTECTCALLS { def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def orientationbias_command = orientationbias ? orientationbias.collect{"--orientation-bias-artifact-priors $it"}.join(' ') : '' - def segmentation_command = segmentation ? segmentation.collect{"--tumor-segmentation $it"}.join(' ') : '' - def estimate_command = estimate ? " --contamination-estimate ${estimate} " : '' - def table_command = table ? table.collect{"--contamination-table $it"}.join(' ') : '' + def orientationbias_command = orientationbias ? orientationbias.collect { "--orientation-bias-artifact-priors ${it}" }.join(' ') : '' + def segmentation_command = segmentation ? segmentation.collect { "--tumor-segmentation ${it}" }.join(' ') : '' + def estimate_command = estimate ? " --contamination-estimate ${estimate} " : '' + def table_command = table ? table.collect { "--contamination-table ${it}" }.join(' ') : '' def avail_mem = 3072 if (!task.memory) { - log.info '[GATK FilterMutectCalls] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.' - } else { - avail_mem = (task.memory.mega*0.8).intValue() + log.info('[GATK FilterMutectCalls] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.') + } + else { + avail_mem = (task.memory.mega * 0.8).intValue() } """ gatk --java-options "-Xmx${avail_mem}M -XX:-UsePerfData" \\ FilterMutectCalls \\ - --variant $vcf \\ + --variant ${vcf} \\ --output ${prefix}.vcf.gz \\ - --reference $fasta \\ - $orientationbias_command \\ - $segmentation_command \\ - $estimate_command \\ - $table_command \\ + --reference ${fasta} \\ + ${orientationbias_command} \\ + ${segmentation_command} \\ + ${estimate_command} \\ + ${table_command} \\ --tmp-dir . \\ - $args + ${args} cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/gatk4/filtervarianttranches/main.nf b/modules/nf-core/gatk4/filtervarianttranches/main.nf index c5249b7a0..426d72b6a 100644 --- a/modules/nf-core/gatk4/filtervarianttranches/main.nf +++ b/modules/nf-core/gatk4/filtervarianttranches/main.nf @@ -1,11 +1,11 @@ process GATK4_FILTERVARIANTTRANCHES { - tag "$meta.id" + tag "${meta.id}" label 'process_low' 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/b2/b28daf5d9bb2f0d129dcad1b7410e0dd8a9b087aaf3ec7ced929b1f57624ad98/data': - 'community.wave.seqera.io/library/gatk4_gcnvkernel:e48d414933d188cd' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/b2/b28daf5d9bb2f0d129dcad1b7410e0dd8a9b087aaf3ec7ced929b1f57624ad98/data' + : 'community.wave.seqera.io/library/gatk4_gcnvkernel:e48d414933d188cd'}" input: tuple val(meta), path(vcf), path(tbi), path(intervals) @@ -15,11 +15,10 @@ process GATK4_FILTERVARIANTTRANCHES { path fai path dict - output: - tuple val(meta), path("*.vcf.gz") , emit: vcf + tuple val(meta), path("*.vcf.gz"), emit: vcf tuple val(meta), path("*.vcf.gz.tbi"), emit: tbi - path "versions.yml" , emit: versions + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when @@ -27,22 +26,23 @@ process GATK4_FILTERVARIANTTRANCHES { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def resource_list = resources.collect{"--resource $it"}.join(' ') + def resource_list = resources.collect { "--resource ${it}" }.join(' ') def avail_mem = 3072 if (!task.memory) { - log.info '[GATK FilterVariantTranches] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.' - } else { - avail_mem = (task.memory.mega*0.8).intValue() + log.info('[GATK FilterVariantTranches] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.') + } + else { + avail_mem = (task.memory.mega * 0.8).intValue() } """ gatk --java-options "-Xmx${avail_mem}M -XX:-UsePerfData" \\ FilterVariantTranches \\ - --variant $vcf \\ - $resource_list \\ + --variant ${vcf} \\ + ${resource_list} \\ --output ${prefix}.filtered.vcf.gz \\ --tmp-dir . \\ - $args + ${args} cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/gatk4/gatherbqsrreports/main.nf b/modules/nf-core/gatk4/gatherbqsrreports/main.nf index fdc5a2a72..3c7b3681c 100644 --- a/modules/nf-core/gatk4/gatherbqsrreports/main.nf +++ b/modules/nf-core/gatk4/gatherbqsrreports/main.nf @@ -1,18 +1,18 @@ process GATK4_GATHERBQSRREPORTS { - tag "$meta.id" + tag "${meta.id}" label 'process_single' 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/b2/b28daf5d9bb2f0d129dcad1b7410e0dd8a9b087aaf3ec7ced929b1f57624ad98/data': - 'community.wave.seqera.io/library/gatk4_gcnvkernel:e48d414933d188cd' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/b2/b28daf5d9bb2f0d129dcad1b7410e0dd8a9b087aaf3ec7ced929b1f57624ad98/data' + : 'community.wave.seqera.io/library/gatk4_gcnvkernel:e48d414933d188cd'}" input: tuple val(meta), path(table) output: tuple val(meta), path("*.table"), emit: table - path "versions.yml" , emit: versions + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when @@ -20,21 +20,22 @@ process GATK4_GATHERBQSRREPORTS { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def input_list = table.collect{"--input $it"}.join(' ') + def input_list = table.collect { "--input ${it}" }.join(' ') def avail_mem = 3072 if (!task.memory) { - log.info '[GATK GatherBQSRReports] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.' - } else { - avail_mem = (task.memory.mega*0.8).intValue() + log.info('[GATK GatherBQSRReports] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.') + } + else { + avail_mem = (task.memory.mega * 0.8).intValue() } """ gatk --java-options "-Xmx${avail_mem}M -XX:-UsePerfData" \\ GatherBQSRReports \\ - $input_list \\ + ${input_list} \\ --output ${prefix}.table \\ --tmp-dir . \\ - $args + ${args} cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/gatk4/gatherpileupsummaries/main.nf b/modules/nf-core/gatk4/gatherpileupsummaries/main.nf index af397a1a2..04db17ed2 100644 --- a/modules/nf-core/gatk4/gatherpileupsummaries/main.nf +++ b/modules/nf-core/gatk4/gatherpileupsummaries/main.nf @@ -1,20 +1,19 @@ process GATK4_GATHERPILEUPSUMMARIES { - tag "$meta.id" + tag "${meta.id}" label 'process_low' 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/b2/b28daf5d9bb2f0d129dcad1b7410e0dd8a9b087aaf3ec7ced929b1f57624ad98/data': - 'community.wave.seqera.io/library/gatk4_gcnvkernel:e48d414933d188cd' }" - + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/b2/b28daf5d9bb2f0d129dcad1b7410e0dd8a9b087aaf3ec7ced929b1f57624ad98/data' + : 'community.wave.seqera.io/library/gatk4_gcnvkernel:e48d414933d188cd'}" input: tuple val(meta), path(pileup) - path dict + path dict output: tuple val(meta), path("*.pileups.table"), emit: table - path "versions.yml" , emit: versions + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when @@ -22,22 +21,23 @@ process GATK4_GATHERPILEUPSUMMARIES { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def input_list = pileup.collect{ "--I $it" }.join(' ') + def input_list = pileup.collect { "--I ${it}" }.join(' ') def avail_mem = 3072 if (!task.memory) { - log.info '[GATK GatherPileupSummaries] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.' - } else { - avail_mem = (task.memory.mega*0.8).intValue() + log.info('[GATK GatherPileupSummaries] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.') + } + else { + avail_mem = (task.memory.mega * 0.8).intValue() } """ gatk --java-options "-Xmx${avail_mem}M -XX:-UsePerfData" \\ GatherPileupSummaries \\ - $input_list \\ + ${input_list} \\ --O ${prefix}.pileups.table \\ - --sequence-dictionary $dict \\ + --sequence-dictionary ${dict} \\ --tmp-dir . \\ - $args + ${args} cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/gatk4/genomicsdbimport/main.nf b/modules/nf-core/gatk4/genomicsdbimport/main.nf index 90f1200dc..586d493b0 100644 --- a/modules/nf-core/gatk4/genomicsdbimport/main.nf +++ b/modules/nf-core/gatk4/genomicsdbimport/main.nf @@ -1,33 +1,33 @@ process GATK4_GENOMICSDBIMPORT { - tag "$meta.id" + tag "${meta.id}" label 'process_single' 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/b2/b28daf5d9bb2f0d129dcad1b7410e0dd8a9b087aaf3ec7ced929b1f57624ad98/data': - 'community.wave.seqera.io/library/gatk4_gcnvkernel:e48d414933d188cd' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/b2/b28daf5d9bb2f0d129dcad1b7410e0dd8a9b087aaf3ec7ced929b1f57624ad98/data' + : 'community.wave.seqera.io/library/gatk4_gcnvkernel:e48d414933d188cd'}" input: tuple val(meta), path(vcf), path(tbi), path(interval_file), val(interval_value), path(wspace) - val run_intlist - val run_updatewspace - val input_map + val run_intlist + val run_updatewspace + val input_map output: - tuple val(meta), path("$prefix") , optional:true, emit: genomicsdb - tuple val(meta), path("$updated_db") , optional:true, emit: updatedb - tuple val(meta), path("*.interval_list"), optional:true, emit: intervallist - path "versions.yml" , emit: versions + tuple val(meta), path("${prefix}"), emit: genomicsdb, optional: true + tuple val(meta), path("${updated_db}"), emit: updatedb, optional: true + tuple val(meta), path("*.interval_list"), emit: intervallist, optional: true + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' - prefix = task.ext.prefix ?: "${meta.id}" + def args = task.ext.args ?: '' + prefix = task.ext.prefix ?: "${meta.id}" // settings for running default create gendb mode - input_command = input_map ? "--sample-name-map ${vcf[0]}" : vcf.collect(){"--variant $it"}.join(' ') + input_command = input_map ? "--sample-name-map ${vcf[0]}" : vcf.collect { "--variant ${it}" }.join(' ') genomicsdb_command = "--genomicsdb-workspace-path ${prefix}" interval_command = interval_file ? "--intervals ${interval_file}" : "--intervals ${interval_value}" @@ -48,18 +48,19 @@ process GATK4_GENOMICSDBIMPORT { def avail_mem = 3072 if (!task.memory) { - log.info '[GATK GenomicsDBImport] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.' - } else { - avail_mem = (task.memory.mega*0.8).intValue() + log.info('[GATK GenomicsDBImport] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.') + } + else { + avail_mem = (task.memory.mega * 0.8).intValue() } """ gatk --java-options "-Xmx${avail_mem}M -XX:-UsePerfData" \\ GenomicsDBImport \\ - $input_command \\ - $genomicsdb_command \\ - $interval_command \\ + ${input_command} \\ + ${genomicsdb_command} \\ + ${interval_command} \\ --tmp-dir . \\ - $args + ${args} cat <<-END_VERSIONS > versions.yml "${task.process}": @@ -68,7 +69,7 @@ process GATK4_GENOMICSDBIMPORT { """ stub: - prefix = task.ext.prefix ?: "${meta.id}" + prefix = task.ext.prefix ?: "${meta.id}" genomicsdb_command = "--genomicsdb-workspace-path ${prefix}" interval_command = interval_file ? "--intervals ${interval_file}" : "--intervals ${interval_value}" @@ -88,8 +89,8 @@ process GATK4_GENOMICSDBIMPORT { } def stub_genomicsdb = genomicsdb_command == "--genomicsdb-workspace-path ${prefix}" ? "touch ${prefix}" : "" - def stub_interval = interval_command == "--output-interval-list-to-file ${prefix}.interval_list" ? "touch ${prefix}.interval_list" : "" - def stub_update = updated_db != "" ? "touch ${wspace}" : "" + def stub_interval = interval_command == "--output-interval-list-to-file ${prefix}.interval_list" ? "touch ${prefix}.interval_list" : "" + def stub_update = updated_db != "" ? "touch ${wspace}" : "" """ ${stub_genomicsdb} diff --git a/modules/nf-core/gatk4/genomicsdbimport/meta.yml b/modules/nf-core/gatk4/genomicsdbimport/meta.yml index 3a472e11d..0da0cc42b 100644 --- a/modules/nf-core/gatk4/genomicsdbimport/meta.yml +++ b/modules/nf-core/gatk4/genomicsdbimport/meta.yml @@ -70,21 +70,18 @@ output: - - meta: type: map description: A Groovy map containing sample information - - $prefix: - type: directory - description: Directory containing the files that compose the genomicsdb workspace, - this is only output for create mode, as update changes an existing db - pattern: "*/$prefix" + - ${prefix}: + type: file + description: genomicsdb + ontologies: [] updatedb: - - meta: type: map description: A Groovy map containing sample information - - $updated_db: - type: directory - description: Directory containing the files that compose the updated genomicsdb - workspace, this is only output for update mode, and should be the same path - as the input wspace. - pattern: "same/path/as/wspace" + - ${updated_db}: + type: file + description: updated genomicsdb + ontologies: [] intervallist: - - meta: type: map diff --git a/modules/nf-core/gatk4/genotypegvcfs/main.nf b/modules/nf-core/gatk4/genotypegvcfs/main.nf index dc2813a35..ef20d95a5 100644 --- a/modules/nf-core/gatk4/genotypegvcfs/main.nf +++ b/modules/nf-core/gatk4/genotypegvcfs/main.nf @@ -1,11 +1,11 @@ process GATK4_GENOTYPEGVCFS { - tag "$meta.id" + tag "${meta.id}" label 'process_single' 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/b2/b28daf5d9bb2f0d129dcad1b7410e0dd8a9b087aaf3ec7ced929b1f57624ad98/data': - 'community.wave.seqera.io/library/gatk4_gcnvkernel:e48d414933d188cd' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/b2/b28daf5d9bb2f0d129dcad1b7410e0dd8a9b087aaf3ec7ced929b1f57624ad98/data' + : 'community.wave.seqera.io/library/gatk4_gcnvkernel:e48d414933d188cd'}" input: tuple val(meta), path(input), path(gvcf_index), path(intervals), path(intervals_index) @@ -17,8 +17,8 @@ process GATK4_GENOTYPEGVCFS { output: tuple val(meta), path("*.vcf.gz"), emit: vcf - tuple val(meta), path("*.tbi") , emit: tbi - path "versions.yml" , emit: versions + tuple val(meta), path("*.tbi"), emit: tbi + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when @@ -26,26 +26,27 @@ process GATK4_GENOTYPEGVCFS { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def input_command = input.name.endsWith(".vcf") || input.name.endsWith(".vcf.gz") ? "$input" : "gendb://$input" - def dbsnp_command = dbsnp ? "--dbsnp $dbsnp" : "" - def interval_command = intervals ? "--intervals $intervals" : "" + def input_command = input.name.endsWith(".vcf") || input.name.endsWith(".vcf.gz") ? "${input}" : "gendb://${input}" + def dbsnp_command = dbsnp ? "--dbsnp ${dbsnp}" : "" + def interval_command = intervals ? "--intervals ${intervals}" : "" def avail_mem = 3072 if (!task.memory) { - log.info '[GATK GenotypeGVCFs] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.' - } else { - avail_mem = (task.memory.mega*0.8).intValue() + log.info('[GATK GenotypeGVCFs] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.') + } + else { + avail_mem = (task.memory.mega * 0.8).intValue() } """ gatk --java-options "-Xmx${avail_mem}M -XX:-UsePerfData" \\ GenotypeGVCFs \\ - --variant $input_command \\ + --variant ${input_command} \\ --output ${prefix}.vcf.gz \\ - --reference $fasta \\ - $interval_command \\ - $dbsnp_command \\ + --reference ${fasta} \\ + ${interval_command} \\ + ${dbsnp_command} \\ --tmp-dir . \\ - $args + ${args} cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/gatk4/getpileupsummaries/main.nf b/modules/nf-core/gatk4/getpileupsummaries/main.nf index 41fd31281..ba2394de9 100644 --- a/modules/nf-core/gatk4/getpileupsummaries/main.nf +++ b/modules/nf-core/gatk4/getpileupsummaries/main.nf @@ -1,23 +1,23 @@ process GATK4_GETPILEUPSUMMARIES { - tag "$meta.id" + tag "${meta.id}" label 'process_low' 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/b2/b28daf5d9bb2f0d129dcad1b7410e0dd8a9b087aaf3ec7ced929b1f57624ad98/data': - 'community.wave.seqera.io/library/gatk4_gcnvkernel:e48d414933d188cd' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/b2/b28daf5d9bb2f0d129dcad1b7410e0dd8a9b087aaf3ec7ced929b1f57624ad98/data' + : 'community.wave.seqera.io/library/gatk4_gcnvkernel:e48d414933d188cd'}" input: tuple val(meta), path(input), path(index), path(intervals) tuple val(meta2), path(fasta) tuple val(meta3), path(fai) tuple val(meta4), path(dict) - path variants - path variants_tbi + path variants + path variants_tbi output: tuple val(meta), path('*.pileups.table'), emit: table - path "versions.yml" , emit: versions + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when @@ -25,25 +25,26 @@ process GATK4_GETPILEUPSUMMARIES { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def interval_command = intervals ? "--intervals $intervals" : "--intervals $variants" - def reference_command = fasta ? "--reference $fasta" : '' + def interval_command = intervals ? "--intervals ${intervals}" : "--intervals ${variants}" + def reference_command = fasta ? "--reference ${fasta}" : '' def avail_mem = 3072 if (!task.memory) { - log.info '[GATK GetPileupSummaries] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.' - } else { - avail_mem = (task.memory.mega*0.8).intValue() + log.info('[GATK GetPileupSummaries] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.') + } + else { + avail_mem = (task.memory.mega * 0.8).intValue() } """ gatk --java-options "-Xmx${avail_mem}M -XX:-UsePerfData" \\ GetPileupSummaries \\ - --input $input \\ - --variant $variants \\ + --input ${input} \\ + --variant ${variants} \\ --output ${prefix}.pileups.table \\ - $reference_command \\ - $interval_command \\ + ${reference_command} \\ + ${interval_command} \\ --tmp-dir . \\ - $args + ${args} cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/gatk4/haplotypecaller/main.nf b/modules/nf-core/gatk4/haplotypecaller/main.nf index 1ef76789d..3ab550262 100644 --- a/modules/nf-core/gatk4/haplotypecaller/main.nf +++ b/modules/nf-core/gatk4/haplotypecaller/main.nf @@ -1,14 +1,14 @@ process GATK4_HAPLOTYPECALLER { - tag "$meta.id" + tag "${meta.id}" label 'process_low' 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/b2/b28daf5d9bb2f0d129dcad1b7410e0dd8a9b087aaf3ec7ced929b1f57624ad98/data': - 'community.wave.seqera.io/library/gatk4_gcnvkernel:e48d414933d188cd' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/b2/b28daf5d9bb2f0d129dcad1b7410e0dd8a9b087aaf3ec7ced929b1f57624ad98/data' + : 'community.wave.seqera.io/library/gatk4_gcnvkernel:e48d414933d188cd'}" input: - tuple val(meta), path(input), path(input_index), path(intervals), path(dragstr_model) + tuple val(meta), path(input), path(input_index), path(intervals), path(dragstr_model) tuple val(meta2), path(fasta) tuple val(meta3), path(fai) tuple val(meta4), path(dict) @@ -16,10 +16,10 @@ process GATK4_HAPLOTYPECALLER { tuple val(meta6), path(dbsnp_tbi) output: - tuple val(meta), path("*.vcf.gz") , emit: vcf - tuple val(meta), path("*.tbi") , optional:true, emit: tbi - tuple val(meta), path("*.realigned.bam"), optional:true, emit: bam - path "versions.yml" , emit: versions + tuple val(meta), path("*.vcf.gz"), emit: vcf + tuple val(meta), path("*.tbi"), emit: tbi, optional: true + tuple val(meta), path("*.realigned.bam"), emit: bam, optional: true + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when @@ -27,30 +27,31 @@ process GATK4_HAPLOTYPECALLER { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def dbsnp_command = dbsnp ? "--dbsnp $dbsnp" : "" - def interval_command = intervals ? "--intervals $intervals" : "" - def dragstr_command = dragstr_model ? "--dragstr-params-path $dragstr_model" : "" + def dbsnp_command = dbsnp ? "--dbsnp ${dbsnp}" : "" + def interval_command = intervals ? "--intervals ${intervals}" : "" + def dragstr_command = dragstr_model ? "--dragstr-params-path ${dragstr_model}" : "" def bamout_command = args.contains("--bam-writer-type") ? "--bam-output ${prefix.replaceAll('.g\\s*$', '')}.realigned.bam" : "" def avail_mem = 3072 if (!task.memory) { - log.info '[GATK HaplotypeCaller] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.' - } else { - avail_mem = (task.memory.mega*0.8).intValue() + log.info('[GATK HaplotypeCaller] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.') + } + else { + avail_mem = (task.memory.mega * 0.8).intValue() } """ gatk --java-options "-Xmx${avail_mem}M -XX:-UsePerfData" \\ HaplotypeCaller \\ - --input $input \\ + --input ${input} \\ --output ${prefix}.vcf.gz \\ - --reference $fasta \\ + --reference ${fasta} \\ --native-pair-hmm-threads ${task.cpus} \\ - $dbsnp_command \\ - $interval_command \\ - $dragstr_command \\ - $bamout_command \\ + ${dbsnp_command} \\ + ${interval_command} \\ + ${dragstr_command} \\ + ${bamout_command} \\ --tmp-dir . \\ - $args + ${args} cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/gatk4/intervallisttobed/main.nf b/modules/nf-core/gatk4/intervallisttobed/main.nf index a7b05edbf..bbd1fb109 100644 --- a/modules/nf-core/gatk4/intervallisttobed/main.nf +++ b/modules/nf-core/gatk4/intervallisttobed/main.nf @@ -12,7 +12,7 @@ process GATK4_INTERVALLISTTOBED { output: tuple val(meta), path("${prefix}.bed"), emit: bed - path "versions.yml", emit: versions + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when diff --git a/modules/nf-core/gatk4/learnreadorientationmodel/main.nf b/modules/nf-core/gatk4/learnreadorientationmodel/main.nf index c3169fda5..9c4e24aeb 100644 --- a/modules/nf-core/gatk4/learnreadorientationmodel/main.nf +++ b/modules/nf-core/gatk4/learnreadorientationmodel/main.nf @@ -12,7 +12,7 @@ process GATK4_LEARNREADORIENTATIONMODEL { output: tuple val(meta), path("*.tar.gz"), emit: artifactprior - path "versions.yml", emit: versions + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when diff --git a/modules/nf-core/gatk4/markduplicates/main.nf b/modules/nf-core/gatk4/markduplicates/main.nf index f4bd896bf..5fb161b4f 100644 --- a/modules/nf-core/gatk4/markduplicates/main.nf +++ b/modules/nf-core/gatk4/markduplicates/main.nf @@ -13,12 +13,12 @@ process GATK4_MARKDUPLICATES { path fasta_fai output: - tuple val(meta), path("*cram"), emit: cram, optional: true - tuple val(meta), path("*bam"), emit: bam, optional: true - tuple val(meta), path("*.crai"), emit: crai, optional: true - tuple val(meta), path("*.bai"), emit: bai, optional: true + tuple val(meta), path("*cram"), emit: cram, optional: true + tuple val(meta), path("*bam"), emit: bam, optional: true + tuple val(meta), path("*.crai"), emit: crai, optional: true + tuple val(meta), path("*.bai"), emit: bai, optional: true tuple val(meta), path("*.metrics"), emit: metrics - path "versions.yml", emit: versions + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when diff --git a/modules/nf-core/gatk4/mergemutectstats/main.nf b/modules/nf-core/gatk4/mergemutectstats/main.nf index e6ddc6994..baa6516d0 100644 --- a/modules/nf-core/gatk4/mergemutectstats/main.nf +++ b/modules/nf-core/gatk4/mergemutectstats/main.nf @@ -1,18 +1,18 @@ process GATK4_MERGEMUTECTSTATS { - tag "$meta.id" + tag "${meta.id}" label 'process_low' 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/b2/b28daf5d9bb2f0d129dcad1b7410e0dd8a9b087aaf3ec7ced929b1f57624ad98/data': - 'community.wave.seqera.io/library/gatk4_gcnvkernel:e48d414933d188cd' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/b2/b28daf5d9bb2f0d129dcad1b7410e0dd8a9b087aaf3ec7ced929b1f57624ad98/data' + : 'community.wave.seqera.io/library/gatk4_gcnvkernel:e48d414933d188cd'}" input: tuple val(meta), path(stats) output: tuple val(meta), path("*.vcf.gz.stats"), emit: stats - path "versions.yml" , emit: versions + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when @@ -20,21 +20,22 @@ process GATK4_MERGEMUTECTSTATS { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def input_list = stats.collect{ "--stats ${it}"}.join(' ') + def input_list = stats.collect { "--stats ${it}" }.join(' ') def avail_mem = 3072 if (!task.memory) { - log.info '[GATK MergeMutectStats] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.' - } else { - avail_mem = (task.memory.mega*0.8).intValue() + log.info('[GATK MergeMutectStats] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.') + } + else { + avail_mem = (task.memory.mega * 0.8).intValue() } """ gatk --java-options "-Xmx${avail_mem}M -XX:-UsePerfData" \\ MergeMutectStats \\ - $input_list \\ + ${input_list} \\ --output ${prefix}.vcf.gz.stats \\ --tmp-dir . \\ - $args + ${args} cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/gatk4/mutect2/main.nf b/modules/nf-core/gatk4/mutect2/main.nf index 756dfca94..4448e2dd6 100644 --- a/modules/nf-core/gatk4/mutect2/main.nf +++ b/modules/nf-core/gatk4/mutect2/main.nf @@ -1,28 +1,28 @@ process GATK4_MUTECT2 { - tag "$meta.id" + tag "${meta.id}" label 'process_low' 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/b2/b28daf5d9bb2f0d129dcad1b7410e0dd8a9b087aaf3ec7ced929b1f57624ad98/data': - 'community.wave.seqera.io/library/gatk4_gcnvkernel:e48d414933d188cd' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/b2/b28daf5d9bb2f0d129dcad1b7410e0dd8a9b087aaf3ec7ced929b1f57624ad98/data' + : 'community.wave.seqera.io/library/gatk4_gcnvkernel:e48d414933d188cd'}" input: tuple val(meta), path(input), path(input_index), path(intervals) tuple val(meta2), path(fasta) tuple val(meta3), path(fai) tuple val(meta4), path(dict) - path(germline_resource) - path(germline_resource_tbi) - path(panel_of_normals) - path(panel_of_normals_tbi) + path germline_resource + path germline_resource_tbi + path panel_of_normals + path panel_of_normals_tbi output: - tuple val(meta), path("*.vcf.gz") , emit: vcf - tuple val(meta), path("*.tbi") , emit: tbi - tuple val(meta), path("*.stats") , emit: stats - tuple val(meta), path("*.f1r2.tar.gz"), optional:true, emit: f1r2 - path "versions.yml" , emit: versions + tuple val(meta), path("*.vcf.gz"), emit: vcf + tuple val(meta), path("*.tbi"), emit: tbi + tuple val(meta), path("*.stats"), emit: stats + tuple val(meta), path("*.f1r2.tar.gz"), emit: f1r2, optional: true + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when @@ -30,28 +30,29 @@ process GATK4_MUTECT2 { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def inputs = input.collect{ "--input $it"}.join(" ") - def interval_command = intervals ? "--intervals $intervals" : "" - def pon_command = panel_of_normals ? "--panel-of-normals $panel_of_normals" : "" - def gr_command = germline_resource ? "--germline-resource $germline_resource" : "" + def inputs = input.collect { "--input ${it}" }.join(" ") + def interval_command = intervals ? "--intervals ${intervals}" : "" + def pon_command = panel_of_normals ? "--panel-of-normals ${panel_of_normals}" : "" + def gr_command = germline_resource ? "--germline-resource ${germline_resource}" : "" def avail_mem = 3072 if (!task.memory) { - log.info '[GATK Mutect2] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.' - } else { - avail_mem = (task.memory.mega*0.8).intValue() + log.info('[GATK Mutect2] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.') + } + else { + avail_mem = (task.memory.mega * 0.8).intValue() } """ gatk --java-options "-Xmx${avail_mem}M -XX:-UsePerfData" \\ Mutect2 \\ - $inputs \\ + ${inputs} \\ --output ${prefix}.vcf.gz \\ - --reference $fasta \\ - $pon_command \\ - $gr_command \\ - $interval_command \\ + --reference ${fasta} \\ + ${pon_command} \\ + ${gr_command} \\ + ${interval_command} \\ --tmp-dir . \\ - $args + ${args} cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/gatk4/variantrecalibrator/main.nf b/modules/nf-core/gatk4/variantrecalibrator/main.nf index 3c6048f4b..bd8122bc4 100644 --- a/modules/nf-core/gatk4/variantrecalibrator/main.nf +++ b/modules/nf-core/gatk4/variantrecalibrator/main.nf @@ -1,27 +1,27 @@ process GATK4_VARIANTRECALIBRATOR { - tag "$meta.id" + tag "${meta.id}" label 'process_low' 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/b2/b28daf5d9bb2f0d129dcad1b7410e0dd8a9b087aaf3ec7ced929b1f57624ad98/data': - 'community.wave.seqera.io/library/gatk4_gcnvkernel:e48d414933d188cd' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/b2/b28daf5d9bb2f0d129dcad1b7410e0dd8a9b087aaf3ec7ced929b1f57624ad98/data' + : 'community.wave.seqera.io/library/gatk4_gcnvkernel:e48d414933d188cd'}" input: - tuple val(meta), path(vcf), path(tbi) // input vcf and tbi of variants to recalibrate - path resource_vcf // resource vcf - path resource_tbi // resource tbi - val labels // string (or list of strings) containing dedicated resource labels already formatted with '--resource:' tag - path fasta - path fai - path dict + tuple val(meta), path(vcf), path(tbi) + path resource_vcf + path resource_tbi + val labels + path fasta + path fai + path dict output: - tuple val(meta), path("*.recal") , emit: recal - tuple val(meta), path("*.idx") , emit: idx + tuple val(meta), path("*.recal"), emit: recal + tuple val(meta), path("*.idx"), emit: idx tuple val(meta), path("*.tranches"), emit: tranches - tuple val(meta), path("*plots.R") , emit: plots, optional:true - path "versions.yml" , emit: versions + tuple val(meta), path("*plots.R"), emit: plots, optional: true + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when @@ -29,25 +29,26 @@ process GATK4_VARIANTRECALIBRATOR { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def reference_command = fasta ? "--reference $fasta " : '' + def reference_command = fasta ? "--reference ${fasta} " : '' def labels_command = labels.join(' ') def avail_mem = 3072 if (!task.memory) { - log.info '[GATK VariantRecalibrator] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.' - } else { - avail_mem = (task.memory.mega*0.8).intValue() + log.info('[GATK VariantRecalibrator] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.') + } + else { + avail_mem = (task.memory.mega * 0.8).intValue() } """ gatk --java-options "-Xmx${avail_mem}M -XX:-UsePerfData" \\ VariantRecalibrator \\ - --variant $vcf \\ + --variant ${vcf} \\ --output ${prefix}.recal \\ --tranches-file ${prefix}.tranches \\ - $reference_command \\ + ${reference_command} \\ --tmp-dir . \\ - $labels_command \\ - $args + ${labels_command} \\ + ${args} cat <<-END_VERSIONS > versions.yml "${task.process}": @@ -56,7 +57,7 @@ process GATK4_VARIANTRECALIBRATOR { """ stub: - prefix = task.ext.prefix ?: "${meta.id}" + prefix = task.ext.prefix ?: "${meta.id}" """ touch ${prefix}.recal touch ${prefix}.idx From 397e36aec5298973ab1d70d4064812ca65a15ae5 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Mon, 18 Aug 2025 19:03:55 +0200 Subject: [PATCH 25/34] fix applybqsr --- conf/modules/recalibrate.config | 16 +- modules/nf-core/gatk4/applybqsr/main.nf | 6 +- modules/nf-core/gatk4spark/applybqsr/main.nf | 5 +- subworkflows/local/bam_applybqsr/main.nf | 37 +- .../local/bam_applybqsr_spark/main.nf | 37 +- .../local/fastq_preprocess_gatk/main.nf | 357 +++++++++--------- .../local/samplesheet_to_channel/main.nf | 4 +- 7 files changed, 267 insertions(+), 195 deletions(-) diff --git a/conf/modules/recalibrate.config b/conf/modules/recalibrate.config index 8bcda608c..7ea13dcf6 100644 --- a/conf/modules/recalibrate.config +++ b/conf/modules/recalibrate.config @@ -24,12 +24,18 @@ process { "${meta.id}.recal." + (params.save_output_as_bam ? 'bam' : 'cram') : "${meta.id}_${intervals.baseName}.recal." + (params.save_output_as_bam ? 'bam' : 'cram') } - publishDir = [ + publishDir = [[ mode: params.publish_dir_mode, path: { "${params.outdir}/preprocessing/" }, - pattern: "*cram", + pattern: "*recal.cram", saveAs: { !params.save_output_as_bam ? meta.num_intervals > 1 ? null : "recalibrated/${meta.id}/${it}" : null } - ] + ], + [ + mode: params.publish_dir_mode, + path: { "${params.outdir}/preprocessing/" }, + pattern: "*{recal.bam,recal.bai}", + saveAs: { params.save_output_as_bam ? meta.num_intervals > 1 ? null : "recalibrated/${meta.id}/${it}" : null } + ]] } if ((params.step == 'mapping' || params.step == 'markduplicates'|| params.step == 'prepare_recalibration'|| params.step == 'recalibrate') && (!(params.skip_tools && params.skip_tools.split(',').contains('baserecalibrator')))) { @@ -37,7 +43,7 @@ process { ext.prefix = { "${meta.id}.recal" } ext.when = { meta.num_intervals > 1 } publishDir = [ - mode: params.publish_dir_mode, + mode: params.publish_dir_mode, path: { "${params.outdir}/preprocessing/recalibrated/${meta.id}/" }, pattern: "*cram", saveAs: { !params.save_output_as_bam ? it : null } @@ -46,7 +52,7 @@ process { withName: 'NFCORE_SAREK:SAREK:FASTQ_PREPROCESS_GATK:(BAM_APPLYBQSR|BAM_APPLYBQSR_SPARK):CRAM_MERGE_INDEX_SAMTOOLS:INDEX_CRAM' { publishDir = [ - mode: params.publish_dir_mode, + mode: params.publish_dir_mode, path: { "${params.outdir}/preprocessing/recalibrated/${meta.id}/" }, pattern: "*{recal.cram,recal.cram.crai}", saveAs: { !params.save_output_as_bam ? it : null } diff --git a/modules/nf-core/gatk4/applybqsr/main.nf b/modules/nf-core/gatk4/applybqsr/main.nf index 14ba3135e..1aae27685 100644 --- a/modules/nf-core/gatk4/applybqsr/main.nf +++ b/modules/nf-core/gatk4/applybqsr/main.nf @@ -14,9 +14,10 @@ process GATK4_APPLYBQSR { path dict output: - tuple val(meta), path("*.bam"), emit: bam, 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 - path "versions.yml", emit: versions + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when @@ -54,6 +55,7 @@ process GATK4_APPLYBQSR { def prefix = task.ext.prefix ?: "${meta.id}.cram" """ touch ${prefix} + touch \${prefix%m}i cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/gatk4spark/applybqsr/main.nf b/modules/nf-core/gatk4spark/applybqsr/main.nf index 89ffee1b3..72dc228cc 100644 --- a/modules/nf-core/gatk4spark/applybqsr/main.nf +++ b/modules/nf-core/gatk4spark/applybqsr/main.nf @@ -14,9 +14,10 @@ process GATK4SPARK_APPLYBQSR { path dict output: - tuple val(meta), path("*.bam"), emit: bam, 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 - path "versions.yml", emit: versions + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when diff --git a/subworkflows/local/bam_applybqsr/main.nf b/subworkflows/local/bam_applybqsr/main.nf index 49b784bcf..0f362b24f 100644 --- a/subworkflows/local/bam_applybqsr/main.nf +++ b/subworkflows/local/bam_applybqsr/main.nf @@ -4,8 +4,9 @@ // For all modules here: // A when clause condition is defined in the conf/modules.config to determine if the module should be run -include { GATK4_APPLYBQSR } from '../../../modules/nf-core/gatk4/applybqsr' +include { BAM_MERGE_INDEX_SAMTOOLS } from '../bam_merge_index_samtools' include { CRAM_MERGE_INDEX_SAMTOOLS } from '../cram_merge_index_samtools' +include { GATK4_APPLYBQSR } from '../../../modules/nf-core/gatk4/applybqsr' workflow BAM_APPLYBQSR { take: @@ -17,6 +18,8 @@ workflow BAM_APPLYBQSR { main: versions = Channel.empty() + bam_applybqsr_single = Channel.empty() + bam_to_merge = Channel.empty() // Combine cram and intervals for spread and gather strategy // Move num_intervals to meta map @@ -32,6 +35,34 @@ workflow BAM_APPLYBQSR { dict.map { _meta, dict_ -> [dict_] }, ) + // FOR BAMs + if (params.save_output_as_bam) { + + bam_applybqsr_out = GATK4_APPLYBQSR.out.bam + .join(GATK4_APPLYBQSR.out.bai, failOnDuplicate: true, failOnMismatch: true) + .branch { + single: it[0].num_intervals == 1 + multiple: it[0].num_intervals > 1 + } + + bam_applybqsr_single = bam_applybqsr_out.single + + // For multiple intervals, gather and merge the recalibrated cram files + bam_to_merge = bam_applybqsr_out.multiple + .map { meta, bam_, _bai -> [groupKey(meta, meta.num_intervals), bam_] } + .groupTuple() + } + + // Merge and index the recalibrated cram files + BAM_MERGE_INDEX_SAMTOOLS(bam_to_merge) + + // Combine single and merged multiple bam and index files, removing num_intervals field + bam_recal = bam_applybqsr_single + .mix(BAM_MERGE_INDEX_SAMTOOLS.out.bam_bai) + .map { meta, bam, bai -> [meta - meta.subMap('num_intervals'), bam, bai] } + + // FOR CRAMs + // Gather the recalibrated cram files cram_to_merge = GATK4_APPLYBQSR.out.cram.map { meta, cram_ -> [groupKey(meta, meta.num_intervals), cram_] }.groupTuple() @@ -46,10 +77,12 @@ workflow BAM_APPLYBQSR { cram_recal = CRAM_MERGE_INDEX_SAMTOOLS.out.cram_crai.map { meta, cram_, crai -> [meta - meta.subMap('num_intervals'), cram_, crai] } // Gather versions of all tools used - versions = versions.mix(GATK4_APPLYBQSR.out.versions) + versions = versions.mix(BAM_MERGE_INDEX_SAMTOOLS.out.versions) versions = versions.mix(CRAM_MERGE_INDEX_SAMTOOLS.out.versions) + versions = versions.mix(GATK4_APPLYBQSR.out.versions) emit: + bam = bam_recal // channel: [ meta, bam, bai ] cram = cram_recal // channel: [ meta, cram, crai ] versions // channel: [ versions.yml ] } diff --git a/subworkflows/local/bam_applybqsr_spark/main.nf b/subworkflows/local/bam_applybqsr_spark/main.nf index 579212cf8..3503df18b 100644 --- a/subworkflows/local/bam_applybqsr_spark/main.nf +++ b/subworkflows/local/bam_applybqsr_spark/main.nf @@ -4,8 +4,9 @@ // For all modules here: // A when clause condition is defined in the conf/modules.config to determine if the module should be run -include { GATK4SPARK_APPLYBQSR } from '../../../modules/nf-core/gatk4spark/applybqsr' +include { BAM_MERGE_INDEX_SAMTOOLS } from '../bam_merge_index_samtools' include { CRAM_MERGE_INDEX_SAMTOOLS } from '../cram_merge_index_samtools' +include { GATK4SPARK_APPLYBQSR } from '../../../modules/nf-core/gatk4spark/applybqsr' workflow BAM_APPLYBQSR_SPARK { take: @@ -17,6 +18,8 @@ workflow BAM_APPLYBQSR_SPARK { main: versions = Channel.empty() + bam_applybqsr_single = Channel.empty() + bam_to_merge = Channel.empty() // Combine cram and intervals for spread and gather strategy // Move num_intervals to meta map @@ -32,6 +35,34 @@ workflow BAM_APPLYBQSR_SPARK { dict.map { _meta, dict_ -> [dict_] }, ) + // FOR BAMs + if (params.save_output_as_bam) { + + bam_applybqsr_out = GATK4SPARK_APPLYBQSR.out.bam + .join(GATK4SPARK_APPLYBQSR.out.bai, failOnDuplicate: true, failOnMismatch: true) + .branch { + single: it[0].num_intervals == 1 + multiple: it[0].num_intervals > 1 + } + + bam_applybqsr_single = bam_applybqsr_out.single + + // For multiple intervals, gather and merge the recalibrated cram files + bam_to_merge = bam_applybqsr_out.multiple + .map { meta, bam_, _bai -> [groupKey(meta, meta.num_intervals), bam_] } + .groupTuple() + } + + // Merge and index the recalibrated cram files + BAM_MERGE_INDEX_SAMTOOLS(bam_to_merge) + + // Combine single and merged multiple bam and index files, removing num_intervals field + bam_recal = bam_applybqsr_single + .mix(BAM_MERGE_INDEX_SAMTOOLS.out.bam_bai) + .map { meta, bam, bai -> [meta - meta.subMap('num_intervals'), bam, bai] } + + // FOR CRAMs + // Gather the recalibrated cram files cram_to_merge = GATK4SPARK_APPLYBQSR.out.cram.map { meta, cram_ -> [groupKey(meta, meta.num_intervals), cram_] }.groupTuple() @@ -46,10 +77,12 @@ workflow BAM_APPLYBQSR_SPARK { cram_recal = CRAM_MERGE_INDEX_SAMTOOLS.out.cram_crai.map { meta, cram_, crai -> [meta - meta.subMap('num_intervals'), cram_, crai] } // Gather versions of all tools used - versions = versions.mix(GATK4SPARK_APPLYBQSR.out.versions) + versions = versions.mix(BAM_MERGE_INDEX_SAMTOOLS.out.versions) versions = versions.mix(CRAM_MERGE_INDEX_SAMTOOLS.out.versions) + versions = versions.mix(GATK4SPARK_APPLYBQSR.out.versions) emit: + bam = bam_recal // channel: [ meta, bam, bai ] cram = cram_recal // channel: [ meta, cram, crai ] versions // channel: [ versions.yml ] } diff --git a/subworkflows/local/fastq_preprocess_gatk/main.nf b/subworkflows/local/fastq_preprocess_gatk/main.nf index e87329b9e..7ffc5ec75 100644 --- a/subworkflows/local/fastq_preprocess_gatk/main.nf +++ b/subworkflows/local/fastq_preprocess_gatk/main.nf @@ -1,65 +1,41 @@ -// Create samplesheets to restart from different steps -include { CHANNEL_ALIGN_CREATE_CSV } from '../../../subworkflows/local/channel_align_create_csv/main' -include { CHANNEL_MARKDUPLICATES_CREATE_CSV } from '../../../subworkflows/local/channel_markduplicates_create_csv/main' -include { CHANNEL_BASERECALIBRATOR_CREATE_CSV } from '../../../subworkflows/local/channel_baserecalibrator_create_csv/main' -include { CHANNEL_APPLYBQSR_CREATE_CSV } from '../../../subworkflows/local/channel_applybqsr_create_csv/main' - -// Convert BAM files to FASTQ files -include { BAM_CONVERT_SAMTOOLS as CONVERT_FASTQ_UMI } from '../../../subworkflows/local/bam_convert_samtools/main' - -// TRIM/SPLIT FASTQ Files -include { FASTP } from '../../../modules/nf-core/fastp/main' - -// Create umi consensus bams from fastq -include { FASTQ_CREATE_UMI_CONSENSUS_FGBIO } from '../../../subworkflows/local/fastq_create_umi_consensus_fgbio/main' - -// Map input reads to reference genome -include { FASTQ_ALIGN } from '../../../subworkflows/local/fastq_align/main' - -// Merge and index BAM files (optional) -include { BAM_MERGE_INDEX_SAMTOOLS } from '../../../subworkflows/local/bam_merge_index_samtools/main' - -// Convert BAM files -include { SAMTOOLS_CONVERT as BAM_TO_CRAM_MAPPING } from '../../../modules/nf-core/samtools/convert/main' - -// Convert CRAM files (optional) -include { SAMTOOLS_CONVERT as CRAM_TO_BAM } from '../../../modules/nf-core/samtools/convert/main' -include { SAMTOOLS_CONVERT as CRAM_TO_BAM_RECAL } from '../../../modules/nf-core/samtools/convert/main' - -// Mark Duplicates (+QC) -include { BAM_MARKDUPLICATES } from '../../../subworkflows/local/bam_markduplicates/main' -include { BAM_MARKDUPLICATES_SPARK } from '../../../subworkflows/local/bam_markduplicates_spark/main' -include { BAM_SENTIEON_DEDUP } from '../../../subworkflows/local/bam_sentieon_dedup/main' - -// QC on CRAM -include { CRAM_QC_MOSDEPTH_SAMTOOLS as CRAM_QC_NO_MD } from '../../../subworkflows/local/cram_qc_mosdepth_samtools/main' - -// Create recalibration tables -include { BAM_BASERECALIBRATOR } from '../../../subworkflows/local/bam_baserecalibrator/main' -include { BAM_BASERECALIBRATOR_SPARK } from '../../../subworkflows/local/bam_baserecalibrator_spark/main' - -// Create recalibrated cram files to use for variant calling (+QC) -include { BAM_APPLYBQSR } from '../../../subworkflows/local/bam_applybqsr/main' -include { BAM_APPLYBQSR_SPARK } from '../../../subworkflows/local/bam_applybqsr_spark/main' +include { BAM_APPLYBQSR } from '../../../subworkflows/local/bam_applybqsr' +include { BAM_APPLYBQSR_SPARK } from '../../../subworkflows/local/bam_applybqsr_spark' +include { BAM_BASERECALIBRATOR } from '../../../subworkflows/local/bam_baserecalibrator' +include { BAM_BASERECALIBRATOR_SPARK } from '../../../subworkflows/local/bam_baserecalibrator_spark' +include { BAM_CONVERT_SAMTOOLS as CONVERT_FASTQ_UMI } from '../../../subworkflows/local/bam_convert_samtools' +include { BAM_MARKDUPLICATES } from '../../../subworkflows/local/bam_markduplicates' +include { BAM_MARKDUPLICATES_SPARK } from '../../../subworkflows/local/bam_markduplicates_spark' +include { BAM_MERGE_INDEX_SAMTOOLS } from '../../../subworkflows/local/bam_merge_index_samtools' +include { BAM_SENTIEON_DEDUP } from '../../../subworkflows/local/bam_sentieon_dedup' +include { CHANNEL_ALIGN_CREATE_CSV } from '../../../subworkflows/local/channel_align_create_csv' +include { CHANNEL_APPLYBQSR_CREATE_CSV } from '../../../subworkflows/local/channel_applybqsr_create_csv' +include { CHANNEL_BASERECALIBRATOR_CREATE_CSV } from '../../../subworkflows/local/channel_baserecalibrator_create_csv' +include { CHANNEL_MARKDUPLICATES_CREATE_CSV } from '../../../subworkflows/local/channel_markduplicates_create_csv' +include { CRAM_QC_MOSDEPTH_SAMTOOLS as CRAM_QC_NO_MD } from '../../../subworkflows/local/cram_qc_mosdepth_samtools' +include { FASTP } from '../../../modules/nf-core/fastp' +include { FASTQ_ALIGN } from '../../../subworkflows/local/fastq_align' +include { FASTQ_CREATE_UMI_CONSENSUS_FGBIO } from '../../../subworkflows/local/fastq_create_umi_consensus_fgbio' +include { SAMTOOLS_CONVERT as BAM_TO_CRAM_MAPPING } from '../../../modules/nf-core/samtools/convert' +include { SAMTOOLS_CONVERT as CRAM_TO_BAM } from '../../../modules/nf-core/samtools/convert' workflow FASTQ_PREPROCESS_GATK { take: - input_fastq - input_sample - dict - fasta - fasta_fai - index_alignment - intervals_and_num_intervals - intervals_for_preprocessing - known_sites_indels - known_sites_indels_tbi + input_fastq + input_sample + dict + fasta + fasta_fai + index_alignment + intervals_and_num_intervals + intervals_for_preprocessing + known_sites_indels + known_sites_indels_tbi main: // To gather all QC reports for MultiQC - reports = Channel.empty() - versions = Channel.empty() + reports = Channel.empty() + versions = Channel.empty() // PREPROCESSING @@ -76,26 +52,30 @@ workflow FASTQ_PREPROCESS_GATK { fasta, fasta_fai, index_alignment, - params.group_by_umi_strategy) + params.group_by_umi_strategy, + ) - bam_converted_from_fastq = FASTQ_CREATE_UMI_CONSENSUS_FGBIO.out.consensusbam.map{ meta, bam -> [ meta, bam, [] ] } + bam_converted_from_fastq = FASTQ_CREATE_UMI_CONSENSUS_FGBIO.out.consensusbam.map { meta, bam -> [meta, bam, []] } // Convert back to fastq for further preprocessing // fasta are not needed when converting bam to fastq -> [ id:"fasta" ], [] // No need for fasta.fai -> [] - interleave_input = false // Currently don't allow interleaved input + interleave_input = false + // Currently don't allow interleaved input CONVERT_FASTQ_UMI( bam_converted_from_fastq, - [ [ id:"fasta" ], [] ], // fasta - [ [ id:'null' ], [] ], // fasta_fai - interleave_input) + [[id: "fasta"], []], + [[id: 'null'], []], + interleave_input, + ) reads_for_fastp = CONVERT_FASTQ_UMI.out.reads // Gather used softwares versions versions = versions.mix(CONVERT_FASTQ_UMI.out.versions) versions = versions.mix(FASTQ_CREATE_UMI_CONSENSUS_FGBIO.out.versions) - } else { + } + else { reads_for_fastp = input_fastq } @@ -106,25 +86,30 @@ workflow FASTQ_PREPROCESS_GATK { save_merged = false FASTP( reads_for_fastp, - [], // we are not using any adapter fastas at the moment - false, // we don't use discard_trimmed_pass at the moment + [], + false, save_trimmed_fail, - save_merged + save_merged, ) - reports = reports.mix(FASTP.out.json.collect{ _meta, json -> json }) - reports = reports.mix(FASTP.out.html.collect{ _meta, html -> html }) + reports = reports.mix(FASTP.out.json.collect { _meta, json -> json }) + reports = reports.mix(FASTP.out.html.collect { _meta, html -> html }) if (params.split_fastq) { - reads_for_alignment = FASTP.out.reads.map{ meta, reads -> - def read_files = reads.sort(false) { a,b -> a.getName().tokenize('.')[0] <=> b.getName().tokenize('.')[0] }.collate(2) - [ meta + [ n_fastq: read_files.size() ], read_files ] - }.transpose() - } else reads_for_alignment = FASTP.out.reads + reads_for_alignment = FASTP.out.reads + .map { meta, reads -> + def read_files = reads.sort(false) { a, b -> a.getName().tokenize('.')[0] <=> b.getName().tokenize('.')[0] }.collate(2) + [meta + [n_fastq: read_files.size()], read_files] + } + .transpose() + } + else { + reads_for_alignment = FASTP.out.reads + } versions = versions.mix(FASTP.out.versions) - - } else { + } + else { reads_for_alignment = reads_for_fastp } @@ -132,19 +117,24 @@ workflow FASTQ_PREPROCESS_GATK { // First, we must calculate number of lanes for each sample (meta.n_fastq) // This is needed to group reads from the same sample together using groupKey to avoid stalling the workflow // when reads from different samples are mixed together - reads_for_alignment.map { meta, reads -> - [ meta.subMap('patient', 'sample', 'sex', 'status'), reads ] + reads_for_alignment + .map { meta, reads -> + [meta.subMap('patient', 'sample', 'sex', 'status'), reads] } .groupTuple() .map { meta, reads -> - meta + [ n_fastq: reads.size() ] // We can drop the FASTQ files now that we know how many there are + meta + [n_fastq: reads.size()] } .set { reads_grouping_key } - reads_for_alignment = reads_for_alignment.map{ meta, reads -> + reads_for_alignment = reads_for_alignment.map { meta, reads -> // Update meta.id to meta.sample no multiple lanes or splitted fastqs - if (meta.size * meta.num_lanes == 1) [ meta + [ id:meta.sample ], reads ] - else [ meta, reads ] + if (meta.size * meta.num_lanes == 1) { + [meta + [id: meta.sample], reads] + } + else { + [meta, reads] + } } // reads will be sorted @@ -155,58 +145,48 @@ workflow FASTQ_PREPROCESS_GATK { // Use groupKey to make sure that the correct group can advance as soon as it is complete // and not stall the workflow until all reads from all channels are mapped bam_mapped = FASTQ_ALIGN.out.bam - .combine(reads_grouping_key) // Creates a tuple of [ meta, bam, reads_grouping_key ] + .combine(reads_grouping_key) .filter { meta1, _bam, meta2 -> meta1.sample == meta2.sample } - // Add n_fastq and other variables to meta .map { meta1, bam, meta2 -> - [ meta1 + meta2, bam ] + [meta1 + meta2, bam] } - // Manipulate meta map to remove old fields and add new ones .map { meta, bam -> - [ meta - meta.subMap('id', 'read_group', 'data_type', 'num_lanes', 'read_group', 'size', 'sample_lane_id') + [ data_type: 'bam', id: meta.sample ], bam ] + [meta - meta.subMap('id', 'read_group', 'data_type', 'num_lanes', 'read_group', 'size', 'sample_lane_id') + [data_type: 'bam', id: meta.sample], bam] } - // Create groupKey from meta map .map { meta, bam -> - [ groupKey( meta, meta.n_fastq), bam ] + [groupKey(meta, meta.n_fastq), bam] } - // Group .groupTuple() bai_mapped = FASTQ_ALIGN.out.bai - .combine(reads_grouping_key) // Creates a tuple of [ meta, bai, reads_grouping_key ] + .combine(reads_grouping_key) .filter { meta1, _bai, meta2 -> meta1.sample == meta2.sample } - // Add n_fastq and other variables to meta .map { meta1, bai, meta2 -> - [ meta1 + meta2, bai ] + [meta1 + meta2, bai] } - // Manipulate meta map to remove old fields and add new ones .map { meta, bai -> - [ meta - meta.subMap('id', 'read_group', 'data_type', 'num_lanes', 'read_group', 'size', 'sample_lane_id') + [ data_type: 'bai', id: meta.sample ], bai ] + [meta - meta.subMap('id', 'read_group', 'data_type', 'num_lanes', 'read_group', 'size', 'sample_lane_id') + [data_type: 'bai', id: meta.sample], bai] } - // Create groupKey from meta map .map { meta, bai -> - [ groupKey( meta, meta.n_fastq), bai ] + [groupKey(meta, meta.n_fastq), bai] } - // Group .groupTuple() // gatk4 markduplicates can handle multiple bams as input, so no need to merge/index here // Except if and only if save_mapped or (skipping markduplicates and sentieon-dedup) - if ( - params.save_mapped || - ( - (params.skip_tools && params.skip_tools.split(',').contains('markduplicates')) && - !(params.tools && params.tools.split(',').contains('sentieon_dedup')) - ) - ) { + if (params.save_mapped || ((params.skip_tools && params.skip_tools.split(',').contains('markduplicates')) && !(params.tools && params.tools.split(',').contains('sentieon_dedup')))) { // bams are merged (when multiple lanes from the same sample), indexed and then converted to cram BAM_MERGE_INDEX_SAMTOOLS(bam_mapped) BAM_TO_CRAM_MAPPING(BAM_MERGE_INDEX_SAMTOOLS.out.bam_bai, fasta, fasta_fai) // Create CSV to restart from this step - if (params.save_output_as_bam) CHANNEL_ALIGN_CREATE_CSV(BAM_MERGE_INDEX_SAMTOOLS.out.bam_bai, params.outdir, params.save_output_as_bam) - else CHANNEL_ALIGN_CREATE_CSV(BAM_TO_CRAM_MAPPING.out.cram.join(BAM_TO_CRAM_MAPPING.out.crai, failOnDuplicate: true, failOnMismatch: true), params.outdir, params.save_output_as_bam) + if (params.save_output_as_bam) { + CHANNEL_ALIGN_CREATE_CSV(BAM_MERGE_INDEX_SAMTOOLS.out.bam_bai, params.outdir, params.save_output_as_bam) + } + else { + CHANNEL_ALIGN_CREATE_CSV(BAM_TO_CRAM_MAPPING.out.cram.join(BAM_TO_CRAM_MAPPING.out.crai, failOnDuplicate: true, failOnMismatch: true), params.outdir, params.save_output_as_bam) + } // Gather used softwares versions versions = versions.mix(BAM_MERGE_INDEX_SAMTOOLS.out.versions) @@ -221,14 +201,14 @@ workflow FASTQ_PREPROCESS_GATK { // ch_cram_no_markduplicates_restart = Channel.empty() cram_markduplicates_no_spark = Channel.empty() - cram_sentieon_dedup = Channel.empty() - cram_markduplicates_spark = Channel.empty() + cram_sentieon_dedup = Channel.empty() + cram_markduplicates_spark = Channel.empty() // STEP 2: markduplicates (+QC) + convert to CRAM // ch_bam_for_markduplicates will contain bam mapped with FASTQ_ALIGN when step is mapping // Or bams that are specified in the samplesheet.csv when step is prepare_recalibration - cram_for_markduplicates = params.step == 'mapping' ? bam_mapped : input_sample.map{ meta, input, _index -> [ meta, input ] } + cram_for_markduplicates = params.step == 'mapping' ? bam_mapped : input_sample.map { meta, input, _index -> [meta, input] } // if no MD is done, then run QC on mapped & converted CRAM files // or the input BAM (+converted) or CRAM files cram_skip_markduplicates = Channel.empty() @@ -236,65 +216,68 @@ workflow FASTQ_PREPROCESS_GATK { // Should it be possible to restart from converted crams? // For now, conversion from bam to cram is only done when skipping markduplicates - if ( - params.skip_tools && - params.skip_tools.split(',').contains('markduplicates') && - !(params.tools && params.tools.split(',').contains('sentieon_dedup')) - ) { + if (params.skip_tools && params.skip_tools.split(',').contains('markduplicates') && !(params.tools && params.tools.split(',').contains('sentieon_dedup'))) { if (params.step == 'mapping') { cram_skip_markduplicates = BAM_TO_CRAM_MAPPING.out.cram.join(BAM_TO_CRAM_MAPPING.out.crai, failOnDuplicate: true, failOnMismatch: true) - } else { + } + else { cram_skip_markduplicates = Channel.empty().mix(input_sample) } CRAM_QC_NO_MD(cram_skip_markduplicates, fasta, intervals_for_preprocessing) // Gather QC reports - reports = reports.mix(CRAM_QC_NO_MD.out.reports.collect{ _meta, report -> [ report ] }) + reports = reports.mix(CRAM_QC_NO_MD.out.reports.collect { _meta, report -> [report] }) // Gather used softwares versions versions = versions.mix(CRAM_QC_NO_MD.out.versions) - } else if (params.use_gatk_spark && params.use_gatk_spark.contains('markduplicates')) { + } + else if (params.use_gatk_spark && params.use_gatk_spark.contains('markduplicates')) { BAM_MARKDUPLICATES_SPARK( cram_for_markduplicates, dict, fasta, fasta_fai, - intervals_for_preprocessing) + intervals_for_preprocessing, + ) cram_markduplicates_spark = BAM_MARKDUPLICATES_SPARK.out.cram // Gather QC reports - reports = reports.mix(BAM_MARKDUPLICATES_SPARK.out.reports.collect{ _meta, report -> [ report ] }) + reports = reports.mix(BAM_MARKDUPLICATES_SPARK.out.reports.collect { _meta, report -> [report] }) // Gather used softwares versions versions = versions.mix(BAM_MARKDUPLICATES_SPARK.out.versions) - } else if (params.tools && params.tools.split(',').contains('sentieon_dedup')) { - crai_for_markduplicates = params.step == 'mapping' ? bai_mapped : input_sample.map{ meta, _input, index -> [ meta, index ] } + } + else if (params.tools && params.tools.split(',').contains('sentieon_dedup')) { + crai_for_markduplicates = params.step == 'mapping' ? bai_mapped : input_sample.map { meta, _input, index -> [meta, index] } BAM_SENTIEON_DEDUP( cram_for_markduplicates, crai_for_markduplicates, fasta, fasta_fai, - intervals_for_preprocessing) + intervals_for_preprocessing, + ) cram_sentieon_dedup = BAM_SENTIEON_DEDUP.out.cram // Gather QC reports - reports = reports.mix(BAM_SENTIEON_DEDUP.out.reports.collect{ _meta, report -> [ report ] }) + reports = reports.mix(BAM_SENTIEON_DEDUP.out.reports.collect { _meta, report -> [report] }) // Gather used softwares versions versions = versions.mix(BAM_SENTIEON_DEDUP.out.versions) - } else { + } + else { BAM_MARKDUPLICATES( cram_for_markduplicates, fasta, fasta_fai, - intervals_for_preprocessing) + intervals_for_preprocessing, + ) cram_markduplicates_no_spark = BAM_MARKDUPLICATES.out.cram // Gather QC reports - reports = reports.mix(BAM_MARKDUPLICATES.out.reports.collect{ _meta, report -> [ report ] }) + reports = reports.mix(BAM_MARKDUPLICATES.out.reports.collect { _meta, report -> [report] }) // Gather used softwares versions versions = versions.mix(BAM_MARKDUPLICATES.out.versions) @@ -305,9 +288,9 @@ workflow FASTQ_PREPROCESS_GATK { // - crams from sentieon_dedup // - crams from markduplicates_spark // - crams from input step markduplicates --> from the converted ones only? - ch_md_cram_for_restart = Channel.empty().mix(cram_markduplicates_no_spark, cram_markduplicates_spark, cram_sentieon_dedup) - // Make sure correct data types are carried through - .map{ meta, cram, crai -> [ meta + [data_type: "cram"], cram, crai ] } + ch_md_cram_for_restart = Channel.empty() + .mix(cram_markduplicates_no_spark, cram_markduplicates_spark, cram_sentieon_dedup) + .map { meta, cram, crai -> [meta + [data_type: "cram"], cram, crai] } // If params.save_output_as_bam, then convert CRAM files to BAM CRAM_TO_BAM(ch_md_cram_for_restart, fasta, fasta_fai) @@ -315,10 +298,14 @@ workflow FASTQ_PREPROCESS_GATK { // CSV should be written for the file actually out, either CRAM or BAM // Create CSV to restart from this step - csv_subfolder = (params.tools && params.tools.split(',').contains('sentieon_dedup')) ? 'sentieon_dedup' : 'markduplicates' + csv_subfolder = params.tools && params.tools.split(',').contains('sentieon_dedup') ? 'sentieon_dedup' : 'markduplicates' - if (params.save_output_as_bam) CHANNEL_MARKDUPLICATES_CREATE_CSV(CRAM_TO_BAM.out.bam.join(CRAM_TO_BAM.out.bai, failOnDuplicate: true, failOnMismatch: true), csv_subfolder, params.outdir, params.save_output_as_bam) - else CHANNEL_MARKDUPLICATES_CREATE_CSV(ch_md_cram_for_restart, csv_subfolder, params.outdir, params.save_output_as_bam) + if (params.save_output_as_bam) { + CHANNEL_MARKDUPLICATES_CREATE_CSV(CRAM_TO_BAM.out.bam.join(CRAM_TO_BAM.out.bai, failOnDuplicate: true, failOnMismatch: true), csv_subfolder, params.outdir, params.save_output_as_bam) + } + else { + CHANNEL_MARKDUPLICATES_CREATE_CSV(ch_md_cram_for_restart, csv_subfolder, params.outdir, params.save_output_as_bam) + } } if (params.step in ['mapping', 'markduplicates', 'prepare_recalibration']) { @@ -329,51 +316,53 @@ workflow FASTQ_PREPROCESS_GATK { ch_cram_for_bam_baserecalibrator = Channel.empty().mix(input_sample) // Set the input samples for restart so we generate a samplesheet that contains the input files together with the recalibration table - ch_md_cram_for_restart = ch_cram_for_bam_baserecalibrator - - } else { + ch_md_cram_for_restart = ch_cram_for_bam_baserecalibrator + } + else { // ch_cram_for_bam_baserecalibrator contains either: // - crams from markduplicates // - crams from markduplicates_spark // - crams converted from bam mapped when skipping markduplicates // - input cram files, when start from step markduplicates - ch_cram_for_bam_baserecalibrator = Channel.empty().mix(ch_md_cram_for_restart, cram_skip_markduplicates ) - // Make sure correct data types are carried through - .map{ meta, cram, crai -> [ meta + [data_type: "cram"], cram, crai ] } - + ch_cram_for_bam_baserecalibrator = Channel.empty() + .mix(ch_md_cram_for_restart, cram_skip_markduplicates) + .map { meta, cram, crai -> [meta + [data_type: "cram"], cram, crai] } } // STEP 3: Create recalibration tables if (!(params.skip_tools && params.skip_tools.split(',').contains('baserecalibrator'))) { ch_table_bqsr_no_spark = Channel.empty() - ch_table_bqsr_spark = Channel.empty() + ch_table_bqsr_spark = Channel.empty() if (params.use_gatk_spark && params.use_gatk_spark.contains('baserecalibrator')) { - BAM_BASERECALIBRATOR_SPARK( - ch_cram_for_bam_baserecalibrator, - dict, - fasta, - fasta_fai, - intervals_and_num_intervals, - known_sites_indels, - known_sites_indels_tbi) + BAM_BASERECALIBRATOR_SPARK( + ch_cram_for_bam_baserecalibrator, + dict, + fasta, + fasta_fai, + intervals_and_num_intervals, + known_sites_indels, + known_sites_indels_tbi, + ) ch_table_bqsr_spark = BAM_BASERECALIBRATOR_SPARK.out.table_bqsr // Gather used softwares versions versions = versions.mix(BAM_BASERECALIBRATOR_SPARK.out.versions) - } else { + } + else { - BAM_BASERECALIBRATOR( - ch_cram_for_bam_baserecalibrator, - dict, - fasta, - fasta_fai, - intervals_and_num_intervals, - known_sites_indels, - known_sites_indels_tbi) + BAM_BASERECALIBRATOR( + ch_cram_for_bam_baserecalibrator, + dict, + fasta, + fasta_fai, + intervals_and_num_intervals, + known_sites_indels, + known_sites_indels_tbi, + ) ch_table_bqsr_no_spark = BAM_BASERECALIBRATOR.out.table_bqsr @@ -384,11 +373,13 @@ workflow FASTQ_PREPROCESS_GATK { // ch_table_bqsr contains either: // - bqsr table from baserecalibrator // - bqsr table from baserecalibrator_spark - ch_table_bqsr = Channel.empty().mix( - ch_table_bqsr_no_spark, - ch_table_bqsr_spark) + ch_table_bqsr = Channel.empty() + .mix( + ch_table_bqsr_no_spark, + ch_table_bqsr_spark, + ) - reports = reports.mix(ch_table_bqsr.collect{ _meta, table -> [ table ] }) + reports = reports.mix(ch_table_bqsr.collect { _meta, table -> [table] }) cram_applybqsr = ch_cram_for_bam_baserecalibrator.join(ch_table_bqsr, failOnDuplicate: true, failOnMismatch: true) @@ -402,14 +393,14 @@ workflow FASTQ_PREPROCESS_GATK { // Run if starting from step "prepare_recalibration" if (params.step == 'recalibrate') { - cram_applybqsr = Channel.empty().mix(input_sample) - } if (!(params.skip_tools && params.skip_tools.split(',').contains('baserecalibrator'))) { + bam_variant_calling_no_spark = Channel.empty() + bam_variant_calling_spark = Channel.empty() cram_variant_calling_no_spark = Channel.empty() - cram_variant_calling_spark = Channel.empty() + cram_variant_calling_spark = Channel.empty() if (params.use_gatk_spark && params.use_gatk_spark.contains('baserecalibrator')) { @@ -418,49 +409,58 @@ workflow FASTQ_PREPROCESS_GATK { dict, fasta, fasta_fai, - intervals_and_num_intervals) + intervals_and_num_intervals, + ) + bam_variant_calling_spark = BAM_APPLYBQSR_SPARK.out.bam cram_variant_calling_spark = BAM_APPLYBQSR_SPARK.out.cram // Gather used softwares versions versions = versions.mix(BAM_APPLYBQSR_SPARK.out.versions) - - } else { + } + else { BAM_APPLYBQSR( cram_applybqsr, dict, fasta, fasta_fai, - intervals_and_num_intervals) + intervals_and_num_intervals, + ) + bam_variant_calling_no_spark = BAM_APPLYBQSR.out.bam cram_variant_calling_no_spark = BAM_APPLYBQSR.out.cram // Gather used softwares versions versions = versions.mix(BAM_APPLYBQSR.out.versions) } - cram_variant_calling = Channel.empty().mix( - cram_variant_calling_no_spark, - cram_variant_calling_spark) + cram_variant_calling = Channel.empty() + .mix( + cram_variant_calling_no_spark, + cram_variant_calling_spark, + ) - // If params.save_output_as_bam, then convert CRAM files to BAM - CRAM_TO_BAM_RECAL(cram_variant_calling, fasta, fasta_fai) - versions = versions.mix(CRAM_TO_BAM_RECAL.out.versions) + bam_variant_calling = Channel.empty() + .mix( + bam_variant_calling_no_spark, + bam_variant_calling_spark, + ) // CSV should be written for the file actually out out, either CRAM or BAM csv_recalibration = Channel.empty() - csv_recalibration = params.save_output_as_bam ? CRAM_TO_BAM_RECAL.out.bam.join(CRAM_TO_BAM_RECAL.out.bai, failOnDuplicate: true, failOnMismatch: true) : cram_variant_calling + csv_recalibration = params.save_output_as_bam ? bam_variant_calling : cram_variant_calling // Create CSV to restart from this step CHANNEL_APPLYBQSR_CREATE_CSV(csv_recalibration, params.outdir, params.save_output_as_bam) - - } else if (params.step == 'recalibrate') { + } + else if (params.step == 'recalibrate') { // cram_variant_calling contains either: // - input bams converted to crams, if started from step recal + skip BQSR // - input crams if started from step recal + skip BQSR - cram_variant_calling = Channel.empty().mix(input_sample.map{ meta, cram, crai, _table -> [ meta, cram, crai ] }) - } else { + cram_variant_calling = Channel.empty().mix(input_sample.map { meta, cram, crai, _table -> [meta, cram, crai] }) + } + else { // cram_variant_calling contains either: // - crams from markduplicates = ch_cram_for_bam_baserecalibrator if skip BQSR but not started from step recalibration cram_variant_calling = Channel.empty().mix(ch_cram_for_bam_baserecalibrator) @@ -471,5 +471,4 @@ workflow FASTQ_PREPROCESS_GATK { cram_variant_calling reports versions - } diff --git a/subworkflows/local/samplesheet_to_channel/main.nf b/subworkflows/local/samplesheet_to_channel/main.nf index 8c5073acc..d73dd26b0 100644 --- a/subworkflows/local/samplesheet_to_channel/main.nf +++ b/subworkflows/local/samplesheet_to_channel/main.nf @@ -61,7 +61,7 @@ workflow SAMPLESHEET_TO_CHANNEL { [combination_key, [meta.patient, meta.sample, meta.status, meta.lane]] } .groupTuple() - .map { combination_key, combination_list -> + .map { _combination_key, combination_list -> if (combination_list.size() > 1) { def patient = combination_list[0][0] def sample = combination_list[0][1] @@ -83,9 +83,7 @@ workflow SAMPLESHEET_TO_CHANNEL { // Return the patient and the list of sample ids [patient, samples.collect { it.sample }] } - // Flatten to [sample_id, patient] pairs .flatMap { patient, sample_ids -> sample_ids.collect { sample_id -> [sample_id, patient] } } - // Group by sample_id to collect all patient ids per sample .groupTuple() .map { sample_id, patient_ids -> def unique_patients = patient_ids.unique() From 55fccfb10f14136e5dbc21aa1b4024e57c1172f7 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Tue, 19 Aug 2025 09:59:41 +0200 Subject: [PATCH 26/34] fix applybqsr --- conf/modules/recalibrate.config | 8 ++- tests/alignment_from_everything.nf.test.snap | 70 +++----------------- 2 files changed, 17 insertions(+), 61 deletions(-) diff --git a/conf/modules/recalibrate.config b/conf/modules/recalibrate.config index 7ea13dcf6..363a111bc 100644 --- a/conf/modules/recalibrate.config +++ b/conf/modules/recalibrate.config @@ -33,8 +33,14 @@ process { [ mode: params.publish_dir_mode, path: { "${params.outdir}/preprocessing/" }, - pattern: "*{recal.bam,recal.bai}", + pattern: "*recal.bam", saveAs: { params.save_output_as_bam ? meta.num_intervals > 1 ? null : "recalibrated/${meta.id}/${it}" : null } + ], + [ + mode: params.publish_dir_mode, + path: { "${params.outdir}/preprocessing/" }, + pattern: "*recal.bai", + saveAs: { params.save_output_as_bam ? meta.num_intervals > 1 ? null : "recalibrated/${meta.id}/${it.replace('.bai', '.bam.bai')}" : null } ]] } diff --git a/tests/alignment_from_everything.nf.test.snap b/tests/alignment_from_everything.nf.test.snap index 7bda69a83..f9a1f6e27 100644 --- a/tests/alignment_from_everything.nf.test.snap +++ b/tests/alignment_from_everything.nf.test.snap @@ -1,7 +1,7 @@ { "-profile test --input bam_and_fastq_and_spring.csv --save_mapped --save_output_as_bam": { "content": [ - 69, + 53, { "BWAMEM1_INDEX": { "bwa": "0.7.18-r1243-dirty" @@ -22,9 +22,6 @@ "CRAM_TO_BAM": { "samtools": 1.21 }, - "CRAM_TO_BAM_RECAL": { - "samtools": 1.21 - }, "CREATE_INTERVALS_BED": { "gawk": "5.1.0" }, @@ -44,9 +41,6 @@ "gatk4": "4.6.1.0", "samtools": 1.21 }, - "INDEX_CRAM": { - "samtools": 1.21 - }, "INDEX_MERGE_BAM": { "samtools": 1.21 }, @@ -300,57 +294,33 @@ "reports/mosdepth/test/test.md.mosdepth.summary.txt", "reports/mosdepth/test/test.md.regions.bed.gz", "reports/mosdepth/test/test.md.regions.bed.gz.csi", - "reports/mosdepth/test/test.recal.mosdepth.global.dist.txt", - "reports/mosdepth/test/test.recal.mosdepth.region.dist.txt", - "reports/mosdepth/test/test.recal.mosdepth.summary.txt", - "reports/mosdepth/test/test.recal.regions.bed.gz", - "reports/mosdepth/test/test.recal.regions.bed.gz.csi", "reports/mosdepth/test2", "reports/mosdepth/test2/test2.md.mosdepth.global.dist.txt", "reports/mosdepth/test2/test2.md.mosdepth.region.dist.txt", "reports/mosdepth/test2/test2.md.mosdepth.summary.txt", "reports/mosdepth/test2/test2.md.regions.bed.gz", "reports/mosdepth/test2/test2.md.regions.bed.gz.csi", - "reports/mosdepth/test2/test2.recal.mosdepth.global.dist.txt", - "reports/mosdepth/test2/test2.recal.mosdepth.region.dist.txt", - "reports/mosdepth/test2/test2.recal.mosdepth.summary.txt", - "reports/mosdepth/test2/test2.recal.regions.bed.gz", - "reports/mosdepth/test2/test2.recal.regions.bed.gz.csi", "reports/mosdepth/test3", "reports/mosdepth/test3/test3.md.mosdepth.global.dist.txt", "reports/mosdepth/test3/test3.md.mosdepth.region.dist.txt", "reports/mosdepth/test3/test3.md.mosdepth.summary.txt", "reports/mosdepth/test3/test3.md.regions.bed.gz", "reports/mosdepth/test3/test3.md.regions.bed.gz.csi", - "reports/mosdepth/test3/test3.recal.mosdepth.global.dist.txt", - "reports/mosdepth/test3/test3.recal.mosdepth.region.dist.txt", - "reports/mosdepth/test3/test3.recal.mosdepth.summary.txt", - "reports/mosdepth/test3/test3.recal.regions.bed.gz", - "reports/mosdepth/test3/test3.recal.regions.bed.gz.csi", "reports/mosdepth/test_bam", "reports/mosdepth/test_bam/test_bam.md.mosdepth.global.dist.txt", "reports/mosdepth/test_bam/test_bam.md.mosdepth.region.dist.txt", "reports/mosdepth/test_bam/test_bam.md.mosdepth.summary.txt", "reports/mosdepth/test_bam/test_bam.md.regions.bed.gz", "reports/mosdepth/test_bam/test_bam.md.regions.bed.gz.csi", - "reports/mosdepth/test_bam/test_bam.recal.mosdepth.global.dist.txt", - "reports/mosdepth/test_bam/test_bam.recal.mosdepth.region.dist.txt", - "reports/mosdepth/test_bam/test_bam.recal.mosdepth.summary.txt", - "reports/mosdepth/test_bam/test_bam.recal.regions.bed.gz", - "reports/mosdepth/test_bam/test_bam.recal.regions.bed.gz.csi", "reports/samtools", "reports/samtools/test", "reports/samtools/test/test.md.cram.stats", - "reports/samtools/test/test.recal.cram.stats", "reports/samtools/test2", "reports/samtools/test2/test2.md.cram.stats", - "reports/samtools/test2/test2.recal.cram.stats", "reports/samtools/test3", "reports/samtools/test3/test3.md.cram.stats", - "reports/samtools/test3/test3.recal.cram.stats", "reports/samtools/test_bam", - "reports/samtools/test_bam/test_bam.md.cram.stats", - "reports/samtools/test_bam/test_bam.recal.cram.stats" + "reports/samtools/test_bam/test_bam.md.cram.stats" ], [ "fastqc-status-check-heatmap.txt:md5,de62b83776610478e5d6a3adbc6a9bbc", @@ -364,56 +334,36 @@ "fastqc_sequence_counts_plot.txt:md5,674147ee973b56cff1a8bed894d18d3f", "fastqc_sequence_duplication_levels_plot.txt:md5,5dbfcf6fcbbd054e17fb460985b078c2", "fastqc_sequence_length_distribution_plot.txt:md5,893426c7b64f5fe3279733eb63c6abf9", - "mosdepth-coverage-per-contig-single.txt:md5,3b95b22f8731d90e62619a81edc74c89", - "mosdepth-cumcoverage-dist-id.txt:md5,25645f26d5a929588803422d825e9c92", - "mosdepth_perchrom.txt:md5,3b95b22f8731d90e62619a81edc74c89", + "mosdepth-coverage-per-contig-single.txt:md5,7c01ea3a011867911ed0b612acb42007", + "mosdepth-cumcoverage-dist-id.txt:md5,c013414788f3acfff722a725b5c4938e", + "mosdepth_perchrom.txt:md5,7c01ea3a011867911ed0b612acb42007", "multiqc_citations.txt:md5,7d0b4b866fa577272c48a1f3ad72e75d", "multiqc_fastqc.txt:md5,ae908328010c1f8a5eb15ca080b92993", "picard_MarkIlluminaAdapters_histogram.txt:md5,d41d8cd98f00b204e9800998ecf8427e", "picard_MeanQualityByCycle_histogram.txt:md5,d41d8cd98f00b204e9800998ecf8427e", "picard_QualityScoreDistribution_histogram.txt:md5,d41d8cd98f00b204e9800998ecf8427e", - "samtools-stats-dp.txt:md5,63dfeeafbef0aa87f48ab923402dcaed", - "samtools_alignment_plot.txt:md5,7c53a04c42499c92735d947bc8417dd6", + "samtools-stats-dp.txt:md5,1dc593231b888b9f832e61dd71e0161b", + "samtools_alignment_plot.txt:md5,35a1db2ce8dbe1b59576cc8edb57095e", "test.md.mosdepth.global.dist.txt:md5,76fa71922a3f748e507c2364c531dfcb", "test.md.mosdepth.region.dist.txt:md5,abc5df85e302b79985627888870882da", "test.md.mosdepth.summary.txt:md5,d536456436eb275159b8c6af83213d80", "test.md.regions.bed.gz:md5,b25a2798061021c0b2f4e1d18219bbbd", "test.md.regions.bed.gz.csi:md5,b1c2a861f64e20a94108a6de3b76c582", - "test.recal.mosdepth.global.dist.txt:md5,76fa71922a3f748e507c2364c531dfcb", - "test.recal.mosdepth.region.dist.txt:md5,abc5df85e302b79985627888870882da", - "test.recal.mosdepth.summary.txt:md5,d536456436eb275159b8c6af83213d80", - "test.recal.regions.bed.gz:md5,b25a2798061021c0b2f4e1d18219bbbd", - "test.recal.regions.bed.gz.csi:md5,b1c2a861f64e20a94108a6de3b76c582", "test2.md.mosdepth.global.dist.txt:md5,76fa71922a3f748e507c2364c531dfcb", "test2.md.mosdepth.region.dist.txt:md5,abc5df85e302b79985627888870882da", "test2.md.mosdepth.summary.txt:md5,d536456436eb275159b8c6af83213d80", "test2.md.regions.bed.gz:md5,b25a2798061021c0b2f4e1d18219bbbd", "test2.md.regions.bed.gz.csi:md5,b1c2a861f64e20a94108a6de3b76c582", - "test2.recal.mosdepth.global.dist.txt:md5,76fa71922a3f748e507c2364c531dfcb", - "test2.recal.mosdepth.region.dist.txt:md5,abc5df85e302b79985627888870882da", - "test2.recal.mosdepth.summary.txt:md5,d536456436eb275159b8c6af83213d80", - "test2.recal.regions.bed.gz:md5,b25a2798061021c0b2f4e1d18219bbbd", - "test2.recal.regions.bed.gz.csi:md5,b1c2a861f64e20a94108a6de3b76c582", "test3.md.mosdepth.global.dist.txt:md5,76fa71922a3f748e507c2364c531dfcb", "test3.md.mosdepth.region.dist.txt:md5,abc5df85e302b79985627888870882da", "test3.md.mosdepth.summary.txt:md5,d536456436eb275159b8c6af83213d80", "test3.md.regions.bed.gz:md5,b25a2798061021c0b2f4e1d18219bbbd", "test3.md.regions.bed.gz.csi:md5,b1c2a861f64e20a94108a6de3b76c582", - "test3.recal.mosdepth.global.dist.txt:md5,76fa71922a3f748e507c2364c531dfcb", - "test3.recal.mosdepth.region.dist.txt:md5,abc5df85e302b79985627888870882da", - "test3.recal.mosdepth.summary.txt:md5,d536456436eb275159b8c6af83213d80", - "test3.recal.regions.bed.gz:md5,b25a2798061021c0b2f4e1d18219bbbd", - "test3.recal.regions.bed.gz.csi:md5,b1c2a861f64e20a94108a6de3b76c582", "test_bam.md.mosdepth.global.dist.txt:md5,9cb9b181119256ed17a77dcf44d58285", "test_bam.md.mosdepth.region.dist.txt:md5,75e1ce7e55af51f4985fa91654a5ea2d", "test_bam.md.mosdepth.summary.txt:md5,dbe376360e437c89190139ef0ae6769a", "test_bam.md.regions.bed.gz:md5,0e5ed846b9b11717e42e93eec60f4ffc", - "test_bam.md.regions.bed.gz.csi:md5,d0713716f63ac573f4a3385733e9a537", - "test_bam.recal.mosdepth.global.dist.txt:md5,9cb9b181119256ed17a77dcf44d58285", - "test_bam.recal.mosdepth.region.dist.txt:md5,75e1ce7e55af51f4985fa91654a5ea2d", - "test_bam.recal.mosdepth.summary.txt:md5,dbe376360e437c89190139ef0ae6769a", - "test_bam.recal.regions.bed.gz:md5,0e5ed846b9b11717e42e93eec60f4ffc", - "test_bam.recal.regions.bed.gz.csi:md5,d0713716f63ac573f4a3385733e9a537" + "test_bam.md.regions.bed.gz.csi:md5,d0713716f63ac573f4a3385733e9a537" ], [ "test.sorted.bam:md5,59ecc5c82c7af1283eea7507c590c831", @@ -434,8 +384,8 @@ ], "meta": { "nf-test": "0.9.2", - "nextflow": "25.04.3" + "nextflow": "25.04.6" }, - "timestamp": "2025-06-16T09:56:27.174445017" + "timestamp": "2025-08-19T09:59:16.475584426" } } \ No newline at end of file From bb90b97187cd8ec13b2d930cd9a5339940c4fb3a Mon Sep 17 00:00:00 2001 From: maxulysse Date: Tue, 19 Aug 2025 10:03:06 +0200 Subject: [PATCH 27/34] update snapshots --- tests/alignment_to_fastq.nf.test.snap | 37 ++++++++------------------- 1 file changed, 10 insertions(+), 27 deletions(-) diff --git a/tests/alignment_to_fastq.nf.test.snap b/tests/alignment_to_fastq.nf.test.snap index 53e171dd5..029fee389 100644 --- a/tests/alignment_to_fastq.nf.test.snap +++ b/tests/alignment_to_fastq.nf.test.snap @@ -1,7 +1,7 @@ { "-profile test --input bam_for_remapping.csv --save_mapped --save_output_as_bam": { "content": [ - 27, + 23, { "BWAMEM1_INDEX": { "bwa": "0.7.18-r1243-dirty" @@ -22,9 +22,6 @@ "CRAM_TO_BAM": { "samtools": 1.21 }, - "CRAM_TO_BAM_RECAL": { - "samtools": 1.21 - }, "CREATE_INTERVALS_BED": { "gawk": "5.1.0" }, @@ -44,9 +41,6 @@ "gatk4": "4.6.1.0", "samtools": 1.21 }, - "INDEX_CRAM": { - "samtools": 1.21 - }, "INDEX_MERGE_BAM": { "samtools": 1.21 }, @@ -233,15 +227,9 @@ "reports/mosdepth/test/test.md.mosdepth.summary.txt", "reports/mosdepth/test/test.md.regions.bed.gz", "reports/mosdepth/test/test.md.regions.bed.gz.csi", - "reports/mosdepth/test/test.recal.mosdepth.global.dist.txt", - "reports/mosdepth/test/test.recal.mosdepth.region.dist.txt", - "reports/mosdepth/test/test.recal.mosdepth.summary.txt", - "reports/mosdepth/test/test.recal.regions.bed.gz", - "reports/mosdepth/test/test.recal.regions.bed.gz.csi", "reports/samtools", "reports/samtools/test", - "reports/samtools/test/test.md.cram.stats", - "reports/samtools/test/test.recal.cram.stats" + "reports/samtools/test/test.md.cram.stats" ], [ "fastqc-status-check-heatmap.txt:md5,0c9e61033b0669f20e27dce8f4b3b25c", @@ -254,26 +242,21 @@ "fastqc_sequence_counts_plot.txt:md5,bcd6fbad2fcbfcd6e78f7392945471cb", "fastqc_sequence_duplication_levels_plot.txt:md5,65c8986b4ea2983999508c5d8fce0df5", "fastqc_sequence_length_distribution_plot.txt:md5,8f2a67d6bf43abce206aa77c2959b420", - "mosdepth-coverage-per-contig-single.txt:md5,7f0ae813d12ab461548ef47423186e1d", - "mosdepth-cumcoverage-dist-id.txt:md5,e6e8b8da4af8aef64278024fc25361dd", - "mosdepth_perchrom.txt:md5,7f0ae813d12ab461548ef47423186e1d", + "mosdepth-coverage-per-contig-single.txt:md5,76d816c3f71faf2009c8a6f88092a2f3", + "mosdepth-cumcoverage-dist-id.txt:md5,3af8f7d8ed7d1fdff6118e0098258192", + "mosdepth_perchrom.txt:md5,76d816c3f71faf2009c8a6f88092a2f3", "multiqc_citations.txt:md5,7d0b4b866fa577272c48a1f3ad72e75d", "multiqc_fastqc.txt:md5,6fa90a9d9daa7d4839e4b7ebfcdc6201", "picard_MarkIlluminaAdapters_histogram.txt:md5,d41d8cd98f00b204e9800998ecf8427e", "picard_MeanQualityByCycle_histogram.txt:md5,d41d8cd98f00b204e9800998ecf8427e", "picard_QualityScoreDistribution_histogram.txt:md5,d41d8cd98f00b204e9800998ecf8427e", - "samtools-stats-dp.txt:md5,ea167e1f03920b6214de041740ca3cd5", - "samtools_alignment_plot.txt:md5,7a727168e9bbb3f4c39894933438df98", + "samtools-stats-dp.txt:md5,ef82cfdd058c212c0bba38ceb32ec2f8", + "samtools_alignment_plot.txt:md5,22572fcd0791878ed37ae2f48213cee2", "test.md.mosdepth.global.dist.txt:md5,9cb9b181119256ed17a77dcf44d58285", "test.md.mosdepth.region.dist.txt:md5,75e1ce7e55af51f4985fa91654a5ea2d", "test.md.mosdepth.summary.txt:md5,dbe376360e437c89190139ef0ae6769a", "test.md.regions.bed.gz:md5,0e5ed846b9b11717e42e93eec60f4ffc", - "test.md.regions.bed.gz.csi:md5,d0713716f63ac573f4a3385733e9a537", - "test.recal.mosdepth.global.dist.txt:md5,9cb9b181119256ed17a77dcf44d58285", - "test.recal.mosdepth.region.dist.txt:md5,75e1ce7e55af51f4985fa91654a5ea2d", - "test.recal.mosdepth.summary.txt:md5,dbe376360e437c89190139ef0ae6769a", - "test.recal.regions.bed.gz:md5,0e5ed846b9b11717e42e93eec60f4ffc", - "test.recal.regions.bed.gz.csi:md5,d0713716f63ac573f4a3385733e9a537" + "test.md.regions.bed.gz.csi:md5,d0713716f63ac573f4a3385733e9a537" ], [ "test.sorted.bam:md5,6934a96fff1eaa2f70b31ab7e11d3598", @@ -285,8 +268,8 @@ ], "meta": { "nf-test": "0.9.2", - "nextflow": "25.04.3" + "nextflow": "25.04.6" }, - "timestamp": "2025-06-16T09:58:04.974228839" + "timestamp": "2025-08-19T10:02:33.091900859" } } \ No newline at end of file From 2c2479f782de8e5d902daffd673056f4a640ec19 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Tue, 19 Aug 2025 11:07:51 +0200 Subject: [PATCH 28/34] pre-commit tests --- .../gatk4/applybqsr/tests/main.nf.test | 194 ++++++++++++++++++ .../gatk4spark/applybqsr/tests/main.nf.test | 191 +++++++++++++++++ 2 files changed, 385 insertions(+) create mode 100644 modules/nf-core/gatk4/applybqsr/tests/main.nf.test create mode 100644 modules/nf-core/gatk4spark/applybqsr/tests/main.nf.test diff --git a/modules/nf-core/gatk4/applybqsr/tests/main.nf.test b/modules/nf-core/gatk4/applybqsr/tests/main.nf.test new file mode 100644 index 000000000..dac0e567f --- /dev/null +++ b/modules/nf-core/gatk4/applybqsr/tests/main.nf.test @@ -0,0 +1,194 @@ +nextflow_process { + + name "Test Process GATK4_APPLYBQSR" + script "../main.nf" + process "GATK4_APPLYBQSR" + + tag "modules" + tag "modules_nfcore" + tag "gatk4" + tag "gatk4/applybqsr" + + test("sarscov2 - bam") { + + config "./nextflow.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/gatk/test.baserecalibrator.table', checkIfExists: true), + [] + ] + input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + input[2] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + input[3] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.dict', checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - bam in, cram out") { + + config "./nextflow_cram.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/gatk/test.baserecalibrator.table', checkIfExists: true), + [] + ] + input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + input[2] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + input[3] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.dict', checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.versions, + file(process.out.cram[0][1]).name, + file(process.out.bai[0][1]).name + ).match() } + ) + } + + } + + test("sarscov2 - bam - intervals") { + + config "./nextflow.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/gatk/test.baserecalibrator.table', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true) + ] + input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + input[2] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + input[3] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.dict', checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("sarscov2 - cram") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram.crai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/test.baserecalibrator.table', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) + ] + input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + input[2] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + input[3] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.dict', checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.versions, + file(process.out.cram[0][1]).name, + file(process.out.bai[0][1]).name + ).match() } + ) + } + } + + test("sarscov2 - cram - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram.crai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/test.baserecalibrator.table', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) + ] + input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + input[2] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + input[3] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.dict', checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("sarscov2 - bam - stub") { + + options "-stub" + config "./nextflow.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/gatk/test.baserecalibrator.table', checkIfExists: true), + [] + ] + input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + input[2] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + input[3] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.dict', checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } +} \ No newline at end of file diff --git a/modules/nf-core/gatk4spark/applybqsr/tests/main.nf.test b/modules/nf-core/gatk4spark/applybqsr/tests/main.nf.test new file mode 100644 index 000000000..63bfa5a81 --- /dev/null +++ b/modules/nf-core/gatk4spark/applybqsr/tests/main.nf.test @@ -0,0 +1,191 @@ +nextflow_process { + + name "Test Process GATK4SPARK_APPLYBQSR" + script "../main.nf" + config "./nextflow.config" + process "GATK4SPARK_APPLYBQSR" + + tag "modules" + tag "modules_nfcore" + tag "gatk4spark" + tag "gatk4spark/applybqsr" + + test("sarscov2 - bam") { + + config "./nextflow_bam.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/gatk/test.baserecalibrator.table', checkIfExists: true), + [] + ] + input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + input[2] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + input[3] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.dict', checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("sarscov2 - bam in, cram out") { + + config "./nextflow_cram.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/gatk/test.baserecalibrator.table', checkIfExists: true), + [] + ] + input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + input[2] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + input[3] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.dict', checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.versions, + file(process.out.cram[0][1]).name + ).match() } + ) + } + } + + test("sarscov2 - bam - intervals") { + + config "./nextflow_bam.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/gatk/test.baserecalibrator.table', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true) + ] + input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + input[2] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + input[3] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.dict', checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("sarscov2 - cram") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram.crai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/test.baserecalibrator.table', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) + ] + input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + input[2] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + input[3] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.dict', checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.versions, + file(process.out.cram[0][1]).name + ).match() } + ) + } + } + + test("sarscov2 - cram - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram.crai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/test.baserecalibrator.table', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) + ] + input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + input[2] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + input[3] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.dict', checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("sarscov2 - bam - stub") { + + options "-stub" + config "./nextflow_bam.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/gatk/test.baserecalibrator.table', checkIfExists: true), + [] + ] + input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + input[2] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + input[3] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.dict', checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } +} \ No newline at end of file From 1ca7d64d206a1ed7bc18aadc38d125b11f3db879 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Tue, 19 Aug 2025 11:08:27 +0200 Subject: [PATCH 29/34] no need for tests --- .../gatk4/applybqsr/tests/main.nf.test | 194 ------------------ .../gatk4spark/applybqsr/tests/main.nf.test | 191 ----------------- 2 files changed, 385 deletions(-) delete mode 100644 modules/nf-core/gatk4/applybqsr/tests/main.nf.test delete mode 100644 modules/nf-core/gatk4spark/applybqsr/tests/main.nf.test diff --git a/modules/nf-core/gatk4/applybqsr/tests/main.nf.test b/modules/nf-core/gatk4/applybqsr/tests/main.nf.test deleted file mode 100644 index dac0e567f..000000000 --- a/modules/nf-core/gatk4/applybqsr/tests/main.nf.test +++ /dev/null @@ -1,194 +0,0 @@ -nextflow_process { - - name "Test Process GATK4_APPLYBQSR" - script "../main.nf" - process "GATK4_APPLYBQSR" - - tag "modules" - tag "modules_nfcore" - tag "gatk4" - tag "gatk4/applybqsr" - - test("sarscov2 - bam") { - - config "./nextflow.config" - - when { - process { - """ - input[0] = [ - [ id:'test' ], - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/gatk/test.baserecalibrator.table', checkIfExists: true), - [] - ] - input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) - input[2] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) - input[3] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.dict', checkIfExists: true) - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } - ) - } - - } - - test("sarscov2 - bam in, cram out") { - - config "./nextflow_cram.config" - - when { - process { - """ - input[0] = [ - [ id:'test' ], - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/gatk/test.baserecalibrator.table', checkIfExists: true), - [] - ] - input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) - input[2] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) - input[3] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.dict', checkIfExists: true) - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert snapshot( - process.out.versions, - file(process.out.cram[0][1]).name, - file(process.out.bai[0][1]).name - ).match() } - ) - } - - } - - test("sarscov2 - bam - intervals") { - - config "./nextflow.config" - - when { - process { - """ - input[0] = [ - [ id:'test' ], - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/gatk/test.baserecalibrator.table', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true) - ] - input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) - input[2] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) - input[3] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.dict', checkIfExists: true) - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } - ) - } - } - - test("sarscov2 - cram") { - - when { - process { - """ - input[0] = [ - [ id:'test' ], - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram.crai', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/test.baserecalibrator.table', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) - ] - input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) - input[2] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) - input[3] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.dict', checkIfExists: true) - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert snapshot( - process.out.versions, - file(process.out.cram[0][1]).name, - file(process.out.bai[0][1]).name - ).match() } - ) - } - } - - test("sarscov2 - cram - stub") { - - options "-stub" - - when { - process { - """ - input[0] = [ - [ id:'test' ], - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram.crai', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/test.baserecalibrator.table', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) - ] - input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) - input[2] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) - input[3] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.dict', checkIfExists: true) - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } - ) - } - } - - test("sarscov2 - bam - stub") { - - options "-stub" - config "./nextflow.config" - - when { - process { - """ - input[0] = [ - [ id:'test' ], - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/gatk/test.baserecalibrator.table', checkIfExists: true), - [] - ] - input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) - input[2] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) - input[3] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.dict', checkIfExists: true) - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } - ) - } - } -} \ No newline at end of file diff --git a/modules/nf-core/gatk4spark/applybqsr/tests/main.nf.test b/modules/nf-core/gatk4spark/applybqsr/tests/main.nf.test deleted file mode 100644 index 63bfa5a81..000000000 --- a/modules/nf-core/gatk4spark/applybqsr/tests/main.nf.test +++ /dev/null @@ -1,191 +0,0 @@ -nextflow_process { - - name "Test Process GATK4SPARK_APPLYBQSR" - script "../main.nf" - config "./nextflow.config" - process "GATK4SPARK_APPLYBQSR" - - tag "modules" - tag "modules_nfcore" - tag "gatk4spark" - tag "gatk4spark/applybqsr" - - test("sarscov2 - bam") { - - config "./nextflow_bam.config" - - when { - process { - """ - input[0] = [ - [ id:'test' ], - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/gatk/test.baserecalibrator.table', checkIfExists: true), - [] - ] - input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) - input[2] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) - input[3] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.dict', checkIfExists: true) - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } - ) - } - } - - test("sarscov2 - bam in, cram out") { - - config "./nextflow_cram.config" - - when { - process { - """ - input[0] = [ - [ id:'test' ], - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/gatk/test.baserecalibrator.table', checkIfExists: true), - [] - ] - input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) - input[2] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) - input[3] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.dict', checkIfExists: true) - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert snapshot( - process.out.versions, - file(process.out.cram[0][1]).name - ).match() } - ) - } - } - - test("sarscov2 - bam - intervals") { - - config "./nextflow_bam.config" - - when { - process { - """ - input[0] = [ - [ id:'test' ], - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/gatk/test.baserecalibrator.table', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true) - ] - input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) - input[2] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) - input[3] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.dict', checkIfExists: true) - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } - ) - } - } - - test("sarscov2 - cram") { - - when { - process { - """ - input[0] = [ - [ id:'test' ], - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram.crai', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/test.baserecalibrator.table', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) - ] - input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) - input[2] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) - input[3] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.dict', checkIfExists: true) - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert snapshot( - process.out.versions, - file(process.out.cram[0][1]).name - ).match() } - ) - } - } - - test("sarscov2 - cram - stub") { - - options "-stub" - - when { - process { - """ - input[0] = [ - [ id:'test' ], - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram.crai', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/test.baserecalibrator.table', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) - ] - input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) - input[2] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) - input[3] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.dict', checkIfExists: true) - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } - ) - } - } - - test("sarscov2 - bam - stub") { - - options "-stub" - config "./nextflow_bam.config" - - when { - process { - """ - input[0] = [ - [ id:'test' ], - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/gatk/test.baserecalibrator.table', checkIfExists: true), - [] - ] - input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) - input[2] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) - input[3] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.dict', checkIfExists: true) - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } - ) - } - } -} \ No newline at end of file From 6f551246a113335964b8cc0828ecc809b7e50d52 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Tue, 19 Aug 2025 14:00:23 +0200 Subject: [PATCH 30/34] fix MERGE_BQSR usage --- subworkflows/local/bam_joint_calling_germline_gatk/main.nf | 2 -- tests/joint_calling_haplotypecaller.nf.test | 4 ++-- tests/joint_calling_haplotypecaller.nf.test.snap | 4 ++-- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/subworkflows/local/bam_joint_calling_germline_gatk/main.nf b/subworkflows/local/bam_joint_calling_germline_gatk/main.nf index 629284abf..47d1ad77c 100644 --- a/subworkflows/local/bam_joint_calling_germline_gatk/main.nf +++ b/subworkflows/local/bam_joint_calling_germline_gatk/main.nf @@ -10,7 +10,6 @@ include { GATK4_APPLYVQSR as GATK4_APPLYVQSR_SNP } from '../../. include { GATK4_GENOMICSDBIMPORT } from '../../../modules/nf-core/gatk4/genomicsdbimport' include { GATK4_GENOTYPEGVCFS } from '../../../modules/nf-core/gatk4/genotypegvcfs' include { GATK4_MERGEVCFS as MERGE_GENOTYPEGVCFS } from '../../../modules/nf-core/gatk4/mergevcfs' -include { GATK4_MERGEVCFS as MERGE_VQSR } from '../../../modules/nf-core/gatk4/mergevcfs' include { GATK4_VARIANTRECALIBRATOR as VARIANTRECALIBRATOR_INDEL } from '../../../modules/nf-core/gatk4/variantrecalibrator' include { GATK4_VARIANTRECALIBRATOR as VARIANTRECALIBRATOR_SNP } from '../../../modules/nf-core/gatk4/variantrecalibrator' @@ -162,7 +161,6 @@ workflow BAM_JOINT_CALLING_GERMLINE_GATK { versions = versions.mix(GATK4_GENOMICSDBIMPORT.out.versions) versions = versions.mix(GATK4_GENOTYPEGVCFS.out.versions) versions = versions.mix(MERGE_GENOTYPEGVCFS.out.versions) - versions = versions.mix(MERGE_VQSR.out.versions) versions = versions.mix(VARIANTRECALIBRATOR_INDEL.out.versions) versions = versions.mix(VARIANTRECALIBRATOR_SNP.out.versions) diff --git a/tests/joint_calling_haplotypecaller.nf.test b/tests/joint_calling_haplotypecaller.nf.test index b3226fa8b..a2133b1b6 100644 --- a/tests/joint_calling_haplotypecaller.nf.test +++ b/tests/joint_calling_haplotypecaller.nf.test @@ -10,7 +10,7 @@ nextflow_pipeline { def test_scenario = [ [ - name: "-profile test --input tests/csv/3.0/mapped_joint_bam.csv --tools haplotypecaller --joint_germline --dbsnp_vqsr false --known_snps_vqsr false --known_indels_vqsr false --nucleotides_per_second 20", + name: "-profile test --step variant_calling --input tests/csv/3.0/mapped_joint_bam.csv --tools haplotypecaller --joint_germline --dbsnp_vqsr false --known_snps_vqsr false --known_indels_vqsr false --nucleotides_per_second 20", params: [ intervals: modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.multi_intervals.bed', input: "${projectDir}/tests/csv/3.0/mapped_joint_bam.csv", @@ -25,7 +25,7 @@ nextflow_pipeline { ] ], [ - name: "-profile test --input tests/csv/3.0/mapped_joint_bam.csv --tools haplotypecaller --joint_germline --dbsnp_vqsr false --known_snps_vqsr false --known_indels_vqsr false --nucleotides_per_second 100", + name: "-profile test --step variant_calling --input tests/csv/3.0/mapped_joint_bam.csv --tools haplotypecaller --joint_germline --dbsnp_vqsr false --known_snps_vqsr false --known_indels_vqsr false --nucleotides_per_second 100", params: [ intervals: modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.multi_intervals.bed', input: "${projectDir}/tests/csv/3.0/mapped_joint_bam.csv", diff --git a/tests/joint_calling_haplotypecaller.nf.test.snap b/tests/joint_calling_haplotypecaller.nf.test.snap index c9abb70c2..da5ff51ed 100644 --- a/tests/joint_calling_haplotypecaller.nf.test.snap +++ b/tests/joint_calling_haplotypecaller.nf.test.snap @@ -1,5 +1,5 @@ { - "-profile test --input tests/csv/3.0/mapped_joint_bam.csv --tools haplotypecaller --joint_germline --dbsnp_vqsr false --known_snps_vqsr false --known_indels_vqsr false --nucleotides_per_second 20": { + "-profile test --step variant_calling --input tests/csv/3.0/mapped_joint_bam.csv --tools haplotypecaller --joint_germline --dbsnp_vqsr false --known_snps_vqsr false --known_indels_vqsr false --nucleotides_per_second 20": { "content": [ 26, { @@ -217,7 +217,7 @@ }, "timestamp": "2025-07-11T13:59:37.243390638" }, - "-profile test --input tests/csv/3.0/mapped_joint_bam.csv --tools haplotypecaller --joint_germline --dbsnp_vqsr false --known_snps_vqsr false --known_indels_vqsr false --nucleotides_per_second 100": { + "-profile test --step variant_calling --input tests/csv/3.0/mapped_joint_bam.csv --tools haplotypecaller --joint_germline --dbsnp_vqsr false --known_snps_vqsr false --known_indels_vqsr false --nucleotides_per_second 100": { "content": [ 18, { From 332e9b1e733c2009166500bf514e183d9223be7e Mon Sep 17 00:00:00 2001 From: maxulysse Date: Tue, 19 Aug 2025 14:34:20 +0200 Subject: [PATCH 31/34] update snapshots --- ...joint_calling_haplotypecaller.nf.test.snap | 26 ++++++++++++++----- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/tests/joint_calling_haplotypecaller.nf.test.snap b/tests/joint_calling_haplotypecaller.nf.test.snap index da5ff51ed..06bc9d9a9 100644 --- a/tests/joint_calling_haplotypecaller.nf.test.snap +++ b/tests/joint_calling_haplotypecaller.nf.test.snap @@ -1,8 +1,11 @@ { - "-profile test --step variant_calling --input tests/csv/3.0/mapped_joint_bam.csv --tools haplotypecaller --joint_germline --dbsnp_vqsr false --known_snps_vqsr false --known_indels_vqsr false --nucleotides_per_second 20": { + "-profile test --step variant_calling --input tests/csv/3.0/mapped_joint_bam.csv --tools haplotypecaller --joint_germline --dbsnp_vqsr false --known_snps_vqsr false --known_indels_vqsr false --nucleotides_per_second 100": { "content": [ - 26, + 18, { + "BCFTOOLS_SORT": { + "bcftools": 1.21 + }, "BCFTOOLS_STATS": { "bcftools": 1.21 }, @@ -18,7 +21,7 @@ "GATK4_HAPLOTYPECALLER": { "gatk4": "4.6.1.0" }, - "MERGE_HAPLOTYPECALLER": { + "MERGE_GENOTYPEGVCFS": { "gatk4": "4.6.1.0" }, "MOSDEPTH": { @@ -215,12 +218,15 @@ "nf-test": "0.9.2", "nextflow": "25.04.6" }, - "timestamp": "2025-07-11T13:59:37.243390638" + "timestamp": "2025-08-19T14:33:48.87883892" }, - "-profile test --step variant_calling --input tests/csv/3.0/mapped_joint_bam.csv --tools haplotypecaller --joint_germline --dbsnp_vqsr false --known_snps_vqsr false --known_indels_vqsr false --nucleotides_per_second 100": { + "-profile test --step variant_calling --input tests/csv/3.0/mapped_joint_bam.csv --tools haplotypecaller --joint_germline --dbsnp_vqsr false --known_snps_vqsr false --known_indels_vqsr false --nucleotides_per_second 20": { "content": [ - 18, + 26, { + "BCFTOOLS_SORT": { + "bcftools": 1.21 + }, "BCFTOOLS_STATS": { "bcftools": 1.21 }, @@ -236,6 +242,12 @@ "GATK4_HAPLOTYPECALLER": { "gatk4": "4.6.1.0" }, + "MERGE_GENOTYPEGVCFS": { + "gatk4": "4.6.1.0" + }, + "MERGE_HAPLOTYPECALLER": { + "gatk4": "4.6.1.0" + }, "MOSDEPTH": { "mosdepth": "0.3.10" }, @@ -430,6 +442,6 @@ "nf-test": "0.9.2", "nextflow": "25.04.6" }, - "timestamp": "2025-07-11T14:00:58.443380909" + "timestamp": "2025-08-19T14:32:11.784205644" } } \ No newline at end of file From 0251bed403509c1434f5d5992a32ba4beeb45f37 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Tue, 19 Aug 2025 15:35:50 +0200 Subject: [PATCH 32/34] update all gatk4*/applybqsr --- modules.json | 6 +++--- modules/nf-core/gatk4/applybqsr/main.nf | 12 ++++++++---- modules/nf-core/gatk4/applybqsr/meta.yml | 11 +++++++++++ modules/nf-core/gatk4spark/applybqsr/main.nf | 9 ++++++--- modules/nf-core/gatk4spark/applybqsr/meta.yml | 17 +++++++++++++++-- 5 files changed, 43 insertions(+), 12 deletions(-) diff --git a/modules.json b/modules.json index 8902819d5..e210c0fa8 100644 --- a/modules.json +++ b/modules.json @@ -183,7 +183,7 @@ }, "gatk4/applybqsr": { "branch": "master", - "git_sha": "a57253204b8f4022edfeaa3ae2f5e2abecd8858b", + "git_sha": "c707c63a51a3b7920bb57614f8a490e379b9c5a2", "installed_by": ["modules"] }, "gatk4/applyvqsr": { @@ -293,7 +293,7 @@ }, "gatk4spark/applybqsr": { "branch": "master", - "git_sha": "e25f4fa1cd5a2616de54ab42c3c39178947520b8", + "git_sha": "c707c63a51a3b7920bb57614f8a490e379b9c5a2", "installed_by": ["modules"] }, "gatk4spark/baserecalibrator": { @@ -537,7 +537,7 @@ "nf-core": { "bam_ngscheckmate": { "branch": "master", - "git_sha": "a4b6cb0d25dcdc22425d5a938d3341382a9cfe86", + "git_sha": "e89ff68a46b848c4d8aabb8569767516d46db319", "installed_by": ["subworkflows"] }, "utils_nextflow_pipeline": { diff --git a/modules/nf-core/gatk4/applybqsr/main.nf b/modules/nf-core/gatk4/applybqsr/main.nf index 1aae27685..8ecf75366 100644 --- a/modules/nf-core/gatk4/applybqsr/main.nf +++ b/modules/nf-core/gatk4/applybqsr/main.nf @@ -14,10 +14,10 @@ process GATK4_APPLYBQSR { path dict output: - tuple val(meta), path("*.bam"), emit: bam, optional: true - tuple val(meta), path("*.bai"), emit: bai, 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 - path "versions.yml", emit: versions + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when @@ -55,7 +55,11 @@ process GATK4_APPLYBQSR { def prefix = task.ext.prefix ?: "${meta.id}.cram" """ touch ${prefix} - touch \${prefix%m}i + if [[ ${prefix} == *.cram ]]; then + touch ${prefix}.bai + else + touch ${prefix.replace(/\.bam$/, '.bai')} + fi cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/gatk4/applybqsr/meta.yml b/modules/nf-core/gatk4/applybqsr/meta.yml index 3d0ba32d7..803b661db 100644 --- a/modules/nf-core/gatk4/applybqsr/meta.yml +++ b/modules/nf-core/gatk4/applybqsr/meta.yml @@ -68,6 +68,17 @@ output: description: Recalibrated BAM file pattern: "*.{bam}" ontologies: [] + bai: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.bai": + type: file + description: Recalibrated BAM file index + pattern: "*.{bai}" + ontologies: [] cram: - - meta: type: map diff --git a/modules/nf-core/gatk4spark/applybqsr/main.nf b/modules/nf-core/gatk4spark/applybqsr/main.nf index 72dc228cc..ec1970c0b 100644 --- a/modules/nf-core/gatk4spark/applybqsr/main.nf +++ b/modules/nf-core/gatk4spark/applybqsr/main.nf @@ -14,10 +14,10 @@ process GATK4SPARK_APPLYBQSR { path dict output: - tuple val(meta), path("*.bam"), emit: bam, optional: true - tuple val(meta), path("*.bai"), emit: bai, 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 - path "versions.yml", emit: versions + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when @@ -56,6 +56,9 @@ process GATK4SPARK_APPLYBQSR { def prefix = task.ext.prefix ?: "${meta.id}.cram" """ touch ${prefix} + if [[ ${prefix} == *.bam ]]; then + touch ${prefix}.bai + fi cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/gatk4spark/applybqsr/meta.yml b/modules/nf-core/gatk4spark/applybqsr/meta.yml index 702c5f916..b0cc70ba1 100644 --- a/modules/nf-core/gatk4spark/applybqsr/meta.yml +++ b/modules/nf-core/gatk4spark/applybqsr/meta.yml @@ -65,8 +65,20 @@ output: e.g. [ id:'test', single_end:false ] - "*.bam": type: file - description: BAM file + description: Recalibrated BAM file pattern: "*.{bam}" + ontologies: [] + bai: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.bai": + type: file + description: Recalibrated BAM file index + pattern: "*.{bai}" + ontologies: [] cram: - - meta: type: map @@ -75,8 +87,9 @@ output: e.g. [ id:'test', single_end:false ] - "*.cram": type: file - description: CRAM file + description: Recalibrated CRAM file pattern: "*.{cram}" + ontologies: [] versions: - versions.yml: type: file From bcb3d2d9235dfb80ed3da810a0980a8089bd41a3 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Wed, 20 Aug 2025 09:48:22 +0200 Subject: [PATCH 33/34] fix local modules nextflow warnings --- modules/local/add_info_to_vcf/main.nf | 24 ++++++++++++++------ modules/local/create_intervals_bed/main.nf | 26 ++++++++++++---------- modules/local/samtools/reindex_bam/main.nf | 23 ++++++++++++++----- 3 files changed, 48 insertions(+), 25 deletions(-) diff --git a/modules/local/add_info_to_vcf/main.nf b/modules/local/add_info_to_vcf/main.nf index a55cf14b5..729d40b0b 100644 --- a/modules/local/add_info_to_vcf/main.nf +++ b/modules/local/add_info_to_vcf/main.nf @@ -1,18 +1,18 @@ process ADD_INFO_TO_VCF { - tag "$meta.id" + tag "${meta.id}" label 'process_single' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/gawk:5.1.0' : - 'biocontainers/gawk:5.1.0' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://depot.galaxyproject.org/singularity/gawk:5.1.0' + : 'biocontainers/gawk:5.1.0'}" input: tuple val(meta), path(vcf_gz) output: tuple val(meta), path("*.added_info.vcf"), emit: vcf - path "versions.yml" , emit: versions + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when @@ -21,7 +21,7 @@ process ADD_INFO_TO_VCF { """ input="input.vcf" output="${vcf_gz.baseName.minus(".vcf")}.added_info.vcf" - zcat $vcf_gz > \$input + zcat ${vcf_gz} > \$input ## Add info header lines grep -E "^##" \$input > \$output ## Add description of new INFO value @@ -30,7 +30,7 @@ process ADD_INFO_TO_VCF { grep -E "^#CHROM" \$input >> \$output ## Add SOURCE value to INFO column of variant calls if grep -Ev "^#" \$input; then - grep -Ev "^#" \$input | awk 'BEGIN{FS=OFS="\t"} { \$8=="." ? \$8="SOURCE=$vcf_gz" : \$8=\$8";SOURCE=$vcf_gz"; print }' >> \$output + grep -Ev "^#" \$input | awk 'BEGIN{FS=OFS="\t"} { \$8=="." ? \$8="SOURCE=${vcf_gz}" : \$8=\$8";SOURCE=${vcf_gz}"; print }' >> \$output fi cat <<-END_VERSIONS > versions.yml @@ -38,4 +38,14 @@ process ADD_INFO_TO_VCF { gawk: \$(awk -Wversion | sed '1!d; s/.*Awk //; s/,.*//') END_VERSIONS """ + + stub: + """ + touch ${vcf_gz.baseName.minus(".vcf")}.added_info.vcf + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + gawk: \$(awk -Wversion | sed '1!d; s/.*Awk //; s/,.*//') + END_VERSIONS + """ } diff --git a/modules/local/create_intervals_bed/main.nf b/modules/local/create_intervals_bed/main.nf index ad42e6ad5..518b0dc3a 100644 --- a/modules/local/create_intervals_bed/main.nf +++ b/modules/local/create_intervals_bed/main.nf @@ -1,19 +1,19 @@ process CREATE_INTERVALS_BED { - tag "$intervals" + tag "${intervals}" label 'process_single' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/gawk:5.1.0' : - 'biocontainers/gawk:5.1.0' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://depot.galaxyproject.org/singularity/gawk:5.1.0' + : 'biocontainers/gawk:5.1.0'}" input: - path(intervals) - val(nucleotides_per_second) + path intervals + val nucleotides_per_second output: - path("*.bed") , emit: bed - path "versions.yml" , emit: versions + path ("*.bed"), emit: bed + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when @@ -47,7 +47,8 @@ process CREATE_INTERVALS_BED { gawk: \$(awk -Wversion | sed '1!d; s/.*Awk //; s/,.*//') END_VERSIONS """ - } else if (intervals.toString().toLowerCase().endsWith("interval_list")) { + } + else if (intervals.toString().toLowerCase().endsWith("interval_list")) { """ grep -v '^@' ${intervals} | awk -vFS="\t" '{ name = sprintf("%s_%d-%d", \$1, \$2, \$3); @@ -59,7 +60,8 @@ process CREATE_INTERVALS_BED { gawk: \$(awk -Wversion | sed '1!d; s/.*Awk //; s/,.*//') END_VERSIONS """ - } else { + } + else { """ awk -vFS="[:-]" '{ name = sprintf("%s_%d-%d", \$1, \$2, \$3); @@ -76,10 +78,10 @@ process CREATE_INTERVALS_BED { stub: def prefix = task.ext.prefix ?: "${intervals.baseName}" def metrics = task.ext.metrics ?: "${prefix}.metrics" - // def prefix_basename = prefix.substring(0, prefix.lastIndexOf(".")) """ - touch ${prefix}.stub.bed + touch ${prefix}.bed + touch ${metrics} cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/local/samtools/reindex_bam/main.nf b/modules/local/samtools/reindex_bam/main.nf index 153f9093d..ed7e2c174 100644 --- a/modules/local/samtools/reindex_bam/main.nf +++ b/modules/local/samtools/reindex_bam/main.nf @@ -3,13 +3,13 @@ * It creates a BAM containing only a header (so indexcov can get the sample name) and a BAM index were low quality reads, supplementary etc, have been removed */ process SAMTOOLS_REINDEX_BAM { - tag "$meta.id" + tag "${meta.id}" label 'process_low' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.20--h50ea8bc_0' : - 'biocontainers/samtools:1.20--h50ea8bc_0' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://depot.galaxyproject.org/singularity/samtools:1.20--h50ea8bc_0' + : 'biocontainers/samtools:1.20--h50ea8bc_0'}" input: tuple val(meta), path(input), path(input_index) @@ -17,8 +17,8 @@ process SAMTOOLS_REINDEX_BAM { tuple val(meta3), path(fai) output: - tuple val(meta), path("${meta.id}.reindex.bam"), path("${meta.id}.reindex.bam.bai"),emit: output - path "versions.yml" , emit: versions + tuple val(meta), path("${meta.id}.reindex.bam"), path("${meta.id}.reindex.bam.bai"), emit: output + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when @@ -54,4 +54,15 @@ process SAMTOOLS_REINDEX_BAM { samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') END_VERSIONS """ + + stub: + """ + touch ${meta.id}.reindex.bam + touch ${meta.id}.reindex.bam.bai + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') + END_VERSIONS + """ } From 7d56c947d519528d0dbbfefc750e52702a8d816f Mon Sep 17 00:00:00 2001 From: maxulysse Date: Wed, 20 Aug 2025 09:50:35 +0200 Subject: [PATCH 34/34] update modules --- modules.json | 12 +-- modules/nf-core/ascat/main.nf | 84 +++++++++++---------- modules/nf-core/bcftools/annotate/main.nf | 54 ++++++------- modules/nf-core/fgbio/fastqtobam/main.nf | 22 +++--- modules/nf-core/goleft/indexcov/main.nf | 30 ++++---- modules/nf-core/lofreq/callparallel/main.nf | 33 ++++---- modules/nf-core/ngscheckmate/ncm/main.nf | 30 ++++---- 7 files changed, 133 insertions(+), 132 deletions(-) diff --git a/modules.json b/modules.json index f258a0588..35231ef9e 100644 --- a/modules.json +++ b/modules.json @@ -7,12 +7,12 @@ "nf-core": { "ascat": { "branch": "master", - "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", + "git_sha": "e88b4e59762c2e816ca90e623ed83300ecbc9222", "installed_by": ["modules"] }, "bcftools/annotate": { "branch": "master", - "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", + "git_sha": "8b09455ee60fe0cbf1323d1dee5bf9039e1ac733", "installed_by": ["modules"] }, "bcftools/concat": { @@ -168,7 +168,7 @@ }, "fgbio/fastqtobam": { "branch": "master", - "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", + "git_sha": "16af45709c1eca0aa9a8378ed790f15696dd7f1e", "installed_by": ["modules"] }, "fgbio/groupreadsbyumi": { @@ -313,12 +313,12 @@ }, "goleft/indexcov": { "branch": "master", - "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", + "git_sha": "2f955381ba60f6b7467ec2f4835a95835a5c626c", "installed_by": ["modules"] }, "lofreq/callparallel": { "branch": "master", - "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", + "git_sha": "8c0cf1994231ad6bb5c214db709ad9bf70aa318e", "installed_by": ["modules"] }, "manta/germline": { @@ -368,7 +368,7 @@ }, "ngscheckmate/ncm": { "branch": "master", - "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", + "git_sha": "5e3fd0cbb85bdfaaafdc23e8070eaebea8b93814", "installed_by": ["bam_ngscheckmate"] }, "parabricks/fq2bam": { diff --git a/modules/nf-core/ascat/main.nf b/modules/nf-core/ascat/main.nf index b18948f52..4d7b22108 100644 --- a/modules/nf-core/ascat/main.nf +++ b/modules/nf-core/ascat/main.nf @@ -1,60 +1,64 @@ process ASCAT { - tag "$meta.id" + tag "${meta.id}" label 'process_medium' 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/4c/4cf02c7911ee5e974ce7db978810770efbd8d872ff5ab3462d2a11bcf022fab5/data': - 'community.wave.seqera.io/library/ascat_cancerit-allelecount:c3e8749fa4af0e99' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/4c/4cf02c7911ee5e974ce7db978810770efbd8d872ff5ab3462d2a11bcf022fab5/data' + : 'community.wave.seqera.io/library/ascat_cancerit-allelecount:c3e8749fa4af0e99'}" input: tuple val(meta), path(input_normal), path(index_normal), path(input_tumor), path(index_tumor) - path(allele_files) - path(loci_files) - path(bed_file) // optional - path(fasta) // optional - path(gc_file) // optional - path(rt_file) // optional + path allele_files + path loci_files + path bed_file + path fasta + path gc_file + path rt_file output: tuple val(meta), path("*alleleFrequencies_chr*.txt"), emit: allelefreqs - tuple val(meta), path("*BAF.txt") , emit: bafs - tuple val(meta), path("*cnvs.txt") , emit: cnvs - tuple val(meta), path("*LogR.txt") , emit: logrs - tuple val(meta), path("*metrics.txt") , emit: metrics - tuple val(meta), path("*png") , emit: png - tuple val(meta), path("*purityploidy.txt") , emit: purityploidy - tuple val(meta), path("*segments.txt") , emit: segments - path "versions.yml" , emit: versions + tuple val(meta), path("*BAF.txt"), emit: bafs + tuple val(meta), path("*cnvs.txt"), emit: cnvs + tuple val(meta), path("*LogR.txt"), emit: logrs + tuple val(meta), path("*metrics.txt"), emit: metrics + tuple val(meta), path("*png"), emit: png + tuple val(meta), path("*purityploidy.txt"), emit: purityploidy + tuple val(meta), path("*segments.txt"), emit: segments + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" - def gender = args.gender ? "${args.gender}" : "NULL" - def genomeVersion = args.genomeVersion ? "${args.genomeVersion}" : "NULL" - def purity = args.purity ? "${args.purity}" : "NULL" - def ploidy = args.ploidy ? "${args.ploidy}" : "NULL" - def gc_input = gc_file ? "${gc_file}" : "NULL" - def rt_input = rt_file ? "${rt_file}" : "NULL" - - def minCounts_arg = args.minCounts ? ", minCounts = ${args.minCounts}" : "" - def bed_file_arg = bed_file ? ", BED_file = '${bed_file}'" : "" - def chrom_names_arg = args.chrom_names ? ", chrom_names = ${args.chrom_names}" : "" - def min_base_qual_arg = args.min_base_qual ? ", min_base_qual = ${args.min_base_qual}" : "" - def min_map_qual_arg = args.min_map_qual ? ", min_map_qual = ${args.min_map_qual}" : "" - def skip_allele_counting_tumour_arg = args.skip_allele_counting_tumour ? ", skip_allele_counting_tumour = ${args.skip_allele_counting_tumour}" : "" - def skip_allele_counting_normal_arg = args.skip_allele_counting_normal ? ", skip_allele_counting_normal = ${args.skip_allele_counting_normal}" : "" - - if(args.additional_allelecounter_flags && fasta) { + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + + def gender = args.gender ? "${args.gender}" : "NULL" + def genomeVersion = args.genomeVersion ? "${args.genomeVersion}" : "NULL" + def purity = args.purity ? "${args.purity}" : "NULL" + def ploidy = args.ploidy ? "${args.ploidy}" : "NULL" + def gc_input = gc_file ? "${gc_file}" : "NULL" + def rt_input = rt_file ? "${rt_file}" : "NULL" + + def minCounts_arg = args.minCounts ? ", minCounts = ${args.minCounts}" : "" + def bed_file_arg = bed_file ? ", BED_file = '${bed_file}'" : "" + def chrom_names_arg = args.chrom_names ? ", chrom_names = ${args.chrom_names}" : "" + def min_base_qual_arg = args.min_base_qual ? ", min_base_qual = ${args.min_base_qual}" : "" + def min_map_qual_arg = args.min_map_qual ? ", min_map_qual = ${args.min_map_qual}" : "" + def skip_allele_counting_tumour_arg = args.skip_allele_counting_tumour ? ", skip_allele_counting_tumour = ${args.skip_allele_counting_tumour}" : "" + def skip_allele_counting_normal_arg = args.skip_allele_counting_normal ? ", skip_allele_counting_normal = ${args.skip_allele_counting_normal}" : "" + + if (args.additional_allelecounter_flags && fasta) { additional_allelecounter_arg = ", additional_allelecounter_flags = \"${args.additional_allelecounter_flags} -r ${fasta}\" " - } else if (args.additional_allelecounter_flags ) { + } + else if (args.additional_allelecounter_flags) { additional_allelecounter_arg = ", additional_allelecounter_flags = \"${args.additional_allelecounter_flags}\" " - } else if (fasta) { + } + else if (fasta) { additional_allelecounter_arg = ", additional_allelecounter_flags = '-r \"${fasta}\"'" - } else { + } + else { additional_allelecounter_arg = "" } @@ -252,6 +256,4 @@ process ASCAT { alleleCounter: \$(alleleCounter --version) END_VERSIONS """ - - } diff --git a/modules/nf-core/bcftools/annotate/main.nf b/modules/nf-core/bcftools/annotate/main.nf index 7ba3267c1..d0dc5b909 100644 --- a/modules/nf-core/bcftools/annotate/main.nf +++ b/modules/nf-core/bcftools/annotate/main.nf @@ -1,52 +1,53 @@ process BCFTOOLS_ANNOTATE { - tag "$meta.id" + tag "${meta.id}" label 'process_low' 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/5a/5acacb55c52bec97c61fd34ffa8721fce82ce823005793592e2a80bf71632cd0/data': - 'community.wave.seqera.io/library/bcftools:1.21--4335bec1d7b44d11' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/5a/5acacb55c52bec97c61fd34ffa8721fce82ce823005793592e2a80bf71632cd0/data' + : 'community.wave.seqera.io/library/bcftools:1.21--4335bec1d7b44d11'}" input: tuple val(meta), path(input), path(index), path(annotations), path(annotations_index) - path(header_lines) - path(rename_chrs) + path header_lines + path rename_chrs output: tuple val(meta), path("*.{vcf,vcf.gz,bcf,bcf.gz}"), emit: vcf - tuple val(meta), path("*.tbi") , emit: tbi, optional: true - tuple val(meta), path("*.csi") , emit: csi, optional: true - path "versions.yml" , emit: versions + tuple val(meta), path("*.tbi"), emit: tbi, optional: true + tuple val(meta), path("*.csi"), emit: csi, optional: true + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" def header_file = header_lines ? "--header-lines ${header_lines}" : '' def annotations_file = annotations ? "--annotations ${annotations}" : '' def rename_chrs_file = rename_chrs ? "--rename-chrs ${rename_chrs}" : '' def extension = args.contains("--output-type b") || args.contains("-Ob") ? "bcf.gz" : args.contains("--output-type u") || args.contains("-Ou") ? "bcf" : args.contains("--output-type z") || args.contains("-Oz") ? "vcf.gz" : - args.contains("--output-type v") || args.contains("-Ov") ? "vcf" : - "vcf" - def index_command = !index ? "bcftools index $input" : '' + args.contains("--output-type v") || args.contains("-Ov") ? "vcf" : "vcf" + def index_command = !index ? "bcftools index ${input}" : '' - if ("$input" == "${prefix}.${extension}") error "Input and output names are the same, set prefix in module configuration to disambiguate!" + if ("${input}" == "${prefix}.${extension}") { + error("Input and output names are the same, set prefix in module configuration to disambiguate!") + } """ - $index_command + ${index_command} bcftools \\ annotate \\ - $args \\ - $annotations_file \\ - $rename_chrs_file \\ - $header_file \\ + ${args} \\ + ${annotations_file} \\ + ${rename_chrs_file} \\ + ${header_file} \\ --output ${prefix}.${extension} \\ - --threads $task.cpus \\ - $input + --threads ${task.cpus} \\ + ${input} cat <<-END_VERSIONS > versions.yml "${task.process}": @@ -63,13 +64,14 @@ process BCFTOOLS_ANNOTATE { args.contains("--output-type v") || args.contains("-Ov") ? "vcf" : "vcf" def index_extension = args.contains("--write-index=tbi") || args.contains("-W=tbi") ? "tbi" : - args.contains("--write-index=csi") || args.contains("-W=csi") ? "csi" : - args.contains("--write-index") || args.contains("-W") ? "csi" : - "" + args.contains("--write-index=csi") || args.contains("-W=csi") ? "csi" : + args.contains("--write-index") || args.contains("-W") ? "csi" : "" def create_cmd = extension.endsWith(".gz") ? "echo '' | gzip >" : "touch" def create_index = extension.endsWith(".gz") && index_extension.matches("csi|tbi") ? "touch ${prefix}.${extension}.${index_extension}" : "" - if ("$input" == "${prefix}.${extension}") error "Input and output names are the same, set prefix in module configuration to disambiguate!" + if ("${input}" == "${prefix}.${extension}") { + error("Input and output names are the same, set prefix in module configuration to disambiguate!") + } """ ${create_cmd} ${prefix}.${extension} ${create_index} diff --git a/modules/nf-core/fgbio/fastqtobam/main.nf b/modules/nf-core/fgbio/fastqtobam/main.nf index 6ee64bb32..fcf3e8d61 100644 --- a/modules/nf-core/fgbio/fastqtobam/main.nf +++ b/modules/nf-core/fgbio/fastqtobam/main.nf @@ -1,19 +1,19 @@ process FGBIO_FASTQTOBAM { - tag "$meta.id" + tag "${meta.id}" label 'process_low' 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/b4/b4047e3e517b57fae311eab139a12f0887d898b7da5fceeb2a1029c73b9e3904/data' : - 'community.wave.seqera.io/library/fgbio:2.5.21--368dab1b4f308243' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/b4/b4047e3e517b57fae311eab139a12f0887d898b7da5fceeb2a1029c73b9e3904/data' + : 'community.wave.seqera.io/library/fgbio:2.5.21--368dab1b4f308243'}" input: tuple val(meta), path(reads) output: - tuple val(meta), path("*.bam") , emit: bam , optional: true + tuple val(meta), path("*.bam"), emit: bam, optional: true tuple val(meta), path("*.cram"), emit: cram, optional: true - path "versions.yml" , emit: versions + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when @@ -27,11 +27,13 @@ process FGBIO_FASTQTOBAM { def mem_gb = 8 if (!task.memory) { - log.info '[fgbio FastqToBam] Available memory not known - defaulting to 8GB. Specify process memory requirements to change this.' - } else if (mem_gb > task.memory.giga) { + log.info('[fgbio FastqToBam] Available memory not known - defaulting to 8GB. Specify process memory requirements to change this.') + } + else if (mem_gb > task.memory.giga) { if (task.memory.giga < 2) { mem_gb = 1 - } else { + } + else { mem_gb = task.memory.giga - 1 } } @@ -55,10 +57,8 @@ process FGBIO_FASTQTOBAM { """ stub: - def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" def suffix = task.ext.suffix ?: "bam" - """ touch ${prefix}.${suffix} diff --git a/modules/nf-core/goleft/indexcov/main.nf b/modules/nf-core/goleft/indexcov/main.nf index 5d0ed5dfb..738023d49 100644 --- a/modules/nf-core/goleft/indexcov/main.nf +++ b/modules/nf-core/goleft/indexcov/main.nf @@ -3,23 +3,23 @@ process GOLEFT_INDEXCOV { label 'process_single' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/goleft:0.2.4--h9ee0642_1': - 'biocontainers/goleft:0.2.4--h9ee0642_1' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://depot.galaxyproject.org/singularity/goleft:0.2.4--h9ee0642_1' + : 'biocontainers/goleft:0.2.4--h9ee0642_1'}" input: tuple val(meta), path(bams), path(indexes) tuple val(meta2), path(fai) output: - tuple val(meta), path("${prefix}/*") , emit: output - tuple val(meta), path("${prefix}/*ped") , emit: ped , optional: true - tuple val(meta), path("${prefix}/*bed.gz") , emit: bed , optional: true - tuple val(meta), path("${prefix}/*bed.gz.tbi"), emit: bed_index , optional: true - tuple val(meta), path("${prefix}/*roc") , emit: roc , optional: true - tuple val(meta), path("${prefix}/*html") , emit: html, optional: true - tuple val(meta), path("${prefix}/*png") , emit: png , optional: true - path "versions.yml" , emit: versions + tuple val(meta), path("${prefix}/*"), emit: output + tuple val(meta), path("${prefix}/*ped"), emit: ped, optional: true + tuple val(meta), path("${prefix}/*bed.gz"), emit: bed, optional: true + tuple val(meta), path("${prefix}/*bed.gz.tbi"), emit: bed_index, optional: true + tuple val(meta), path("${prefix}/*roc"), emit: roc, optional: true + tuple val(meta), path("${prefix}/*html"), emit: html, optional: true + tuple val(meta), path("${prefix}/*png"), emit: png, optional: true + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when @@ -28,14 +28,14 @@ process GOLEFT_INDEXCOV { def args = task.ext.args ?: '' prefix = task.ext.prefix ?: "${meta.id}" // indexcov uses BAM files or CRAI - def input_files = bams.findAll{it.name.endsWith(".bam")} + indexes.findAll{it.name.endsWith(".crai")} - def extranormalize = input_files.any{it.name.endsWith(".crai")} ? " --extranormalize " : "" + def input_files = bams.findAll { it.name.endsWith(".bam") } + indexes.findAll { it.name.endsWith(".crai") } + def extranormalize = input_files.any { it.name.endsWith(".crai") } ? " --extranormalize " : "" """ goleft indexcov \\ --fai ${fai} \\ --directory ${prefix} \\ ${extranormalize} \\ - $args \\ + ${args} \\ ${input_files.join(" ")} if [ -f "${prefix}/${prefix}-indexcov.bed.gz" ] ; then @@ -48,8 +48,8 @@ process GOLEFT_INDEXCOV { tabix: \$(echo \$(tabix -h 2>&1) | sed 's/^.*Version: //; s/ .*\$//') END_VERSIONS """ + stub: - def args = task.ext.args ?: '' prefix = task.ext.prefix ?: "${meta.id}" """ mkdir "${prefix}" diff --git a/modules/nf-core/lofreq/callparallel/main.nf b/modules/nf-core/lofreq/callparallel/main.nf index 93f9a3dfb..f3c6e2b1e 100644 --- a/modules/nf-core/lofreq/callparallel/main.nf +++ b/modules/nf-core/lofreq/callparallel/main.nf @@ -1,21 +1,21 @@ process LOFREQ_CALLPARALLEL { - tag "$meta.id" + tag "${meta.id}" label 'process_high' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/lofreq:2.1.5--py38h588ecb2_4' : - 'biocontainers/lofreq:2.1.5--py38h588ecb2_4' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://depot.galaxyproject.org/singularity/lofreq:2.1.5--py38h588ecb2_4' + : 'biocontainers/lofreq:2.1.5--py38h588ecb2_4'}" input: - tuple val(meta) , path(bam), path(bai), path(intervals) + tuple val(meta), path(bam), path(bai), path(intervals) tuple val(meta2), path(fasta) tuple val(meta3), path(fai) output: - tuple val(meta), path("*.vcf.gz") , emit: vcf + tuple val(meta), path("*.vcf.gz"), emit: vcf tuple val(meta), path("*.vcf.gz.tbi"), emit: tbi - path "versions.yml" , emit: versions + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when @@ -25,30 +25,29 @@ process LOFREQ_CALLPARALLEL { def prefix = task.ext.prefix ?: "${meta.id}" def options_intervals = intervals ? "-l ${intervals}" : "" - def alignment_cram = bam.Extension == "cram" ? true : false - def alignment_bam = bam.Extension == "bam" ? true : false + def alignment_cram = bam.Extension == "cram" ? true : false def alignment_out = alignment_cram ? bam.BaseName + ".bam" : "${bam}" def samtools_cram_convert = '' - samtools_cram_convert += alignment_cram ? " samtools view -T ${fasta} ${bam} -@ $task.cpus -o ${alignment_out}\n" : '' + samtools_cram_convert += alignment_cram ? " samtools view -T ${fasta} ${bam} -@ ${task.cpus} -o ${alignment_out}\n" : '' samtools_cram_convert += alignment_cram ? " samtools index ${alignment_out}\n" : '' def samtools_cram_remove = '' samtools_cram_remove += alignment_cram ? " rm ${alignment_out}\n" : '' samtools_cram_remove += alignment_cram ? " rm ${alignment_out}.bai\n " : '' """ - $samtools_cram_convert + ${samtools_cram_convert} lofreq \\ call-parallel \\ - --pp-threads $task.cpus \\ - $args \\ - $options_intervals \\ - -f $fasta \\ + --pp-threads ${task.cpus} \\ + ${args} \\ + ${options_intervals} \\ + -f ${fasta} \\ -o ${prefix}.vcf.gz \\ - $alignment_out + ${alignment_out} - $samtools_cram_remove + ${samtools_cram_remove} cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/ngscheckmate/ncm/main.nf b/modules/nf-core/ngscheckmate/ncm/main.nf index ffb64a86b..1b5e09aeb 100644 --- a/modules/nf-core/ngscheckmate/ncm/main.nf +++ b/modules/nf-core/ngscheckmate/ncm/main.nf @@ -2,41 +2,41 @@ process NGSCHECKMATE_NCM { label 'process_low' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/ngscheckmate:1.0.1--py312pl5321h577a1d6_4': - 'biocontainers/ngscheckmate:1.0.1--py312pl5321h577a1d6_4' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://depot.galaxyproject.org/singularity/ngscheckmate:1.0.1--py312pl5321h577a1d6_4' + : 'biocontainers/ngscheckmate:1.0.1--py312pl5321h577a1d6_4'}" input: - tuple val(meta) , path(files) + tuple val(meta), path(files) tuple val(meta2), path(snp_bed) tuple val(meta3), path(fasta) output: tuple val(meta), path("*_corr_matrix.txt"), emit: corr_matrix - tuple val(meta), path("*_matched.txt") , emit: matched - tuple val(meta), path("*_all.txt") , emit: all - tuple val(meta), path("*.pdf") , emit: pdf, optional: true - tuple val(meta), path("*.vcf") , emit: vcf, optional: true - path "versions.yml" , emit: versions + tuple val(meta), path("*_matched.txt"), emit: matched + tuple val(meta), path("*_all.txt"), emit: all + tuple val(meta), path("*.pdf"), emit: pdf, optional: true + tuple val(meta), path("*.vcf"), emit: vcf, optional: true + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when script: def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "$meta.id" + def prefix = task.ext.prefix ?: "${meta.id}" def unzip = files.any { it.toString().endsWith(".vcf.gz") } """ - if $unzip + if ${unzip} then for VCFGZ in *.vcf.gz; do gunzip -cdf \$VCFGZ > \$( basename \$VCFGZ .gz ); done fi - NCM_REF="./"${fasta} ncm.py -d . -bed ${snp_bed} -O . -N ${prefix} $args + NCM_REF="./"${fasta} ncm.py -d . -bed ${snp_bed} -O . -N ${prefix} ${args} - if $unzip + if ${unzip} then rm -f *.vcf # clean up decompressed vcfs fi @@ -48,8 +48,7 @@ process NGSCHECKMATE_NCM { """ stub: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "$meta.id" + def prefix = task.ext.prefix ?: "${meta.id}" """ touch ${prefix}_output_corr_matrix.txt touch ${prefix}_matched.txt @@ -61,5 +60,4 @@ process NGSCHECKMATE_NCM { ngscheckmate: \$(ncm.py --help | sed "7!d;s/ *Ensuring Sample Identity v//g") END_VERSIONS """ - }