From 6f3c37f60f473e10d977375f21a41fca63133927 Mon Sep 17 00:00:00 2001 From: MaxUlysse Date: Sat, 25 Jul 2020 17:21:33 +0200 Subject: [PATCH] add gatherbqsrreports --- main.nf | 36 ++++++++++++++++--- .../nf-core/software/gatk_baserecalibrator.nf | 2 +- .../software/gatk_gatherbqsrreports.nf | 28 +++++++++++++++ 3 files changed, 60 insertions(+), 6 deletions(-) create mode 100644 modules/nf-core/software/gatk_gatherbqsrreports.nf diff --git a/main.nf b/main.nf index 0e0c240760..ffd96fa88d 100644 --- a/main.nf +++ b/main.nf @@ -277,9 +277,10 @@ include { BUILD_INDICES } from './modules/local/subworkflow/build_indices' ================================================================================ */ -include { GATK_MARKDUPLICATES as MARKDUPLICATES } from './modules/nf-core/software/gatk_markduplicates' -include { GATK_BASERECALIBRATOR as BASERECALIBRATOR } from './modules/nf-core/software/gatk_baserecalibrator' -include { MULTIQC } from './modules/nf-core/software/multiqc' +include { GATK_BASERECALIBRATOR as BASERECALIBRATOR } from './modules/nf-core/software/gatk_baserecalibrator' +include { GATK_GATHERBQSRREPORTS as GATHERBQSRREPORTS } from './modules/nf-core/software/gatk_gatherbqsrreports' +include { GATK_MARKDUPLICATES as MARKDUPLICATES } from './modules/nf-core/software/gatk_markduplicates' +include { MULTIQC } from './modules/nf-core/software/multiqc' /* ================================================================================ @@ -368,7 +369,7 @@ workflow { BWAMEM2_MEM(QC_TRIM.out.reads, bwa, fasta, fai, params.modules['bwamem2_mem']) - results = BWAMEM2_MEM.out.map{ meta, bam, bai -> + BWAMEM2_MEM.out.map{ meta, bam, bai -> patient = meta.patient sample = meta.sample gender = meta.gender @@ -378,7 +379,7 @@ workflow { .branch{ single: it[4].size() == 1 multiple: it[4].size() > 1 - }.set { bam } + }.set{ bam } bam_single = bam.single.map { patient, sample, gender, status, bam, bai -> @@ -423,6 +424,31 @@ workflow { BASERECALIBRATOR(bam_baserecalibrator, dbsnp, dbsnp_tbi, dict, fai, fasta, known_indels, known_indels_tbi) + if (!params.no_intervals) { + BASERECALIBRATOR.out.report.map{ meta, table -> + patient = meta.patient + sample = meta.sample + gender = meta.gender + status = meta.status + [patient, sample, gender, status, table] + }.groupTuple(by: [0,1]).set{ recaltable } + + recaltable = recaltable.map { + patient, sample, gender, status, recal -> + + def meta = [:] + meta.patient = patient + meta.sample = sample + meta.gender = gender[0] + meta.status = status[0] + meta.id = sample + + [meta, recal] + } + + GATHERBQSRREPORTS(recaltable) + } + OUTPUT_DOCUMENTATION( output_docs, output_docs_images) diff --git a/modules/nf-core/software/gatk_baserecalibrator.nf b/modules/nf-core/software/gatk_baserecalibrator.nf index cfbec2c4ae..58452201e4 100644 --- a/modules/nf-core/software/gatk_baserecalibrator.nf +++ b/modules/nf-core/software/gatk_baserecalibrator.nf @@ -15,7 +15,7 @@ process GATK_BASERECALIBRATOR { output: tuple val(meta), path("${prefix}${meta.sample}.recal.table"), emit: report - val meta, emit: tsv + val meta, emit: tsv //when: params.known_indels diff --git a/modules/nf-core/software/gatk_gatherbqsrreports.nf b/modules/nf-core/software/gatk_gatherbqsrreports.nf new file mode 100644 index 0000000000..c33403e5fe --- /dev/null +++ b/modules/nf-core/software/gatk_gatherbqsrreports.nf @@ -0,0 +1,28 @@ +process GATK_GATHERBQSRREPORTS { + label 'memory_singleCPU_2_task' + label 'cpus_2' + tag "${meta.id}" + + publishDir params.outdir, mode: params.publish_dir_mode, + saveAs: { + if (it == "${meta.sample}.recal.table" && !params.skip_markduplicates) "Preprocessing/${meta.sample}/DuplicatesMarked/${it}" + else "Preprocessing/${meta.sample}/Mapped/${it}" + } + + input: + tuple val(meta), path(recal) + + output: + tuple val(meta), path("${meta.sample}.recal.table"), emit: table + path "${meta.sample}.recal.table", emit: report + val meta, emit: tsv + + script: + input = recal.collect{"-I ${it}"}.join(' ') + """ + gatk --java-options -Xmx${task.memory.toGiga()}g \ + GatherBQSRReports \ + ${input} \ + -O ${meta.sample}.recal.table \ + """ +} \ No newline at end of file