From 7e7ed59b2a7587824ce670950bc7b6489f164e08 Mon Sep 17 00:00:00 2001 From: Ari Frantz Date: Thu, 8 Oct 2026 11:25:06 -0400 Subject: [PATCH 1/4] bump to 1.3 --- data_structures/flag_filter.wdl | 2 +- data_structures/read_group.wdl | 2 +- sprocket.toml | 2 +- template/task-examples.wdl | 2 +- tools/arriba.wdl | 2 +- tools/bwa.wdl | 2 +- tools/bwamem2.wdl | 2 +- tools/deeptools.wdl | 2 +- tools/fastp.wdl | 2 +- tools/fastqc.wdl | 2 +- tools/fq.wdl | 2 +- tools/htseq.wdl | 2 +- tools/kraken2.wdl | 2 +- tools/librarian.wdl | 2 +- tools/md5sum.wdl | 2 +- tools/mosdepth.wdl | 2 +- tools/multiqc.wdl | 2 +- tools/ngsderive.wdl | 2 +- tools/picard.wdl | 2 +- tools/qualimap.wdl | 2 +- tools/sambamba.wdl | 2 +- tools/samtools.wdl | 2 +- tools/star.wdl | 2 +- tools/strelka.wdl | 2 +- tools/util.wdl | 2 +- workflows/chipseq/chipseq-standard.wdl | 2 +- workflows/dnaseq/dnaseq-core.wdl | 2 +- workflows/dnaseq/dnaseq-standard-fastq.wdl | 2 +- workflows/dnaseq/dnaseq-standard.wdl | 2 +- workflows/general/alignment-post.wdl | 2 +- workflows/general/bam-to-fastqs.wdl | 2 +- workflows/general/samtools-merge.wdl | 2 +- workflows/methylation/methylation-cohort.wdl | 2 +- workflows/methylation/methylation-preprocess.wdl | 2 +- workflows/methylation/methylation-standard.wdl | 2 +- workflows/qc/markdups-post.wdl | 2 +- workflows/qc/quality-check-standard.wdl | 2 +- workflows/reference/bwa-db-build.wdl | 2 +- workflows/reference/gatk-reference.wdl | 2 +- workflows/reference/qc-reference.wdl | 2 +- workflows/reference/star-db-build.wdl | 2 +- workflows/rnaseq/rnaseq-core.wdl | 2 +- workflows/rnaseq/rnaseq-standard-fastq.wdl | 2 +- workflows/rnaseq/rnaseq-standard.wdl | 2 +- 44 files changed, 44 insertions(+), 44 deletions(-) diff --git a/data_structures/flag_filter.wdl b/data_structures/flag_filter.wdl index ece629955..5eace8de2 100644 --- a/data_structures/flag_filter.wdl +++ b/data_structures/flag_filter.wdl @@ -58,7 +58,7 @@ ## In short, those are all flags corresponding to the quality of the read ## and them being `true` may indicate that the read is of low quality and ## should be excluded. -version 1.1 +version 1.3 struct FlagFilter { String include_if_all # samtools -f diff --git a/data_structures/read_group.wdl b/data_structures/read_group.wdl index eaad089db..c375ede1e 100644 --- a/data_structures/read_group.wdl +++ b/data_structures/read_group.wdl @@ -27,7 +27,7 @@ ## - `PU`: Platform unit (e.g., flowcell-barcode.lane for Illumina or slide ## for SOLiD). Unique identifier. ## - `SM`: Sample. Use pool name where a pool is being sequenced. -version 1.1 +version 1.3 #@ except: SnakeCase struct ReadGroup { diff --git a/sprocket.toml b/sprocket.toml index 3dee52619..6c783ad03 100644 --- a/sprocket.toml +++ b/sprocket.toml @@ -1,5 +1,5 @@ [check] -except = ["ContainerUri", "TodoComment", "UnusedInput"] +disable = ["ContainerUri"] deny_notes = true [format] diff --git a/template/task-examples.wdl b/template/task-examples.wdl index 5bc0e6ff8..2f37b8cf1 100644 --- a/template/task-examples.wdl +++ b/template/task-examples.wdl @@ -1,4 +1,4 @@ -version 1.1 +version 1.3 task static_disk_and_ram_task { meta { diff --git a/tools/arriba.wdl b/tools/arriba.wdl index e2b146c35..b977f4568 100644 --- a/tools/arriba.wdl +++ b/tools/arriba.wdl @@ -1,5 +1,5 @@ ## [Homepage](https://arriba.readthedocs.io/en/latest/) -version 1.1 +version 1.3 task arriba { meta { diff --git a/tools/bwa.wdl b/tools/bwa.wdl index a83ce30b8..024f49cfe 100644 --- a/tools/bwa.wdl +++ b/tools/bwa.wdl @@ -1,5 +1,5 @@ ## [Homepage](https://github.com/lh3/bwa) -version 1.1 +version 1.3 task bwa_aln { meta { diff --git a/tools/bwamem2.wdl b/tools/bwamem2.wdl index aece65c6b..55c86f165 100644 --- a/tools/bwamem2.wdl +++ b/tools/bwamem2.wdl @@ -1,4 +1,4 @@ -version 1.2 +version 1.3 task align { meta { diff --git a/tools/deeptools.wdl b/tools/deeptools.wdl index 197491901..c4f7c2908 100755 --- a/tools/deeptools.wdl +++ b/tools/deeptools.wdl @@ -1,5 +1,5 @@ ## [Homepage](https://deeptools.readthedocs.io/en/develop/index.html) -version 1.1 +version 1.3 task bam_coverage { meta { diff --git a/tools/fastp.wdl b/tools/fastp.wdl index 75980f853..81881f5f4 100644 --- a/tools/fastp.wdl +++ b/tools/fastp.wdl @@ -1,4 +1,4 @@ -version 1.1 +version 1.3 task fastp { meta { diff --git a/tools/fastqc.wdl b/tools/fastqc.wdl index 7b63db9e5..15fc07c60 100755 --- a/tools/fastqc.wdl +++ b/tools/fastqc.wdl @@ -1,5 +1,5 @@ ## [Homepage](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/) -version 1.1 +version 1.3 task fastqc { meta { diff --git a/tools/fq.wdl b/tools/fq.wdl index 29fe4f9a5..3ae66cefa 100755 --- a/tools/fq.wdl +++ b/tools/fq.wdl @@ -1,5 +1,5 @@ ## [Homepage](https://github.com/stjude-rust-labs/fq) -version 1.1 +version 1.3 #@ except: EmptyOutputs task fqlint { diff --git a/tools/htseq.wdl b/tools/htseq.wdl index 1a3f439f7..ac978811c 100755 --- a/tools/htseq.wdl +++ b/tools/htseq.wdl @@ -1,5 +1,5 @@ ## [Homepage](https://github.com/htseq/htseq) -version 1.1 +version 1.3 task count { meta { diff --git a/tools/kraken2.wdl b/tools/kraken2.wdl index b78fd45da..39f128568 100644 --- a/tools/kraken2.wdl +++ b/tools/kraken2.wdl @@ -1,5 +1,5 @@ ## [Homepage](https://github.com/DerrickWood/kraken2) -version 1.1 +version 1.3 task download_taxonomy { meta { diff --git a/tools/librarian.wdl b/tools/librarian.wdl index 9fe3efac5..42216b5d9 100644 --- a/tools/librarian.wdl +++ b/tools/librarian.wdl @@ -1,5 +1,5 @@ ## # librarian -version 1.1 +version 1.3 task librarian { meta { diff --git a/tools/md5sum.wdl b/tools/md5sum.wdl index 3d9389bf0..b43fe2780 100755 --- a/tools/md5sum.wdl +++ b/tools/md5sum.wdl @@ -1,5 +1,5 @@ ## [Homepage](https://github.com/coreutils/coreutils) -version 1.1 +version 1.3 task compute_checksum { meta { diff --git a/tools/mosdepth.wdl b/tools/mosdepth.wdl index 11b1952f7..e9f7c7fa0 100644 --- a/tools/mosdepth.wdl +++ b/tools/mosdepth.wdl @@ -1,5 +1,5 @@ ## [Homepage](https://github.com/brentp/mosdepth) -version 1.1 +version 1.3 task coverage { meta { diff --git a/tools/multiqc.wdl b/tools/multiqc.wdl index 5da89eb5b..da36f250f 100755 --- a/tools/multiqc.wdl +++ b/tools/multiqc.wdl @@ -1,4 +1,4 @@ -version 1.1 +version 1.3 task multiqc { meta { diff --git a/tools/ngsderive.wdl b/tools/ngsderive.wdl index 94a422c09..5bc95eb9b 100644 --- a/tools/ngsderive.wdl +++ b/tools/ngsderive.wdl @@ -1,5 +1,5 @@ ## [Homepage](https://github.com/stjudecloud/ngsderive) -version 1.1 +version 1.3 task strandedness { meta { diff --git a/tools/picard.wdl b/tools/picard.wdl index 20ea7479d..21edf7e40 100755 --- a/tools/picard.wdl +++ b/tools/picard.wdl @@ -1,5 +1,5 @@ ## [Homepage](https://broadinstitute.github.io/picard/) -version 1.1 +version 1.3 task mark_duplicates { meta { diff --git a/tools/qualimap.wdl b/tools/qualimap.wdl index 638ed77ae..502295283 100755 --- a/tools/qualimap.wdl +++ b/tools/qualimap.wdl @@ -1,5 +1,5 @@ ## [Homepage](http://qualimap.bioinfo.cipf.es/) -version 1.1 +version 1.3 task rnaseq { meta { diff --git a/tools/sambamba.wdl b/tools/sambamba.wdl index 496e516bc..9a33baf0a 100644 --- a/tools/sambamba.wdl +++ b/tools/sambamba.wdl @@ -1,5 +1,5 @@ ## [Homepage](https://lomereiter.github.io/sambamba/) -version 1.1 +version 1.3 task index { meta { diff --git a/tools/samtools.wdl b/tools/samtools.wdl index df1a1b19d..4984be06b 100755 --- a/tools/samtools.wdl +++ b/tools/samtools.wdl @@ -1,5 +1,5 @@ ## [Homepage](http://samtools.sourceforge.net/) -version 1.1 +version 1.3 import "../data_structures/flag_filter.wdl" diff --git a/tools/star.wdl b/tools/star.wdl index 2b2f4efd7..ab1a24eeb 100755 --- a/tools/star.wdl +++ b/tools/star.wdl @@ -1,5 +1,5 @@ ## [Homepage](https://github.com/alexdobin/STAR) -version 1.1 +version 1.3 task build_star_db { meta { diff --git a/tools/strelka.wdl b/tools/strelka.wdl index c5eb017c1..71b6b3aba 100644 --- a/tools/strelka.wdl +++ b/tools/strelka.wdl @@ -1,4 +1,4 @@ -version 1.2 +version 1.3 task somatic { meta { diff --git a/tools/util.wdl b/tools/util.wdl index 1a1dd58fb..2378275b2 100644 --- a/tools/util.wdl +++ b/tools/util.wdl @@ -1,5 +1,5 @@ ## # Utilities -version 1.1 +version 1.3 task download { meta { diff --git a/workflows/chipseq/chipseq-standard.wdl b/workflows/chipseq/chipseq-standard.wdl index 95a395bc6..dbb2602ee 100755 --- a/workflows/chipseq/chipseq-standard.wdl +++ b/workflows/chipseq/chipseq-standard.wdl @@ -1,4 +1,4 @@ -version 1.1 +version 1.3 import "../../data_structures/read_group.wdl" import "../../tools/deeptools.wdl" diff --git a/workflows/dnaseq/dnaseq-core.wdl b/workflows/dnaseq/dnaseq-core.wdl index eb659b084..81de9597b 100644 --- a/workflows/dnaseq/dnaseq-core.wdl +++ b/workflows/dnaseq/dnaseq-core.wdl @@ -1,5 +1,5 @@ ## **WARNING:** this workflow is experimental! Use at your own risk! -version 1.1 +version 1.3 import "../../tools/bwa.wdl" import "../../tools/fastp.wdl" as fp diff --git a/workflows/dnaseq/dnaseq-standard-fastq.wdl b/workflows/dnaseq/dnaseq-standard-fastq.wdl index cf7ec297a..654b228f4 100644 --- a/workflows/dnaseq/dnaseq-standard-fastq.wdl +++ b/workflows/dnaseq/dnaseq-standard-fastq.wdl @@ -1,5 +1,5 @@ ## **WARNING:** this workflow is experimental! Use at your own risk! -version 1.1 +version 1.3 import "../../data_structures/read_group.wdl" import "../../tools/fq.wdl" diff --git a/workflows/dnaseq/dnaseq-standard.wdl b/workflows/dnaseq/dnaseq-standard.wdl index b186250e2..74e35141c 100644 --- a/workflows/dnaseq/dnaseq-standard.wdl +++ b/workflows/dnaseq/dnaseq-standard.wdl @@ -1,5 +1,5 @@ ## **WARNING:** this workflow is experimental! Use at your own risk! -version 1.1 +version 1.3 import "../../data_structures/read_group.wdl" import "../../tools/picard.wdl" diff --git a/workflows/general/alignment-post.wdl b/workflows/general/alignment-post.wdl index eaab22d88..82c9292fc 100644 --- a/workflows/general/alignment-post.wdl +++ b/workflows/general/alignment-post.wdl @@ -1,4 +1,4 @@ -version 1.1 +version 1.3 import "../../tools/md5sum.wdl" import "../../tools/picard.wdl" diff --git a/workflows/general/bam-to-fastqs.wdl b/workflows/general/bam-to-fastqs.wdl index cb0ccb59a..06d7d9310 100644 --- a/workflows/general/bam-to-fastqs.wdl +++ b/workflows/general/bam-to-fastqs.wdl @@ -1,4 +1,4 @@ -version 1.1 +version 1.3 import "../../tools/fq.wdl" import "../../tools/samtools.wdl" diff --git a/workflows/general/samtools-merge.wdl b/workflows/general/samtools-merge.wdl index 901f2e33b..dd7e88596 100644 --- a/workflows/general/samtools-merge.wdl +++ b/workflows/general/samtools-merge.wdl @@ -1,5 +1,5 @@ ## **WARNING:** this workflow is experimental! Use at your own risk! -version 1.1 +version 1.3 import "../../tools/samtools.wdl" diff --git a/workflows/methylation/methylation-cohort.wdl b/workflows/methylation/methylation-cohort.wdl index 5c2d151a3..6ef9bf87c 100644 --- a/workflows/methylation/methylation-cohort.wdl +++ b/workflows/methylation/methylation-cohort.wdl @@ -1,4 +1,4 @@ -version 1.1 +version 1.3 workflow methylation_cohort { meta { diff --git a/workflows/methylation/methylation-preprocess.wdl b/workflows/methylation/methylation-preprocess.wdl index bf5f9a94c..cd1123c06 100644 --- a/workflows/methylation/methylation-preprocess.wdl +++ b/workflows/methylation/methylation-preprocess.wdl @@ -1,4 +1,4 @@ -version 1.1 +version 1.3 task process_raw_idats { meta { diff --git a/workflows/methylation/methylation-standard.wdl b/workflows/methylation/methylation-standard.wdl index 6f4c13f1a..3d8607800 100644 --- a/workflows/methylation/methylation-standard.wdl +++ b/workflows/methylation/methylation-standard.wdl @@ -1,4 +1,4 @@ -version 1.1 +version 1.3 import "./methylation-cohort.wdl" as cohort import "./methylation-preprocess.wdl" as preprocess diff --git a/workflows/qc/markdups-post.wdl b/workflows/qc/markdups-post.wdl index 2e0420fa5..7ddb2859e 100644 --- a/workflows/qc/markdups-post.wdl +++ b/workflows/qc/markdups-post.wdl @@ -5,7 +5,7 @@ ## whether a read is a duplicate or not. ## But the tasks called below produce different results depending on whether the ## input BAM has been duplicate marked or not. -version 1.1 +version 1.3 import "../../tools/mosdepth.wdl" import "../../tools/picard.wdl" diff --git a/workflows/qc/quality-check-standard.wdl b/workflows/qc/quality-check-standard.wdl index e691246eb..6366bef43 100644 --- a/workflows/qc/quality-check-standard.wdl +++ b/workflows/qc/quality-check-standard.wdl @@ -1,4 +1,4 @@ -version 1.1 +version 1.3 import "../../data_structures/flag_filter.wdl" import "../../tools/fastp.wdl" as fp diff --git a/workflows/reference/bwa-db-build.wdl b/workflows/reference/bwa-db-build.wdl index 579385f1c..c877b6790 100644 --- a/workflows/reference/bwa-db-build.wdl +++ b/workflows/reference/bwa-db-build.wdl @@ -1,4 +1,4 @@ -version 1.1 +version 1.3 import "../../tools/bwa.wdl" import "../../tools/util.wdl" diff --git a/workflows/reference/gatk-reference.wdl b/workflows/reference/gatk-reference.wdl index 3b4dff835..f6f326cc3 100644 --- a/workflows/reference/gatk-reference.wdl +++ b/workflows/reference/gatk-reference.wdl @@ -1,4 +1,4 @@ -version 1.1 +version 1.3 import "../../tools/picard.wdl" import "../../tools/samtools.wdl" diff --git a/workflows/reference/qc-reference.wdl b/workflows/reference/qc-reference.wdl index 4f19c2487..749b16b85 100644 --- a/workflows/reference/qc-reference.wdl +++ b/workflows/reference/qc-reference.wdl @@ -1,4 +1,4 @@ -version 1.1 +version 1.3 import "../../tools/kraken2.wdl" import "../../tools/util.wdl" diff --git a/workflows/reference/star-db-build.wdl b/workflows/reference/star-db-build.wdl index d2d14b2a1..0ebaf977d 100644 --- a/workflows/reference/star-db-build.wdl +++ b/workflows/reference/star-db-build.wdl @@ -1,4 +1,4 @@ -version 1.1 +version 1.3 import "../../tools/star.wdl" import "../../tools/util.wdl" diff --git a/workflows/rnaseq/rnaseq-core.wdl b/workflows/rnaseq/rnaseq-core.wdl index 2bb98fd10..e2cb81991 100644 --- a/workflows/rnaseq/rnaseq-core.wdl +++ b/workflows/rnaseq/rnaseq-core.wdl @@ -1,4 +1,4 @@ -version 1.1 +version 1.3 import "../../tools/deeptools.wdl" import "../../tools/fastp.wdl" as fp diff --git a/workflows/rnaseq/rnaseq-standard-fastq.wdl b/workflows/rnaseq/rnaseq-standard-fastq.wdl index b1d965746..2c734b89a 100644 --- a/workflows/rnaseq/rnaseq-standard-fastq.wdl +++ b/workflows/rnaseq/rnaseq-standard-fastq.wdl @@ -1,4 +1,4 @@ -version 1.1 +version 1.3 import "../../data_structures/read_group.wdl" import "../../tools/fq.wdl" diff --git a/workflows/rnaseq/rnaseq-standard.wdl b/workflows/rnaseq/rnaseq-standard.wdl index c58575b64..b3106a511 100755 --- a/workflows/rnaseq/rnaseq-standard.wdl +++ b/workflows/rnaseq/rnaseq-standard.wdl @@ -1,4 +1,4 @@ -version 1.1 +version 1.3 import "../../data_structures/read_group.wdl" import "../../tools/picard.wdl" From e8ab3aeb9b1b1b2728afba86d3c690b08135c7dc Mon Sep 17 00:00:00 2001 From: Ari Frantz Date: Thu, 8 Oct 2026 11:34:03 -0400 Subject: [PATCH 2/4] various global `sed` replacements --- data_structures/flag_filter.wdl | 10 +-- data_structures/read_group.wdl | 12 ++-- sprocket.toml | 2 +- template/task-examples.wdl | 14 ++-- tools/arriba.wdl | 8 +-- tools/bwa.wdl | 8 +-- tools/clair.wdl | 2 - tools/deeptools.wdl | 2 +- tools/fastp.wdl | 3 +- tools/fastqc.wdl | 2 +- tools/fq.wdl | 4 +- tools/gatk4.wdl | 9 ++- tools/htseq.wdl | 4 +- tools/kraken2.wdl | 10 +-- tools/librarian.wdl | 2 +- tools/md5sum.wdl | 2 +- tools/mosdepth.wdl | 2 +- tools/multiqc.wdl | 2 +- tools/ngsderive.wdl | 12 ++-- tools/picard.wdl | 28 ++++---- tools/qualimap.wdl | 4 +- tools/sambamba.wdl | 10 +-- tools/samtools.wdl | 32 ++++----- tools/star.wdl | 24 +++---- tools/util.wdl | 20 +++--- workflows/chipseq/chipseq-standard.wdl | 36 +++++----- workflows/dnaseq/dnaseq-core.wdl | 20 +++--- workflows/dnaseq/dnaseq-standard-fastq.wdl | 10 +-- workflows/dnaseq/dnaseq-standard.wdl | 16 ++--- .../evaluation/germline-variant-calling.wdl | 4 +- workflows/general/alignment-post.wdl | 14 ++-- workflows/general/bam-to-fastqs.wdl | 10 +-- workflows/general/samtools-merge.wdl | 6 +- workflows/methylation/methylation-cohort.wdl | 26 +++---- .../methylation/methylation-preprocess.wdl | 4 +- .../methylation/methylation-standard.wdl | 18 ++--- workflows/qc/markdups-post.wdl | 8 +-- workflows/qc/quality-check-standard.wdl | 70 +++++++++---------- workflows/reference/bwa-db-build.wdl | 4 +- workflows/reference/gatk-reference.wdl | 30 ++++---- workflows/reference/qc-reference.wdl | 16 ++--- workflows/reference/star-db-build.wdl | 6 +- workflows/rnaseq/rnaseq-core.wdl | 18 ++--- workflows/rnaseq/rnaseq-standard-fastq.wdl | 10 +-- workflows/rnaseq/rnaseq-standard.wdl | 16 ++--- workflows/rnaseq/rnaseq-variant-calling.wdl | 20 +++--- .../variant-calling/haplotype_caller.wdl | 4 +- 47 files changed, 295 insertions(+), 299 deletions(-) diff --git a/data_structures/flag_filter.wdl b/data_structures/flag_filter.wdl index 5eace8de2..0fcebcc62 100644 --- a/data_structures/flag_filter.wdl +++ b/data_structures/flag_filter.wdl @@ -108,7 +108,7 @@ task validate_string_is_12bit_int { fi >>> - runtime { + requirements { container: "ghcr.io/stjudecloud/util:3.0.4" maxRetries: 1 } @@ -128,16 +128,16 @@ workflow validate_flag_filter { FlagFilter flags } - call validate_string_is_12bit_int as validate_include_if_any { input: + call validate_string_is_12bit_int as validate_include_if_any { number = flags.include_if_any, } - call validate_string_is_12bit_int as validate_include_if_all { input: + call validate_string_is_12bit_int as validate_include_if_all { number = flags.include_if_all, } - call validate_string_is_12bit_int as validate_exclude_if_any { input: + call validate_string_is_12bit_int as validate_exclude_if_any { number = flags.exclude_if_any, } - call validate_string_is_12bit_int as validate_exclude_if_all { input: + call validate_string_is_12bit_int as validate_exclude_if_all { number = flags.exclude_if_all, } } diff --git a/data_structures/read_group.wdl b/data_structures/read_group.wdl index c375ede1e..4392102f0 100644 --- a/data_structures/read_group.wdl +++ b/data_structures/read_group.wdl @@ -29,7 +29,7 @@ ## - `SM`: Sample. Use pool name where a pool is being sequenced. version 1.3 -#@ except: SnakeCase +#@ except: NamingConvention struct ReadGroup { String ID String? BC @@ -78,12 +78,12 @@ workflow read_group_to_string { Boolean restrictive = true } - call validate_read_group { input: + call validate_read_group { read_group, required_fields, restrictive, } - call inner_read_group_to_string after validate_read_group { input: + call inner_read_group_to_string after validate_read_group { read_group, format_as_sam_record, split_on_field, @@ -129,7 +129,7 @@ task get_read_groups { Array[ReadGroup] read_groups = read_json("read_groups.json") } - runtime { + requirements { disks: "~{disk_size_gb} GB" container: "ghcr.io/stjudecloud/util:3.0.4" maxRetries: 1 @@ -355,7 +355,7 @@ task validate_read_group { exit $exit_code >>> - runtime { + requirements { container: "ghcr.io/stjudecloud/util:3.0.4" maxRetries: 1 } @@ -425,7 +425,7 @@ task inner_read_group_to_string { else None } - runtime { + requirements { container: "ghcr.io/stjudecloud/util:3.0.4" maxRetries: 1 } diff --git a/sprocket.toml b/sprocket.toml index 6c783ad03..9cfe93345 100644 --- a/sprocket.toml +++ b/sprocket.toml @@ -1,5 +1,5 @@ [check] -disable = ["ContainerUri"] +disable = ["ContainerUri", "MutableContainerTag", "FlaggedComment"] deny_notes = true [format] diff --git a/template/task-examples.wdl b/template/task-examples.wdl index 2f37b8cf1..263fdb261 100644 --- a/template/task-examples.wdl +++ b/template/task-examples.wdl @@ -19,7 +19,7 @@ task static_disk_and_ram_task { output { } - runtime { + requirements { memory: "4 GB" disks: "10 GB" container: "" @@ -55,7 +55,7 @@ task dynamic_disk_and_ram_task { output { } - runtime { + requirements { memory: "~{memory_gb} GB" disks: "~{disk_size_gb} GB" container: "" @@ -92,7 +92,7 @@ task use_all_cores_task { output { } - runtime { + requirements { cpu: ncpu container: "" maxRetries: 1 @@ -134,7 +134,7 @@ task localize_files_task { output { } - runtime { + requirements { container: "" maxRetries: 1 } @@ -163,7 +163,7 @@ task outfile_name_task { File = outfile_name } - runtime { + requirements { container: "" maxRetries: 1 } @@ -192,7 +192,7 @@ task prefix_task { File = prefix + "." } - runtime { + requirements { container: "" maxRetries: 1 } @@ -235,7 +235,7 @@ task string_choices_task { output { } - runtime { + requirements { container: "" maxRetries: 1 } diff --git a/tools/arriba.wdl b/tools/arriba.wdl index b977f4568..73bc2e072 100644 --- a/tools/arriba.wdl +++ b/tools/arriba.wdl @@ -257,7 +257,7 @@ task arriba { File discarded_fusions = "~{prefix}.discarded.tsv" } - runtime { + requirements { cpu: 1 memory: "~{memory_gb} GB" disks: "~{disk_size_gb} GB" @@ -308,7 +308,7 @@ task arriba_tsv_to_vcf { File fusions_vcf = "~{prefix}.vcf" } - runtime { + requirements { cpu: 1 memory: "4 GB" disks: "~{disk_size_gb} GB" @@ -365,7 +365,7 @@ task arriba_extract_fusion_supporting_alignments { Array[File] fusion_bam_indexes = glob("~{prefix}_*.bam.bai") } - runtime { + requirements { cpu: 1 disks: "~{disk_size_gb} GB" container: "quay.io/biocontainers/arriba:2.4.0--h0033a41_2" @@ -414,7 +414,7 @@ task arriba_annotate_exon_numbers { File fusion_tsv = "~{prefix}.annotated.tsv" } - runtime { + requirements { cpu: 1 disks: "~{disk_size_gb} GB" container: "quay.io/biocontainers/arriba:2.4.0--h0033a41_2" diff --git a/tools/bwa.wdl b/tools/bwa.wdl index 024f49cfe..4ada108fa 100644 --- a/tools/bwa.wdl +++ b/tools/bwa.wdl @@ -81,7 +81,7 @@ task bwa_aln { File bam = output_bam } - runtime { + requirements { cpu: ncpu memory: "5 GB" disks: "~{disk_size_gb} GB" @@ -180,7 +180,7 @@ task bwa_aln_pe { File bam = output_bam } - runtime { + requirements { cpu: ncpu memory: "17 GB" disks: "~{disk_size_gb} GB" @@ -278,7 +278,7 @@ task bwa_mem { File bam = output_bam } - runtime { + requirements { cpu: ncpu memory: "25 GB" disks: "~{disk_size_gb} GB" @@ -330,7 +330,7 @@ task build_bwa_db { File bwa_db_tar_gz = bwa_db_out_name } - runtime { + requirements { memory: "5 GB" disks: "~{disk_size_gb} GB" container: "ghcr.io/stjudecloud/bwa:0.7.17-2" diff --git a/tools/clair.wdl b/tools/clair.wdl index ceab9ded5..28a27a7b3 100644 --- a/tools/clair.wdl +++ b/tools/clair.wdl @@ -136,7 +136,6 @@ task clair3 { String filename = basename(bam) - #@ except: ShellCheck command <<< set -euo pipefail @@ -255,7 +254,6 @@ task clair_s { String tumor = basename(tumor_bam) String normal = basename(normal_bam) - #@ except: ShellCheck command <<< set -euo pipefail diff --git a/tools/deeptools.wdl b/tools/deeptools.wdl index c4f7c2908..301279e71 100755 --- a/tools/deeptools.wdl +++ b/tools/deeptools.wdl @@ -62,7 +62,7 @@ task bam_coverage { File bigwig = "~{prefix}.bw" } - runtime { + requirements { cpu: ncpu memory: "4 GB" disks: "~{disk_size_gb} GB" diff --git a/tools/fastp.wdl b/tools/fastp.wdl index 81881f5f4..ebe4bf0ef 100644 --- a/tools/fastp.wdl +++ b/tools/fastp.wdl @@ -146,7 +146,6 @@ task fastp { Float input_size = size(read_one_fastq, "GB") + size(read_two_fastq, "GB") Int disk_size_gb = ceil(input_size) * 2 + 10 + modify_disk_size_gb - #@ except: ShellCheck command <<< set -euo pipefail @@ -212,7 +211,7 @@ task fastp { File report_json = prefix + ".fastp.json" } - runtime { + requirements { cpu: ncpu memory: if disable_duplicate_eval then "4 GB" diff --git a/tools/fastqc.wdl b/tools/fastqc.wdl index 15fc07c60..bb1277fc4 100755 --- a/tools/fastqc.wdl +++ b/tools/fastqc.wdl @@ -61,7 +61,7 @@ task fastqc { File results = out_tar_gz } - runtime { + requirements { cpu: ncpu memory: "4 GB" disks: "~{disk_size_gb} GB" diff --git a/tools/fq.wdl b/tools/fq.wdl index 3ae66cefa..c69d0fe44 100755 --- a/tools/fq.wdl +++ b/tools/fq.wdl @@ -83,7 +83,7 @@ task fqlint { ~{"'" + read_two_fastq + "'"} >>> - runtime { + requirements { memory: "~{memory_gb} GB" disks: "~{disk_size_gb} GB" container: "quay.io/biocontainers/fq:0.12.0--h9ee0642_0" @@ -162,7 +162,7 @@ task subsample { File? subsampled_read2 = prefix + ".R2.subsampled.fastq.gz" } - runtime { + requirements { memory: "4 GB" disks: "~{disk_size_gb} GB" container: "quay.io/biocontainers/fq:0.12.0--h9ee0642_0" diff --git a/tools/gatk4.wdl b/tools/gatk4.wdl index f7d80f028..cdb95aec9 100644 --- a/tools/gatk4.wdl +++ b/tools/gatk4.wdl @@ -190,9 +190,9 @@ task base_recalibrator { File fasta File fasta_index File dict - #@ except: SnakeCase + #@ except: NamingConvention File dbSNP_vcf - #@ except: SnakeCase + #@ except: NamingConvention File dbSNP_vcf_index Array[File] known_indels_sites_vcfs Array[File] known_indels_sites_indices @@ -364,9 +364,9 @@ task haplotype_caller { File fasta File fasta_index File dict - #@ except: SnakeCase + #@ except: NamingConvention File dbSNP_vcf - #@ except: SnakeCase + #@ except: NamingConvention File dbSNP_vcf_index RefConfidence reference_confidence = RefConfidence.NONE String prefix = basename(bam, ".bam") @@ -779,7 +779,6 @@ task variant_recalibrator { Int disk_size_gb = ceil(size(vcf, "GB") * 2) + ceil(size(reference_fasta, "GB") * 2) + 30 + modify_disk_size_gb - #@ except: ShellCheck command <<< set -euo pipefail diff --git a/tools/htseq.wdl b/tools/htseq.wdl index ac978811c..8e97993a5 100755 --- a/tools/htseq.wdl +++ b/tools/htseq.wdl @@ -131,7 +131,7 @@ task count { File feature_counts = "~{outfile_name}" } - runtime { + requirements { memory: "~{memory_gb} GB" disks: "~{disk_size_gb} GB" container: "quay.io/biocontainers/htseq:2.0.5--py310h5aa3a86_0" @@ -184,7 +184,7 @@ task calc_tpm { File tpm_file = "~{outfile_name}" } - runtime { + requirements { memory: "4 GB" disks: "10 GB" container: "ghcr.io/stjudecloud/util:3.0.4" diff --git a/tools/kraken2.wdl b/tools/kraken2.wdl index 39f128568..5159c4c16 100644 --- a/tools/kraken2.wdl +++ b/tools/kraken2.wdl @@ -40,7 +40,7 @@ task download_taxonomy { File taxonomy = db_name + ".tar.gz" } - runtime { + requirements { memory: "4 GB" disks: "60 GB" container: "quay.io/biocontainers/kraken2:2.1.3--pl5321hdcf5f25_0" @@ -122,7 +122,7 @@ task download_library { File library = db_name + ".tar.gz" } - runtime { + requirements { memory: "4 GB" disks: "~{disk_size_gb} GB" container: "quay.io/biocontainers/kraken2:2.1.3--pl5321hdcf5f25_0" @@ -185,7 +185,7 @@ task create_library_from_fastas { File custom_library = db_name + ".tar.gz" } - runtime { + requirements { memory: "4 GB" disks: "~{disk_size_gb} GB" container: "quay.io/biocontainers/kraken2:2.1.3--pl5321hdcf5f25_0" @@ -294,7 +294,7 @@ task build_db { File built_db = db_name + ".tar.gz" } - runtime { + requirements { cpu: ncpu memory: "~{memory_gb} GB" disks: "~{disk_size_gb} GB" @@ -427,7 +427,7 @@ task kraken { File? sequences = out_sequences + ".gz" } - runtime { + requirements { cpu: ncpu memory: "~{memory_gb} GB" disks: "~{disk_size_gb} GB" diff --git a/tools/librarian.wdl b/tools/librarian.wdl index 42216b5d9..1f98ae36b 100644 --- a/tools/librarian.wdl +++ b/tools/librarian.wdl @@ -46,7 +46,7 @@ task librarian { File raw_data = "~{prefix}/librarian_heatmap.txt" } - runtime { + requirements { memory: "4 GB" disks: "~{disk_size_gb} GB" container: "ghcr.io/kartva/librarian:1.2" diff --git a/tools/md5sum.wdl b/tools/md5sum.wdl index b43fe2780..7197164d4 100755 --- a/tools/md5sum.wdl +++ b/tools/md5sum.wdl @@ -34,7 +34,7 @@ task compute_checksum { File md5sum = outfile_name } - runtime { + requirements { disks: "~{disk_size_gb} GB" container: "ghcr.io/stjudecloud/util:3.0.4" maxRetries: 1 diff --git a/tools/mosdepth.wdl b/tools/mosdepth.wdl index e9f7c7fa0..e41a1ba9a 100644 --- a/tools/mosdepth.wdl +++ b/tools/mosdepth.wdl @@ -65,7 +65,7 @@ task coverage { File? region_dist = prefix + ".mosdepth.region.dist.txt" } - runtime { + requirements { memory: "8 GB" disks: "~{disk_size_gb} GB" container: "quay.io/biocontainers/mosdepth:0.3.6--hd299d5a_0" diff --git a/tools/multiqc.wdl b/tools/multiqc.wdl index da36f250f..25d7642a1 100755 --- a/tools/multiqc.wdl +++ b/tools/multiqc.wdl @@ -63,7 +63,7 @@ task multiqc { File parquet = report_name + ".parquet" } - runtime { + requirements { memory: "4 GB" disks: "~{disk_size_gb} GB" container: "ghcr.io/multiqc/multiqc:v1.31" diff --git a/tools/ngsderive.wdl b/tools/ngsderive.wdl index 5bc95eb9b..5f6b15481 100644 --- a/tools/ngsderive.wdl +++ b/tools/ngsderive.wdl @@ -82,7 +82,7 @@ task strandedness { String strandedness_string = read_string("strandedness.txt") } - runtime { + requirements { memory: "4 GB" disks: "~{disk_size_gb} GB" container: "quay.io/biocontainers/ngsderive:3.3.2--pyhdfd78af_0" @@ -135,7 +135,7 @@ task instrument { String instrument_string = read_string("instrument.txt") } - runtime { + requirements { memory: "4 GB" disks: "~{disk_size_gb} GB" container: "quay.io/biocontainers/ngsderive:3.3.2--pyhdfd78af_0" @@ -199,7 +199,7 @@ task read_length { File read_length_file = outfile_name } - runtime { + requirements { memory: "4 GB" disks: "~{disk_size_gb} GB" container: "quay.io/biocontainers/ngsderive:3.3.2--pyhdfd78af_0" @@ -248,7 +248,7 @@ task encoding { File encoding_file = outfile_name } - runtime { + requirements { memory: "4 GB" disks: "~{disk_size_gb} GB" container: "quay.io/biocontainers/ngsderive:3.3.2--pyhdfd78af_0" @@ -336,7 +336,7 @@ task junction_annotation { File junctions = "~{prefix}.junctions.tsv.gz" } - runtime { + requirements { memory: "56 GB" disks: "~{disk_size_gb} GB" container: "quay.io/biocontainers/ngsderive:3.3.2--pyhdfd78af_0" @@ -420,7 +420,7 @@ task endedness { File endedness_file = outfile_name } - runtime { + requirements { memory: "~{memory_gb} GB" disks: "~{disk_size_gb} GB" container: "quay.io/biocontainers/ngsderive:3.3.2--pyhdfd78af_0" diff --git a/tools/picard.wdl b/tools/picard.wdl index 21edf7e40..d67df89ad 100755 --- a/tools/picard.wdl +++ b/tools/picard.wdl @@ -127,7 +127,7 @@ task mark_duplicates { File mark_duplicates_metrics = "~{prefix}.metrics.txt" } - runtime { + requirements { memory: "~{memory_gb} GB" disks: "~{disk_size_gb} GB" container: "quay.io/biocontainers/picard:3.1.1--hdfd78af_0" @@ -236,7 +236,7 @@ task validate_bam { File validate_report = outfile } - runtime { + requirements { memory: "~{memory_gb} GB" disks: "~{disk_size_gb} GB" container: "quay.io/biocontainers/picard:3.1.1--hdfd78af_0" @@ -327,7 +327,7 @@ task sort { File sorted_bam_md5 = outfile_name + ".md5" } - runtime { + requirements { memory: "~{memory_gb} GB" disks: "~{disk_size_gb} GB" container: "quay.io/biocontainers/picard:3.1.1--hdfd78af_0" @@ -419,7 +419,7 @@ task merge_sam_files { File merged_bam_md5 = outfile_name + ".md5" } - runtime { + requirements { cpu: if threading then 2 else 1 memory: "~{memory_gb} GB" disks: "~{disk_size_gb} GB" @@ -488,7 +488,7 @@ task clean_sam { File cleaned_bam_md5 = outfile_name + ".md5" } - runtime { + requirements { memory: "~{memory_gb} GB" disks: "~{disk_size_gb} GB" container: "quay.io/biocontainers/picard:3.1.1--hdfd78af_0" @@ -554,7 +554,7 @@ task collect_wgs_metrics { File wgs_metrics = outfile_name } - runtime { + requirements { memory: "~{memory_gb} GB" disks: "~{disk_size_gb} GB" container: "quay.io/biocontainers/picard:3.1.1--hdfd78af_0" @@ -619,7 +619,7 @@ task collect_alignment_summary_metrics { File alignment_metrics_pdf = prefix + ".pdf" } - runtime { + requirements { memory: "~{memory_gb} GB" disks: "~{disk_size_gb} GB" container: "quay.io/biocontainers/picard:3.1.1--hdfd78af_0" @@ -692,7 +692,7 @@ task collect_gc_bias_metrics { File gc_bias_metrics_pdf = prefix + ".pdf" } - runtime { + requirements { memory: "~{memory_gb} GB" disks: "~{disk_size_gb} GB" container: "quay.io/biocontainers/picard:3.1.1--hdfd78af_0" @@ -757,7 +757,7 @@ task collect_insert_size_metrics { File insert_size_metrics_pdf = prefix + ".pdf" } - runtime { + requirements { memory: "~{memory_gb} GB" disks: "~{disk_size_gb} GB" container: "quay.io/biocontainers/picard:3.1.1--hdfd78af_0" @@ -818,7 +818,7 @@ task quality_score_distribution { File quality_score_distribution_pdf = prefix + ".pdf" } - runtime { + requirements { memory: "~{memory_gb} GB" disks: "~{disk_size_gb} GB" container: "quay.io/biocontainers/picard:3.1.1--hdfd78af_0" @@ -866,7 +866,7 @@ task merge_vcfs { File merged_vcf_index = "~{output_vcf_name}.tbi" } - runtime { + requirements { memory: "4 GB" disks: "~{disk_size_gb} GB" container: "quay.io/biocontainers/picard:3.1.1--hdfd78af_0" @@ -938,7 +938,7 @@ task scatter_interval_list { Int interval_count = read_int("interval_count.txt") } - runtime { + requirements { memory: "2 GB" disks: "1 GB" container: "quay.io/biocontainers/picard:3.1.1--hdfd78af_0" @@ -994,7 +994,7 @@ task create_sequence_dictionary { File dictionary = outfile_name } - runtime { + requirements { cpu: 1 memory: "~{memory_gb} GB" disks: "~{disk_size_gb} GB" @@ -1052,7 +1052,7 @@ task bam_to_fastq { File? read_two_fastq_gz = "~{prefix}.R2.fastq.gz" } - runtime { + requirements { memory: "~{memory_gb} GB" disks: "~{disk_size_gb} GB" container: "quay.io/biocontainers/picard:3.1.1--hdfd78af_0" diff --git a/tools/qualimap.wdl b/tools/qualimap.wdl index 502295283..ccbb6be87 100755 --- a/tools/qualimap.wdl +++ b/tools/qualimap.wdl @@ -85,7 +85,7 @@ task rnaseq { File results = out_tar_gz } - runtime { + requirements { memory: "~{memory_gb} GB" disks: "~{disk_size_gb} GB" container: "quay.io/biocontainers/qualimap:2.3--hdfd78af_0" @@ -153,7 +153,7 @@ task bamqc { File results = out_tar_gz } - runtime { + requirements { cpu: ncpu memory: "~{memory_gb} GB" disks: "~{disk_size_gb} GB" diff --git a/tools/sambamba.wdl b/tools/sambamba.wdl index 9a33baf0a..16360cb37 100644 --- a/tools/sambamba.wdl +++ b/tools/sambamba.wdl @@ -49,7 +49,7 @@ task index { File bam_index = outfile_name } - runtime { + requirements { cpu: ncpu memory: "4 GB" disks: "~{disk_size_gb} GB" @@ -109,7 +109,7 @@ task merge { File merged_bam = prefix + ".bam" } - runtime { + requirements { cpu: ncpu memory: "4 GB" disks: "~{disk_size_gb} GB" @@ -164,7 +164,7 @@ task sort { File sorted_bam = outfile_name } - runtime { + requirements { cpu: ncpu memory: "25 GB" disks: "~{disk_size_gb} GB" @@ -222,7 +222,7 @@ task markdup { File markdup_log = "~{prefix}.markdup_log.txt" } - runtime { + requirements { cpu: ncpu memory: "50 GB" disks: "~{disk_size_gb} GB" @@ -279,7 +279,7 @@ task flagstat { File flagstat_report = outfile_name } - runtime { + requirements { cpu: ncpu memory: "5 GB" disks: "~{disk_size_gb} GB" diff --git a/tools/samtools.wdl b/tools/samtools.wdl index 4984be06b..5ad56883d 100755 --- a/tools/samtools.wdl +++ b/tools/samtools.wdl @@ -29,7 +29,7 @@ task quickcheck { samtools quickcheck "~{bam}" >>> - runtime { + requirements { disks: "~{disk_size_gb} GB" container: "quay.io/biocontainers/samtools:1.19.2--h50ea8bc_0" maxRetries: 1 @@ -141,7 +141,7 @@ task split { Array[File] split_bams = glob("*.bam") } - runtime { + requirements { cpu: ncpu memory: "4 GB" disks: "~{disk_size_gb} GB" @@ -200,7 +200,7 @@ task flagstat { File flagstat_report = outfile_name } - runtime { + requirements { memory: "5 GB" disks: "~{disk_size_gb} GB" container: "quay.io/biocontainers/samtools:1.19.2--h50ea8bc_0" @@ -258,7 +258,7 @@ task index { File bam_index = outfile_name } - runtime { + requirements { cpu: ncpu memory: "4 GB" disks: "~{disk_size_gb} GB" @@ -406,7 +406,7 @@ task subsample { File? sampled_bam = suffixed + ".bam" } - runtime { + requirements { cpu: ncpu memory: "4 GB" disks: "~{disk_size_gb} GB" @@ -493,7 +493,7 @@ task filter { File filtered_bam = prefix + ".bam" } - runtime { + requirements { cpu: ncpu memory: "4 GB" disks: "~{disk_size_gb} GB" @@ -601,7 +601,7 @@ task merge { File merged_bam = prefix + ".bam" } - runtime { + requirements { cpu: ncpu memory: "4 GB" disks: "~{disk_size_gb} GB" @@ -692,7 +692,7 @@ task addreplacerg { File tagged_bam = outfile_name } - runtime { + requirements { cpu: ncpu memory: "8 GB" disks: "~{disk_size_gb} GB" @@ -765,7 +765,7 @@ task collate { File collated_bam = outfile_name } - runtime { + requirements { cpu: ncpu memory: "~{memory_gb} GB" disks: "~{disk_size_gb} GB" @@ -941,7 +941,7 @@ task bam_to_fastq { File? single_end_reads_fastq_gz = "~{prefix}.fastq.gz" } - runtime { + requirements { cpu: ncpu disks: "~{disk_size_gb} GB" memory: "~{memory_gb} GB" @@ -1039,7 +1039,7 @@ task fixmate { File fixmate_bam = "~{prefix}~{extension}" } - runtime { + requirements { cpu: ncpu memory: "4 GB" disks: "~{disk_size_gb} GB" @@ -1145,7 +1145,7 @@ task position_sorted_fixmate { File fixmate_bam = "~{prefix}.bam" } - runtime { + requirements { cpu: ncpu memory: "~{memory_gb} GB" disks: "~{disk_size_gb} GB" @@ -1285,7 +1285,7 @@ task markdup { File? markdup_bam = prefix + ".bam" } - runtime { + requirements { cpu: ncpu disks: "~{disk_size_gb} GB" memory: "~{memory_gb} GB" @@ -1331,7 +1331,7 @@ task faidx { File fasta_index = outfile_name } - runtime { + requirements { cpu: 1 memory: "4 GB" disks: "~{disk_size_gb} GB" @@ -1390,7 +1390,7 @@ task calmd { File calmd_bam = "~{prefix}.bam" } - runtime { + requirements { cpu: ncpu memory: "4 GB" disks: "~{disk_size_gb} GB" @@ -1455,7 +1455,7 @@ task sort { File sorted_bam = "~{prefix}.bam" } - runtime { + requirements { cpu: ncpu memory: "~{memory_gb} GB" disks: "~{disk_size_gb} GB" diff --git a/tools/star.wdl b/tools/star.wdl index ab1a24eeb..026734d8b 100755 --- a/tools/star.wdl +++ b/tools/star.wdl @@ -70,9 +70,9 @@ task build_star_db { String sjdb_gtf_tag_exon_parent_gene_type = "gene_type gene_biotype" Boolean use_all_cores = false Int genome_chr_bin_n_bits = 18 - #@ except: SnakeCase + #@ except: NamingConvention Int genome_SA_index_n_bases = 14 - #@ except: SnakeCase + #@ except: NamingConvention Int genome_SA_sparse_d = 1 Int genome_suffix_length_max = -1 Int sjdb_overhang = 125 @@ -134,7 +134,7 @@ task build_star_db { File star_db = star_db_tar_gz } - runtime { + requirements { cpu: ncpu memory: "~{memory_gb} GB" disks: "~{disk_size_gb} GB" @@ -641,14 +641,14 @@ task alignment { Int limit_out_sj_one_read = 1000 Int limit_out_sj_collapsed = 1000000 Int limit_sjdb_insert_n_sj = 1000000 - #@ except: SnakeCase + #@ except: NamingConvention Int out_QS_conversion_add = 0 - #@ except: SnakeCase + #@ except: NamingConvention Int out_sam_attr_IH_start = 1 Int out_sam_mapq_unique = 254 - #@ except: SnakeCase + #@ except: NamingConvention Int out_sam_flag_OR = 0 - #@ except: SnakeCase + #@ except: NamingConvention Int out_sam_flag_AND = 65535 Int out_filter_multimap_score_range = 1 Int out_filter_multimap_n_max = 10 @@ -657,9 +657,9 @@ task alignment { Int out_filter_match_n_min = 0 Int score_gap = 0 Int score_gap_noncanon = -8 - #@ except: SnakeCase + #@ except: NamingConvention Int score_gap_GCAG = -4 - #@ except: SnakeCase + #@ except: NamingConvention Int score_gap_ATAC = -8 Int score_del_open = -2 Int score_del_base = -2 @@ -692,7 +692,7 @@ task alignment { Int chim_score_min = 0 Int chim_score_drop_max = 20 Int chim_score_separation = 10 - #@ except: SnakeCase + #@ except: NamingConvention Int chim_score_junction_nonGTAG = -1 Int chim_junction_overhang_min = 20 Int chim_segment_read_gap_max = 0 @@ -891,7 +891,7 @@ task alignment { File? star_chimeric_junctions = prefix + ".Chimeric.out.junction" } - runtime { + requirements { cpu: ncpu memory: "50 GB" disks: "~{disk_size_gb} GB" @@ -902,7 +902,7 @@ task alignment { # There are multiple Splice Junction Motif arguments for STAR # that are all formatted the same. Use this struct for consistency. -#@ except: SnakeCase +#@ except: NamingConvention struct SpliceJunctionMotifs { Int noncanonical_motifs Int GT_AG_and_CT_AC_motif diff --git a/tools/util.wdl b/tools/util.wdl index 2378275b2..868221191 100644 --- a/tools/util.wdl +++ b/tools/util.wdl @@ -38,7 +38,7 @@ task download { File downloaded_file = outfile_name } - runtime { + requirements { disks: "~{disk_size_gb} GB" container: "ghcr.io/stjudecloud/util:3.0.4" maxRetries: 1 @@ -78,7 +78,7 @@ task split_string { Array[String] split_strings = read_lines("split_strings.txt") } - runtime { + requirements { container: "ghcr.io/stjudecloud/util:3.0.4" maxRetries: 1 } @@ -126,7 +126,7 @@ task calc_feature_lengths { File feature_lengths = outfile_name } - runtime { + requirements { memory: "16 GB" disks: "~{disk_size_gb} GB" container: "ghcr.io/stjudecloud/util:3.0.4" @@ -159,7 +159,7 @@ task compression_integrity { bgzip -t "~{bgzipped_file}" >>> - runtime { + requirements { disks: "~{disk_size_gb} GB" container: "quay.io/biocontainers/samtools:1.19.2--h50ea8bc_0" maxRetries: 1 @@ -208,7 +208,7 @@ task add_to_bam_header { File reheadered_bam = outfile_name } - runtime { + requirements { disks: "~{disk_size_gb} GB" container: "quay.io/biocontainers/samtools:1.19.2--h50ea8bc_0" maxRetries: 1 @@ -249,7 +249,7 @@ task unpack_tarball { Array[File] tarball_contents = read_lines("file_list.txt") } - runtime { + requirements { disks: "~{disk_size_gb} GB" container: "ghcr.io/stjudecloud/util:3.0.4" maxRetries: 1 @@ -307,7 +307,7 @@ task make_coverage_regions_bed { File bed = outfile_name } - runtime { + requirements { memory: "8 GB" disks: "~{disk_size_gb} GB" container: "quay.io/biocontainers/bedops:2.4.41--h9f5acd7_0" @@ -355,7 +355,7 @@ task global_phred_scores { File phred_scores = "~{outfile_name}" } - runtime { + requirements { memory: "4 GB" disks: "~{disk_size_gb} GB" container: "ghcr.io/stjudecloud/util:3.0.4" @@ -405,7 +405,7 @@ task check_fastq_and_rg_concordance { --read-groups "~{sep(",", squote(read_groups))}" >>> - runtime { + requirements { container: "ghcr.io/stjudecloud/util:3.0.4" maxRetries: 1 } @@ -462,7 +462,7 @@ task split_fastq { Array[File] fastqs = glob("~{prefix}*") } - runtime { + requirements { cpu: ncpu memory: "4 GB" disks: "~{disk_size_gb} GB" diff --git a/workflows/chipseq/chipseq-standard.wdl b/workflows/chipseq/chipseq-standard.wdl index dbb2602ee..0d638b5ad 100755 --- a/workflows/chipseq/chipseq-standard.wdl +++ b/workflows/chipseq/chipseq-standard.wdl @@ -55,13 +55,13 @@ workflow chipseq_standard_experimental { } if (validate_input) { - call picard.validate_bam as validate_input_bam { input: + call picard.validate_bam as validate_input_bam { bam, } } if (subsample_n_reads > 0) { - call samtools.subsample after validate_input_bam { input: + call samtools.subsample after validate_input_bam { bam, desired_reads = subsample_n_reads, use_all_cores, @@ -69,11 +69,11 @@ workflow chipseq_standard_experimental { } File selected_bam = select_first([subsample.sampled_bam, bam]) - call read_group.get_read_groups after validate_input_bam { input: + call read_group.get_read_groups after validate_input_bam { bam = selected_bam, } - call b2fq.bam_to_fastqs after validate_input_bam { input: + call b2fq.bam_to_fastqs after validate_input_bam { bam = selected_bam, paired_end = false, use_all_cores, @@ -81,13 +81,13 @@ workflow chipseq_standard_experimental { scatter (pair in zip(bam_to_fastqs.read1s, get_read_groups.read_groups)) { if (enable_read_trimming) { - call fp.fastp as trim { input: + call fp.fastp as trim { read_one_fastq = pair.left, output_fastq = enable_read_trimming, } } if (!enable_read_trimming) { - call fp.fastp { input: + call fp.fastp { read_one_fastq = pair.left, output_fastq = enable_read_trimming, } @@ -95,10 +95,10 @@ workflow chipseq_standard_experimental { File chosen_fastq = select_first([trim.single_end_reads_fastq_gz, pair.left]) - call seaseq_util.basicfastqstats as basic_stats { input: + call seaseq_util.basicfastqstats as basic_stats { fastqfile = chosen_fastq, } - call seaseq_map.mapping as bowtie_single_end_mapping { input: + call seaseq_map.mapping as bowtie_single_end_mapping { fastqfile = chosen_fastq, index_files = bowtie_indexes, metricsfile = basic_stats.metrics_out, @@ -110,15 +110,15 @@ workflow chipseq_standard_experimental { bowtie_single_end_mapping.sorted_bam, ]) - call read_group.read_group_to_string { input: + call read_group.read_group_to_string { read_group = pair.right, format_as_sam_record = true, } - call util.add_to_bam_header { input: + call util.add_to_bam_header { bam = chosen_bam, additional_header = select_first([read_group_to_string.validated_read_group]), } - call samtools.addreplacerg { input: + call samtools.addreplacerg { bam = add_to_bam_header.reheadered_bam, read_group_id = pair.right.ID, } @@ -126,34 +126,34 @@ workflow chipseq_standard_experimental { Array[File] aligned_bams = addreplacerg.tagged_bam scatter (aligned_bam in aligned_bams) { - call picard.clean_sam as picard_clean { input: + call picard.clean_sam as picard_clean { bam = aligned_bam, } } - call picard.merge_sam_files as picard_merge { input: + call picard.merge_sam_files as picard_merge { bams = picard_clean.cleaned_bam, prefix, } - call seaseq_samtools.markdup { input: + call seaseq_samtools.markdup { bamfile = picard_merge.merged_bam, outputfile = prefix + ".bam", } - call samtools.index as samtools_index { input: + call samtools.index as samtools_index { bam = markdup.mkdupbam, use_all_cores, } #@ except: UnusedCall - call picard.validate_bam { input: + call picard.validate_bam { bam = markdup.mkdupbam, } - call md5sum.compute_checksum { input: + call md5sum.compute_checksum { file = markdup.mkdupbam, } - call deeptools.bam_coverage as deeptools_bam_coverage { input: + call deeptools.bam_coverage as deeptools_bam_coverage { bam = markdup.mkdupbam, bam_index = samtools_index.bam_index, prefix, diff --git a/workflows/dnaseq/dnaseq-core.wdl b/workflows/dnaseq/dnaseq-core.wdl index 81de9597b..14cdab2ee 100644 --- a/workflows/dnaseq/dnaseq-core.wdl +++ b/workflows/dnaseq/dnaseq-core.wdl @@ -62,7 +62,7 @@ workflow dnaseq_core_experimental { String read_two_names = basename(fq) } - call util.check_fastq_and_rg_concordance as validate { input: + call util.check_fastq_and_rg_concordance as validate { read_one_names, read_two_names, read_groups, @@ -70,14 +70,14 @@ workflow dnaseq_core_experimental { scatter (tuple in zip(zip(read_one_fastqs_gz, read_two_fastqs_gz), read_groups)) { if (enable_read_trimming) { - call fp.fastp as trim after validate { input: + call fp.fastp as trim after validate { read_one_fastq = tuple.left.left, read_two_fastq = tuple.left.right, output_fastq = enable_read_trimming, } } if (!enable_read_trimming) { - call fp.fastp after validate { input: + call fp.fastp after validate { read_one_fastq = tuple.left.left, read_two_fastq = tuple.left.right, output_fastq = enable_read_trimming, @@ -86,18 +86,18 @@ workflow dnaseq_core_experimental { File chosen_r1_fastq = select_first([trim.read_one_fastq_gz, tuple.left.left]) File chosen_r2_fastq = select_first([trim.read_two_fastq_gz, tuple.left.right]) - call util.split_fastq as read_ones after validate { input: + call util.split_fastq as read_ones after validate { fastq = chosen_r1_fastq, reads_per_file, } - call util.split_fastq as read_twos after validate { input: + call util.split_fastq as read_twos after validate { fastq = chosen_r2_fastq, reads_per_file, } scatter (t in zip(read_ones.fastqs, read_twos.fastqs)) { if (aligner == "mem") { - call bwa.bwa_mem { input: + call bwa.bwa_mem { read_one_fastq_gz = t.left, read_two_fastq_gz = t.right, bwa_db_tar_gz = bwa_db, @@ -108,7 +108,7 @@ workflow dnaseq_core_experimental { } } if (aligner == "aln") { - call bwa.bwa_aln_pe { input: + call bwa.bwa_aln_pe { read_one_fastq_gz = t.left, read_two_fastq_gz = t.right, bwa_db_tar_gz = bwa_db, @@ -118,18 +118,18 @@ workflow dnaseq_core_experimental { use_all_cores, } } - call picard.sort as sort { input: + call picard.sort as sort { bam = select_first([bwa_mem.bam, bwa_aln_pe.bam]), } } } - call samtools_merge_wf.samtools_merge as merge { input: + call samtools_merge_wf.samtools_merge as merge { bams = flatten(sort.sorted_bam), prefix, use_all_cores, } - call samtools.index { input: + call samtools.index { bam = merge.merged_bam, } diff --git a/workflows/dnaseq/dnaseq-standard-fastq.wdl b/workflows/dnaseq/dnaseq-standard-fastq.wdl index 654b228f4..118c4427b 100644 --- a/workflows/dnaseq/dnaseq-standard-fastq.wdl +++ b/workflows/dnaseq/dnaseq-standard-fastq.wdl @@ -64,12 +64,12 @@ workflow dnaseq_standard_fastq_experimental { Int subsample_n_reads = -1 } - call dnaseq_standard.parse_input { input: + call dnaseq_standard.parse_input { aligner, } scatter (rg in read_groups) { - call read_group.read_group_to_string after parse_input { input: + call read_group.read_group_to_string after parse_input { read_group = rg, format_as_sam_record = true, } @@ -77,7 +77,7 @@ workflow dnaseq_standard_fastq_experimental { if (validate_input) { scatter (reads in zip(read_one_fastqs_gz, read_two_fastqs_gz)) { - call fq.fqlint after read_group_to_string { input: + call fq.fqlint after read_group_to_string { read_one_fastq = reads.left, read_two_fastq = reads.right, } @@ -87,7 +87,7 @@ workflow dnaseq_standard_fastq_experimental { if (subsample_n_reads > 0) { Int reads_per_pair = ceil(subsample_n_reads / length(read_one_fastqs_gz)) scatter (reads in zip(read_one_fastqs_gz, read_two_fastqs_gz)) { - call fq.subsample after fqlint { input: + call fq.subsample after fqlint { read_one_fastq = reads.left, read_two_fastq = reads.right, record_count = reads_per_pair, @@ -103,7 +103,7 @@ workflow dnaseq_standard_fastq_experimental { read_two_fastqs_gz, ])) - call dnaseq_core_wf.dnaseq_core_experimental after fqlint { input: + call dnaseq_core_wf.dnaseq_core_experimental after fqlint { read_one_fastqs_gz = selected_read_one_fastqs, read_two_fastqs_gz = selected_read_two_fastqs, bwa_db, diff --git a/workflows/dnaseq/dnaseq-standard.wdl b/workflows/dnaseq/dnaseq-standard.wdl index 74e35141c..e98d3ffc4 100644 --- a/workflows/dnaseq/dnaseq-standard.wdl +++ b/workflows/dnaseq/dnaseq-standard.wdl @@ -53,18 +53,18 @@ workflow dnaseq_standard_experimental { Int subsample_n_reads = -1 } - call parse_input { input: + call parse_input { aligner, } if (validate_input) { - call picard.validate_bam as validate_input_bam after parse_input { input: + call picard.validate_bam as validate_input_bam after parse_input { bam, } } if (subsample_n_reads > 0) { - call samtools.subsample after validate_input_bam { input: + call samtools.subsample after validate_input_bam { bam, desired_reads = subsample_n_reads, use_all_cores, @@ -72,7 +72,7 @@ workflow dnaseq_standard_experimental { } File selected_bam = select_first([subsample.sampled_bam, bam]) - call read_group.get_read_groups after parse_input { input: + call read_group.get_read_groups after parse_input { bam = selected_bam, } scatter (rg in get_read_groups.read_groups) { @@ -95,19 +95,19 @@ workflow dnaseq_standard_experimental { } } ReadGroup selected_rg = select_first([overridden_rg, rg]) - call read_group.read_group_to_string { input: + call read_group.read_group_to_string { read_group = selected_rg, format_as_sam_record = true, } } - call bam_to_fastqs_wf.bam_to_fastqs after validate_input_bam { input: + call bam_to_fastqs_wf.bam_to_fastqs after validate_input_bam { bam = selected_bam, paired_end = true, # matches default but prevents user from overriding use_all_cores, } - call dnaseq_core_wf.dnaseq_core_experimental { input: + call dnaseq_core_wf.dnaseq_core_experimental { read_one_fastqs_gz = bam_to_fastqs.read1s, read_two_fastqs_gz = select_all(bam_to_fastqs.read2s), bwa_db, @@ -159,7 +159,7 @@ task parse_input { fi >>> - runtime { + requirements { container: "ghcr.io/stjudecloud/util:3.0.4" maxRetries: 1 } diff --git a/workflows/evaluation/germline-variant-calling.wdl b/workflows/evaluation/germline-variant-calling.wdl index a3e865965..e5cd9f353 100644 --- a/workflows/evaluation/germline-variant-calling.wdl +++ b/workflows/evaluation/germline-variant-calling.wdl @@ -58,9 +58,9 @@ workflow variant_calling { File reference_genome File reference_genome_index File reference_genome_dictionary - #@ except: SnakeCase + #@ except: NamingConvention File dbSNP_vcf - #@ except: SnakeCase + #@ except: NamingConvention File dbSNP_vcf_index File interval_list Clair3Model clair3_model diff --git a/workflows/general/alignment-post.wdl b/workflows/general/alignment-post.wdl index 82c9292fc..e415bcb42 100644 --- a/workflows/general/alignment-post.wdl +++ b/workflows/general/alignment-post.wdl @@ -46,17 +46,17 @@ workflow alignment_post { Boolean use_all_cores = false } - call picard.sort as picard_sort { input: + call picard.sort as picard_sort { bam, } if (cleanse_xenograft) { - call samtools.index as pre_xenocp_index { input: + call samtools.index as pre_xenocp_index { bam = picard_sort.sorted_bam, use_all_cores, } - call xenocp_wf.xenocp { input: + call xenocp_wf.xenocp { input_bam = picard_sort.sorted_bam, input_bai = pre_xenocp_index.bam_index, reference_tar_gz = select_first([contaminant_db, ""]), @@ -65,7 +65,7 @@ workflow alignment_post { } } if (mark_duplicates) { - call picard.mark_duplicates as picard_markdup { input: + call picard.mark_duplicates as picard_markdup { bam = select_first([xenocp.bam, picard_sort.sorted_bam]), } } @@ -76,16 +76,16 @@ workflow alignment_post { picard_sort.sorted_bam, ]) - call samtools.index as samtools_index { input: + call samtools.index as samtools_index { bam = aligned_bam, use_all_cores, } File aligned_bam_index = samtools_index.bam_index - call picard.validate_bam { input: + call picard.validate_bam { bam = aligned_bam, } - call md5sum.compute_checksum { input: + call md5sum.compute_checksum { file = aligned_bam, } diff --git a/workflows/general/bam-to-fastqs.wdl b/workflows/general/bam-to-fastqs.wdl index 06d7d9310..a1b85954f 100644 --- a/workflows/general/bam-to-fastqs.wdl +++ b/workflows/general/bam-to-fastqs.wdl @@ -27,16 +27,16 @@ workflow bam_to_fastqs { Boolean use_all_cores = false } - call samtools.quickcheck { input: + call samtools.quickcheck { bam, } - call samtools.split after quickcheck { input: + call samtools.split after quickcheck { bam, use_all_cores, } scatter (split_bam in split.split_bams) { - call samtools.bam_to_fastq { input: + call samtools.bam_to_fastq { bam = split_bam, paired_end, use_all_cores, @@ -46,7 +46,7 @@ workflow bam_to_fastqs { if (paired_end) { scatter (reads in zip(bam_to_fastq.read_one_fastq_gz, bam_to_fastq.read_two_fastq_gz )) { - call fq.fqlint { input: + call fq.fqlint { read_one_fastq = select_first([reads.left, "undefined"]), read_two_fastq = reads.right, } @@ -54,7 +54,7 @@ workflow bam_to_fastqs { } if (!paired_end) { scatter (fq in bam_to_fastq.single_end_reads_fastq_gz) { - call fq.fqlint as se_fqlint { input: + call fq.fqlint as se_fqlint { read_one_fastq = select_first([fq, "undefined"]), } } diff --git a/workflows/general/samtools-merge.wdl b/workflows/general/samtools-merge.wdl index dd7e88596..07fc172c8 100644 --- a/workflows/general/samtools-merge.wdl +++ b/workflows/general/samtools-merge.wdl @@ -44,7 +44,7 @@ workflow samtools_merge { } } scatter (list in bam_list) { - call samtools.merge as inner_merge { input: + call samtools.merge as inner_merge { bams = select_all(list), prefix, attach_rg = false, @@ -52,7 +52,7 @@ workflow samtools_merge { use_all_cores, } } - call samtools.merge as final_merge { input: + call samtools.merge as final_merge { bams = inner_merge.merged_bam, prefix, attach_rg = false, @@ -63,7 +63,7 @@ workflow samtools_merge { } if (bam_length < max_length) { - call samtools.merge as basic_merge { input: + call samtools.merge as basic_merge { bams, prefix, attach_rg = false, diff --git a/workflows/methylation/methylation-cohort.wdl b/workflows/methylation/methylation-cohort.wdl index 6ef9bf87c..a9e6a48b3 100644 --- a/workflows/methylation/methylation-cohort.wdl +++ b/workflows/methylation/methylation-cohort.wdl @@ -51,13 +51,13 @@ workflow methylation_cohort { } } scatter (iter_index in range(length(bam_list))) { - call combine_data as inner_merge { input: + call combine_data as inner_merge { files_to_combine = select_all(bam_list[iter_index]), combined_file_name = "~{iter_index}.combined.csv", } } - call combine_data as final_merge { input: + call combine_data as final_merge { files_to_combine = inner_merge.combined_file, combined_file_name = "combined_beta.csv", } @@ -76,13 +76,13 @@ workflow methylation_cohort { } } scatter (iter_index in range(length(pval_list))) { - call combine_data as inner_merge_pvals { input: + call combine_data as inner_merge_pvals { files_to_combine = select_all(pval_list[iter_index]), combined_file_name = "~{iter_index}.pvals.combined.csv", } } - call combine_data as final_merge_pvals { input: + call combine_data as final_merge_pvals { files_to_combine = inner_merge_pvals.combined_file, combined_file_name = "combined_pvals.csv", } @@ -90,12 +90,12 @@ workflow methylation_cohort { } if (beta_length <= max_length) { - call combine_data as simple_merge { input: + call combine_data as simple_merge { files_to_combine = unfiltered_normalized_beta, combined_file_name = "combined_beta.csv", } if (pval_length > 0 && !skip_pvalue_check) { - call combine_data as simple_merge_pval { input: + call combine_data as simple_merge_pval { files_to_combine = p_values, combined_file_name = "combined_pvals.csv", } @@ -109,7 +109,7 @@ workflow methylation_cohort { ]) else None - call filter_probes { input: + call filter_probes { beta_values = select_first([final_merge.combined_file, simple_merge.combined_file] ), p_values = pval_file, @@ -120,11 +120,11 @@ workflow methylation_cohort { ]), } - call generate_umap { input: + call generate_umap { filtered_beta_values = filter_probes.filtered_beta_values, } - call plot_umap { input: + call plot_umap { umap = generate_umap.umap, } @@ -187,7 +187,7 @@ task combine_data { File combined_file = combined_file_name } - runtime { + requirements { container: "ghcr.io/stjudecloud/pandas:2.2.1-7" memory: "~{memory_gb} GB" cpu: 1 @@ -249,7 +249,7 @@ task filter_probes { File? high_pval_probes = "high_pval_probes.csv" } - runtime { + requirements { container: "ghcr.io/stjudecloud/pandas:2.2.1-7" memory: "8 GB" cpu: 1 @@ -290,7 +290,7 @@ task generate_umap { File umap = "~{prefix}.csv" } - runtime { + requirements { container: "ghcr.io/stjudecloud/umap:0.5.7-11" memory: "8 GB" cpu: 1 @@ -329,7 +329,7 @@ task plot_umap { File umap_plot = "~{plot_file}" } - runtime { + requirements { cpu: 1 memory: "4 GB" disks: "4 GB" diff --git a/workflows/methylation/methylation-preprocess.wdl b/workflows/methylation/methylation-preprocess.wdl index cd1123c06..d042a633a 100644 --- a/workflows/methylation/methylation-preprocess.wdl +++ b/workflows/methylation/methylation-preprocess.wdl @@ -66,7 +66,7 @@ task process_raw_idats { File non_genomic_probes = out_base + ".non_genomic_probes.tab" } - runtime { + requirements { container: "ghcr.io/stjudecloud/minfi:1.48.0-8" memory: "8 GB" cpu: 1 @@ -99,7 +99,7 @@ task list_sex_probes { File probe_list = "sex_probes.txt" } - runtime { + requirements { container: "ghcr.io/stjudecloud/minfi:1.48.0-8" memory: "3 GB" cpu: 1 diff --git a/workflows/methylation/methylation-standard.wdl b/workflows/methylation/methylation-standard.wdl index 3d8607800..e67b097f0 100644 --- a/workflows/methylation/methylation-standard.wdl +++ b/workflows/methylation/methylation-standard.wdl @@ -37,14 +37,14 @@ workflow methylation { } scatter (pair in zip(green_idats, red_idats)) { - call preprocess.process_raw_idats { input: + call preprocess.process_raw_idats { idats = pair, } } call preprocess.list_sex_probes - call cohort.methylation_cohort { input: + call cohort.methylation_cohort { unfiltered_normalized_beta = process_raw_idats.beta_swan_norm_unfiltered_genomic, p_values = process_raw_idats.probe_pvalues, sex_probe_list = list_sex_probes.probe_list, @@ -68,20 +68,20 @@ workflow methylation { } } scatter (iter_index in range(length(probe_file_batches))) { - call concat_and_uniq { input: + call concat_and_uniq { files_to_combine = select_all(probe_file_batches[iter_index]), output_file_name = "probes_with_snps_part_~{iter_index}.tab", } } - call concat_and_uniq as final_cat { input: + call concat_and_uniq as final_cat { files_to_combine = flatten([concat_and_uniq.combined_file]), output_file_name = "probes_with_snps.tab", } } if (probelist_length <= max_length) { - call concat_and_uniq as simple_merge { input: + call concat_and_uniq as simple_merge { files_to_combine = probe_files, output_file_name = "probes_with_snps.tab", } @@ -103,20 +103,20 @@ workflow methylation { } } scatter (iter_index in range(length(non_genomic_probe_batches))) { - call concat_and_uniq as non_genomic_concat { input: + call concat_and_uniq as non_genomic_concat { files_to_combine = select_all(non_genomic_probe_batches[iter_index]), output_file_name = "non_genomic_probes_part_~{iter_index}.tab", } } - call concat_and_uniq as final_cat_non_genomic { input: + call concat_and_uniq as final_cat_non_genomic { files_to_combine = flatten([non_genomic_concat.combined_file]), output_file_name = "non_genomic_probes.tab", } } if (non_genomic_probelist_length <= max_length) { - call concat_and_uniq as simple_merge_non_genomic { input: + call concat_and_uniq as simple_merge_non_genomic { files_to_combine = non_genomic_probe_list, output_file_name = "non_genomic_probes.tab", } @@ -171,7 +171,7 @@ task concat_and_uniq { File combined_file = "~{output_file_name}" } - runtime { + requirements { container: "ghcr.io/stjudecloud/pandas:2.2.1-7" memory: "2 GB" cpu: 1 diff --git a/workflows/qc/markdups-post.wdl b/workflows/qc/markdups-post.wdl index 7ddb2859e..42e53c610 100644 --- a/workflows/qc/markdups-post.wdl +++ b/workflows/qc/markdups-post.wdl @@ -46,22 +46,22 @@ workflow markdups_post { String prefix = basename(markdups_bam, ".bam") } - call picard.collect_insert_size_metrics { input: + call picard.collect_insert_size_metrics { bam = markdups_bam, prefix = prefix + ".CollectInsertSizeMetrics", } - call samtools.flagstat { input: + call samtools.flagstat { bam = markdups_bam, outfile_name = prefix + ".flagstat.txt", } - call mosdepth.coverage as wg_coverage { input: + call mosdepth.coverage as wg_coverage { bam = markdups_bam, bam_index = markdups_bam_index, prefix = prefix + "." + "whole_genome", } scatter (coverage_pair in zip(coverage_beds, coverage_labels)) { - call mosdepth.coverage as regions_coverage { input: + call mosdepth.coverage as regions_coverage { bam = markdups_bam, bam_index = markdups_bam_index, coverage_bed = coverage_pair.left, diff --git a/workflows/qc/quality-check-standard.wdl b/workflows/qc/quality-check-standard.wdl index 6366bef43..4d1b2649f 100644 --- a/workflows/qc/quality-check-standard.wdl +++ b/workflows/qc/quality-check-standard.wdl @@ -160,41 +160,41 @@ workflow quality_check_standard { Int subsample_n_reads = -1 } - call parse_input { input: + call parse_input { gtf_provided = defined(gtf), rna, coverage_beds_len = length(coverage_beds), coverage_labels, } - call flag_filter.validate_flag_filter as kraken_filter_validator { input: + call flag_filter.validate_flag_filter as kraken_filter_validator { flags = standard_filter, } if (run_comparative_kraken && run_fastq_analysis) { - call flag_filter.validate_flag_filter as comparative_kraken_filter_validator { input: + call flag_filter.validate_flag_filter as comparative_kraken_filter_validator { flags = comparative_filter, } } - call md5sum.compute_checksum after parse_input { input: + call md5sum.compute_checksum after parse_input { file = bam, } - call samtools.quickcheck after parse_input { input: + call samtools.quickcheck after parse_input { bam, } - call util.compression_integrity after parse_input { input: + call util.compression_integrity after parse_input { bgzipped_file = bam, } if (subsample_n_reads > 0) { - call samtools.subsample after quickcheck { input: + call samtools.subsample after quickcheck { bam, prefix, desired_reads = subsample_n_reads, use_all_cores, } if (defined(subsample.sampled_bam)) { - call samtools.index as subsample_index { input: + call samtools.index as subsample_index { bam = select_first([subsample.sampled_bam, "undefined"]), use_all_cores, } @@ -208,7 +208,7 @@ workflow quality_check_standard { then prefix + ".subsampled" else prefix - call picard.validate_bam after quickcheck { input: + call picard.validate_bam after quickcheck { bam = post_subsample_bam, outfile_name = post_subsample_prefix + ".ValidateSamFile.txt", deny_errors = false, @@ -216,40 +216,40 @@ workflow quality_check_standard { summary_mode = true, } - call picard.collect_alignment_summary_metrics after quickcheck { input: + call picard.collect_alignment_summary_metrics after quickcheck { bam = post_subsample_bam, prefix = post_subsample_prefix + ".CollectAlignmentSummaryMetrics", } - call picard.quality_score_distribution after quickcheck { input: + call picard.quality_score_distribution after quickcheck { bam = post_subsample_bam, prefix = post_subsample_prefix + ".QualityScoreDistribution", } - call ngsderive.instrument after quickcheck { input: + call ngsderive.instrument after quickcheck { bam = post_subsample_bam, outfile_name = post_subsample_prefix + ".instrument.tsv", } - call ngsderive.read_length after quickcheck { input: + call ngsderive.read_length after quickcheck { bam = post_subsample_bam, bam_index = post_subsample_bam_index, outfile_name = post_subsample_prefix + ".readlength.tsv", } - call ngsderive.encoding after quickcheck { input: + call ngsderive.encoding after quickcheck { ngs_files = [post_subsample_bam], outfile_name = post_subsample_prefix + ".encoding.tsv", num_reads = -1, } - call ngsderive.endedness after quickcheck { input: + call ngsderive.endedness after quickcheck { bam = post_subsample_bam, outfile_name = post_subsample_prefix + ".endedness.tsv", lenient = true, } - call util.global_phred_scores after quickcheck { input: + call util.global_phred_scores after quickcheck { bam = post_subsample_bam, prefix = post_subsample_prefix, } if (run_fastq_analysis) { - call samtools.bam_to_fastq after quickcheck after kraken_filter_validator { input: + call samtools.bam_to_fastq after quickcheck after kraken_filter_validator { bam = post_subsample_bam, bitwise_filter = standard_filter, prefix = post_subsample_prefix, @@ -264,11 +264,11 @@ workflow quality_check_standard { use_all_cores, } - call fq.fqlint { input: + call fq.fqlint { read_one_fastq = select_first([bam_to_fastq.read_one_fastq_gz, "undefined"]), read_two_fastq = select_first([bam_to_fastq.read_two_fastq_gz, "undefined"]), } - call kraken2.kraken after fqlint { input: + call kraken2.kraken after fqlint { read_one_fastq_gz = select_first([bam_to_fastq.read_one_fastq_gz, "undefined"] ), read_two_fastq_gz = select_first([bam_to_fastq.read_two_fastq_gz, "undefined"] @@ -279,7 +279,7 @@ workflow quality_check_standard { use_all_cores, } if (run_fastp) { - call fp.fastp after fqlint { input: + call fp.fastp after fqlint { read_one_fastq = select_first([ bam_to_fastq.read_one_fastq_gz, "undefined", @@ -292,7 +292,7 @@ workflow quality_check_standard { } } if (run_librarian) { - call librarian_tasks.librarian after fqlint { input: + call librarian_tasks.librarian after fqlint { read_one_fastq = select_first([ bam_to_fastq.read_one_fastq_gz, "undefined", @@ -301,7 +301,7 @@ workflow quality_check_standard { } if (run_comparative_kraken) { - call samtools.bam_to_fastq as alt_filtered_fastq after quickcheck after comparative_kraken_filter_validator { input: + call samtools.bam_to_fastq as alt_filtered_fastq after quickcheck after comparative_kraken_filter_validator { bam = post_subsample_bam, bitwise_filter = comparative_filter, prefix = post_subsample_prefix + ".alt_filtered", @@ -315,7 +315,7 @@ workflow quality_check_standard { paired_end = true, # INVARIANT: this workflow only supports PE data use_all_cores, } - call fq.fqlint as alt_filtered_fqlint { input: + call fq.fqlint as alt_filtered_fqlint { read_one_fastq = select_first([ alt_filtered_fastq.read_one_fastq_gz, "undefined", @@ -325,7 +325,7 @@ workflow quality_check_standard { "undefined", ]), } - call kraken2.kraken as comparative_kraken after alt_filtered_fqlint { input: + call kraken2.kraken as comparative_kraken after alt_filtered_fqlint { read_one_fastq_gz = select_first([ alt_filtered_fastq.read_one_fastq_gz, "undefined", @@ -342,13 +342,13 @@ workflow quality_check_standard { } } - call mosdepth.coverage as wg_coverage after quickcheck { input: + call mosdepth.coverage as wg_coverage after quickcheck { bam = post_subsample_bam, bam_index = post_subsample_bam_index, prefix = post_subsample_prefix + ".whole_genome", } scatter (coverage_pair in zip(coverage_beds, parse_input.labels)) { - call mosdepth.coverage as regions_coverage after quickcheck { input: + call mosdepth.coverage as regions_coverage after quickcheck { bam = post_subsample_bam, bam_index = post_subsample_bam_index, coverage_bed = coverage_pair.left, @@ -357,20 +357,20 @@ workflow quality_check_standard { } if (rna) { - call ngsderive.junction_annotation after quickcheck { input: + call ngsderive.junction_annotation after quickcheck { bam = post_subsample_bam, bam_index = post_subsample_bam_index, gene_model = select_first([gtf, "undefined"]), prefix = post_subsample_prefix, } - call ngsderive.strandedness after quickcheck { input: + call ngsderive.strandedness after quickcheck { bam = post_subsample_bam, bam_index = post_subsample_bam_index, gene_model = select_first([gtf, "undefined"]), outfile_name = post_subsample_prefix + ".strandedness.tsv", } if (run_fastq_analysis) { - call qualimap.rnaseq as qualimap_rnaseq { input: + call qualimap.rnaseq as qualimap_rnaseq { bam = select_first([bam_to_fastq.collated_bam, "undefined"]), prefix = post_subsample_prefix + ".qualimap_rnaseq_results", gtf = select_first([gtf, "undefined"]), @@ -380,7 +380,7 @@ workflow quality_check_standard { } } if (mark_duplicates) { - call picard.mark_duplicates as markdups after quickcheck { input: + call picard.mark_duplicates as markdups after quickcheck { bam = post_subsample_bam, create_bam = true, prefix = post_subsample_prefix + ".MarkDuplicates", @@ -389,7 +389,7 @@ workflow quality_check_standard { if (optical_distance > 0) { File markdups_metrics = markdups.mark_duplicates_metrics } - call markdups_post_wf.markdups_post { input: + call markdups_post_wf.markdups_post { markdups_bam = select_first([markdups.duplicate_marked_bam, "undefined"]), markdups_bam_index = select_first([ markdups.duplicate_marked_bam_index, @@ -403,11 +403,11 @@ workflow quality_check_standard { if (!mark_duplicates) { # These analyses are called in the markdups_post workflow. # They should still be run if duplicates were not marked. - call picard.collect_insert_size_metrics after quickcheck { input: + call picard.collect_insert_size_metrics after quickcheck { bam = post_subsample_bam, prefix = post_subsample_prefix + ".CollectInsertSizeMetrics", } - call samtools.flagstat after quickcheck { input: + call samtools.flagstat after quickcheck { bam = post_subsample_bam, outfile_name = post_subsample_prefix + ".flagstat.txt", } @@ -450,7 +450,7 @@ workflow quality_check_standard { else []), ])) - call multiqc_tasks.multiqc { input: + call multiqc_tasks.multiqc { files = flatten([multiqc_files, extra_multiqc_inputs]), config = multiqc_config, report_name = post_subsample_prefix + ".multiqc", @@ -553,7 +553,7 @@ task parse_input { else [] } - runtime { + requirements { container: "ghcr.io/stjudecloud/util:3.0.4" maxRetries: 1 } diff --git a/workflows/reference/bwa-db-build.wdl b/workflows/reference/bwa-db-build.wdl index c877b6790..43ed023c8 100644 --- a/workflows/reference/bwa-db-build.wdl +++ b/workflows/reference/bwa-db-build.wdl @@ -29,13 +29,13 @@ workflow bwa_db_build { Int reference_fa_disk_size_gb = 10 } - call util.download as reference_download { input: + call util.download as reference_download { url = reference_fa_url, outfile_name = reference_fa_name, disk_size_gb = reference_fa_disk_size_gb, md5sum = reference_fa_md5, } - call bwa.build_bwa_db { input: + call bwa.build_bwa_db { reference_fasta = reference_download.downloaded_file, } diff --git a/workflows/reference/gatk-reference.wdl b/workflows/reference/gatk-reference.wdl index f6f326cc3..cfddf5a16 100644 --- a/workflows/reference/gatk-reference.wdl +++ b/workflows/reference/gatk-reference.wdl @@ -46,48 +46,48 @@ workflow gatk_reference { String reference_fa_url String reference_fa_name String reference_fa_md5 - #@ except: SnakeCase + #@ except: NamingConvention String dbSNP_vcf_url - #@ except: SnakeCase + #@ except: NamingConvention String dbSNP_vcf_name Int known_vcf_disk_size_gb Int reference_fa_disk_size_gb - #@ except: SnakeCase + #@ except: NamingConvention Int dbSNP_vcf_disk_size_gb - #@ except: SnakeCase + #@ except: NamingConvention String? dbSNP_vcf_index_url - #@ except: SnakeCase + #@ except: NamingConvention String? dbSNP_vcf_index_name String? interval_list_url String? interval_list_name - #@ except: SnakeCase + #@ except: NamingConvention Int dbSNP_vcf_index_disk_size_gb = 1 Int interval_list_disk_size_gb = 1 } - call util.download as fasta_download { input: + call util.download as fasta_download { url = reference_fa_url, outfile_name = reference_fa_name, md5sum = reference_fa_md5, disk_size_gb = reference_fa_disk_size_gb, } - call samtools.faidx { input: + call samtools.faidx { fasta = fasta_download.downloaded_file, } - call picard.create_sequence_dictionary { input: + call picard.create_sequence_dictionary { fasta = fasta_download.downloaded_file, } - call util.download as dbsnp { input: + call util.download as dbsnp { url = dbSNP_vcf_url, outfile_name = dbSNP_vcf_name, disk_size_gb = dbSNP_vcf_disk_size_gb, } if (defined(dbSNP_vcf_index_url) && defined(dbSNP_vcf_index_name)) { - call util.download as dbsnp_index { input: + call util.download as dbsnp_index { url = select_first([dbSNP_vcf_index_url, "undefined"]), outfile_name = select_first([dbSNP_vcf_index_name, "undefined"]), disk_size_gb = dbSNP_vcf_index_disk_size_gb, @@ -95,7 +95,7 @@ workflow gatk_reference { } if (defined(interval_list_url) && defined(interval_list_name)) { - call util.download as intervals { input: + call util.download as intervals { url = select_first([interval_list_url, "undefined"]), outfile_name = select_first([interval_list_name, "undefined"]), disk_size_gb = interval_list_disk_size_gb, @@ -103,7 +103,7 @@ workflow gatk_reference { } scatter (pair in zip(known_vcf_urls, known_vcf_names)) { - call util.download as known_vcf { input: + call util.download as known_vcf { url = pair.left, outfile_name = pair.right, disk_size_gb = known_vcf_disk_size_gb, @@ -114,9 +114,9 @@ workflow gatk_reference { File fasta = fasta_download.downloaded_file File fasta_index = faidx.fasta_index File fasta_dict = create_sequence_dictionary.dictionary - #@ except: SnakeCase + #@ except: NamingConvention File? dbSNP_vcf = dbsnp.downloaded_file - #@ except: SnakeCase + #@ except: NamingConvention File? dbSNP_vcf_index = dbsnp_index.downloaded_file File? interval_list = intervals.downloaded_file Array[File] known_vcfs = known_vcf.downloaded_file diff --git a/workflows/reference/qc-reference.wdl b/workflows/reference/qc-reference.wdl index 749b16b85..d2a5d23f9 100644 --- a/workflows/reference/qc-reference.wdl +++ b/workflows/reference/qc-reference.wdl @@ -91,26 +91,26 @@ workflow qc_reference { Int kraken_fastas_disk_size_gb = 10 } - call util.download as reference_download { input: + call util.download as reference_download { url = reference_fa_url, outfile_name = reference_fa_name, disk_size_gb = reference_fa_disk_size_gb, } - call util.download as gtf_download { input: + call util.download as gtf_download { url = gtf_url, outfile_name = gtf_name, disk_size_gb = gtf_disk_size_gb, } scatter (feature_type in coverage_feature_types) { - call util.make_coverage_regions_bed { input: + call util.make_coverage_regions_bed { gtf = gtf_download.downloaded_file, feature_type, } } scatter (url in kraken_fasta_urls) { - call util.download as fastas_download { input: + call util.download as fastas_download { url, outfile_name = "tmp.fa.gz", disk_size_gb = kraken_fastas_disk_size_gb, @@ -120,13 +120,13 @@ workflow qc_reference { if ((length(kraken_fastas) > 0) || (length(kraken_fasta_urls) > 0) || (length( kraken_libraries ) > 0)) { - call kraken2.download_taxonomy { input: + call kraken2.download_taxonomy { protein, } } scatter (lib in kraken_libraries) { - call kraken2.download_library { input: + call kraken2.download_library { library_name = lib, protein, } @@ -134,7 +134,7 @@ workflow qc_reference { Array[File] custom_fastas = flatten([kraken_fastas, fastas_download.downloaded_file]) if (length(custom_fastas) > 0) { - call kraken2.create_library_from_fastas { input: + call kraken2.create_library_from_fastas { fastas_gz = custom_fastas, protein, } @@ -146,7 +146,7 @@ workflow qc_reference { select_all([create_library_from_fastas.custom_library]), ]) if (length(kraken_tarballs) > 0) { - call kraken2.build_db as kraken_build_db { input: + call kraken2.build_db as kraken_build_db { tarballs = kraken_tarballs, protein, } diff --git a/workflows/reference/star-db-build.wdl b/workflows/reference/star-db-build.wdl index 0ebaf977d..9f2be1a99 100644 --- a/workflows/reference/star-db-build.wdl +++ b/workflows/reference/star-db-build.wdl @@ -38,19 +38,19 @@ workflow star_db_build { Int gtf_disk_size_gb = 10 } - call util.download as reference_download { input: + call util.download as reference_download { url = reference_fa_url, outfile_name = reference_fa_name, md5sum = reference_fa_md5, disk_size_gb = reference_fa_disk_size_gb, } - call util.download as gtf_download { input: + call util.download as gtf_download { url = gtf_url, outfile_name = gtf_name, md5sum = gtf_md5, disk_size_gb = gtf_disk_size_gb, } - call star.build_star_db { input: + call star.build_star_db { reference_fasta = reference_download.downloaded_file, gtf = gtf_download.downloaded_file, } diff --git a/workflows/rnaseq/rnaseq-core.wdl b/workflows/rnaseq/rnaseq-core.wdl index e2cb81991..e9ab9b2e0 100644 --- a/workflows/rnaseq/rnaseq-core.wdl +++ b/workflows/rnaseq/rnaseq-core.wdl @@ -152,7 +152,7 @@ workflow rnaseq_core { Int out_filter_multimap_n_max = 50 Int pe_overlap_n_bases_min = 10 Int chim_score_separation = 1 - #@ except: SnakeCase + #@ except: NamingConvention Int chim_score_junction_nonGTAG = 0 Int chim_junction_overhang_min = 10 Int chim_segment_read_gap_max = 3 @@ -176,7 +176,7 @@ workflow rnaseq_core { scatter (fq in read_two_fastqs_gz) { String read_two_names = basename(fq) } - call util.check_fastq_and_rg_concordance as validate { input: + call util.check_fastq_and_rg_concordance as validate { read_one_names, read_two_names, read_groups, @@ -184,14 +184,14 @@ workflow rnaseq_core { scatter (pair in zip(read_one_fastqs_gz, read_two_fastqs_gz)) { if (enable_read_trimming) { - call fp.fastp as trim after validate { input: + call fp.fastp as trim after validate { read_one_fastq = pair.left, read_two_fastq = pair.right, output_fastq = enable_read_trimming, } } if (!enable_read_trimming) { - call fp.fastp after validate { input: + call fp.fastp after validate { read_one_fastq = pair.left, read_two_fastq = pair.right, output_fastq = enable_read_trimming, @@ -206,7 +206,7 @@ workflow rnaseq_core { then select_all(trim.read_two_fastq_gz) else read_two_fastqs_gz - call star.alignment after validate { input: + call star.alignment after validate { read_one_fastqs_gz = chosen_r1s, read_two_fastqs_gz = chosen_r2s, star_db_tar_gz = star_db, @@ -225,7 +225,7 @@ workflow rnaseq_core { chim_score_drop_max, } - call alignment_post_wf.alignment_post { input: + call alignment_post_wf.alignment_post { bam = alignment.star_bam, mark_duplicates, contaminant_db, @@ -234,13 +234,13 @@ workflow rnaseq_core { use_all_cores, } - call deeptools.bam_coverage as deeptools_bam_coverage { input: + call deeptools.bam_coverage as deeptools_bam_coverage { bam = alignment_post.processed_bam, bam_index = alignment_post.bam_index, use_all_cores, } - call ngsderive.strandedness as ngsderive_strandedness { input: + call ngsderive.strandedness as ngsderive_strandedness { bam = alignment_post.processed_bam, bam_index = alignment_post.bam_index, gene_model = gtf, @@ -250,7 +250,7 @@ workflow rnaseq_core { then htseq_strandedness_mapping[provided_strandedness] else htseq_strandedness_mapping[ngsderive_strandedness.strandedness_string] - call htseq.count as htseq_count { input: + call htseq.count as htseq_count { bam = alignment_post.processed_bam, gtf, strandedness = htseq_strandedness, diff --git a/workflows/rnaseq/rnaseq-standard-fastq.wdl b/workflows/rnaseq/rnaseq-standard-fastq.wdl index 2c734b89a..3fa527e81 100644 --- a/workflows/rnaseq/rnaseq-standard-fastq.wdl +++ b/workflows/rnaseq/rnaseq-standard-fastq.wdl @@ -86,21 +86,21 @@ workflow rnaseq_standard_fastq { Int subsample_n_reads = -1 } - call rnaseq_standard.parse_input { input: + call rnaseq_standard.parse_input { strand = strandedness, cleanse_xenograft, contaminant_db = defined(contaminant_db), } scatter (rg in read_groups) { - call read_group.read_group_to_string after parse_input { input: + call read_group.read_group_to_string after parse_input { read_group = rg, } } if (validate_input) { scatter (reads in zip(read_one_fastqs_gz, read_two_fastqs_gz)) { - call fq.fqlint after parse_input { input: + call fq.fqlint after parse_input { read_one_fastq = reads.left, read_two_fastq = reads.right, } @@ -110,7 +110,7 @@ workflow rnaseq_standard_fastq { if (subsample_n_reads > 0) { Int reads_per_pair = ceil(subsample_n_reads / length(read_one_fastqs_gz)) scatter (reads in zip(read_one_fastqs_gz, read_two_fastqs_gz)) { - call fq.subsample after fqlint { input: + call fq.subsample after fqlint { read_one_fastq = reads.left, read_two_fastq = reads.right, record_count = reads_per_pair, @@ -126,7 +126,7 @@ workflow rnaseq_standard_fastq { read_two_fastqs_gz, ])) - call rnaseq_core_wf.rnaseq_core after fqlint { input: + call rnaseq_core_wf.rnaseq_core after fqlint { read_one_fastqs_gz = selected_read_one_fastqs, read_two_fastqs_gz = selected_read_two_fastqs, read_groups = select_all(read_group_to_string.validated_read_group), diff --git a/workflows/rnaseq/rnaseq-standard.wdl b/workflows/rnaseq/rnaseq-standard.wdl index b3106a511..5372caa65 100755 --- a/workflows/rnaseq/rnaseq-standard.wdl +++ b/workflows/rnaseq/rnaseq-standard.wdl @@ -73,20 +73,20 @@ workflow rnaseq_standard { Int subsample_n_reads = -1 } - call parse_input { input: + call parse_input { strand = strandedness, cleanse_xenograft, contaminant_db = defined(contaminant_db), } if (validate_input) { - call picard.validate_bam as validate_input_bam after parse_input { input: + call picard.validate_bam as validate_input_bam after parse_input { bam, } } if (subsample_n_reads > 0) { - call samtools.subsample after validate_input_bam { input: + call samtools.subsample after validate_input_bam { bam, desired_reads = subsample_n_reads, use_all_cores, @@ -94,21 +94,21 @@ workflow rnaseq_standard { } File selected_bam = select_first([subsample.sampled_bam, bam]) - call read_group.get_read_groups after validate_input_bam { input: + call read_group.get_read_groups after validate_input_bam { bam = selected_bam, } scatter (rg in get_read_groups.read_groups) { - call read_group.read_group_to_string { input: + call read_group.read_group_to_string { read_group = rg, } } - call bam_to_fastqs_wf.bam_to_fastqs after validate_input_bam { input: + call bam_to_fastqs_wf.bam_to_fastqs after validate_input_bam { bam = selected_bam, paired_end = true, # matches default but prevents user from overriding use_all_cores, } - call rnaseq_core_wf.rnaseq_core { input: + call rnaseq_core_wf.rnaseq_core { read_one_fastqs_gz = bam_to_fastqs.read1s, read_two_fastqs_gz = select_all(bam_to_fastqs.read2s), read_groups = select_all(read_group_to_string.validated_read_group), @@ -183,7 +183,7 @@ task parse_input { fi >>> - runtime { + requirements { container: "ghcr.io/stjudecloud/util:3.0.4" maxRetries: 1 } diff --git a/workflows/rnaseq/rnaseq-variant-calling.wdl b/workflows/rnaseq/rnaseq-variant-calling.wdl index cc7c6385e..6c7272649 100644 --- a/workflows/rnaseq/rnaseq-variant-calling.wdl +++ b/workflows/rnaseq/rnaseq-variant-calling.wdl @@ -43,9 +43,9 @@ workflow rnaseq_variant_calling { File fasta_index File dict File calling_interval_list - #@ except: SnakeCase + #@ except: NamingConvention File dbSNP_vcf - #@ except: SnakeCase + #@ except: NamingConvention File dbSNP_vcf_index Array[File] known_vcfs Array[File] known_vcf_indexes @@ -55,13 +55,13 @@ workflow rnaseq_variant_calling { } if (!bam_is_dup_marked) { - call picard.mark_duplicates { input: + call picard.mark_duplicates { bam, create_bam = true, } } - call gatk.split_n_cigar_reads { input: + call gatk.split_n_cigar_reads { bam = select_first([mark_duplicates.duplicate_marked_bam, bam]), bam_index = select_first([mark_duplicates.duplicate_marked_bam_index, bam_index]), fasta, @@ -69,7 +69,7 @@ workflow rnaseq_variant_calling { dict, } - call gatk.base_recalibrator { input: + call gatk.base_recalibrator { bam = split_n_cigar_reads.split_n_reads_bam, bam_index = split_n_cigar_reads.split_n_reads_bam_index, fasta, @@ -81,20 +81,20 @@ workflow rnaseq_variant_calling { dbSNP_vcf_index, } - call gatk.apply_bqsr { input: + call gatk.apply_bqsr { bam = split_n_cigar_reads.split_n_reads_bam, bam_index = split_n_cigar_reads.split_n_reads_bam_index, recalibration_report = base_recalibrator.recalibration_report, prefix, } - call picard.scatter_interval_list { input: + call picard.scatter_interval_list { interval_list = calling_interval_list, scatter_count, } scatter (list in scatter_interval_list.interval_lists_scatter) { - call gatk.haplotype_caller { input: + call gatk.haplotype_caller { bam = apply_bqsr.recalibrated_bam, bam_index = apply_bqsr.recalibrated_bam_index, fasta, @@ -106,13 +106,13 @@ workflow rnaseq_variant_calling { } } - call picard.merge_vcfs { input: + call picard.merge_vcfs { vcfs = haplotype_caller.vcf, vcfs_indexes = haplotype_caller.vcf_index, output_vcf_name = "~{prefix}.vcf.gz", } - call gatk.variant_filtration { input: + call gatk.variant_filtration { vcf = merge_vcfs.merged_vcf, vcf_index = merge_vcfs.merged_vcf_index, fasta, diff --git a/workflows/variant-calling/haplotype_caller.wdl b/workflows/variant-calling/haplotype_caller.wdl index 00526dbdf..9095fd7d4 100644 --- a/workflows/variant-calling/haplotype_caller.wdl +++ b/workflows/variant-calling/haplotype_caller.wdl @@ -42,9 +42,9 @@ workflow haplotype_caller { File reference_fasta File reference_fasta_index File reference_dict - #@ except: SnakeCase + #@ except: NamingConvention File dbSNP_vcf - #@ except: SnakeCase + #@ except: NamingConvention File dbSNP_vcf_index File interval_list Array[File] known_indels_sites_vcfs From dcf67786359241663b32423e4811c291ca7982d3 Mon Sep 17 00:00:00 2001 From: Ari Frantz Date: Thu, 8 Oct 2026 11:36:30 -0400 Subject: [PATCH 3/4] rm cromwell stuff --- bin/check-job-alive | 26 ----------- conf/aws.conf | 51 ---------------------- conf/lsf.conf | 104 -------------------------------------------- 3 files changed, 181 deletions(-) delete mode 100755 bin/check-job-alive delete mode 100755 conf/aws.conf delete mode 100755 conf/lsf.conf diff --git a/bin/check-job-alive b/bin/check-job-alive deleted file mode 100755 index da7c11d79..000000000 --- a/bin/check-job-alive +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/env bash - -[[ "$#" -ne 1 ]] && >&2 echo "Usage: $(basename "$0") [bjobid]" && exit 1 -ID=$1; shift; - -TMP=$(mktemp) -bjobs $ID &> "$TMP" -output=$(cat "$TMP") -rm "$TMP" - -if [[ "$?" -ne 0 ]]; then - exit $? -fi - -if echo "$output" | grep "is not found" &> /dev/null; then - >&2 echo "Job $ID not found" - exit 1 -fi - -if ! echo "$output" | grep -E "RUN|DONE|PEND" &> /dev/null; then - >&2 echo "Job $ID in invalid state" - >&2 echo $output - exit 1 -fi - -exit 0 diff --git a/conf/aws.conf b/conf/aws.conf deleted file mode 100755 index 87a5fe44e..000000000 --- a/conf/aws.conf +++ /dev/null @@ -1,51 +0,0 @@ -include required(classpath("application")) - -aws { - - application-name = "cromwell" - auths = [ - { - name = "default" - scheme = "default" - } - ] - region = "" -} - -engine { - filesystems { - s3.auth = "default" - } -} - -backend { - default = "AWSBatch" - providers { - AWSBatch { - actor-factory = "cromwell.backend.impl.aws.AwsBatchBackendLifecycleActorFactory" - config { - - numSubmitAttempts = 6 - numCreateDefinitionAttempts = 6 - - // Base bucket for workflow executions - root = "s3:///cromwell-execution" - - // A reference to an auth defined in the `aws` stanza at the top. This auth is used to create - // Jobs and manipulate auth JSONs. - auth = "default" - - default-runtime-attributes { - queueArn: "" - } - - filesystems { - s3 { - // A reference to a potentially different auth for manipulating files via engine functions. - auth = "default" - } - } - } - } - } -} diff --git a/conf/lsf.conf b/conf/lsf.conf deleted file mode 100755 index 24f4b74ae..000000000 --- a/conf/lsf.conf +++ /dev/null @@ -1,104 +0,0 @@ -include required(classpath("application")) - -call-caching { - enabled = false -} - -database { - profile = "slick.jdbc.HsqldbProfile$" - db { - driver = "org.hsqldb.jdbcDriver" - url = """ - jdbc:hsqldb:file:cromwell-executions/cromwell-db/cromwell-db; - shutdown=false; - hsqldb.default_table_type=cached;hsqldb.tx=mvcc; - hsqldb.result_max_memory_rows=10000; - hsqldb.large_data=true; - hsqldb.applog=1; - hsqldb.lob_compressed=true; - hsqldb.script_format=3 - hsqldb.lock_file=false - """ - connectionTimeout = 120000 - numThreads = 1 - } -} - -backend { - default = LSF - providers { - LSF { - actor-factory = "cromwell.backend.impl.sfs.config.ConfigBackendLifecycleActorFactory" - config { - filesystems { - local { - localization: ["hard-link", "soft-link", "cached-copy", "copy"] - } - } - - runtime-attributes = """ - Int cpu = 1 - Int hosts = 1 - Int? memory_mb = 4096 - String lsf_queue = "compbio" - String? lsf_job_group - String? docker - """ - - submit = """ - bsub \ - -q ${lsf_queue} \ - -n ${cpu} \ - ${"-g " + lsf_job_group} \ - -R "rusage[mem=${round(round(memory_mb)/cpu)}] span[hosts=${hosts}]" \ - -J ${job_name} \ - -cwd ${cwd} \ - -o ${cwd}/execution/stdout.lsf \ - -e ${cwd}/execution/stderr.lsf \ - /usr/bin/env bash ${script} - """ - - submit-docker = """ - # Make sure the SINGULARITY_CACHEDIR variable is set. If not use a default - # based on the users home. - if [ -z $SINGULARITY_CACHEDIR ]; - then CACHE_DIR=$HOME/.singularity/cache - else CACHE_DIR=$SINGULARITY_CACHEDIR - fi - # Make sure cache dir exists so lock file can be created by flock - mkdir -p $CACHE_DIR - LOCK_FILE=$CACHE_DIR/singularity_pull_flock - # Create an exclusive filelock with flock. - # This avoids cache corruption if multiple workers attempt to - # access the cache simultaneously. - # From: https://cromwell.readthedocs.io/en/stable/tutorials/Containers/#job-schedulers - flock --exclusive --timeout 900 $LOCK_FILE \ - singularity exec --containall docker://${docker} \ - echo "Singularity pulled ${docker} successfully" - - mkdir -p ${cwd}/singularity - - bsub \ - -q ${lsf_queue} \ - -n ${cpu} \ - ${"-g " + lsf_job_group} \ - -R "rusage[mem=${round(round(memory_mb)/cpu)}] span[hosts=${hosts}]" \ - -J ${job_name} \ - -cwd ${cwd} \ - -o ${cwd}/execution/stdout.lsf \ - -e ${cwd}/execution/stderr.lsf \ - "singularity exec --containall --workdir ${cwd}/singularity --bind ${cwd}:${docker_cwd} docker://${docker} ${job_shell} ${docker_script}" - """ - - - kill = "bkill ${job_id}" - # check-job-alive must be present in $PATH for Cromwell to properly check job status - check-alive = "check-job-alive ${job_id}" - - job-id-regex = "Job <(\\d+)>.*" - - exit-code-timeout-seconds = 120 - } - } - } -} \ No newline at end of file From fe8068fe5190a60e5899b7291b90b582878a13c7 Mon Sep 17 00:00:00 2001 From: Ari Frantz Date: Thu, 8 Oct 2026 12:36:56 -0400 Subject: [PATCH 4/4] address all sprocket lints --- data_structures/flag_filter.wdl | 50 +++++++-------- data_structures/read_group.wdl | 72 ++++++++++++--------- tools/bwamem2.wdl | 4 +- tools/clair.wdl | 11 ++-- tools/deepvariant.wdl | 4 +- tools/fq.wdl | 10 +-- tools/gatk4.wdl | 76 ++++++++++++----------- tools/kraken2.wdl | 6 +- tools/mako.wdl | 1 + tools/minimap2.wdl | 1 + tools/mutect2.wdl | 29 +++++---- tools/picard.wdl | 18 ++++-- tools/qualimap.wdl | 5 +- tools/salmon.wdl | 50 +++++++-------- tools/star.wdl | 57 +++++++++-------- tools/vg.wdl | 13 ++-- workflows/evaluation/dnaseq-alignment.wdl | 4 +- 17 files changed, 221 insertions(+), 190 deletions(-) diff --git a/data_structures/flag_filter.wdl b/data_structures/flag_filter.wdl index 0fcebcc62..0c7c9b1a9 100644 --- a/data_structures/flag_filter.wdl +++ b/data_structures/flag_filter.wdl @@ -1,16 +1,3 @@ -## # FlagFilter -## -## A struct to represent the filtering flags used in various `samtools` commands. -## The order of precedence is `include_if_all`, `exclude_if_any`, `include_if_any`, -## and `exclude_if_all`. -## These four fields correspond to the samtools flags -## `-f`, `-F`, `--rf`, and `-G` respectively. -## The values of these fields are strings that represent a 12bit bitwise flag. -## These strings must evaluate to an integer less than 4096 (2^12). -## They can be in octal, decimal, or hexadecimal format. -## Please see the `meta.help` of `validate_string_is_12bit_int` -## for more information on the valid formats. -## ## The `validate_flag_filter` workflow can be used to validate a `FlagFilter` struct. ## **WARNING** The `validate_flag_filter` workflow will only check that all the fields ## can be parsed as integers less than 4096. It will not check if the flags are @@ -23,18 +10,14 @@ ## We suggest using the Broad Institute's SAM flag explainer to construct the flags. ## Find it [here](https://broadinstitute.github.io/picard/explain-flags.html). ## -## ## Example input JSON +## ## Example ## -## ```json ## { -## "flags": { -## "include_if_all": "0x3", -## "exclude_if_any": "0xF04", -## "include_if_any": "0x0", -## "exclude_if_all": "0x0" -## } +## "include_if_all": "0x3", +## "exclude_if_any": "0xF04", +## "include_if_any": "0x0", +## "exclude_if_all": "0x0" ## } -## ``` ## ## ### Explanation ## @@ -58,13 +41,28 @@ ## In short, those are all flags corresponding to the quality of the read ## and them being `true` may indicate that the read is of low quality and ## should be excluded. + version 1.3 +## A struct to represent the filtering flags used in various `samtools` commands. +## +## The order of precedence is `include_if_all`, `exclude_if_any`, `include_if_any`, +## and `exclude_if_all`. +## +## The values of these fields are strings that represent a 12bit bitwise flag. +## These strings must evaluate to an integer less than 4096 (2^12). +## They can be in octal, decimal, or hexadecimal format. +## Please see the `meta.help` of `validate_string_is_12bit_int` for more information on the valid formats. +#@ except: MetaSections struct FlagFilter { - String include_if_all # samtools -f - String exclude_if_any # samtools -F - String include_if_any # samtools --rf - String exclude_if_all # samtools -G + ## Corresponds to `samtools -f` + String include_if_all + ## Corresponds to `samtools -F` + String exclude_if_any + ## Corresponds to `samtools --rf` + String include_if_any + ## Corresponds to `samtools -G` + String exclude_if_all } #@ except: EmptyOutputs diff --git a/data_structures/read_group.wdl b/data_structures/read_group.wdl index 4392102f0..af1626423 100644 --- a/data_structures/read_group.wdl +++ b/data_structures/read_group.wdl @@ -1,49 +1,59 @@ -## Read groups are defined in the SAM spec -## - `ID`: Read group identifier. Each Read Group must have a unique ID. -## The value of ID is used in the RG tags of alignment records. -## - `BC`: Barcode sequence identifying the sample or library. This value is the -## expected barcode bases as read by the sequencing machine in the absence -## of errors. If there are several barcodes for the sample/library -## (e.g., one on each end of the template), the recommended implementation -## concatenates all the barcodes separating them with hyphens (`-`). -## - `CN`: Name of sequencing center producing the read. -## - `DS`: Description. -## - `DT`: Date the run was produced (ISO8601 date or date/time). -## - `FO`: Flow order. The array of nucleotide bases that correspond to the nucleotides -## used for each flow of each read. Multi-base flows are encoded in IUPAC format, -## and non-nucleotide flows by various other characters. -## Format: `/\\*|[ACMGRSVTWYHKDBN]+/` -## - `KS`: The array of nucleotide bases that correspond to the key sequence of each read. -## - `LB`: Library. -## - `PG`: Programs used for processing the read group. -## - `PI`: Predicted median insert size, rounded to the nearest integer. -## - `PL`: Platform/technology used to produce the reads. -## Valid values: CAPILLARY, DNBSEQ (MGI/BGI), ELEMENT, HELICOS, ILLUMINA, IONTORRENT, -## LS454, ONT (Oxford Nanopore), PACBIO (Pacific Biosciences), SINGULAR, SOLID, -## and ULTIMA. This field should be omitted when the technology is not in this list -## (though the PM field may still be present in this case) or is unknown. -## - `PM`: Platform model. Free-form text providing further details of the -## platform/technology used. -## - `PU`: Platform unit (e.g., flowcell-barcode.lane for Illumina or slide -## for SOLiD). Unique identifier. -## - `SM`: Sample. Use pool name where a pool is being sequenced. version 1.3 -#@ except: NamingConvention +## Read group as defined in the SAM specification. +#@ except: MetaSections, NamingConvention struct ReadGroup { + ## Read group identifier. Each Read Group must have a unique ID. + ## + ## The value of ID is used in the RG tags of alignment records. String ID + ## Barcode sequence identifying the sample or library. + ## + ## This value is the expected barcode bases as read by the sequencing machine in the absence + ## of errors. If there are several barcodes for the sample/library + ## (e.g., one on each end of the template), the recommended implementation + ## concatenates all the barcodes separating them with hyphens (`-`). String? BC + ## Name of sequencing center producing the read. String? CN + ## Description. String? DS + ## Date the run was produced (ISO8601 date or date/time). String? DT + ## Flow order. + ## + ## The array of nucleotide bases that correspond to the nucleotides + ## used for each flow of each read. Multi-base flows are encoded in IUPAC format, + ## and non-nucleotide flows by various other characters. + ## + ## Format: `/\\*|[ACMGRSVTWYHKDBN]+/` String? FO + ## The array of nucleotide bases that correspond to the key sequence of each read. String? KS + ## Library. String? LB + ## Programs used for processing the read group. String? PG + ## Predicted median insert size, rounded to the nearest integer. Int? PI + ## Platform/technology used to produce the reads. + ## + ## Valid values: CAPILLARY, DNBSEQ (MGI/BGI), ELEMENT, HELICOS, ILLUMINA, IONTORRENT, + ## LS454, ONT (Oxford Nanopore), PACBIO (Pacific Biosciences), SINGULAR, SOLID, + ## and ULTIMA. + ## + ## This field should be omitted when the technology is not in this list + ## (though the PM field may still be present in this case) or is unknown. String? PL + ## Platform model. + ## + ## Free-form text providing further details of the platform/technology used. String? PM + ## Platform unit (e.g., flowcell-barcode.lane for Illumina or slide for SOLiD). + ## + ## Unique identifier. String? PU + ## Sample. Use pool name where a pool is being sequenced. String? SM } @@ -91,6 +101,7 @@ workflow read_group_to_string { output { String? validated_read_group = inner_read_group_to_string.stringified_read_group + #@ except: DeclarationName Array[String]? validated_read_group_array = inner_read_group_to_string.read_group_array } } @@ -420,6 +431,7 @@ task inner_read_group_to_string { String? stringified_read_group = if split_on_field then None else read_string("out.txt") + #@ except: DeclarationName Array[String]? read_group_array = if split_on_field then read_lines("out.txt") else None diff --git a/tools/bwamem2.wdl b/tools/bwamem2.wdl index 55c86f165..4de9a1e93 100644 --- a/tools/bwamem2.wdl +++ b/tools/bwamem2.wdl @@ -16,11 +16,11 @@ task align { prefix: "Prefix for the BAM file. The extension `.bam` will be added." smart_pairing: "If true, enable smart pairing mode for paired-end reads" skip_mate_rescue: "If true, skip mate rescue for paired-end reads" + seed_length: "Seed value for the BWA-MEM2 aligner" + min_score: "Minimum score threshold for reporting alignments" ncpu: "Number of threads to use for alignment" modify_disk_size_gb: "Additional disk space to allocate (in GB)" modify_memory_gb: "Add to or subtract from dynamic memory allocation. Default memory is determined by the number of cores. Specified in GB." - seed_length: "Seed value for the BWA-MEM2 aligner" - min_score: "Minimum score threshold for reporting alignments" } input { diff --git a/tools/clair.wdl b/tools/clair.wdl index 28a27a7b3..9c66e19f0 100644 --- a/tools/clair.wdl +++ b/tools/clair.wdl @@ -14,6 +14,7 @@ version 1.3 # | `ilmn` | ilmn | NovaSeq / HiSeq X | n/a | # | `hifi_sequel2` | hifi_sequel2 | PacBio Sequel II, Chemistry 2.0 | n/a | # | `hifi_revio` | hifi_revio | PacBio Revio, SMRTbell prep kit 3.0 | n/a | +#@ except: NamingConvention enum ClairSPlatform { ont_r10_dorado_sup_4khz, ont_r10_dorado_sup_5khz_ss, @@ -27,6 +28,7 @@ enum ClairSPlatform { hifi_revio, } +#@ except: NamingConvention enum Clair3Platform { ont, hifi, @@ -58,6 +60,7 @@ enum Clair3Platform { # | `hifi_sequel2` | hifi | PacBio HiFi, Sequel II | | # | `hifi_revio` | hifi | PacBio HiFi, Revio | | # | `ilmn` | ilmn | Illumina short-read | | +#@ except: NamingConvention enum Clair3Model[String] { hifi, hifi_sequel2, @@ -98,14 +101,14 @@ task clair3 { reference_fasta_index: "Index file for the reference genome FASTA" bam: "Input BAM file with aligned reads" bam_index: "Index file for the input BAM file" - model: { - description: "Pre-trained Clair3 model to use for variant calling", - } bed_regions: "Optional BED file specifying regions to call variants in" vcf_candidates: "Optional VCF file with candidate variants to consider" contigs: "Optional list of contigs to call variants in. If undefined, all contigs in the reference FASTA will be considered." - output_dir: "Directory to store Clair3 output" + model: { + description: "Pre-trained Clair3 model to use for variant calling", + } platform: "Sequencing platform used to generate the reads" + output_dir: "Directory to store Clair3 output" all_contigs: "Boolean indicating whether to include all contigs in variant calling. If false only chr{1..22,X,Y} are called." print_ref_calls: "Boolean indicating whether to print reference calls in the output VCF" gvcf: "Boolean indicating whether to output gVCF format" diff --git a/tools/deepvariant.wdl b/tools/deepvariant.wdl index 5cf6828b9..529be7add 100644 --- a/tools/deepvariant.wdl +++ b/tools/deepvariant.wdl @@ -1,5 +1,6 @@ version 1.3 +#@ except: NamingConvention enum ModelType { WGS, WES, @@ -15,6 +16,7 @@ enum ModelType { ONT_TUMOR_ONLY, } +#@ except: NamingConvention enum DVModelType { WGS, WES, @@ -158,8 +160,8 @@ task deepvariant { bam: "Input BAM file with aligned reads for sample" bam_index: "Index for input BAM file" haploid_chromosomes: "List of chromosomes to be treated as haploid during variant calling" - output_prefix: "Prefix for output VCF and gVCF files" model_type: "Type of model to use for variant calling" + output_prefix: "Prefix for output VCF and gVCF files" runtime_report: "Output make_examples_somatic runtime metrics and create a visual runtime report using runtime_by_region_vis." vcf_stats_report: "Output a visual report (HTML) of statistics about the output VCF." use_gpu: "Whether to use the GPU accelerated version of DeepVariant" diff --git a/tools/fq.wdl b/tools/fq.wdl index c69d0fe44..51f48afb9 100755 --- a/tools/fq.wdl +++ b/tools/fq.wdl @@ -136,21 +136,15 @@ task subsample { Int disk_size_gb = ceil((read1_size + read2_size) * 2) + modify_disk_size_gb - String probability_arg = if (probability < 1.0 && probability > 0) - then "-p ~{probability}" - else "" - String record_count_arg = if (record_count > 0) then "-n ~{record_count}" else "" - String r1_dst = prefix + ".R1.subsampled.fastq.gz" String r2_dst = prefix + ".R2.subsampled.fastq.gz" command <<< set -euo pipefail - # shellcheck disable=SC2086 fq subsample \ - ~{probability_arg} \ - ~{record_count_arg} \ + ~{if (probability < 1.0 && probability > 0) then "-p ~{probability}" else ""} \ + ~{if (record_count > 0) then "-n ~{record_count}" else ""} \ --r1-dst "~{r1_dst}" \ ~{if defined(read_two_fastq) then "--r2-dst '" + r2_dst + "'" else ""} \ "~{read_one_fastq}" \ diff --git a/tools/gatk4.wdl b/tools/gatk4.wdl index cdb95aec9..ecebc44e1 100644 --- a/tools/gatk4.wdl +++ b/tools/gatk4.wdl @@ -1,11 +1,13 @@ version 1.3 +#@ except: NamingConvention enum RefConfidence { NONE, GVCF, BP_RESOLUTION, } +#@ except: NamingConvention enum VariantMode { SNP, INDEL, @@ -219,6 +221,18 @@ task base_recalibrator { ln -sf "~{fasta_index}" "$ref_fasta.fa.fai" ln -sf "~{dict}" "$ref_fasta.dict" + ln -sf "~{dbSNP_vcf}" "~{basename(dbSNP_vcf)}" + ln -sf "~{dbSNP_vcf_index}" "~{basename(dbSNP_vcf)}".tbi + + indels=( ~{sep(" ", squote(known_indels_sites_vcfs))} ) + indel_indices=( ~{sep(" ", squote(known_indels_sites_indices))} ) + for i in "${!indels[@]}"; do + basename="$(basename "${indels[i]}")" + ln -s "${indels[i]}" "$basename" + ln -s "${indel_indices[i]}" "$basename".tbi + basenames+=( "$basename" ) + done + # shellcheck disable=SC2102 gatk \ --java-options \ @@ -228,11 +242,11 @@ task base_recalibrator { -I "$bam_name" \ ~{if use_original_quality_scores then "--use-original-qualities" else ""} \ -O "~{outfile_name}" \ - --known-sites "~{dbSNP_vcf}" \ - ~{sep(" ", prefix("--known-sites ", squote(known_indels_sites_vcfs)))} \ + --known-sites "~{basename(dbSNP_vcf)}" \ + ~{if length(known_indels_sites_vcfs) > 0 then "\"\${basenames[@]}\"" else ""} \ --spark-master local[~{ncpu}] - rm -rf "$bam_name" "$bam_name.bai" "$ref_fasta.fa" "$ref_fasta.fa.fai" "$ref_fasta.dict" + find . -maxdepth 1 -type l -delete >>> output { @@ -415,9 +429,7 @@ task haplotype_caller { --dbsnp "~{snp_vcf}" \ --emit-ref-confidence "~{reference_confidence}" - rm -rf "$ref_fasta.fa" "$ref_fasta.fa.fai" "$ref_fasta.dict" "~{sample}" "~{sample}.bai" "~{ - snp_vcf - }" "~{snp_vcf_index}" + find . -maxdepth 1 -type l -delete >>> output { @@ -697,20 +709,21 @@ task apply_vqsr { ln -sf "~{reference_dict}" "$ref_fasta.dict" ln -sf "~{vcf}" "~{basename(vcf)}" - ln -sf "~{vcf_index}" "~{basename(vcf_index)}" + ln -sf "~{vcf_index}" "~{basename(vcf)}".tbi + + ln -sf "~{recal_file}" "~{basename(recal_file)}" + ln -sf "~{recal_file_index}" "~{basename(recal_file)}".tbi gatk ApplyVQSR \ -R "$ref_fasta.fa" \ -V "~{basename(vcf)}" \ - --recal-file "~{recal_file}" \ + --recal-file "~{basename(recal_file)}" \ --tranches-file "~{tranches_file}" \ --truth-sensitivity-filter-level ~{truth_sensitivity_filter_level} \ --mode "~{mode}" \ -O "~{prefix}.recalibrated.vcf.gz" - rm -rf "$ref_fasta.fa" "$ref_fasta.fa.fai" "$ref_fasta.dict" "~{basename(vcf)}" "~{ - basename(vcf_index) - }" + find . -maxdepth 1 -type l -delete >>> output { @@ -762,6 +775,8 @@ task variant_recalibrator { File vcf_index Array[File] resource_vcfs Array[File] resource_vcf_indices + # TODO: improve UX for constructing this mess of an argument + # It is a string but must reference files in the `resource_vcfs` array. Array[String] resources Array[String] annotations = [ "QD", @@ -791,12 +806,13 @@ task variant_recalibrator { ln -sf "~{vcf}" "~{basename(vcf)}" ln -sf "~{vcf_index}" "~{basename(vcf_index)}" - for vcf in ~{sep(" ", resource_vcfs)}; do - ln -sf "~{vcf}" "$(basename "$vcf")" - done - - for vcf_index in ~{sep(" ", resource_vcf_indices)}; do - ln -sf "~{vcf_index}" "$(basename "$vcf_index")" + resource_vcf_paths=( ~{sep(" ", squote(resource_vcfs))} ) + resource_tbi_paths=( ~{sep(" ", squote(resource_vcf_indices))} ) + for i in "${!resource_vcf_paths[@]}"; do + basename="$(basename "${resource_vcf_paths[i]}")" + ln -s "${resource_vcf_paths[i]}" "$basename" + ln -s "${resource_tbi_paths[i]}" "$basename".tbi + vcf_basenames+=( "$basename" ) done gatk VariantRecalibrator \ @@ -807,19 +823,10 @@ task variant_recalibrator { --tranches-file "~{prefix}.tranches" \ --rscript-file "~{prefix}.plots.R" \ --dont-run-rscript \ - ~{sep(" ", prefix("--resource:", resources))} \ + ~{sep(" ", prefix("--resource:", quote(resources)))} \ ~{sep(" ", prefix("-an ", quote(annotations)))} - rm -rf "$ref_fasta.fa" "$ref_fasta.fa.fai" "$ref_fasta.dict" "~{basename(vcf)}" "~{ - basename(vcf_index) - }" - for vcf in ~{sep(" ", resource_vcfs)}; do - rm -rf "$(basename "$vcf")" - done - - for vcf_index in ~{sep(" ", resource_vcf_indices)}; do - rm -rf "$(basename "$vcf_index")" - done + find . -maxdepth 1 -type l -delete >>> output { @@ -881,7 +888,7 @@ task calculate_genotype_posteriors { -supporting "supporting.vcf.gz" \ -O "~{prefix}.posteriors.vcf.gz" - rm -rf "~{basename(vcf)}" "~{basename(vcf_index)}" "supporting.vcf.gz" "supporting.vcf.gz.tbi" + find . -maxdepth 1 -type l -delete >>> output { @@ -949,9 +956,7 @@ task genotype_gvcfs { -V "~{basename(gvcf)}" \ -O "~{prefix}.g.vcf.gz" \ - rm -rf "$ref_fasta.fa" "$ref_fasta.fa.fai" "$ref_fasta.dict" "~{basename(gvcf)}" "~{ - basename(gvcf_index) - }" + find . -maxdepth 1 -type l -delete >>> output { @@ -1018,7 +1023,7 @@ task scatter_interval_list { print(len(intervals)) PYTHON - rm -rf "~{basename(interval_list)}" + find . -maxdepth 1 -type l -delete >>> output { @@ -1060,13 +1065,13 @@ task merge_vcfs { command <<< set -euo pipefail - for f in ~{sep(" ", vcfs)} + for f in ~{sep(" ", squote(vcfs))} do ln -s "$f" . basename "$f" >> "interval.list" done - for f in ~{sep(" ", vcfs_indexes)} + for f in ~{sep(" ", squote(vcfs_indexes))} do ln -s "$f" . done @@ -1090,3 +1095,4 @@ task merge_vcfs { container: "quay.io/biocontainers/gatk4:4.6.2.0--py310hdfd78af_1" } } + diff --git a/tools/kraken2.wdl b/tools/kraken2.wdl index 5159c4c16..dc1b7eb61 100644 --- a/tools/kraken2.wdl +++ b/tools/kraken2.wdl @@ -338,17 +338,17 @@ task kraken { group: "Common", } use_names: "Print scientific names instead of just taxids?" + quick: "Stop classification at the first hit instead of an exhaustive k-mer search? Faster but less accurate." use_all_cores: { description: "Use all cores? Recommended for cloud environments.", group: "Common", } - min_base_quality: "Minimum base quality used in classification" confidence: { description: "Confidence score threshold. Classifications below this threshold are unclassified.", external_help: "https://github.com/DerrickWood/kraken2/blob/master/docs/MANUAL.markdown#confidence-scoring", } + min_base_quality: "Minimum base quality used in classification" minimum_hit_groups: "Minimum number of hit groups (overlapping k-mers sharing the same minimizer) needed to make a classification call" - quick: "Stop classification at the first hit instead of an exhaustive k-mer search? Faster but less accurate." ncpu: { description: "Number of cores to allocate for task", group: "Common", @@ -367,8 +367,8 @@ task kraken { ) Boolean store_sequences = false Boolean use_names = true - Boolean use_all_cores = false Boolean quick = false + Boolean use_all_cores = false Float confidence = 0.0 Int min_base_quality = 0 Int minimum_hit_groups = 2 diff --git a/tools/mako.wdl b/tools/mako.wdl index b9ae9f207..31e3f9dac 100644 --- a/tools/mako.wdl +++ b/tools/mako.wdl @@ -8,6 +8,7 @@ version 1.3 # | `queryname` | Lexicographic read name (default sub-sort) | Fast queryname sort | # | `queryname::natural` | Natural numeric read name | samtools-compatible | # | `template-coordinate` | Paired reads grouped by template | UMI grouping pipelines | +#@ except: NamingConvention enum SortOrder[String] { queryname = "queryname", coordinate = "coordinate", diff --git a/tools/minimap2.wdl b/tools/minimap2.wdl index b5bc38f02..ad976e62b 100644 --- a/tools/minimap2.wdl +++ b/tools/minimap2.wdl @@ -18,6 +18,7 @@ version 1.3 # | `sr` | Short-read alignment without splicing | | # | `ava-pb` | PacBio CLR all-vs-all overlap mapping | | # | `ava-ont` | Oxford Nanopore all-vs-all overlap mapping | | +#@ except: NamingConvention enum Preset[String] { sr, map_ont = "map-ont", diff --git a/tools/mutect2.wdl b/tools/mutect2.wdl index 429eb2907..1cf39ae83 100644 --- a/tools/mutect2.wdl +++ b/tools/mutect2.wdl @@ -53,6 +53,8 @@ task mutect2 { String tumor = basename(tumor_bam) String normal = basename(normal_bam) + String germline = basename(select_first([germline_resource_vcf, ""])) + String panel = basename(select_first([panel_of_normals_vcf, ""])) command <<< set -euo pipefail @@ -68,6 +70,15 @@ task mutect2 { ln -sf "~{normal_bam}" "~{normal}" ln -sf "~{normal_bam_index}" "~{normal}.bai" + if ~{defined(germline_resource_vcf)} && ~{defined(germline_resource_vcf_index)}; then + ln -sf "~{germline_resource_vcf}" "~{germline}" + ln -sf "~{germline_resource_vcf_index}" "~{germline}".tbi + fi + if ~{defined(panel_of_normals_vcf)} && ~{defined(panel_of_normals_vcf_index)}; then + ln -sf "~{panel_of_normals_vcf}" "~{panel}" + ln -sf "~{panel_of_normals_vcf_index}" "~{panel}".tbi + fi + gatk Mutect2 \ -R "$ref_fasta.fa" \ -I "~{tumor}" \ @@ -75,17 +86,15 @@ task mutect2 { -normal "~{normal_sample_name}" \ -tumor "~{tumor_sample_name}" \ ~{if defined(germline_resource_vcf) - then "-germline-resource '" + germline_resource_vcf + "'" + then "-germline-resource '" + germline + "'" else ""} \ ~{if defined(panel_of_normals_vcf) - then "-panel-of-normals '" + panel_of_normals_vcf + "'" + then "-panel-of-normals '" + panel + "'" else ""} \ -O "~{output_prefix}.vcf.gz" \ --native-pair-hmm-threads "~{threads}" - rm -rf "$ref_fasta.fa" "$ref_fasta.fa.fai" "$ref_fasta.dict" "~{tumor}" "~{tumor}.bai" "~{ - normal - }" "~{normal}.bai" + find . -maxdepth 1 -type l -delete >>> output { @@ -162,11 +171,7 @@ task filter_mutect { --tumor-segmentation "~{maf_segments}" \ -O "~{prefix}.vcf.gz" - rm -rf "$ref_fasta.fa" "$ref_fasta.fa.fai" "$ref_fasta.dict" "~{basename( - unfiltered_somatic_vcf - )}" "~{basename(unfiltered_somatic_vcf_index)}" "~{basename( - unfiltered_somatic_vcf_stats - )}" + find . -maxdepth 1 -type l -delete >>> output { @@ -301,9 +306,7 @@ task get_pileup_summaries { -L "~{basename(intervals)}" \ -O "~{prefix}.table" - rm -rf "~{name}.bam" "~{name}.bam.bai" "~{basename(intervals)}" "~{basename( - intervals_index - )}" "~{basename(variants)}" "~{basename(variants_index)}" "$ref_fasta.fa" "$ref_fasta.fa.fai" "$ref_fasta.dict" + find . -maxdepth 1 -type l -delete >>> output { diff --git a/tools/picard.wdl b/tools/picard.wdl index d67df89ad..1bbfdeb3a 100755 --- a/tools/picard.wdl +++ b/tools/picard.wdl @@ -1,4 +1,3 @@ -## [Homepage](https://broadinstitute.github.io/picard/) version 1.3 task mark_duplicates { @@ -197,7 +196,6 @@ task validate_bam { } String outfile = if summary_mode then outfile_name else outfile_name + ".gz" - String mode_arg = if summary_mode then "--MODE SUMMARY" else "" Float bam_size = size(bam, "GB") Int disk_size_gb = ceil(bam_size * 4) + 50 + modify_disk_size_gb Int java_heap_size = ceil(memory_gb * 0.9) @@ -210,7 +208,7 @@ task validate_bam { picard -Xmx~{java_heap_size}g ValidateSamFile \ -I "~{bam}" \ ~{"-R '" + reference_fasta + "'"} \ - ~{mode_arg} \ + ~{if summary_mode then "--MODE SUMMARY" else ""} \ --VALIDATION_STRINGENCY "~{validation_stringency}" \ ~{sep(" ", prefix("--IGNORE ", squote(ignore_list)))} \ --MAX_OUTPUT ~{max_errors} \ @@ -855,10 +853,22 @@ task merge_vcfs { command <<< set -euo pipefail + vcf_paths=( ~{sep(" ", squote(vcfs))} ) + tbi_paths=( ~{sep(" ", squote(vcfs_indexes))} ) + for i in "${!vcf_paths[@]}"; do + basename="$(basename "${vcf_paths[i]}")" + ln -s "${vcf_paths[i]}" "$basename" + ln -s "${tbi_paths[i]}" "$basename".tbi + basenames+=( "$basename" ) + done + + # shellcheck disable=SC2046 picard -Xms2000m \ MergeVcfs \ - ~{sep(" ", prefix("--INPUT ", squote(vcfs)))} \ + $(for bn in "${basenames[@]}"; do echo "--INPUT $bn"; done) \ --OUTPUT "~{output_vcf_name}" + + find . -maxdepth 1 -type l -delete >>> output { diff --git a/tools/qualimap.wdl b/tools/qualimap.wdl index ccbb6be87..2880fe568 100755 --- a/tools/qualimap.wdl +++ b/tools/qualimap.wdl @@ -1,4 +1,3 @@ -## [Homepage](http://qualimap.bioinfo.cipf.es/) version 1.3 task rnaseq { @@ -71,8 +70,8 @@ task rnaseq { -oc qualimap_counts.txt \ -gtf "$gtf_name" \ -outdir "~{prefix}" \ - ~{name_sorted_arg} \ - ~{paired_end_arg} \ + "~{name_sorted_arg}" \ + "~{paired_end_arg}" \ --java-mem-size=~{java_heap_size}G rm "$gtf_name" diff --git a/tools/salmon.wdl b/tools/salmon.wdl index 9555b708b..54aa0922f 100644 --- a/tools/salmon.wdl +++ b/tools/salmon.wdl @@ -128,31 +128,6 @@ task quant { description: "Prefix for the Salmon quantification output. The extension `.tar.gz` will be added.", group: "Common", } - num_bootstraps: { - description: "Compute bootstrapped abundance estimates.", - help: "This is done by resampling (with replacement) from the counts assigned to the fragment equivalence classes, and then re-running the optimization procedure for each such sample.", - group: "Salmon Options", - } - incompat_prior: { - description: "This parameter governs the a priori probability that a fragment mapping is nonetheless the correct mapping.", - help: "Specifically, this is for a fragment mapping or aligning to the reference in a manner incompatible with the prescribed library type.", - group: "Salmon Options", - } - range_factorization_bins: { - description: "The range-factorization feature allows using a data-driven likelihood factorization.", - help: "This can improve quantification accuracy on certain classes of difficult transcripts.", - group: "Salmon Options", - } - fld_mean: { - description: "Allows the user to set the expected mean fragment length of the sequencing library.", - help: "Since the empirical fragment length distribution cannot be estimated from the mappings of single-end reads, this is only important when running Salmon with single-end reads.", - group: "Salmon Options", - } - fld_sd: { - description: "Allows the user to set the expected standard deviation of the fragment length distribution.", - help: "Since the empirical fragment length distribution cannot be estimated from the mappings of single-end reads, this is only important when running Salmon with single-end reads.", - group: "Salmon Options", - } seq_bias: { description: "Passing this flag will enable it to learn and correct for sequence-specific biases in the input data.", group: "Salmon Options", @@ -196,6 +171,31 @@ task quant { description: "Use all cores? Recommended for cloud environments.", group: "Resources", } + incompat_prior: { + description: "This parameter governs the a priori probability that a fragment mapping is nonetheless the correct mapping.", + help: "Specifically, this is for a fragment mapping or aligning to the reference in a manner incompatible with the prescribed library type.", + group: "Salmon Options", + } + num_bootstraps: { + description: "Compute bootstrapped abundance estimates.", + help: "This is done by resampling (with replacement) from the counts assigned to the fragment equivalence classes, and then re-running the optimization procedure for each such sample.", + group: "Salmon Options", + } + range_factorization_bins: { + description: "The range-factorization feature allows using a data-driven likelihood factorization.", + help: "This can improve quantification accuracy on certain classes of difficult transcripts.", + group: "Salmon Options", + } + fld_mean: { + description: "Allows the user to set the expected mean fragment length of the sequencing library.", + help: "Since the empirical fragment length distribution cannot be estimated from the mappings of single-end reads, this is only important when running Salmon with single-end reads.", + group: "Salmon Options", + } + fld_sd: { + description: "Allows the user to set the expected standard deviation of the fragment length distribution.", + help: "Since the empirical fragment length distribution cannot be estimated from the mappings of single-end reads, this is only important when running Salmon with single-end reads.", + group: "Salmon Options", + } ncpu: { description: "Number of cores to allocate for task", group: "Resources", diff --git a/tools/star.wdl b/tools/star.wdl index 026734d8b..13d3ef607 100755 --- a/tools/star.wdl +++ b/tools/star.wdl @@ -1,4 +1,3 @@ -## [Homepage](https://github.com/alexdobin/STAR) version 1.3 task build_star_db { @@ -184,6 +183,26 @@ task alignment { description: "An array of gzipped FASTQ files containing read two information", group: "Common", } + out_sam_attributes: { + description: "an array of desired SAM attributes, in the order desired for the output SAM.", + help: "Tags can be listed in any combination/order.", + tool_default: "NH HS AS nM", + choices: { + NH: "number of loci the reads maps to: =1 for unique mappers, >1 for multimappers. Standard SAM tag.", + HI: "multiple alignment index, starts with --outSAMattrIHstart (=1 by default). Standard SAM tag.", + AS: "local alignment score, +1/-1 for matches/mismatches, score* penalties for indels and gaps. For PE reads, total score for two mates. Standard SAM tag.", + nM: "number of mismatches. For PE reads, sum over two mates.", + NM: "edit distance to the reference (number of mismatched + inserted + deleted bases) for each mate. Standard SAM tag.", + MD: "string encoding mismatched and deleted reference bases (see standard SAM specifications). Standard SAM tag.", + jM: "intron motifs for all junctions (i.e. N in CIGAR): 0: non-canonical; 1: GT/AG, 2: CT/AC, 3: GC/AG, 4: CT/GC, 5: AT/AC, 6: GT/AT. If splice junctions database is used, and a junction is annotated, 20 is added to its motif value.", + jI: "start and end of introns for all junctions (1-based).", + XS: "alignment strand according to --outSAMstrandField.", + MC: "mate's CIGAR string. Standard SAM tag.", + ch: "marks all segments of all chimeric alignments for --chimOutType WithinBAM output.", + cN: "number of bases clipped from the read ends: 5' and 3'", + }, + group: "Common", + } out_sj_filter_intron_max_vs_read_n: { description: "maximum gap allowed for junctions supported by 1,2,3,,,N reads. Does not apply to annotated junctions.", help: "i.e. by default junctions supported by 1 read can have gaps <=50000b, by 2 reads: <=100000b, by 3 reads: <=200000b. by >=4 reads any gap <=alignIntronMax.", @@ -256,26 +275,6 @@ task alignment { }, group: "Common", } - out_sam_attributes: { - description: "a string of desired SAM attributes, in the order desired for the output SAM.", - help: "Tags can be listed in any combination/order.", - tool_default: "NH HS AS nM", - choices: { - NH: "number of loci the reads maps to: =1 for unique mappers, >1 for multimappers. Standard SAM tag.", - HI: "multiple alignment index, starts with --outSAMattrIHstart (=1 by default). Standard SAM tag.", - AS: "local alignment score, +1/-1 for matches/mismatches, score* penalties for indels and gaps. For PE reads, total score for two mates. Standard SAM tag.", - nM: "number of mismatches. For PE reads, sum over two mates.", - NM: "edit distance to the reference (number of mismatched + inserted + deleted bases) for each mate. Standard SAM tag.", - MD: "string encoding mismatched and deleted reference bases (see standard SAM specifications). Standard SAM tag.", - jM: "intron motifs for all junctions (i.e. N in CIGAR): 0: non-canonical; 1: GT/AG, 2: CT/AC, 3: GC/AG, 4: CT/GC, 5: AT/AC, 6: GT/AT. If splice junctions database is used, and a junction is annotated, 20 is added to its motif value.", - jI: "start and end of introns for all junctions (1-based).", - XS: "alignment strand according to --outSAMstrandField.", - MC: "mate's CIGAR string. Standard SAM tag.", - ch: "marks all segments of all chimeric alignments for --chimOutType WithinBAM output.", - cN: "number of bases clipped from the read ends: 5' and 3'", - }, - group: "Common", - } out_sam_unmapped: { description: "output of unmapped reads in the SAM format.", choices: { @@ -566,6 +565,7 @@ task alignment { Array[File]+ read_one_fastqs_gz Array[String]+ read_groups Array[File]? read_two_fastqs_gz + Array[String] out_sam_attributes = ["NH", "HI", "AS", "nM", "NM", "MD", "XS"] Array[Int] out_sj_filter_intron_max_vs_read_n = [50000, 100000, 200000] SpliceJunctionMotifs out_sj_filter_overhang_min = SpliceJunctionMotifs { noncanonical_motifs: 30, @@ -609,7 +609,6 @@ task alignment { String read_name_separator = "/" String clip_adapter_type = "Hamming" String out_sam_strand_field = "intronMotif" - String out_sam_attributes = "NH HI AS nM NM MD XS" String out_sam_unmapped = "Within" String out_sam_order = "Paired" String out_sam_read_id = "Standard" @@ -621,7 +620,7 @@ task alignment { String align_ends_type = "Local" String align_soft_clip_at_reference_ends = "Yes" # TODO: make a boolean String align_insertion_flush = "None" - String chim_out_type = "WithinBAM HardClip" + String chim_out_type = "WithinBAM HardClip" # TODO: make Array[enum] String chim_filter = "banGenomicN" String chim_out_junction_format = "plain" # TODO: make a boolean String twopass_mode = "Basic" # TODO: make a boolean @@ -735,7 +734,7 @@ task alignment { --outMultimapperOrder Random \ --outFileNamePrefix "~{prefix + "."}" \ --twopassMode "~{twopass_mode}" \ - --outSAMattrRGline ~{sep(" , ", read_groups)} \ + --outSAMattrRGline ~{sep(" , ", quote(read_groups))} \ --outSJfilterIntronMaxVsReadN ~{sep(" ", quote( out_sj_filter_intron_max_vs_read_n ))} \ @@ -792,7 +791,7 @@ task alignment { --readNameSeparator "~{read_name_separator}" \ --clipAdapterType "~{clip_adapter_type}" \ --outSAMstrandField "~{out_sam_strand_field}" \ - --outSAMattributes ~{out_sam_attributes} \ + --outSAMattributes ~{sep(" ", quote(out_sam_attributes))} \ --outSAMunmapped "~{out_sam_unmapped}" \ --outSAMorder "~{out_sam_order}" \ --outSAMreadID "~{out_sam_read_id}" \ @@ -808,7 +807,7 @@ task alignment { --alignEndsType "~{align_ends_type}" \ --alignSoftClipAtReferenceEnds "~{align_soft_clip_at_reference_ends}" \ --alignInsertionFlush "~{align_insertion_flush}" \ - --chimOutType ~{chim_out_type} \ + --chimOutType ~{sep(" ", squote(split(chim_out_type, " ")))} \ --chimFilter "~{chim_filter}" \ --chimOutJunctionFormat "~{chim_out_junction_format}" \ --outFilterMismatchNoverLmax ~{out_filter_mismatch_n_over_l_max} \ @@ -900,9 +899,9 @@ task alignment { } } -# There are multiple Splice Junction Motif arguments for STAR -# that are all formatted the same. Use this struct for consistency. -#@ except: NamingConvention +## There are multiple Splice Junction Motif arguments for STAR +## that are all formatted the same. Use this struct for consistency. +#@ except: MetaSections, NamingConvention struct SpliceJunctionMotifs { Int noncanonical_motifs Int GT_AG_and_CT_AC_motif diff --git a/tools/vg.wdl b/tools/vg.wdl index 1dfd3ccc3..6d1a5b01c 100644 --- a/tools/vg.wdl +++ b/tools/vg.wdl @@ -1,5 +1,6 @@ version 1.3 +#@ except: NamingConvention enum OutputFormat { gam, gaf, @@ -20,6 +21,7 @@ enum OutputFormat { # | `r10` | Oxford Nanopore R10 long reads | Uses chaining-based alignment (`align-from-chains`) tuned for R10 error profiles. | # | `chaining-sr` | Short reads using the chaining-based codepath | Shares the chaining algorithm introduced for long-read presets (`hifi`/`r10`), adapted for short reads. | # | `srold` | Short reads using the original (pre-chaining) codepath | Legacy short-read algorithm predating `chaining-sr`. | +#@ except: NamingConvention enum GiraffePreset[String] { chaining_sr = "chaining-sr", default, @@ -38,6 +40,7 @@ enum GiraffePreset[String] { # | `rpvg` | Indexes for `rpvg` haplotype-based transcript quantification | | # | `giraffe` / `sr-giraffe` | Indexes for `vg giraffe` on short reads | `giraffe` is a legacy alias for `sr-giraffe`. | # | `lr-giraffe` | Indexes for `vg giraffe` on long reads | | +#@ except: NamingConvention enum AutoindexWorkflow[String] { map, mpmap, @@ -66,9 +69,9 @@ task giraffe { kff: "The KFF file containing kmer counts" sample_name: "The sample name to include" read_group: "The read group" - output_name: "The name of the output alignment file" - output_format: "The output format for alignments" preset: "vg giraffe preset for alignment" + output_format: "The output format for alignments" + output_name: "The name of the output alignment file" ncpu: "Number of threads to use for alignment" modify_disk_size_gb: "Additional disk space to allocate (in GB)" } @@ -139,12 +142,12 @@ task index { reference_fasta: "The reference genome in FASTA format to be indexed" vcf_files: "VCF(s) containing variants to augment the graph" transcript_gff: "GFF(s) containing transcript annotations" + autoindex_workflow: "The vg autoindex workflow to use" db_prefix: "The base name for the output index files" gff_feature: "The feature type in the GFF to use for transcripts" gff_id_tag: "The attribute tag in the GFF to use as transcript ID" - autoindex_workflow: "The vg autoindex workflow to use" - modify_disk_size_gb: "Additional disk space to allocate (in GB)" ncpu: "Number of threads to use for indexing" + modify_disk_size_gb: "Additional disk space to allocate (in GB)" } input { @@ -155,8 +158,8 @@ task index { String db_prefix = "reference" String gff_feature = "exon" String gff_id_tag = "transcript_id" - Int modify_disk_size_gb = 0 Int ncpu = 4 + Int modify_disk_size_gb = 0 } Float input_fasta_size = size(reference_fasta, "GB") diff --git a/workflows/evaluation/dnaseq-alignment.wdl b/workflows/evaluation/dnaseq-alignment.wdl index 80d394fb2..97d602b3b 100644 --- a/workflows/evaluation/dnaseq-alignment.wdl +++ b/workflows/evaluation/dnaseq-alignment.wdl @@ -39,12 +39,12 @@ workflow align { read_group: "The read group to be included in the SAM header" read_two_fastq_gz: "Input gzipped FASTQ read two file to align (for paired-end data)" output_prefix: "Output file prefix for aligned reads" - ncpu: "Number of threads to use for alignment" - modify_disk_size_gb: "Additional disk space to allocate (in GB)" run_bwamem: "Whether to run BWA-MEM alignment" run_bwamem2: "Whether to run BWA-MEM2 alignment" run_giraffe: "Whether to run vg giraffe alignment" run_minimap2: "Whether to run minimap2 alignment" + ncpu: "Number of threads to use for alignment" + modify_disk_size_gb: "Additional disk space to allocate (in GB)" } input {