From f217e6af236eae07d4834630e58e1a732f2d6db6 Mon Sep 17 00:00:00 2001 From: Rike Date: Thu, 16 Jun 2022 12:36:00 +0200 Subject: [PATCH 01/20] Add error message if dbsnp or known_indels is not supplied for bqsr or haplotypecaller --- subworkflows/local/prepare_genome.nf | 2 +- workflows/sarek.nf | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/subworkflows/local/prepare_genome.nf b/subworkflows/local/prepare_genome.nf index 2e09e628a..cea9c8e48 100644 --- a/subworkflows/local/prepare_genome.nf +++ b/subworkflows/local/prepare_genome.nf @@ -74,7 +74,7 @@ workflow PREPARE_GENOME { bwa = BWAMEM1_INDEX.out.index // path: bwa/* bwamem2 = BWAMEM2_INDEX.out.index // path: bwamem2/* hashtable = DRAGMAP_HASHTABLE.out.hashmap // path: dragmap/* - dbsnp_tbi = TABIX_DBSNP.out.tbi.map{ meta, tbi -> [tbi] }.collect() // path: dbsnb.vcf.gz.tbi + dbsnp_tbi = TABIX_DBSNP.out.tbi.map{ meta, tbi -> [tbi] }.collect() // path: dbsnb.vcf.gz.tbi dict = GATK4_CREATESEQUENCEDICTIONARY.out.dict // path: genome.fasta.dict fasta_fai = SAMTOOLS_FAIDX.out.fai.map{ meta, fai -> [fai] } // path: genome.fasta.fai germline_resource_tbi = TABIX_GERMLINE_RESOURCE.out.tbi.map{ meta, tbi -> [tbi] }.collect() // path: germline_resource.vcf.gz.tbi diff --git a/workflows/sarek.nf b/workflows/sarek.nf index 07acfa7d0..b94d2f07d 100644 --- a/workflows/sarek.nf +++ b/workflows/sarek.nf @@ -65,6 +65,21 @@ if(params.tools && params.tools.contains('mutect2')){ } } +if(!params.dbsnp && !params.known_indels){ + if(!params.skip_tools.contains('baserecalibrator')){ + log.error "Base quality recalibration requires at least one resource file. Please provide at least one of `--dbsnp` or `--known_indels`" + exit 1 + } + if(params.tools.contains('haplotypecaller')){ + log.error "The Haplotypecaller workflow requires at least one resource file. Please provide at least one of `--dbsnp` or `--known_indels`.\n + For more information see FilterVariantTranches (single-sample, default): https://gatk.broadinstitute.org/hc/en-us/articles/5358928898971-FilterVariantTranches\n + For more information see VariantRecalibration (--joint_germline): https://gatk.broadinstitute.org/hc/en-us/articles/5358906115227-VariantRecalibrator\n + For more information on GATK Best practice germline variant calling: https://gatk.broadinstitute.org/hc/en-us/articles/360035535932-Germline-short-variant-discovery-SNPs-Indels-" + exit 1 + } + +} + // Save AWS IGenomes file containing annotation version def anno_readme = params.genomes[params.genome]?.readme if (anno_readme && file(anno_readme).exists()) { From 2d811ff1369aa1e7db83974aebc66c8e47826bfa Mon Sep 17 00:00:00 2001 From: Rike Date: Thu, 16 Jun 2022 12:44:43 +0200 Subject: [PATCH 02/20] multi-line not supported, use \n instead --- workflows/sarek.nf | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/workflows/sarek.nf b/workflows/sarek.nf index b94d2f07d..284c27f1a 100644 --- a/workflows/sarek.nf +++ b/workflows/sarek.nf @@ -66,15 +66,12 @@ if(params.tools && params.tools.contains('mutect2')){ } if(!params.dbsnp && !params.known_indels){ - if(!params.skip_tools.contains('baserecalibrator')){ - log.error "Base quality recalibration requires at least one resource file. Please provide at least one of `--dbsnp` or `--known_indels`" + if(!params.skip_tools || params.skip_tools && !params.skip_tools.contains('baserecalibrator')){ + log.error "Base quality score recalibration requires at least one resource file. Please provide at least one of `--dbsnp` or `--known_indels`\nYou can skip this step in the workflow by adding `--skip_tools baserecalibrator` to the command." exit 1 } - if(params.tools.contains('haplotypecaller')){ - log.error "The Haplotypecaller workflow requires at least one resource file. Please provide at least one of `--dbsnp` or `--known_indels`.\n - For more information see FilterVariantTranches (single-sample, default): https://gatk.broadinstitute.org/hc/en-us/articles/5358928898971-FilterVariantTranches\n - For more information see VariantRecalibration (--joint_germline): https://gatk.broadinstitute.org/hc/en-us/articles/5358906115227-VariantRecalibrator\n - For more information on GATK Best practice germline variant calling: https://gatk.broadinstitute.org/hc/en-us/articles/360035535932-Germline-short-variant-discovery-SNPs-Indels-" + if(params.tools && params.tools.contains('haplotypecaller')){ + log.error "The Haplotypecaller workflow requires at least one resource file. Please provide at least one of `--dbsnp` or `--known_indels`.\nFor more information see FilterVariantTranches (single-sample, default): https://gatk.broadinstitute.org/hc/en-us/articles/5358928898971-FilterVariantTranches\nFor more information see VariantRecalibration (--joint_germline): https://gatk.broadinstitute.org/hc/en-us/articles/5358906115227-VariantRecalibrator\nFor more information on GATK Best practice germline variant calling: https://gatk.broadinstitute.org/hc/en-us/articles/360035535932-Germline-short-variant-discovery-SNPs-Indels-" exit 1 } From dd54c4c49a6d706f9fd137068d6988a5531ee488 Mon Sep 17 00:00:00 2001 From: Rike Date: Thu, 16 Jun 2022 13:06:55 +0200 Subject: [PATCH 03/20] Make PON optional --- subworkflows/local/prepare_genome.nf | 32 +++++++++++++++++----------- workflows/sarek.nf | 8 ++++++- 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/subworkflows/local/prepare_genome.nf b/subworkflows/local/prepare_genome.nf index cea9c8e48..60ccb6b7b 100644 --- a/subworkflows/local/prepare_genome.nf +++ b/subworkflows/local/prepare_genome.nf @@ -49,7 +49,14 @@ workflow PREPARE_GENOME { TABIX_DBSNP(dbsnp.flatten().map{ it -> [[id:it.baseName], it] }) TABIX_GERMLINE_RESOURCE(germline_resource.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] }) + + pon_tbi = [] //Must be empty list to allow Mutect2 to run without a PON supplied + if(pon){ + TABIX_PON(pon.flatten().map{ it -> [[id:it.baseName], it] }) + ch_versions = ch_versions.mix(TABIX_PON.out.versions) + + pon_tbi = TABIX_PON.out.tbi.map{ meta, tbi -> [tbi] }.collect() + } chr_files = chr_dir //TODO this works, but is not pretty. I will leave this in your hands during refactoring @Maxime @@ -68,19 +75,18 @@ workflow PREPARE_GENOME { ch_versions = ch_versions.mix(TABIX_DBSNP.out.versions) ch_versions = ch_versions.mix(TABIX_GERMLINE_RESOURCE.out.versions) ch_versions = ch_versions.mix(TABIX_KNOWN_INDELS.out.versions) - ch_versions = ch_versions.mix(TABIX_PON.out.versions) emit: - bwa = BWAMEM1_INDEX.out.index // path: bwa/* - bwamem2 = BWAMEM2_INDEX.out.index // path: bwamem2/* - hashtable = DRAGMAP_HASHTABLE.out.hashmap // path: dragmap/* - dbsnp_tbi = TABIX_DBSNP.out.tbi.map{ meta, tbi -> [tbi] }.collect() // path: dbsnb.vcf.gz.tbi - dict = GATK4_CREATESEQUENCEDICTIONARY.out.dict // path: genome.fasta.dict - fasta_fai = SAMTOOLS_FAIDX.out.fai.map{ meta, fai -> [fai] } // path: genome.fasta.fai - germline_resource_tbi = TABIX_GERMLINE_RESOURCE.out.tbi.map{ meta, tbi -> [tbi] }.collect() // path: germline_resource.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 + bwa = BWAMEM1_INDEX.out.index // path: bwa/* + bwamem2 = BWAMEM2_INDEX.out.index // path: bwamem2/* + hashtable = DRAGMAP_HASHTABLE.out.hashmap // path: dragmap/* + dbsnp_tbi = TABIX_DBSNP.out.tbi.map{ meta, tbi -> [tbi] }.collect() // path: dbsnb.vcf.gz.tbi + dict = GATK4_CREATESEQUENCEDICTIONARY.out.dict // path: genome.fasta.dict + fasta_fai = SAMTOOLS_FAIDX.out.fai.map{ meta, fai -> [fai] } // path: genome.fasta.fai + germline_resource_tbi = TABIX_GERMLINE_RESOURCE.out.tbi.map{ meta, tbi -> [tbi] }.collect() // path: germline_resource.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 // path: pon.vcf.gz.tbi chr_files = chr_files - versions = ch_versions // channel: [ versions.yml ] + versions = ch_versions // channel: [ versions.yml ] } diff --git a/workflows/sarek.nf b/workflows/sarek.nf index 284c27f1a..1f87bf5b5 100644 --- a/workflows/sarek.nf +++ b/workflows/sarek.nf @@ -59,6 +59,12 @@ if (params.wes) { } if(params.tools && params.tools.contains('mutect2')){ + if(!params.pon){ + log.warn("No Panel-of-normal was specified for Mutect2.\nIt is highly recommended to use one: https://gatk.broadinstitute.org/hc/en-us/articles/5358911630107-Mutect2\nFor more information on how to create one: https://gatk.broadinstitute.org/hc/en-us/articles/5358921041947-CreateSomaticPanelOfNormals-BETA-") + } + if(params.pon && params.pon.contains("/Homo_sapiens/GATK/GRCh38/Annotation/GATKBundle/1000g_pon.hg38.vcf.gz")){ + log.warn("The default Panel-of-Normals provided by GATK is used for Mutect2.\nIt is highly recommended to generate one from normal samples that are technical similar to the tumor ones.\nFor more information: https://gatk.broadinstitute.org/hc/en-us/articles/360035890631-Panel-of-Normals-PON-") + } if(params.no_intervals){ log.error "--tools mutect2 and --no_intervals cannot be used together.\nOne of the tools within the Mutect2 subworkflow requires intervals. They can be provided to the pipeline with --intervals. If none are provided, they will be generated from the FASTA file.\nFor more information on the Mutect2 workflow, see here: https://gatk.broadinstitute.org/hc/en-us/articles/360035531132--How-to-Call-somatic-mutations-using-GATK4-Mutect2.\nFor more information on GetPileupsummaries, see here: https://gatk.broadinstitute.org/hc/en-us/articles/5358860217115-GetPileupSummaries" exit 1 @@ -108,7 +114,7 @@ vep_genome = params.vep_genome ?: Channel.empty() vep_species = params.vep_species ?: Channel.empty() // Initialize files channels based on params, not defined within the params.genomes[params.genome] scope -pon = params.pon ? Channel.fromPath(params.pon).collect() : Channel.empty() +pon = params.pon ? Channel.fromPath(params.pon).collect() : [] //PON is optional for Mutect2 (but highly recommended) snpeff_cache = params.snpeff_cache ? Channel.fromPath(params.snpeff_cache).collect() : [] vep_cache = params.vep_cache ? Channel.fromPath(params.vep_cache).collect() : [] From a49df17e3cb7195573cbd5d464b62b18929e1b0f Mon Sep 17 00:00:00 2001 From: Rike Date: Thu, 16 Jun 2022 14:25:50 +0200 Subject: [PATCH 04/20] Make germline_resource optional for mutect2 --- subworkflows/local/prepare_genome.nf | 31 ++++++++++++++----- .../main.nf | 6 ++-- .../main.nf | 4 ++- workflows/sarek.nf | 7 +++-- 4 files changed, 35 insertions(+), 13 deletions(-) diff --git a/subworkflows/local/prepare_genome.nf b/subworkflows/local/prepare_genome.nf index 60ccb6b7b..1a3d27d2d 100644 --- a/subworkflows/local/prepare_genome.nf +++ b/subworkflows/local/prepare_genome.nf @@ -46,11 +46,29 @@ workflow PREPARE_GENOME { // 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_DBSNP(dbsnp.flatten().map{ it -> [[id:it.baseName], it] }) - TABIX_GERMLINE_RESOURCE(germline_resource.flatten().map{ it -> [[id:it.baseName], it] }) TABIX_KNOWN_INDELS( known_indels.flatten().map{ it -> [[id:it.baseName], it] } ) - pon_tbi = [] //Must be empty list to allow Mutect2 to run without a PON supplied + //dbsnp is optional, thus could be '[]'. In this case do not run below, as [].flatten errors out. + dbsnp_tbi = [] + if(dbsnp){ + TABIX_DBSNP(dbsnp.flatten().map{ it -> [[id:it.baseName], it] }) + ch_versions = ch_versions.mix(TABIX_DBSNP.out.versions) + + dbsnp_tbi = TABIX_DBSNP.out.tbi.map{ meta, tbi -> [tbi] }.collect() // path: dbsnb.vcf.gz.tbi + } + + //germline_resource is optional, thus could be '[]'. In this case do not run below, as [].flatten errors out. + germline_resource_tbi = Channel.empty() + if(germline_resource){ + TABIX_GERMLINE_RESOURCE(germline_resource.flatten().map{ it -> [[id:it.baseName], it] }) + ch_versions = ch_versions.mix(TABIX_GERMLINE_RESOURCE.out.versions) + + germline_resource_tbi = TABIX_GERMLINE_RESOURCE.out.tbi.map{ meta, tbi -> [tbi] }.collect() + } + + + //pon is optional, thus could be '[]'. In this case do not run below, as [].flatten errors out. + pon_tbi = Channel.empty() if(pon){ TABIX_PON(pon.flatten().map{ it -> [[id:it.baseName], it] }) ch_versions = ch_versions.mix(TABIX_PON.out.versions) @@ -59,7 +77,6 @@ workflow PREPARE_GENOME { } chr_files = chr_dir - //TODO this works, but is not pretty. I will leave this in your hands during refactoring @Maxime if ( params.chr_dir.endsWith('tar.gz')){ UNTAR_CHR_DIR(chr_dir.map{ it -> [[id:it[0].baseName], it] }) chr_files = UNTAR_CHR_DIR.out.untar.map{ it[1] } @@ -72,18 +89,16 @@ workflow PREPARE_GENOME { ch_versions = ch_versions.mix(BWAMEM2_INDEX.out.versions) ch_versions = ch_versions.mix(GATK4_CREATESEQUENCEDICTIONARY.out.versions) ch_versions = ch_versions.mix(MSISENSORPRO_SCAN.out.versions) - ch_versions = ch_versions.mix(TABIX_DBSNP.out.versions) - ch_versions = ch_versions.mix(TABIX_GERMLINE_RESOURCE.out.versions) ch_versions = ch_versions.mix(TABIX_KNOWN_INDELS.out.versions) emit: bwa = BWAMEM1_INDEX.out.index // path: bwa/* bwamem2 = BWAMEM2_INDEX.out.index // path: bwamem2/* hashtable = DRAGMAP_HASHTABLE.out.hashmap // path: dragmap/* - dbsnp_tbi = TABIX_DBSNP.out.tbi.map{ meta, tbi -> [tbi] }.collect() // path: dbsnb.vcf.gz.tbi + dbsnp_tbi // path: dbsnb.vcf.gz.tbi dict = GATK4_CREATESEQUENCEDICTIONARY.out.dict // path: genome.fasta.dict fasta_fai = SAMTOOLS_FAIDX.out.fai.map{ meta, fai -> [fai] } // path: genome.fasta.fai - germline_resource_tbi = TABIX_GERMLINE_RESOURCE.out.tbi.map{ meta, tbi -> [tbi] }.collect() // path: germline_resource.vcf.gz.tbi + germline_resource_tbi // path: germline_resource.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 // path: pon.vcf.gz.tbi diff --git a/subworkflows/nf-core/gatk4/tumor_normal_somatic_variant_calling/main.nf b/subworkflows/nf-core/gatk4/tumor_normal_somatic_variant_calling/main.nf index 67f9cfd46..57fd98f95 100644 --- a/subworkflows/nf-core/gatk4/tumor_normal_somatic_variant_calling/main.nf +++ b/subworkflows/nf-core/gatk4/tumor_normal_somatic_variant_calling/main.nf @@ -114,13 +114,15 @@ workflow GATK_TUMOR_NORMAL_SOMATIC_VARIANT_CALLING { normal: [ meta, input_list[0], input_index_list[0], intervals ] } + germline_resource_pileup = germline_resource ?: Channel.empty() + germline_resource_pileup_tbi = germline_resource_tbi ?: Channel.empty() GETPILEUPSUMMARIES_TUMOR ( pileup.tumor.map{ meta, cram, crai, intervals -> [[patient:meta.patient, normal_id:meta.normal_id, tumor_id:meta.tumor_id, gender:meta.gender, id:meta.tumor_id, num_intervals:meta.num_intervals], cram, crai, intervals] }, - fasta, fai, dict, germline_resource, germline_resource_tbi ) + fasta, fai, dict, germline_resource_pileup, germline_resource_pileup_tbi ) GETPILEUPSUMMARIES_NORMAL ( pileup.normal.map{ meta, cram, crai, intervals -> @@ -128,7 +130,7 @@ workflow GATK_TUMOR_NORMAL_SOMATIC_VARIANT_CALLING { [[patient:meta.patient, normal_id:meta.normal_id, tumor_id:meta.tumor_id, gender:meta.gender, id:meta.normal_id, num_intervals:meta.num_intervals], cram, crai, intervals] }, - fasta, fai, dict, germline_resource, germline_resource_tbi ) + fasta, fai, dict, germline_resource_pileup, germline_resource_pileup_tbi ) GETPILEUPSUMMARIES_NORMAL.out.table.branch{ intervals: it[0].num_intervals > 1 diff --git a/subworkflows/nf-core/gatk4/tumor_only_somatic_variant_calling/main.nf b/subworkflows/nf-core/gatk4/tumor_only_somatic_variant_calling/main.nf index bfeca83c3..2097d7b7b 100644 --- a/subworkflows/nf-core/gatk4/tumor_only_somatic_variant_calling/main.nf +++ b/subworkflows/nf-core/gatk4/tumor_only_somatic_variant_calling/main.nf @@ -107,7 +107,9 @@ workflow GATK_TUMOR_ONLY_SOMATIC_VARIANT_CALLING { // //Generate pileup summary table using getepileupsummaries. // - GETPILEUPSUMMARIES ( input , fasta, fai, dict, germline_resource , germline_resource_tbi ) + germline_resource_pileup = germline_resource ?: Channel.empty() + germline_resource_pileup_tbi = germline_resource_tbi ?: Channel.empty() + GETPILEUPSUMMARIES ( input , fasta, fai, dict, germline_resource_pileup , germline_resource_pileup_tbi ) GETPILEUPSUMMARIES.out.table.branch{ intervals: it[0].num_intervals > 1 diff --git a/workflows/sarek.nf b/workflows/sarek.nf index 1f87bf5b5..543cfede1 100644 --- a/workflows/sarek.nf +++ b/workflows/sarek.nf @@ -62,6 +62,9 @@ if(params.tools && params.tools.contains('mutect2')){ if(!params.pon){ log.warn("No Panel-of-normal was specified for Mutect2.\nIt is highly recommended to use one: https://gatk.broadinstitute.org/hc/en-us/articles/5358911630107-Mutect2\nFor more information on how to create one: https://gatk.broadinstitute.org/hc/en-us/articles/5358921041947-CreateSomaticPanelOfNormals-BETA-") } + if(!params.germline_resource){ + log.warn("If Mutect2 is specified without a germline resource, no filtering will be done.\nIt is recommended to use one: https://gatk.broadinstitute.org/hc/en-us/articles/5358911630107-Mutect2") + } if(params.pon && params.pon.contains("/Homo_sapiens/GATK/GRCh38/Annotation/GATKBundle/1000g_pon.hg38.vcf.gz")){ log.warn("The default Panel-of-Normals provided by GATK is used for Mutect2.\nIt is highly recommended to generate one from normal samples that are technical similar to the tumor ones.\nFor more information: https://gatk.broadinstitute.org/hc/en-us/articles/360035890631-Panel-of-Normals-PON-") } @@ -77,7 +80,7 @@ if(!params.dbsnp && !params.known_indels){ exit 1 } if(params.tools && params.tools.contains('haplotypecaller')){ - log.error "The Haplotypecaller workflow requires at least one resource file. Please provide at least one of `--dbsnp` or `--known_indels`.\nFor more information see FilterVariantTranches (single-sample, default): https://gatk.broadinstitute.org/hc/en-us/articles/5358928898971-FilterVariantTranches\nFor more information see VariantRecalibration (--joint_germline): https://gatk.broadinstitute.org/hc/en-us/articles/5358906115227-VariantRecalibrator\nFor more information on GATK Best practice germline variant calling: https://gatk.broadinstitute.org/hc/en-us/articles/360035535932-Germline-short-variant-discovery-SNPs-Indels-" + log.warn "The Haplotypecaller without filtering. For filtering, please provide at least one of `--dbsnp` or `--known_indels`.\nFor more information see FilterVariantTranches (single-sample, default): https://gatk.broadinstitute.org/hc/en-us/articles/5358928898971-FilterVariantTranches\nFor more information see VariantRecalibration (--joint_germline): https://gatk.broadinstitute.org/hc/en-us/articles/5358906115227-VariantRecalibrator\nFor more information on GATK Best practice germline variant calling: https://gatk.broadinstitute.org/hc/en-us/articles/360035535932-Germline-short-variant-discovery-SNPs-Indels-" exit 1 } @@ -101,7 +104,7 @@ chr_dir = params.chr_dir ? Channel.fromPath(params.chr_dir dbsnp = params.dbsnp ? Channel.fromPath(params.dbsnp).collect() : Channel.empty() fasta = params.fasta ? Channel.fromPath(params.fasta).collect() : Channel.empty() fasta_fai = params.fasta_fai ? Channel.fromPath(params.fasta_fai).collect() : Channel.empty() -germline_resource = params.germline_resource ? Channel.fromPath(params.germline_resource).collect() : Channel.empty() +germline_resource = params.germline_resource ? Channel.fromPath(params.germline_resource).collect() : [] //Mutec2 does not require a germline resource, so set to optional input known_indels = params.known_indels ? Channel.fromPath(params.known_indels).collect() : Channel.empty() loci = params.ac_loci ? Channel.fromPath(params.ac_loci).collect() : [] loci_gc = params.ac_loci_gc ? Channel.fromPath(params.ac_loci_gc).collect() : [] From 30b368cb8d21d1f5bb053af8593ffa2e925e7fe3 Mon Sep 17 00:00:00 2001 From: Rike Date: Thu, 16 Jun 2022 15:13:50 +0200 Subject: [PATCH 05/20] Update getpileup, deal with optional dbsnp, germline, knwon_indels --- CHANGELOG.md | 1 + modules.json | 2 +- .../modules/gatk4/getpileupsummaries/main.nf | 2 +- subworkflows/local/prepare_genome.nf | 12 ++++++++--- workflows/sarek.nf | 21 +++++++------------ 5 files changed, 19 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 47021b9e0..07f016d4e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -88,6 +88,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#585](https://github.com/nf-core/sarek/pull/585) - Fix Spark usage for GATK4 modules - [#587](https://github.com/nf-core/sarek/pull/587) - Fix issue with VEP extra files - [#590](https://github.com/nf-core/sarek/pull/590) - Fix empty folders during scatter/gather +- [#592](https://github.com/nf-core/sarek/pull/592) - Fix optional resources for Mutect2, GetPileupSummaries, and HaplotypeCaller: issue [#299](https://github.com/nf-core/sarek/issues/299), [#359](https://github.com/nf-core/sarek/issues/359), [#367](https://github.com/nf-core/sarek/issues/367) ### Deprecated diff --git a/modules.json b/modules.json index e323da9dd..bad57e18e 100644 --- a/modules.json +++ b/modules.json @@ -130,7 +130,7 @@ "git_sha": "169b2b96c1167f89ab07127b7057c1d90a6996c7" }, "gatk4/getpileupsummaries": { - "git_sha": "f40cfefc0899fd6bb6adc300142ca6c3a35573ff" + "git_sha": "1ac223ad436c1410e9c16a5966274b7ca1f8d855" }, "gatk4/haplotypecaller": { "git_sha": "169b2b96c1167f89ab07127b7057c1d90a6996c7" diff --git a/modules/nf-core/modules/gatk4/getpileupsummaries/main.nf b/modules/nf-core/modules/gatk4/getpileupsummaries/main.nf index 1c0561704..5945a937a 100644 --- a/modules/nf-core/modules/gatk4/getpileupsummaries/main.nf +++ b/modules/nf-core/modules/gatk4/getpileupsummaries/main.nf @@ -25,7 +25,7 @@ process GATK4_GETPILEUPSUMMARIES { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def interval_command = intervals ? "--intervals $intervals" : "" + def interval_command = intervals ? "--intervals $intervals" : "--intervals $variants" def reference_command = fasta ? "--reference $fasta" : '' def avail_mem = 3 diff --git a/subworkflows/local/prepare_genome.nf b/subworkflows/local/prepare_genome.nf index 1a3d27d2d..9238b652e 100644 --- a/subworkflows/local/prepare_genome.nf +++ b/subworkflows/local/prepare_genome.nf @@ -46,7 +46,6 @@ workflow PREPARE_GENOME { // 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_KNOWN_INDELS( known_indels.flatten().map{ it -> [[id:it.baseName], it] } ) //dbsnp is optional, thus could be '[]'. In this case do not run below, as [].flatten errors out. dbsnp_tbi = [] @@ -66,6 +65,14 @@ workflow PREPARE_GENOME { germline_resource_tbi = TABIX_GERMLINE_RESOURCE.out.tbi.map{ meta, tbi -> [tbi] }.collect() } + //germline_resource is optional, thus could be '[]'. In this case do not run below, as [].flatten errors out. + known_indels_tbi = Channel.empty() + if(known_indels){ + TABIX_KNOWN_INDELS( known_indels.flatten().map{ it -> [[id:it.baseName], it] } ) + ch_versions = ch_versions.mix(TABIX_KNOWN_INDELS.out.versions) + + known_indels_tbi = TABIX_KNOWN_INDELS.out.tbi.map{ meta, tbi -> [tbi] }.collect() + } //pon is optional, thus could be '[]'. In this case do not run below, as [].flatten errors out. pon_tbi = Channel.empty() @@ -89,7 +96,6 @@ workflow PREPARE_GENOME { ch_versions = ch_versions.mix(BWAMEM2_INDEX.out.versions) ch_versions = ch_versions.mix(GATK4_CREATESEQUENCEDICTIONARY.out.versions) ch_versions = ch_versions.mix(MSISENSORPRO_SCAN.out.versions) - ch_versions = ch_versions.mix(TABIX_KNOWN_INDELS.out.versions) emit: bwa = BWAMEM1_INDEX.out.index // path: bwa/* @@ -99,7 +105,7 @@ workflow PREPARE_GENOME { dict = GATK4_CREATESEQUENCEDICTIONARY.out.dict // path: genome.fasta.dict fasta_fai = SAMTOOLS_FAIDX.out.fai.map{ meta, fai -> [fai] } // path: genome.fasta.fai germline_resource_tbi // path: germline_resource.vcf.gz.tbi - known_indels_tbi = TABIX_KNOWN_INDELS.out.tbi.map{ meta, tbi -> [tbi] }.collect() // path: {known_indels*}.vcf.gz.tbi + known_indels_tbi // path: {known_indels*}.vcf.gz.tbi msisensorpro_scan = MSISENSORPRO_SCAN.out.list.map{ meta, list -> [list] } // path: genome_msi.list pon_tbi // path: pon.vcf.gz.tbi chr_files = chr_files diff --git a/workflows/sarek.nf b/workflows/sarek.nf index 543cfede1..865410abe 100644 --- a/workflows/sarek.nf +++ b/workflows/sarek.nf @@ -68,10 +68,6 @@ if(params.tools && params.tools.contains('mutect2')){ if(params.pon && params.pon.contains("/Homo_sapiens/GATK/GRCh38/Annotation/GATKBundle/1000g_pon.hg38.vcf.gz")){ log.warn("The default Panel-of-Normals provided by GATK is used for Mutect2.\nIt is highly recommended to generate one from normal samples that are technical similar to the tumor ones.\nFor more information: https://gatk.broadinstitute.org/hc/en-us/articles/360035890631-Panel-of-Normals-PON-") } - if(params.no_intervals){ - log.error "--tools mutect2 and --no_intervals cannot be used together.\nOne of the tools within the Mutect2 subworkflow requires intervals. They can be provided to the pipeline with --intervals. If none are provided, they will be generated from the FASTA file.\nFor more information on the Mutect2 workflow, see here: https://gatk.broadinstitute.org/hc/en-us/articles/360035531132--How-to-Call-somatic-mutations-using-GATK4-Mutect2.\nFor more information on GetPileupsummaries, see here: https://gatk.broadinstitute.org/hc/en-us/articles/5358860217115-GetPileupSummaries" - exit 1 - } } if(!params.dbsnp && !params.known_indels){ @@ -80,10 +76,8 @@ if(!params.dbsnp && !params.known_indels){ exit 1 } if(params.tools && params.tools.contains('haplotypecaller')){ - log.warn "The Haplotypecaller without filtering. For filtering, please provide at least one of `--dbsnp` or `--known_indels`.\nFor more information see FilterVariantTranches (single-sample, default): https://gatk.broadinstitute.org/hc/en-us/articles/5358928898971-FilterVariantTranches\nFor more information see VariantRecalibration (--joint_germline): https://gatk.broadinstitute.org/hc/en-us/articles/5358906115227-VariantRecalibrator\nFor more information on GATK Best practice germline variant calling: https://gatk.broadinstitute.org/hc/en-us/articles/360035535932-Germline-short-variant-discovery-SNPs-Indels-" - exit 1 + log.warn "If Haplotypecaller is specified, without `--dbsnp` or `--known_indels no filtering will be done. For filtering, please provide at least one of `--dbsnp` or `--known_indels`.\nFor more information see FilterVariantTranches (single-sample, default): https://gatk.broadinstitute.org/hc/en-us/articles/5358928898971-FilterVariantTranches\nFor more information see VariantRecalibration (--joint_germline): https://gatk.broadinstitute.org/hc/en-us/articles/5358906115227-VariantRecalibrator\nFor more information on GATK Best practice germline variant calling: https://gatk.broadinstitute.org/hc/en-us/articles/360035535932-Germline-short-variant-discovery-SNPs-Indels-" } - } // Save AWS IGenomes file containing annotation version @@ -101,11 +95,11 @@ if (anno_readme && file(anno_readme).exists()) { // Initialize file channels based on params, defined in the params.genomes[params.genome] scope chr_dir = params.chr_dir ? Channel.fromPath(params.chr_dir).collect() : [] -dbsnp = params.dbsnp ? Channel.fromPath(params.dbsnp).collect() : Channel.empty() +dbsnp = params.dbsnp ? Channel.fromPath(params.dbsnp).collect() : [] //Channel.empty() fasta = params.fasta ? Channel.fromPath(params.fasta).collect() : Channel.empty() fasta_fai = params.fasta_fai ? Channel.fromPath(params.fasta_fai).collect() : Channel.empty() germline_resource = params.germline_resource ? Channel.fromPath(params.germline_resource).collect() : [] //Mutec2 does not require a germline resource, so set to optional input -known_indels = params.known_indels ? Channel.fromPath(params.known_indels).collect() : Channel.empty() +known_indels = params.known_indels ? Channel.fromPath(params.known_indels).collect() : [] //Channel.empty() loci = params.ac_loci ? Channel.fromPath(params.ac_loci).collect() : [] loci_gc = params.ac_loci_gc ? Channel.fromPath(params.ac_loci_gc).collect() : [] mappability = params.mappability ? Channel.fromPath(params.mappability).collect() : [] @@ -267,9 +261,9 @@ workflow SAREK { dragmap = params.fasta ? params.dragmap ? Channel.fromPath(params.dragmap).collect() : PREPARE_GENOME.out.hashtable : [] dict = params.fasta ? params.dict ? Channel.fromPath(params.dict).collect() : PREPARE_GENOME.out.dict : [] fasta_fai = params.fasta ? params.fasta_fai ? Channel.fromPath(params.fasta_fai).collect() : PREPARE_GENOME.out.fasta_fai : [] - dbsnp_tbi = params.dbsnp ? params.dbsnp_tbi ? Channel.fromPath(params.dbsnp_tbi).collect() : PREPARE_GENOME.out.dbsnp_tbi : Channel.empty() + dbsnp_tbi = params.dbsnp ? params.dbsnp_tbi ? Channel.fromPath(params.dbsnp_tbi).collect() : PREPARE_GENOME.out.dbsnp_tbi : [] //Channel.empty() germline_resource_tbi = params.germline_resource ? params.germline_resource_tbi ? Channel.fromPath(params.germline_resource_tbi).collect() : PREPARE_GENOME.out.germline_resource_tbi : [] - known_indels_tbi = params.known_indels ? params.known_indels_tbi ? Channel.fromPath(params.known_indels_tbi).collect() : PREPARE_GENOME.out.known_indels_tbi : Channel.empty() + known_indels_tbi = params.known_indels ? params.known_indels_tbi ? Channel.fromPath(params.known_indels_tbi).collect() : PREPARE_GENOME.out.known_indels_tbi : [] //Channel.empty() pon_tbi = params.pon ? params.pon_tbi ? Channel.fromPath(params.pon_tbi).collect() : PREPARE_GENOME.out.pon_tbi : [] msisensorpro_scan = PREPARE_GENOME.out.msisensorpro_scan @@ -280,9 +274,8 @@ workflow SAREK { // known_sites is made by grouping both the dbsnp and the known indels ressources // Which can either or both be optional - // Actually BQSR has been throwing erros if no sides were provided so it must be at least one - known_sites = dbsnp.concat(known_indels).collect() - known_sites_tbi = dbsnp_tbi.concat(known_indels_tbi).collect() + known_sites = dbsnp || known_indels ? dbsnp.concat(known_indels).collect() : Channel.empty() + known_sites_tbi = dbsnp_tbi || known_indels_tbi ? dbsnp_tbi.concat(known_indels_tbi).collect() : Channel.empty() // Build intervals if needed PREPARE_INTERVALS(fasta_fai) From f3796c1f07685eb72f20cab74e7b24fcbbe7a1f8 Mon Sep 17 00:00:00 2001 From: Rike Date: Thu, 16 Jun 2022 15:17:56 +0200 Subject: [PATCH 06/20] Formatting --- subworkflows/local/prepare_genome.nf | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/subworkflows/local/prepare_genome.nf b/subworkflows/local/prepare_genome.nf index 9238b652e..740f6cc07 100644 --- a/subworkflows/local/prepare_genome.nf +++ b/subworkflows/local/prepare_genome.nf @@ -48,7 +48,7 @@ workflow PREPARE_GENOME { // outputs are collected to maintain a single channel for relevant TBI files //dbsnp is optional, thus could be '[]'. In this case do not run below, as [].flatten errors out. - dbsnp_tbi = [] + dbsnp_tbi = Channel.empty() if(dbsnp){ TABIX_DBSNP(dbsnp.flatten().map{ it -> [[id:it.baseName], it] }) ch_versions = ch_versions.mix(TABIX_DBSNP.out.versions) @@ -98,16 +98,16 @@ workflow PREPARE_GENOME { ch_versions = ch_versions.mix(MSISENSORPRO_SCAN.out.versions) emit: - bwa = BWAMEM1_INDEX.out.index // path: bwa/* - bwamem2 = BWAMEM2_INDEX.out.index // path: bwamem2/* - hashtable = DRAGMAP_HASHTABLE.out.hashmap // path: dragmap/* - dbsnp_tbi // path: dbsnb.vcf.gz.tbi - dict = GATK4_CREATESEQUENCEDICTIONARY.out.dict // path: genome.fasta.dict - fasta_fai = SAMTOOLS_FAIDX.out.fai.map{ meta, fai -> [fai] } // path: genome.fasta.fai - germline_resource_tbi // path: germline_resource.vcf.gz.tbi - known_indels_tbi // path: {known_indels*}.vcf.gz.tbi - msisensorpro_scan = MSISENSORPRO_SCAN.out.list.map{ meta, list -> [list] } // path: genome_msi.list - pon_tbi // path: pon.vcf.gz.tbi + bwa = BWAMEM1_INDEX.out.index // path: bwa/* + bwamem2 = BWAMEM2_INDEX.out.index // path: bwamem2/* + hashtable = DRAGMAP_HASHTABLE.out.hashmap // path: dragmap/* + dbsnp_tbi // path: dbsnb.vcf.gz.tbi + dict = GATK4_CREATESEQUENCEDICTIONARY.out.dict // path: genome.fasta.dict + fasta_fai = SAMTOOLS_FAIDX.out.fai.map{ meta, fai -> [fai] } // path: genome.fasta.fai + germline_resource_tbi // path: germline_resource.vcf.gz.tbi + known_indels_tbi // path: {known_indels*}.vcf.gz.tbi + msisensorpro_scan = MSISENSORPRO_SCAN.out.list.map{ meta, list -> [list] } // path: genome_msi.list + pon_tbi // path: pon.vcf.gz.tbi chr_files = chr_files - versions = ch_versions // channel: [ versions.yml ] + versions = ch_versions // channel: [ versions.yml ] } From 63e8e7dfe7f80794d8ea4e7f1f9939f8baa669ba Mon Sep 17 00:00:00 2001 From: Rike Date: Thu, 16 Jun 2022 15:19:07 +0200 Subject: [PATCH 07/20] Formatting --- workflows/sarek.nf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/workflows/sarek.nf b/workflows/sarek.nf index 865410abe..09b9590a5 100644 --- a/workflows/sarek.nf +++ b/workflows/sarek.nf @@ -261,9 +261,9 @@ workflow SAREK { dragmap = params.fasta ? params.dragmap ? Channel.fromPath(params.dragmap).collect() : PREPARE_GENOME.out.hashtable : [] dict = params.fasta ? params.dict ? Channel.fromPath(params.dict).collect() : PREPARE_GENOME.out.dict : [] fasta_fai = params.fasta ? params.fasta_fai ? Channel.fromPath(params.fasta_fai).collect() : PREPARE_GENOME.out.fasta_fai : [] - dbsnp_tbi = params.dbsnp ? params.dbsnp_tbi ? Channel.fromPath(params.dbsnp_tbi).collect() : PREPARE_GENOME.out.dbsnp_tbi : [] //Channel.empty() + dbsnp_tbi = params.dbsnp ? params.dbsnp_tbi ? Channel.fromPath(params.dbsnp_tbi).collect() : PREPARE_GENOME.out.dbsnp_tbi : [] germline_resource_tbi = params.germline_resource ? params.germline_resource_tbi ? Channel.fromPath(params.germline_resource_tbi).collect() : PREPARE_GENOME.out.germline_resource_tbi : [] - known_indels_tbi = params.known_indels ? params.known_indels_tbi ? Channel.fromPath(params.known_indels_tbi).collect() : PREPARE_GENOME.out.known_indels_tbi : [] //Channel.empty() + known_indels_tbi = params.known_indels ? params.known_indels_tbi ? Channel.fromPath(params.known_indels_tbi).collect() : PREPARE_GENOME.out.known_indels_tbi : [] pon_tbi = params.pon ? params.pon_tbi ? Channel.fromPath(params.pon_tbi).collect() : PREPARE_GENOME.out.pon_tbi : [] msisensorpro_scan = PREPARE_GENOME.out.msisensorpro_scan From 37043a03f80129aeeaffe4249f56d8fb22b9f4fc Mon Sep 17 00:00:00 2001 From: Rike Date: Fri, 17 Jun 2022 13:17:00 +0200 Subject: [PATCH 08/20] Add suggestion on value channels to handle optional input --- subworkflows/local/prepare_genome.nf | 62 ++++++++-------------------- workflows/sarek.nf | 13 +++--- 2 files changed, 23 insertions(+), 52 deletions(-) diff --git a/subworkflows/local/prepare_genome.nf b/subworkflows/local/prepare_genome.nf index 740f6cc07..092112f89 100644 --- a/subworkflows/local/prepare_genome.nf +++ b/subworkflows/local/prepare_genome.nf @@ -46,42 +46,10 @@ workflow PREPARE_GENOME { // 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 - - //dbsnp is optional, thus could be '[]'. In this case do not run below, as [].flatten errors out. - dbsnp_tbi = Channel.empty() - if(dbsnp){ - TABIX_DBSNP(dbsnp.flatten().map{ it -> [[id:it.baseName], it] }) - ch_versions = ch_versions.mix(TABIX_DBSNP.out.versions) - - dbsnp_tbi = TABIX_DBSNP.out.tbi.map{ meta, tbi -> [tbi] }.collect() // path: dbsnb.vcf.gz.tbi - } - - //germline_resource is optional, thus could be '[]'. In this case do not run below, as [].flatten errors out. - germline_resource_tbi = Channel.empty() - if(germline_resource){ - TABIX_GERMLINE_RESOURCE(germline_resource.flatten().map{ it -> [[id:it.baseName], it] }) - ch_versions = ch_versions.mix(TABIX_GERMLINE_RESOURCE.out.versions) - - germline_resource_tbi = TABIX_GERMLINE_RESOURCE.out.tbi.map{ meta, tbi -> [tbi] }.collect() - } - - //germline_resource is optional, thus could be '[]'. In this case do not run below, as [].flatten errors out. - known_indels_tbi = Channel.empty() - if(known_indels){ - TABIX_KNOWN_INDELS( known_indels.flatten().map{ it -> [[id:it.baseName], it] } ) - ch_versions = ch_versions.mix(TABIX_KNOWN_INDELS.out.versions) - - known_indels_tbi = TABIX_KNOWN_INDELS.out.tbi.map{ meta, tbi -> [tbi] }.collect() - } - - //pon is optional, thus could be '[]'. In this case do not run below, as [].flatten errors out. - pon_tbi = Channel.empty() - if(pon){ - TABIX_PON(pon.flatten().map{ it -> [[id:it.baseName], it] }) - ch_versions = ch_versions.mix(TABIX_PON.out.versions) - - pon_tbi = TABIX_PON.out.tbi.map{ meta, tbi -> [tbi] }.collect() - } + TABIX_DBSNP(dbsnp.flatten().map{ it -> [[id:it.baseName], it] }) + TABIX_GERMLINE_RESOURCE(germline_resource.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] }) chr_files = chr_dir if ( params.chr_dir.endsWith('tar.gz')){ @@ -96,18 +64,22 @@ workflow PREPARE_GENOME { ch_versions = ch_versions.mix(BWAMEM2_INDEX.out.versions) ch_versions = ch_versions.mix(GATK4_CREATESEQUENCEDICTIONARY.out.versions) ch_versions = ch_versions.mix(MSISENSORPRO_SCAN.out.versions) + ch_versions = ch_versions.mix(TABIX_DBSNP.out.versions) + ch_versions = ch_versions.mix(TABIX_GERMLINE_RESOURCE.out.versions) + ch_versions = ch_versions.mix(TABIX_KNOWN_INDELS.out.versions) + ch_versions = ch_versions.mix(TABIX_PON.out.versions) emit: - bwa = BWAMEM1_INDEX.out.index // path: bwa/* - bwamem2 = BWAMEM2_INDEX.out.index // path: bwamem2/* - hashtable = DRAGMAP_HASHTABLE.out.hashmap // path: dragmap/* - dbsnp_tbi // path: dbsnb.vcf.gz.tbi - dict = GATK4_CREATESEQUENCEDICTIONARY.out.dict // path: genome.fasta.dict - fasta_fai = SAMTOOLS_FAIDX.out.fai.map{ meta, fai -> [fai] } // path: genome.fasta.fai - germline_resource_tbi // path: germline_resource.vcf.gz.tbi - known_indels_tbi // path: {known_indels*}.vcf.gz.tbi + bwa = BWAMEM1_INDEX.out.index // path: bwa/* + bwamem2 = BWAMEM2_INDEX.out.index // path: bwamem2/* + hashtable = DRAGMAP_HASHTABLE.out.hashmap // path: dragmap/* + dbsnp_tbi = TABIX_DBSNP.out.tbi.map{ meta, tbi -> [tbi] }.collect() // path: dbsnb.vcf.gz.tbi + dict = GATK4_CREATESEQUENCEDICTIONARY.out.dict // path: genome.fasta.dict + fasta_fai = SAMTOOLS_FAIDX.out.fai.map{ meta, fai -> [fai] } // path: genome.fasta.fai + germline_resource_tbi = TABIX_GERMLINE_RESOURCE.out.tbi.map{ meta, tbi -> [tbi] }.collect() // path: germline_resource.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 // path: pon.vcf.gz.tbi + pon_tbi = TABIX_PON.out.tbi.map{ meta, tbi -> [tbi] }.collect() // path: pon.vcf.gz.tbi chr_files = chr_files versions = ch_versions // channel: [ versions.yml ] } diff --git a/workflows/sarek.nf b/workflows/sarek.nf index 0639d8abc..cf0f86c13 100644 --- a/workflows/sarek.nf +++ b/workflows/sarek.nf @@ -95,14 +95,15 @@ if (anno_readme && file(anno_readme).exists()) { // Initialize file channels based on params, defined in the params.genomes[params.genome] scope chr_dir = params.chr_dir ? Channel.fromPath(params.chr_dir).collect() : [] -dbsnp = params.dbsnp ? Channel.fromPath(params.dbsnp).collect() : [] //Channel.empty() +dbsnp = params.dbsnp ? Channel.fromPath(params.dbsnp).collect() : Channel.value([]) fasta = params.fasta ? Channel.fromPath(params.fasta).collect() : Channel.empty() fasta_fai = params.fasta_fai ? Channel.fromPath(params.fasta_fai).collect() : Channel.empty() -germline_resource = params.germline_resource ? Channel.fromPath(params.germline_resource).collect() : [] //Mutec2 does not require a germline resource, so set to optional input -known_indels = params.known_indels ? Channel.fromPath(params.known_indels).collect() : [] //Channel.empty() +germline_resource = params.germline_resource ? Channel.fromPath(params.germline_resource).collect() : Channel.value([]) //Mutec2 does not require a germline resource, so set to optional input +known_indels = params.known_indels ? Channel.fromPath(params.known_indels).collect() : Channel.value([]) //Channel.empty() loci = params.ac_loci ? Channel.fromPath(params.ac_loci).collect() : [] loci_gc = params.ac_loci_gc ? Channel.fromPath(params.ac_loci_gc).collect() : [] mappability = params.mappability ? Channel.fromPath(params.mappability).collect() : [] +pon = params.pon ? Channel.fromPath(params.pon).collect() : Channel.value([]) //PON is optional for Mutect2 (but highly recommended) // Initialize value channels based on params, defined in the params.genomes[params.genome] scope snpeff_db = params.snpeff_db ?: Channel.empty() @@ -111,7 +112,6 @@ vep_genome = params.vep_genome ?: Channel.empty() vep_species = params.vep_species ?: Channel.empty() // Initialize files channels based on params, not defined within the params.genomes[params.genome] scope -pon = params.pon ? Channel.fromPath(params.pon).collect() : [] //PON is optional for Mutect2 (but highly recommended) snpeff_cache = params.snpeff_cache ? Channel.fromPath(params.snpeff_cache).collect() : [] vep_cache = params.vep_cache ? Channel.fromPath(params.vep_cache).collect() : [] @@ -274,9 +274,8 @@ workflow SAREK { // known_sites is made by grouping both the dbsnp and the known indels ressources // Which can either or both be optional - known_sites = dbsnp || known_indels ? dbsnp.concat(known_indels).collect() : Channel.empty() - known_sites_tbi = dbsnp_tbi || known_indels_tbi ? dbsnp_tbi.concat(known_indels_tbi).collect() : Channel.empty() - + known_sites = dbsnp.concat(known_indels).collect() //dbsnp && known_indels ? dbsnp.concat(known_indels).collect() : dbsnp && !known_indels ? dbsnp : ( !dbsnp && known_indels ? known_indels : Channel.empty() ) + known_sites_tbi = dbsnp_tbi.concat(known_indels_tbi).collect()//dbsnp_tbi && known_indels_tbi ? dbsnp_tbi.concat(known_indels_tbi).collect() : dbsnp_tbi && !known_indels_tbi ? dbsnp_tbi : ( !dbsnp_tbi && known_indels_tbi ? known_indels_tbi : Channel.empty() ) // Build intervals if needed PREPARE_INTERVALS(fasta_fai) From 3d34ae7dd2be46d6ac59d6bac165eb470eb83d98 Mon Sep 17 00:00:00 2001 From: Rike Date: Fri, 17 Jun 2022 14:48:31 +0200 Subject: [PATCH 09/20] make germline_resource work again --- .../gatk4/tumor_normal_somatic_variant_calling/main.nf | 2 +- .../gatk4/tumor_only_somatic_variant_calling/main.nf | 2 +- workflows/sarek.nf | 9 +++++---- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/subworkflows/nf-core/gatk4/tumor_normal_somatic_variant_calling/main.nf b/subworkflows/nf-core/gatk4/tumor_normal_somatic_variant_calling/main.nf index 57fd98f95..5bf22d8bb 100644 --- a/subworkflows/nf-core/gatk4/tumor_normal_somatic_variant_calling/main.nf +++ b/subworkflows/nf-core/gatk4/tumor_normal_somatic_variant_calling/main.nf @@ -114,7 +114,7 @@ workflow GATK_TUMOR_NORMAL_SOMATIC_VARIANT_CALLING { normal: [ meta, input_list[0], input_index_list[0], intervals ] } - germline_resource_pileup = germline_resource ?: Channel.empty() + germline_resource_pileup = germline_resource_tbi ? germline_resource : Channel.empty() germline_resource_pileup_tbi = germline_resource_tbi ?: Channel.empty() GETPILEUPSUMMARIES_TUMOR ( pileup.tumor.map{ meta, cram, crai, intervals -> diff --git a/subworkflows/nf-core/gatk4/tumor_only_somatic_variant_calling/main.nf b/subworkflows/nf-core/gatk4/tumor_only_somatic_variant_calling/main.nf index 2097d7b7b..34975771e 100644 --- a/subworkflows/nf-core/gatk4/tumor_only_somatic_variant_calling/main.nf +++ b/subworkflows/nf-core/gatk4/tumor_only_somatic_variant_calling/main.nf @@ -107,7 +107,7 @@ workflow GATK_TUMOR_ONLY_SOMATIC_VARIANT_CALLING { // //Generate pileup summary table using getepileupsummaries. // - germline_resource_pileup = germline_resource ?: Channel.empty() + germline_resource_pileup = germline_resource_tbi ? germline_resource : Channel.empty() //Channel.empty().concat(germline_resource) //germline_resource.ifEmpty() ?: Channel.empty() germline_resource_pileup_tbi = germline_resource_tbi ?: Channel.empty() GETPILEUPSUMMARIES ( input , fasta, fai, dict, germline_resource_pileup , germline_resource_pileup_tbi ) diff --git a/workflows/sarek.nf b/workflows/sarek.nf index cf0f86c13..b88741e87 100644 --- a/workflows/sarek.nf +++ b/workflows/sarek.nf @@ -261,9 +261,9 @@ workflow SAREK { dragmap = params.fasta ? params.dragmap ? Channel.fromPath(params.dragmap).collect() : PREPARE_GENOME.out.hashtable : [] dict = params.fasta ? params.dict ? Channel.fromPath(params.dict).collect() : PREPARE_GENOME.out.dict : [] fasta_fai = params.fasta ? params.fasta_fai ? Channel.fromPath(params.fasta_fai).collect() : PREPARE_GENOME.out.fasta_fai : [] - dbsnp_tbi = params.dbsnp ? params.dbsnp_tbi ? Channel.fromPath(params.dbsnp_tbi).collect() : PREPARE_GENOME.out.dbsnp_tbi : [] + dbsnp_tbi = params.dbsnp ? params.dbsnp_tbi ? Channel.fromPath(params.dbsnp_tbi).collect() : PREPARE_GENOME.out.dbsnp_tbi : Channel.value([]) germline_resource_tbi = params.germline_resource ? params.germline_resource_tbi ? Channel.fromPath(params.germline_resource_tbi).collect() : PREPARE_GENOME.out.germline_resource_tbi : [] - known_indels_tbi = params.known_indels ? params.known_indels_tbi ? Channel.fromPath(params.known_indels_tbi).collect() : PREPARE_GENOME.out.known_indels_tbi : [] + known_indels_tbi = params.known_indels ? params.known_indels_tbi ? Channel.fromPath(params.known_indels_tbi).collect() : PREPARE_GENOME.out.known_indels_tbi : Channel.value([]) pon_tbi = params.pon ? params.pon_tbi ? Channel.fromPath(params.pon_tbi).collect() : PREPARE_GENOME.out.pon_tbi : [] msisensorpro_scan = PREPARE_GENOME.out.msisensorpro_scan @@ -274,8 +274,9 @@ workflow SAREK { // known_sites is made by grouping both the dbsnp and the known indels ressources // Which can either or both be optional - known_sites = dbsnp.concat(known_indels).collect() //dbsnp && known_indels ? dbsnp.concat(known_indels).collect() : dbsnp && !known_indels ? dbsnp : ( !dbsnp && known_indels ? known_indels : Channel.empty() ) - known_sites_tbi = dbsnp_tbi.concat(known_indels_tbi).collect()//dbsnp_tbi && known_indels_tbi ? dbsnp_tbi.concat(known_indels_tbi).collect() : dbsnp_tbi && !known_indels_tbi ? dbsnp_tbi : ( !dbsnp_tbi && known_indels_tbi ? known_indels_tbi : Channel.empty() ) + known_sites = dbsnp.concat(known_indels).collect() + known_sites_tbi = dbsnp_tbi.concat(known_indels_tbi).collect() + // Build intervals if needed PREPARE_INTERVALS(fasta_fai) From c6210fa1ea0c133285e44cdad66ab1467a70926a Mon Sep 17 00:00:00 2001 From: Rike Date: Fri, 17 Jun 2022 15:34:27 +0200 Subject: [PATCH 10/20] remove test code --- workflows/sarek.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflows/sarek.nf b/workflows/sarek.nf index b88741e87..da8bf2933 100644 --- a/workflows/sarek.nf +++ b/workflows/sarek.nf @@ -99,7 +99,7 @@ dbsnp = params.dbsnp ? Channel.fromPath(params.dbsnp). fasta = params.fasta ? Channel.fromPath(params.fasta).collect() : Channel.empty() fasta_fai = params.fasta_fai ? Channel.fromPath(params.fasta_fai).collect() : Channel.empty() germline_resource = params.germline_resource ? Channel.fromPath(params.germline_resource).collect() : Channel.value([]) //Mutec2 does not require a germline resource, so set to optional input -known_indels = params.known_indels ? Channel.fromPath(params.known_indels).collect() : Channel.value([]) //Channel.empty() +known_indels = params.known_indels ? Channel.fromPath(params.known_indels).collect() : Channel.value([]) loci = params.ac_loci ? Channel.fromPath(params.ac_loci).collect() : [] loci_gc = params.ac_loci_gc ? Channel.fromPath(params.ac_loci_gc).collect() : [] mappability = params.mappability ? Channel.fromPath(params.mappability).collect() : [] From a72ce06cdef5aa9ea5f79f17ba38c3c9dc13871e Mon Sep 17 00:00:00 2001 From: Rike Date: Fri, 17 Jun 2022 15:38:09 +0200 Subject: [PATCH 11/20] add mutect2 no intervals tests --- tests/test_tools.yml | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/tests/test_tools.yml b/tests/test_tools.yml index a2b3f4e58..0feaa4dec 100644 --- a/tests/test_tools.yml +++ b/tests/test_tools.yml @@ -430,10 +430,18 @@ - no_intervals - tumor_only - variant_calling - exit_code: 1 - stdout: - contains: - - "--tools mutect2 and --no_intervals cannot be used together." + files: + - path: results/variant_calling/sample2/mutect2/sample2.vcf.gz + - path: results/variant_calling/sample2/mutect2/sample2.vcf.gz.tbi + - path: results/variant_calling/sample2/mutect2/sample2.vcf.gz.stats + - path: results/variant_calling/sample2/mutect2/sample2.contamination.table + - path: results/variant_calling/sample2/mutect2/sample2.segmentation.table + - path: results/variant_calling/sample2/mutect2/sample2.artifactprior.tar.gz + - path: results/variant_calling/sample2/mutect2/sample2.pileupsummaries.table + - path: results/variant_calling/sample2/mutect2/sample2.filtered.vcf.gz + - path: results/variant_calling/sample2/mutect2/sample2.filtered.vcf.gz.tbi + - path: results/variant_calling/sample2/mutect2/sample2.filtered.vcf.gz.filteringStats.tsv + - path: results/csv/variantcalled.csv - name: Run variant calling on somatic sample with mutect2 command: nextflow run main.nf -profile test,tools_somatic,docker --tools mutect2 -c ./tests/nextflow.config @@ -462,10 +470,19 @@ - no_intervals - somatic - variant_calling - exit_code: 1 - stdout: - contains: - - "--tools mutect2 and --no_intervals cannot be used together." + files: + - path: results/variant_calling/sample4_vs_sample3/mutect2/sample4_vs_sample3.vcf.gz + - path: results/variant_calling/sample4_vs_sample3/mutect2/sample4_vs_sample3.vcf.gz.tbi + - path: results/variant_calling/sample4_vs_sample3/mutect2/sample4_vs_sample3.vcf.gz.stats + - path: results/variant_calling/sample4_vs_sample3/mutect2/sample4_vs_sample3.contamination.table + - path: results/variant_calling/sample4_vs_sample3/mutect2/sample4_vs_sample3.segmentation.table + - path: results/variant_calling/sample4_vs_sample3/mutect2/sample3.pileupsummaries.table + - path: results/variant_calling/sample4_vs_sample3/mutect2/sample4.pileupsummaries.table + - path: results/variant_calling/sample4_vs_sample3/mutect2/sample4_vs_sample3.artifactprior.tar.gz + - path: results/variant_calling/sample4_vs_sample3/mutect2/sample4_vs_sample3.filtered.vcf.gz + - path: results/variant_calling/sample4_vs_sample3/mutect2/sample4_vs_sample3.filtered.vcf.gz.tbi + - path: results/variant_calling/sample4_vs_sample3/mutect2/sample4_vs_sample3.filtered.vcf.gz.filteringStats.tsv + - path: results/csv/variantcalled.csv - name: Run variant calling on somatic sample with msisensor-pro command: nextflow run main.nf -profile test,tools_somatic,docker --tools msisensorpro From 1d6e3638fda78de022b7ac186a95454d6cdc6d84 Mon Sep 17 00:00:00 2001 From: Rike Date: Fri, 17 Jun 2022 15:39:23 +0200 Subject: [PATCH 12/20] some indents --- subworkflows/local/prepare_genome.nf | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/subworkflows/local/prepare_genome.nf b/subworkflows/local/prepare_genome.nf index 092112f89..285318b39 100644 --- a/subworkflows/local/prepare_genome.nf +++ b/subworkflows/local/prepare_genome.nf @@ -70,16 +70,16 @@ workflow PREPARE_GENOME { ch_versions = ch_versions.mix(TABIX_PON.out.versions) emit: - bwa = BWAMEM1_INDEX.out.index // path: bwa/* - bwamem2 = BWAMEM2_INDEX.out.index // path: bwamem2/* - hashtable = DRAGMAP_HASHTABLE.out.hashmap // path: dragmap/* - dbsnp_tbi = TABIX_DBSNP.out.tbi.map{ meta, tbi -> [tbi] }.collect() // path: dbsnb.vcf.gz.tbi - dict = GATK4_CREATESEQUENCEDICTIONARY.out.dict // path: genome.fasta.dict - fasta_fai = SAMTOOLS_FAIDX.out.fai.map{ meta, fai -> [fai] } // path: genome.fasta.fai - germline_resource_tbi = TABIX_GERMLINE_RESOURCE.out.tbi.map{ meta, tbi -> [tbi] }.collect() // path: germline_resource.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 + bwa = BWAMEM1_INDEX.out.index // path: bwa/* + bwamem2 = BWAMEM2_INDEX.out.index // path: bwamem2/* + hashtable = DRAGMAP_HASHTABLE.out.hashmap // path: dragmap/* + dbsnp_tbi = TABIX_DBSNP.out.tbi.map{ meta, tbi -> [tbi] }.collect() // path: dbsnb.vcf.gz.tbi + dict = GATK4_CREATESEQUENCEDICTIONARY.out.dict // path: genome.fasta.dict + fasta_fai = SAMTOOLS_FAIDX.out.fai.map{ meta, fai -> [fai] } // path: genome.fasta.fai + germline_resource_tbi = TABIX_GERMLINE_RESOURCE.out.tbi.map{ meta, tbi -> [tbi] }.collect() // path: germline_resource.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 chr_files = chr_files - versions = ch_versions // channel: [ versions.yml ] + versions = ch_versions // channel: [ versions.yml ] } From 7fd12abfaf7168caf7417ab5a56b5902e135e447 Mon Sep 17 00:00:00 2001 From: Rike Date: Fri, 17 Jun 2022 15:48:39 +0200 Subject: [PATCH 13/20] more channel :sparkles: magic --- workflows/sarek.nf | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/workflows/sarek.nf b/workflows/sarek.nf index da8bf2933..7a19dd261 100644 --- a/workflows/sarek.nf +++ b/workflows/sarek.nf @@ -94,15 +94,15 @@ if (anno_readme && file(anno_readme).exists()) { */ // Initialize file channels based on params, defined in the params.genomes[params.genome] scope -chr_dir = params.chr_dir ? Channel.fromPath(params.chr_dir).collect() : [] +chr_dir = params.chr_dir ? Channel.fromPath(params.chr_dir).collect() : Channel.value([]) dbsnp = params.dbsnp ? Channel.fromPath(params.dbsnp).collect() : Channel.value([]) fasta = params.fasta ? Channel.fromPath(params.fasta).collect() : Channel.empty() fasta_fai = params.fasta_fai ? Channel.fromPath(params.fasta_fai).collect() : Channel.empty() germline_resource = params.germline_resource ? Channel.fromPath(params.germline_resource).collect() : Channel.value([]) //Mutec2 does not require a germline resource, so set to optional input known_indels = params.known_indels ? Channel.fromPath(params.known_indels).collect() : Channel.value([]) -loci = params.ac_loci ? Channel.fromPath(params.ac_loci).collect() : [] -loci_gc = params.ac_loci_gc ? Channel.fromPath(params.ac_loci_gc).collect() : [] -mappability = params.mappability ? Channel.fromPath(params.mappability).collect() : [] +loci = params.ac_loci ? Channel.fromPath(params.ac_loci).collect() : Channel.value([]) +loci_gc = params.ac_loci_gc ? Channel.fromPath(params.ac_loci_gc).collect() : Channel.value([]) +mappability = params.mappability ? Channel.fromPath(params.mappability).collect() : Channel.value([]) pon = params.pon ? Channel.fromPath(params.pon).collect() : Channel.value([]) //PON is optional for Mutect2 (but highly recommended) // Initialize value channels based on params, defined in the params.genomes[params.genome] scope From ae9eb2f640383b30f8673e9d38f5f00dc2138bba Mon Sep 17 00:00:00 2001 From: Rike Date: Fri, 17 Jun 2022 20:33:36 +0200 Subject: [PATCH 14/20] add config for mutect2 tests --- tests/test_tools.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_tools.yml b/tests/test_tools.yml index 7e40bdfab..834f3b622 100644 --- a/tests/test_tools.yml +++ b/tests/test_tools.yml @@ -464,7 +464,7 @@ - path: results/csv/variantcalled.csv - name: Run variant calling on somatic sample with mutect2 without intervals - command: nextflow run main.nf -profile test,tools_somatic,docker --tools mutect2 --no_intervals + command: nextflow run main.nf -profile test,tools_somatic,docker --tools mutect2 --no_intervals -c ./tests/nextflow.config tags: - mutect2 - no_intervals From f8a0e121e6a8cd32d6364f7b561e709b04793e06 Mon Sep 17 00:00:00 2001 From: Rike Date: Mon, 20 Jun 2022 08:47:56 +0200 Subject: [PATCH 15/20] not sure what is going with mutect2 --- conf/modules.config | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 1deca131d..b2913f756 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -808,8 +808,8 @@ process{ ext.args = { "-tumor-segmentation ${meta.id}.segmentation.table" } publishDir = [ mode: params.publish_dir_mode, - path: { "${params.outdir}/variant_calling/${meta.id}/mutect2" }, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + path: { "${params.outdir}/variant_calling/" }, + saveAs: { filename -> filename.equals('versions.yml') ? null : "${meta.id}/mutect2/${filename}" } ] } @@ -825,8 +825,8 @@ process{ ext.prefix = {"${meta.id}.filtered"} publishDir = [ mode: params.publish_dir_mode, - path: { "${params.outdir}/variant_calling/${meta.id}/mutect2" }, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + path: { "${params.outdir}/variant_calling/" }, + saveAs: { filename -> filename.equals('versions.yml') ? null : "${meta.id}/mutect2/${filename}" } ] } @@ -850,9 +850,9 @@ process{ ext.prefix = { meta.num_intervals <= 1 ? meta.id : "${meta.id}_${intervals.simpleName}" } publishDir = [ mode: params.publish_dir_mode, - path: { "${params.outdir}/variant_calling/${meta.id}/" }, + path: { "${params.outdir}/variant_calling/" }, pattern: "*.table", - saveAs: { meta.num_intervals > 1 ? null : "mutect2/${it}" } + saveAs: { meta.num_intervals > 1 ? null : "${meta.id}/mutect2/${it}" } ] } @@ -880,9 +880,9 @@ process{ ext.args = { params.ignore_soft_clipped_bases ? "--dont-use-soft-clipped-bases true --f1r2-tar-gz ${task.ext.prefix}.f1r2.tar.gz" : "--f1r2-tar-gz ${task.ext.prefix}.f1r2.tar.gz" } publishDir = [ mode: params.publish_dir_mode, - path: { "${params.outdir}/variant_calling/${meta.id}/" }, + path: { "${params.outdir}/variant_calling/" }, pattern: "*{vcf.gz,vcf.gz.tbi,stats}", - saveAs: { meta.num_intervals > 1 ? null : "mutect2/${it}" } + saveAs: { meta.num_intervals > 1 ? null : "${meta.id}/mutect2/${it}" } ] } From 72169649ea3be0542a622cf17b926deec54be515 Mon Sep 17 00:00:00 2001 From: Rike Date: Mon, 20 Jun 2022 09:40:33 +0200 Subject: [PATCH 16/20] Fix getpileupsummaries output --- conf/modules.config | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/conf/modules.config b/conf/modules.config index b2913f756..3d272f26f 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -846,7 +846,7 @@ process{ ] } - withName: 'GETPILEUPSUMMARIES.*' { + withName: 'GETPILEUPSUMMARIES.*' { ext.prefix = { meta.num_intervals <= 1 ? meta.id : "${meta.id}_${intervals.simpleName}" } publishDir = [ mode: params.publish_dir_mode, @@ -856,6 +856,15 @@ process{ ] } + withName: 'GETPILEUPSUMMARIES_.*' { + publishDir = [ + mode: params.publish_dir_mode, + path: { "${params.outdir}/variant_calling/" }, + pattern: "*.table", + saveAs: { meta.num_intervals > 1 ? null : "${meta.tumor_id}_vs_${meta.normal_id}/mutect2/${it}" } + ] + } + withName: 'LEARNREADORIENTATIONMODEL'{ ext.prefix = { "${meta.id}.artifactprior" } publishDir = [ From ed7c724341d0a311f2cb330073c16b5b83e009b0 Mon Sep 17 00:00:00 2001 From: FriederikeHanssen Date: Mon, 20 Jun 2022 09:53:35 +0200 Subject: [PATCH 17/20] Update conf/modules.config Co-authored-by: Maxime U. Garcia --- conf/modules.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/modules.config b/conf/modules.config index 3d272f26f..26f747991 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -846,7 +846,7 @@ process{ ] } - withName: 'GETPILEUPSUMMARIES.*' { + withName: 'GETPILEUPSUMMARIES.*' { ext.prefix = { meta.num_intervals <= 1 ? meta.id : "${meta.id}_${intervals.simpleName}" } publishDir = [ mode: params.publish_dir_mode, From 975e71c8afd1b6778ceba33388ee96e4a60785e0 Mon Sep 17 00:00:00 2001 From: Rike Date: Mon, 20 Jun 2022 13:07:58 +0200 Subject: [PATCH 18/20] Try to request more memory --- conf/test.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/test.config b/conf/test.config index 7c4854674..7294f8dbb 100644 --- a/conf/test.config +++ b/conf/test.config @@ -22,7 +22,7 @@ params { // Limit resources so that this can run on GitHub Actions max_cpus = 2 - max_memory = '6.GB' + max_memory = '7.GB' max_time = '8.h' // Input data From 26d52d406798553d9ac8aec92112da310d888e4e Mon Sep 17 00:00:00 2001 From: Rike Date: Mon, 20 Jun 2022 13:14:28 +0200 Subject: [PATCH 19/20] Revert this, everything is red --- conf/test.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/test.config b/conf/test.config index 7294f8dbb..7c4854674 100644 --- a/conf/test.config +++ b/conf/test.config @@ -22,7 +22,7 @@ params { // Limit resources so that this can run on GitHub Actions max_cpus = 2 - max_memory = '7.GB' + max_memory = '6.GB' max_time = '8.h' // Input data From 2aa1e2feb7e1fb35ba83a2dc3f66cf221c3f50a8 Mon Sep 17 00:00:00 2001 From: Rike Date: Mon, 20 Jun 2022 14:57:04 +0200 Subject: [PATCH 20/20] try .5 --- conf/test.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/test.config b/conf/test.config index 7c4854674..3cc63737f 100644 --- a/conf/test.config +++ b/conf/test.config @@ -22,7 +22,7 @@ params { // Limit resources so that this can run on GitHub Actions max_cpus = 2 - max_memory = '6.GB' + max_memory = '6.5GB' max_time = '8.h' // Input data