diff --git a/CPAT.wdl b/CPAT.wdl index 0c4e83db1f67d2a5fca475af8adb3076e73ed3d9..b92053d1e1fcdbe116fc845c845442fd1b7aeecc 100644 --- a/CPAT.wdl +++ b/CPAT.wdl @@ -11,7 +11,7 @@ task CPAT { # CPAT should not index the reference genome. Array[String]? startCodons Array[String]? stopCodons - String dockerTag = "v1.2.4_cv1" + String dockerImage = "biocontainers/cpat:v1.2.4_cv1" } # Some WDL magic in the command section to properly output the start and stopcodons to the command. @@ -34,7 +34,7 @@ task CPAT { } runtime { - docker: "biocontainers/cpat:" + dockerTag + docker: dockerImage } } diff --git a/biopet/biopet.wdl b/biopet/biopet.wdl index 15f0771381d81ae668aaf25d8e173b3551bfd8d9..d88f0610723528fbc0ad1d1c9648147eca226a3f 100644 --- a/biopet/biopet.wdl +++ b/biopet/biopet.wdl @@ -230,7 +230,8 @@ task ReorderGlobbedScatters { task ScatterRegions { input { - Reference reference + File referenceFasta + File referenceFastaDict Int? scatterSize File? regions Boolean notSplitContigs = false @@ -239,7 +240,7 @@ task ScatterRegions { Int memory = 8 Float memoryMultiplier = 3.0 - String dockerTag = "0.2--0" + String dockerImage = "quay.io/biocontainers/biopet-scatterregions:0.2--0" } # OutDirPath must be defined here because the glob process relies on @@ -251,7 +252,7 @@ task ScatterRegions { set -e -o pipefail mkdir -p ~{outputDirPath} biopet-scatterregions -Xmx~{memory}G \ - -R ~{reference.fasta} \ + -R ~{referenceFasta} \ -o ~{outputDirPath} \ ~{"-s " + scatterSize} \ ~{"-L " + regions} \ @@ -264,7 +265,7 @@ task ScatterRegions { } runtime { - docker: "quay.io/biocontainers/biopet-scatterregions:" + dockerTag + docker: dockerImage memory: ceil(memory * memoryMultiplier) } } diff --git a/bwa.wdl b/bwa.wdl index e45c4dbc31de14114c9e3feb84938fa62e3ff3d7..2fe22007cd2e1d739950ed32a42aba6f429e7722 100644 --- a/bwa.wdl +++ b/bwa.wdl @@ -13,7 +13,9 @@ task Mem { Int threads = 2 Int memory = 8 Int picardMemory = 4 - String dockerTag = "43ec6124f9f4f875515f9548733b8b4e5fed9aa6-0" + # A mulled container is needed to have both picard and bwa in one container. + # This container contains: picard (2.18.7), bwa (0.7.17-r1188) + String dockerImage = "quay.io/biocontainers/mulled-v2-002f51ea92721407ef440b921fb5940f424be842:43ec6124f9f4f875515f9548733b8b4e5fed9aa6-0" } command { @@ -40,10 +42,7 @@ task Mem { runtime{ cpu: threads memory: memory + picardMemory + picardMemory - # A mulled container is needed to have both picard and bwa in one container. - # This container contains: picard (2.18.7), bwa (0.7.17-r1188) - docker: "quay.io/biocontainers/mulled-v2-002f51ea92721407ef440b921fb5940f424be842:" + - dockerTag + docker: dockerImage } } diff --git a/collect-columns.wdl b/collect-columns.wdl index 68c9dcc884563d41e6322440e2f0743368c65ef7..910aeac255dc07afc22068896d69aa81ef56fed8 100644 --- a/collect-columns.wdl +++ b/collect-columns.wdl @@ -13,10 +13,12 @@ task CollectColumns { File? referenceGtf String? featureAttribute - String dockerTag = "0.2.0--py_1" + String dockerImage = "quay.io/biocontainers/collect-columns:0.2.0--py_1" } command { + set -e + mkdir -p $(dirname ~{outputPath}) collect-columns \ ~{outputPath} \ ~{sep=" " inputTables} \ @@ -36,6 +38,6 @@ task CollectColumns { runtime { memory: 4 + ceil(0.5* length(inputTables)) - docker: "quay.io/biocontainers/collect-columns:" + dockerTag + docker: dockerImage } } \ No newline at end of file diff --git a/cutadapt.wdl b/cutadapt.wdl index cf9095bd2fe3a1df35f83fc27ad8cef8b5e6e664..2c79fd1d7c5e2f83aab3999b2317d9eecaa0e12a 100644 --- a/cutadapt.wdl +++ b/cutadapt.wdl @@ -62,8 +62,8 @@ task Cutadapt { String? reportPath Int cores = 1 - Int memory = 16 - String dockerTag = "2.3--py36h14c3975_0" + Int memory = 16 # FIXME: Insane memory. Double-check if needed. + String dockerImage = "quay.io/biocontainers/cutadapt:2.3--py36h14c3975_0" } String read2outputArg = if (defined(read2output)) @@ -169,6 +169,6 @@ task Cutadapt { runtime { cpu: cores memory: memory - docker: "quay.io/biocontainers/cutadapt:" + dockerTag + docker: dockerImage } } diff --git a/fastqc.wdl b/fastqc.wdl index ad9e224694fffaa5d6860fa55c912a188ed9e0da..d4386b8198c2d7965cd8653d732d67469ab419b9 100644 --- a/fastqc.wdl +++ b/fastqc.wdl @@ -18,7 +18,7 @@ task Fastqc { String? dir Int threads = 1 - String dockerTag = "0.11.7--4" + String dockerImage = "quay.io/biocontainers/fastqc:0.11.7--4" Array[File]? NoneArray File? NoneFile } @@ -61,7 +61,7 @@ task Fastqc { runtime { cpu: threads - docker: "quay.io/biocontainers/fastqc:" + dockerTag + docker: dockerImage } } diff --git a/fastqsplitter.wdl b/fastqsplitter.wdl new file mode 100644 index 0000000000000000000000000000000000000000..66f79af605d4f3bd9f28c3fa7690bb9808a5147c --- /dev/null +++ b/fastqsplitter.wdl @@ -0,0 +1,62 @@ +version 1.0 + +# MIT License +# +# Copyright (c) 2019 Leiden University Medical Center +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +task Fastqsplitter { + input { + File inputFastq + Array[String]+ outputPaths + String dockerImage = "quay.io/biocontainers/fastqsplitter:1.0.0--py_0" + Int? compressionLevel + Int? threadsPerFile + # fastqplitter utilizes one thread per input file and one or more threads per output file + one thread for the application. + # Since a compression level of 1 is used, each output file uses approx 0.5 cores. + Int cores = 1 + ceil(0.5 * length(outputPaths)) + } + + command { + set -e + mkdir -p $(dirname ~{sep=' ' outputPaths}) + fastqsplitter \ + ~{"-c " + compressionLevel} \ + ~{"-t " + threadsPerFile} \ + -i ~{inputFastq} \ + -o ~{sep=' -o ' outputPaths} + } + + output { + Array[File] chunks = outputPaths + } + + # Using very safe margins here. 10MB/300MB per outputfile is used for single-threaded/multi-threaded compression. + Float memoryPerFile = if select_first([threadsPerFile, 1]) > 1 then 0.40 else 0.02 + Int fastqsplitterMemory = ceil(0.100 + memoryPerFile * length(outputPaths)) + # Make sure a minimum of 2 GB is present to pull the singularity image + Int memory = if fastqsplitterMemory <= 2 then 2 else fastqsplitterMemory + + runtime { + memory: memory + docker: dockerImage + cpu: cores + } +} diff --git a/gatk.wdl b/gatk.wdl index 50a26f0414dadb325ecda2e43cebbdc26922fe26..87fa1046be22020b0a7b37b638d6c30084c43519 100644 --- a/gatk.wdl +++ b/gatk.wdl @@ -14,7 +14,7 @@ task ApplyBQSR { Int memory = 4 Float memoryMultiplier = 3.0 - String dockerTag = "4.1.0.0--0" + String dockerImage = "quay.io/biocontainers/gatk4:4.1.0.0--0" } command { @@ -42,7 +42,7 @@ task ApplyBQSR { } runtime { - docker: "quay.io/biocontainers/gatk4:" + dockerTag + docker: dockerImage memory: ceil(memory * memoryMultiplier) } } @@ -64,7 +64,7 @@ task BaseRecalibrator { Int memory = 4 Float memoryMultiplier = 3.0 - String dockerTag = "4.1.0.0--0" + String dockerImage = "quay.io/biocontainers/gatk4:4.1.0.0--0" } Array[File]+ knownIndelsSitesVCFsArg = flatten([ @@ -90,7 +90,7 @@ task BaseRecalibrator { } runtime { - docker: "quay.io/biocontainers/gatk4:" + dockerTag + docker: dockerImage memory: ceil(memory * memoryMultiplier) } } @@ -107,7 +107,7 @@ task CombineGVCFs { Int memory = 4 Float memoryMultiplier = 3.0 - String dockerTag = "4.1.0.0--0" + String dockerImage = "quay.io/biocontainers/gatk4:4.1.0.0--0" } command { @@ -127,7 +127,7 @@ task CombineGVCFs { } runtime { - docker: "quay.io/biocontainers/gatk4:" + dockerTag + docker: dockerImage memory: ceil(memory * memoryMultiplier) } } @@ -140,7 +140,7 @@ task GatherBqsrReports { Int memory = 4 Float memoryMultiplier = 3.0 - String dockerTag = "4.1.0.0--0" + String dockerImage = "quay.io/biocontainers/gatk4:4.1.0.0--0" } command { @@ -157,7 +157,7 @@ task GatherBqsrReports { } runtime { - docker: "quay.io/biocontainers/gatk4:" + dockerTag + docker: dockerImage memory: ceil(memory * memoryMultiplier) } } @@ -175,7 +175,7 @@ task GenotypeGVCFs { File? dbsnpVCFIndex Int memory = 6 Float memoryMultiplier = 2.0 - String dockerTag = "4.1.0.0--0" + String dockerImage = "quay.io/biocontainers/gatk4:4.1.0.0--0" } command { @@ -200,7 +200,7 @@ task GenotypeGVCFs { } runtime { - docker: "quay.io/biocontainers/gatk4:" + dockerTag + docker: dockerImage memory: ceil(memory * memoryMultiplier) } } @@ -220,7 +220,7 @@ task HaplotypeCallerGvcf { File? dbsnpVCFIndex Int memory = 4 Float memoryMultiplier = 3 - String dockerTag = "4.1.0.0--0" + String dockerImage = "quay.io/biocontainers/gatk4:4.1.0.0--0" } command { @@ -243,7 +243,7 @@ task HaplotypeCallerGvcf { } runtime { - docker: "quay.io/biocontainers/gatk4:" + dockerTag + docker: dockerImage memory: ceil(memory * memoryMultiplier) } } @@ -263,7 +263,7 @@ task MuTect2 { Int memory = 4 Float memoryMultiplier = 3 - String dockerTag = "4.1.0.0--0" + String dockerImage = "quay.io/biocontainers/gatk4:4.1.0.0--0" } command { @@ -286,7 +286,7 @@ task MuTect2 { } runtime { - docker: "quay.io/biocontainers/gatk4:" + dockerTag + docker: dockerImage memory: ceil(memory * memoryMultiplier) } } @@ -303,7 +303,7 @@ task SplitNCigarReads { Int memory = 4 Float memoryMultiplier = 4 - String dockerTag = "4.1.0.0--0" + String dockerImage = "quay.io/biocontainers/gatk4:4.1.0.0--0" } command { @@ -323,7 +323,7 @@ task SplitNCigarReads { } runtime { - docker: "quay.io/biocontainers/gatk4:" + dockerTag + docker: dockerImage memory: ceil(memory * memoryMultiplier) } } diff --git a/gffcompare.wdl b/gffcompare.wdl index 51fec85b600ae7c0df5c96683a9458901e0759cf..eea15236e77ea0551665f1014055010461d621bf 100644 --- a/gffcompare.wdl +++ b/gffcompare.wdl @@ -2,7 +2,7 @@ version 1.0 task GffCompare { input { - String dockerTag = "0.10.6--h2d50403_0" + String dockerImage = "quay.io/biocontainers/gffcompare:0.10.6--h2d50403_0" File? inputGtfList Array[File] inputGtfFiles File referenceAnnotation @@ -87,6 +87,6 @@ task GffCompare { } runtime { - docker: "quay.io/biocontainers/gffcompare:" + dockerTag + docker: dockerImage } } \ No newline at end of file diff --git a/gffread.wdl b/gffread.wdl index 08b2e8d7cc8195edd0da76a83625a5c91292f58d..da99781b99529b4e452ae301a6eb2e67c6e2ccaf 100644 --- a/gffread.wdl +++ b/gffread.wdl @@ -10,7 +10,7 @@ task GffRead { String? proteinFastaPath String? filteredGffPath Boolean outputGtfFormat = false - String dockerTag = "0.9.12--0" + String dockerImage = "quay.io/biocontainers/gffread:0.9.12--0" } # The mkdirs below are hackish. It should be @@ -41,6 +41,6 @@ task GffRead { } runtime { - docker: "quay.io/biocontainers/gffread:" + dockerTag + docker: dockerImage } } \ No newline at end of file diff --git a/hisat2.wdl b/hisat2.wdl index 0c8417f7ae3592e863477d251a550b7f8457feca..27d9dedf62519f395576168286d7aab7a3b0c5f8 100644 --- a/hisat2.wdl +++ b/hisat2.wdl @@ -14,8 +14,10 @@ task Hisat2 { Int threads = 1 Int memory = 48 + # quay.io/biocontainers/mulled-v2-a97e90b3b802d1da3d6958e0867610c718cb5eb1 + # is a combination of hisat2 and samtools # hisat2=2.1.0, samtools=1.8 - String dockerTag = "2388ff67fc407dad75774291ca5038f40cac4be0-0" + String dockerImage = "quay.io/biocontainers/mulled-v2-a97e90b3b802d1da3d6958e0867610c718cb5eb1:2388ff67fc407dad75774291ca5038f40cac4be0-0" } command { @@ -41,8 +43,6 @@ task Hisat2 { runtime { memory: (memory / threads) + 1 cpu: threads + 1 - # quay.io/biocontainers/mulled-v2-a97e90b3b802d1da3d6958e0867610c718cb5eb1 - # is a combination of hisat2 and samtools - docker: "quay.io/biocontainers/mulled-v2-a97e90b3b802d1da3d6958e0867610c718cb5eb1:" + dockerTag + docker: dockerImage } } \ No newline at end of file diff --git a/htseq.wdl b/htseq.wdl index a687a8a6242b4ec0a8b1dd2b3b46b5a2c49d3923..ed13167cc800627a8370634d667f96022c3bfe5a 100644 --- a/htseq.wdl +++ b/htseq.wdl @@ -11,7 +11,7 @@ task HTSeqCount { String stranded = "no" Int memory = 40 - String dockerTag = "0.9.1--py36h7eb728f_2" + String dockerImage = "quay.io/biocontainers/htseq:0.9.1--py36h7eb728f_2" } command { @@ -32,6 +32,6 @@ task HTSeqCount { runtime { memory: memory - docker: "quay.io/biocontainers/htseq:" + dockerTag + docker: dockerImage } } \ No newline at end of file diff --git a/manta.wdl b/manta.wdl index 759766e33797cbb3479dcf256331709c18fd27f4..f2e1d43d37947ed71c48de543683079fce9bf8a5 100644 --- a/manta.wdl +++ b/manta.wdl @@ -4,31 +4,28 @@ import "common.wdl" task Somatic { input { - IndexedBamFile tumorBam - IndexedBamFile? normalBam - Reference reference - String runDir + File tumorBam + File tumorBamIndex + File? normalBam + File? normalBamIndex + File referenceFasta + File referenceFastaFai + String runDir = "./manta_run" File? callRegions File? callRegionsIndex Boolean exome = false Int cores = 1 Int memory = 4 - String dockerTag = "1.4.0--py27_1" + String dockerImage = "quay.io/biocontainers/manta:1.4.0--py27_1" - File? doNotDefineThis #FIXME } - File? normalBamFile = if defined(normalBam) - then select_first([normalBam]).file - else doNotDefineThis - command { - set -e configManta.py \ - ~{"--normalBam " + normalBamFile} \ - ~{"--tumorBam " + tumorBam.file} \ - --referenceFasta ~{reference.fasta} \ + ~{"--normalBam " + normalBam} \ + ~{"--tumorBam " + tumorBam} \ + --referenceFasta ~{referenceFasta} \ ~{"--callRegions " + callRegions} \ --runDir ~{runDir} \ ~{true="--exome" false="" exome} @@ -40,25 +37,16 @@ task Somatic { } output { - IndexedVcfFile candidateSmallIndels = object { - file: runDir + "/results/variants/candidateSmallIndels.vcf.gz", - index: runDir + "/results/variants/candidateSmallIndels.vcf.gz.tbi" - } - IndexedVcfFile candidateSV = object { - file: runDir + "/results/variants/candidateSV.vcf.gz", - index: runDir + "/results/variants/candidateSV.vcf.gz.tbi" - } - IndexedVcfFile tumorSV = if defined(normalBam) - then object { - file: runDir + "/results/variants/somaticSV.vcf.gz", - index: runDir + "/results/variants/somaticSV.vcf.gz.tbi" - } - else object { - file: runDir + "/results/variants/tumorSV.vcf.gz", - index: runDir + "/results/variants/tumorSV.vcf.gz.tbi" - } - - #FIXME: workaround for https://github.com/broadinstitute/cromwell/issues/4111 + File candidateSmallIndelsVcf = runDir + "/results/variants/candidateSmallIndels.vcf.gz" + File candidateSmallIndelsVcfIndex = runDir + "/results/variants/candidateSmallIndels.vcf.gz.tbi" + File candidateSVVcf = runDir + "/results/variants/candidateSV.vcf.gz" + File candidatSVVcfIndex = runDir + "/results/variants/candidateSV.vcf.gz.tbi" + File tumorSVVcf = if defined(normalBam) + then runDir + "/results/variants/somaticSV.vcf.gz" + else runDir + "/results/variants/tumorSV.vcf.gz" + File tumorSVVcfIndex = if defined(normalBam) + then runDir + "/results/variants/somaticSV.vcf.gz.tbi" + else runDir + "/results/variants/tumorSV.vcf.gz.tbi" File? diploidSV = runDir + "/results/variants/diploidSV.vcf.gz" File? diploidSVindex = runDir + "/results/variants/diploidSV.vcf.gz.tbi" } @@ -66,6 +54,6 @@ task Somatic { runtime { cpu: cores memory: memory - docker: "quay.io/biocontainers/manta:" + dockerTag + docker: dockerImage } } diff --git a/multiqc.wdl b/multiqc.wdl index 76563a494f1998eab5b2f83ac42e5bf7e81a47fe..e7a87e1490931ea84ccf156aa4c54f349d668292 100644 --- a/multiqc.wdl +++ b/multiqc.wdl @@ -2,7 +2,7 @@ version 1.0 task MultiQC { input { - String dockerTag = "1.7--py_1" + String dockerImage = "quay.io/biocontainers/multiqc:1.7--py_1" # Use a string here so cromwell does not relocate an entire analysis directory String analysisDirectory Array[File] dependencies = [] # This must be used in order to run multiqc after these tasks. @@ -86,6 +86,6 @@ task MultiQC { } runtime { - docker: "quay.io/biocontainers/multiqc:" + dockerTag + docker: dockerImage } } diff --git a/picard.wdl b/picard.wdl index 9f42acbd781f47e5cc08a364f15e613bfd9e962a..636386074170edf4b7ba1a73477269c24a7e03d0 100644 --- a/picard.wdl +++ b/picard.wdl @@ -8,7 +8,7 @@ task BedToIntervalList { Int memory = 4 Float memoryMultiplier = 3.0 - String dockerTag = "2.18.26--0" + String dockerImage = "quay.io/biocontainers/picard:2.18.26--0" } command { @@ -26,7 +26,7 @@ task BedToIntervalList { } runtime { - docker: "quay.io/biocontainers/picard:" + dockerTag + docker: dockerImage memory: ceil(memory * memoryMultiplier) } } @@ -52,7 +52,9 @@ task CollectMultipleMetrics { Int memory = 8 Float memoryMultiplier = 4 - String dockerTag = "8dde04faba6c9ac93fae7e846af3bafd2c331b3b-0" + # https://raw.githubusercontent.com/BioContainers/multi-package-containers/80886dfea00f3cd9e7ae2edf4fc42816a10e5403/combinations/mulled-v2-23d9f7c700e78129a769e78521eb86d6b8341923%3A8dde04faba6c9ac93fae7e846af3bafd2c331b3b-0.tsv + # Contains r-base=3.4.1,picard=2.18.2 + String dockerImage = "quay.io/biocontainers/mulled-v2-23d9f7c700e78129a769e78521eb86d6b8341923:8dde04faba6c9ac93fae7e846af3bafd2c331b3b-0" } @@ -109,6 +111,7 @@ task CollectMultipleMetrics { insertSizeHistogramPdf, insertSize, preAdapterDetail, + preAdapterSummary, qualityByCycle, qualityByCyclePdf, qualityDistribution, @@ -118,9 +121,8 @@ task CollectMultipleMetrics { } runtime { - # https://raw.githubusercontent.com/BioContainers/multi-package-containers/80886dfea00f3cd9e7ae2edf4fc42816a10e5403/combinations/mulled-v2-23d9f7c700e78129a769e78521eb86d6b8341923%3A8dde04faba6c9ac93fae7e846af3bafd2c331b3b-0.tsv - # Contains r-base=3.4.1,picard=2.18.2 - docker: "quay.io/biocontainers/mulled-v2-23d9f7c700e78129a769e78521eb86d6b8341923:" + dockerTag + + docker: dockerImage memory: ceil(memory * memoryMultiplier) } } @@ -135,7 +137,9 @@ task CollectRnaSeqMetrics { Int memory = 8 Float memoryMultiplier = 4.0 - String dockerTag = "8dde04faba6c9ac93fae7e846af3bafd2c331b3b-0" + # https://raw.githubusercontent.com/BioContainers/multi-package-containers/80886dfea00f3cd9e7ae2edf4fc42816a10e5403/combinations/mulled-v2-23d9f7c700e78129a769e78521eb86d6b8341923%3A8dde04faba6c9ac93fae7e846af3bafd2c331b3b-0.tsv + # Contains r-base=3.4.1,picard=2.18.2 + String dockerImage = "quay.io/biocontainers/mulled-v2-23d9f7c700e78129a769e78521eb86d6b8341923:8dde04faba6c9ac93fae7e846af3bafd2c331b3b-0" } command { @@ -156,9 +160,7 @@ task CollectRnaSeqMetrics { } runtime { - # https://raw.githubusercontent.com/BioContainers/multi-package-containers/80886dfea00f3cd9e7ae2edf4fc42816a10e5403/combinations/mulled-v2-23d9f7c700e78129a769e78521eb86d6b8341923%3A8dde04faba6c9ac93fae7e846af3bafd2c331b3b-0.tsv - # Contains r-base=3.4.1,picard=2.18.2 - docker: "quay.io/biocontainers/mulled-v2-23d9f7c700e78129a769e78521eb86d6b8341923:" + dockerTag + docker: dockerImage memory: ceil(memory * memoryMultiplier) } } @@ -176,7 +178,7 @@ task CollectTargetedPcrMetrics { Int memory = 4 Float memoryMultiplier = 3.0 - String dockerTag = "2.18.26--0" + String dockerImage = "quay.io/biocontainers/picard:2.18.26--0" } command { @@ -200,7 +202,7 @@ task CollectTargetedPcrMetrics { } runtime { - docker: "quay.io/biocontainers/picard:" + dockerTag + docker: dockerImage memory: ceil(memory * memoryMultiplier) } } @@ -214,7 +216,7 @@ task GatherBamFiles { Int memory = 4 Float memoryMultiplier = 3.0 - String dockerTag = "2.18.26--0" + String dockerImage = "quay.io/biocontainers/picard:2.18.26--0" } command { @@ -235,7 +237,7 @@ task GatherBamFiles { } runtime { - docker: "quay.io/biocontainers/picard:" + dockerTag + docker: dockerImage memory: ceil(memory * memoryMultiplier) } } @@ -248,7 +250,7 @@ task GatherVcfs { Int memory = 4 Float memoryMultiplier = 3.0 - String dockerTag = "2.18.26--0" + String dockerImage = "quay.io/biocontainers/picard:2.18.26--0" } command { @@ -265,7 +267,7 @@ task GatherVcfs { } runtime { - docker: "quay.io/biocontainers/picard:" + dockerTag + docker: dockerImage memory: ceil(memory * memoryMultiplier) } } @@ -280,7 +282,7 @@ task MarkDuplicates { Int memory = 8 Float memoryMultiplier = 3.0 - String dockerTag = "2.18.26--0" + String dockerImage = "quay.io/biocontainers/picard:2.18.26--0" # The program default for READ_NAME_REGEX is appropriate in nearly every case. # Sometimes we wish to supply "null" in order to turn off optical duplicate detection @@ -319,7 +321,7 @@ task MarkDuplicates { } runtime { - docker: "quay.io/biocontainers/picard:" + dockerTag + docker: dockerImage memory: ceil(memory * memoryMultiplier) } } @@ -333,7 +335,7 @@ task MergeVCFs { Int memory = 8 Float memoryMultiplier = 3.0 - String dockerTag = "2.18.26--0" + String dockerImage = "quay.io/biocontainers/picard:2.18.26--0" } # Using MergeVcfs instead of GatherVcfs so we can create indices @@ -354,7 +356,7 @@ task MergeVCFs { } runtime { - docker: "quay.io/biocontainers/picard:" + dockerTag + docker: dockerImage memory: ceil(memory * memoryMultiplier) } } @@ -369,7 +371,7 @@ task SamToFastq { Int memory = 16 # High memory default to avoid crashes. Float memoryMultiplier = 3.0 - String dockerTag = "2.18.26--0" + String dockerImage = "quay.io/biocontainers/picard:2.18.26--0" } command { @@ -389,7 +391,7 @@ task SamToFastq { } runtime { - docker: "quay.io/biocontainers/picard:" + dockerTag + docker: dockerImage memory: ceil(memory * memoryMultiplier) } } @@ -401,7 +403,7 @@ task ScatterIntervalList { Int memory = 4 Float memoryMultiplier = 3.0 - String dockerTag = "2.18.26--0" + String dockerImage = "quay.io/biocontainers/picard:2.18.26--0" } command { @@ -423,7 +425,7 @@ task ScatterIntervalList { } runtime { - docker: "quay.io/biocontainers/picard:" + dockerTag + docker: dockerImage memory: ceil(memory * memoryMultiplier) } } @@ -436,7 +438,7 @@ task SortVcf { Int memory = 8 Float memoryMultiplier = 3.0 - String dockerTag = "2.18.26--0" + String dockerImage = "quay.io/biocontainers/picard:2.18.26--0" } @@ -456,7 +458,7 @@ task SortVcf { } runtime { - docker: "quay.io/biocontainers/picard:" + dockerTag + docker: dockerImage memory: ceil(memory * memoryMultiplier) } } \ No newline at end of file diff --git a/samtools.wdl b/samtools.wdl index a78f55353d5235463b8e3d9f9e255858c6861676..da7d57026b07ba01a2e7fd29bc36f97c3fcb8ac8 100644 --- a/samtools.wdl +++ b/samtools.wdl @@ -6,13 +6,14 @@ task BgzipAndIndex { String outputDir String type = "vcf" - String dockerTag = "0.2.6--ha92aebf_0" + String dockerImage = "quay.io/biocontainers/tabix:0.2.6--ha92aebf_0" } String outputGz = outputDir + "/" + basename(inputFile) + ".gz" command { set -e + mkdir -p $(dirname ~{outputGz}) bgzip -c ~{inputFile} > ~{outputGz} tabix ~{outputGz} -p ~{type} } @@ -23,29 +24,40 @@ task BgzipAndIndex { } runtime { - docker: "quay.io/biocontainers/tabix:" + dockerTag + docker: dockerImage } } task Index { input { File bamFile - String bamIndexPath - - String dockerTag = "1.8--h46bd0b3_5" + String outputBamPath = basename(bamFile) + String dockerImage = "quay.io/biocontainers/samtools:1.8--h46bd0b3_5" } + # Select_first is needed, otherwise womtool validate fails. + String bamIndexPath = sub(select_first([outputBamPath]), "\.bam$", ".bai") + command { - samtools index ~{bamFile} ~{bamIndexPath} + bash -c ' + set -e + # Make sure outputBamPath does not exist. + if [ ! -f ~{outputBamPath} ] + then + mkdir -p $(dirname ~{outputBamPath}) + ln ~{bamFile} ~{outputBamPath} + fi + samtools index ~{outputBamPath} ~{bamIndexPath} + ' } output { - File indexedBam = bamFile - File index = bamIndexPath + File indexedBam = outputBamPath + File index = bamIndexPath } runtime { - docker: "quay.io/biocontainers/samtools:" + dockerTag + docker: dockerImage } } @@ -55,7 +67,7 @@ task Merge { String outputBamPath = "merged.bam" Boolean force = true - String dockerTag = "1.8--h46bd0b3_5" + String dockerImage = "quay.io/biocontainers/samtools:1.8--h46bd0b3_5" } String indexPath = sub(outputBamPath, "\.bam$",".bai") @@ -72,7 +84,7 @@ task Merge { } runtime { - docker: "quay.io/biocontainers/samtools:" + dockerTag + docker: dockerImage } } @@ -81,10 +93,12 @@ task Markdup { File inputBam String outputBamPath - String dockerTag = "1.8--h46bd0b3_5" + String dockerImage = "quay.io/biocontainers/samtools:1.8--h46bd0b3_5" } command { + set -e + mkdir -p $(dirname ~{outputBamPath}) samtools markdup ~{inputBam} ~{outputBamPath} } @@ -93,7 +107,7 @@ task Markdup { } runtime { - docker: "quay.io/biocontainers/samtools:" + dockerTag + docker: dockerImage } } @@ -102,7 +116,7 @@ task Flagstat { File inputBam String outputPath - String dockerTag = "1.8--h46bd0b3_5" + String dockerImage = "quay.io/biocontainers/samtools:1.8--h46bd0b3_5" } command { @@ -116,7 +130,7 @@ task Flagstat { } runtime { - docker: "quay.io/biocontainers/samtools:" + dockerTag + docker: dockerImage } } @@ -135,7 +149,7 @@ task Fastq { Int threads = 1 Int memory = 1 - String dockerTag = "1.8--h46bd0b3_5" + String dockerImage = "quay.io/biocontainers/samtools:1.8--h46bd0b3_5" } command { @@ -162,7 +176,7 @@ task Fastq { runtime { cpu: threads memory: memory - docker: "quay.io/biocontainers/samtools:" + dockerTag + docker: dockerImage } parameter_meta { @@ -181,7 +195,7 @@ task Tabix { File inputFile String outputFilePath = "indexed.vcf.gz" String type = "vcf" - String dockerTag = "0.2.6--ha92aebf_0" + String dockerImage = "quay.io/biocontainers/tabix:0.2.6--ha92aebf_0" } # FIXME: It is better to do the indexing on VCF creation. Not in a separate task. With file localization this gets hairy fast. command { @@ -200,7 +214,7 @@ task Tabix { } runtime { - docker: "quay.io/biocontainers/tabix:" + dockerTag + docker: dockerImage } } @@ -218,10 +232,12 @@ task View { Int threads = 1 Int memory = 1 - String dockerTag = "1.8--h46bd0b3_5" + String dockerImage = "quay.io/biocontainers/samtools:1.8--h46bd0b3_5" } command { + set -e + mkdir -p $(dirname ~{outputFileName}) samtools view \ ~{"-T " + referenceFasta} \ ~{"-o " + outputFileName} \ @@ -242,6 +258,6 @@ task View { runtime { cpu: threads memory: memory - docker: "quay.io/biocontainers/samtools:" + dockerTag + docker: dockerImage } } diff --git a/somaticseq.wdl b/somaticseq.wdl index 77d068191c3299c1a7ef67c79ee220e86c8c8533..d1163b4a1fcda41b45f9e3a12e7eb5b2ad16c882 100644 --- a/somaticseq.wdl +++ b/somaticseq.wdl @@ -1,7 +1,5 @@ version 1.0 -import "common.wdl" as common - task ParallelPaired { input { String installDir = "/opt/somaticseq" #the location in the docker image @@ -9,11 +7,14 @@ task ParallelPaired { File? classifierSNV File? classifierIndel String outputDir - Reference reference + File referenceFasta + File referenceFastaFai File? inclusionRegion File? exclusionRegion - IndexedBamFile tumorBam - IndexedBamFile normalBam + File tumorBam + File tumorBamIndex + File normalBam + File normalBamIndex File? mutect2VCF File? varscanSNV File? varscanIndel @@ -28,6 +29,7 @@ task ParallelPaired { File? strelkaIndel Int threads = 1 + String dockerImage = "lethalfang/somaticseq:3.1.0" } command { @@ -35,13 +37,13 @@ task ParallelPaired { ~{"--classifier-snv " + classifierSNV} \ ~{"--classifier-indel " + classifierIndel} \ --output-directory ~{outputDir} \ - --genome-reference ~{reference.fasta} \ + --genome-reference ~{referenceFasta} \ ~{"--inclusion-region " + inclusionRegion} \ ~{"--exclusion-region " + exclusionRegion} \ --threads ~{threads} \ paired \ - --tumor-bam-file ~{tumorBam.file} \ - --normal-bam-file ~{normalBam.file} \ + --tumor-bam-file ~{tumorBam} \ + --normal-bam-file ~{normalBam} \ ~{"--mutect2-vcf " + mutect2VCF} \ ~{"--varscan-snv " + varscanSNV} \ ~{"--varscan-indel " + varscanIndel} \ @@ -69,7 +71,7 @@ task ParallelPaired { runtime { cpu: threads - docker: "lethalfang/somaticseq:3.1.0" + docker: dockerImage } } @@ -80,11 +82,14 @@ task ParallelPairedTrain { File truthSNV File truthIndel String outputDir - Reference reference + File referenceFasta + File referenceFastaFai File? inclusionRegion File? exclusionRegion - IndexedBamFile tumorBam - IndexedBamFile normalBam + File tumorBam + File tumorBamIndex + File normalBam + File normalBamIndex File? mutect2VCF File? varscanSNV File? varscanIndel @@ -99,6 +104,7 @@ task ParallelPairedTrain { File? strelkaIndel Int threads = 1 + String dockerImage = "lethalfang/somaticseq:3.1.0" } command { @@ -107,13 +113,13 @@ task ParallelPairedTrain { --truth-snv ~{truthSNV} \ --truth-indel ~{truthIndel} \ --output-directory ~{outputDir} \ - --genome-reference ~{reference.fasta} \ + --genome-reference ~{referenceFasta} \ ~{"--inclusion-region " + inclusionRegion} \ ~{"--exclusion-region " + exclusionRegion} \ --threads ~{threads} \ paired \ - --tumor-bam-file ~{tumorBam.file} \ - --normal-bam-file ~{normalBam.file} \ + --tumor-bam-file ~{tumorBam} \ + --normal-bam-file ~{normalBam} \ ~{"--mutect2-vcf " + mutect2VCF} \ ~{"--varscan-snv " + varscanSNV} \ ~{"--varscan-indel " + varscanIndel} \ @@ -139,7 +145,7 @@ task ParallelPairedTrain { runtime { cpu: threads - docker: "lethalfang/somaticseq:3.1.0" + docker: dockerImage } } @@ -150,10 +156,12 @@ task ParallelSingle { File? classifierSNV File? classifierIndel String outputDir - Reference reference + File referenceFasta + File referenceFastaFai File? inclusionRegion File? exclusionRegion - IndexedBamFile bam + File bam + File bamIndex File? mutect2VCF File? varscanVCF File? vardictVCF @@ -162,6 +170,7 @@ task ParallelSingle { File? strelkaVCF Int threads = 1 + String dockerImage = "lethalfang/somaticseq:3.1.0" } command { @@ -169,12 +178,12 @@ task ParallelSingle { ~{"--classifier-snv " + classifierSNV} \ ~{"--classifier-indel " + classifierIndel} \ --output-directory ~{outputDir} \ - --genome-reference ~{reference.fasta} \ + --genome-reference ~{referenceFasta} \ ~{"--inclusion-region " + inclusionRegion} \ ~{"--exclusion-region " + exclusionRegion} \ --threads ~{threads} \ single \ - --bam-file ~{bam.file} \ + --bam-file ~{bam} \ ~{"--mutect2-vcf " + mutect2VCF} \ ~{"--varscan-vcf " + varscanVCF} \ ~{"--vardict-vcf " + vardictVCF} \ @@ -196,7 +205,7 @@ task ParallelSingle { runtime { cpu: threads - docker: "lethalfang/somaticseq:3.1.0" + docker: dockerImage } } @@ -207,10 +216,12 @@ task ParallelSingleTrain { File truthSNV File truthIndel String outputDir - Reference reference + File referenceFasta + File referenceFastaFai File? inclusionRegion File? exclusionRegion - IndexedBamFile bam + File bam + File bamIndex File? mutect2VCF File? varscanVCF File? vardictVCF @@ -219,6 +230,7 @@ task ParallelSingleTrain { File? strelkaVCF Int threads = 1 + String dockerImage = "lethalfang/somaticseq:3.1.0" } command { @@ -227,12 +239,12 @@ task ParallelSingleTrain { --truth-snv ~{truthSNV} \ --truth-indel ~{truthIndel} \ --output-directory ~{outputDir} \ - --genome-reference ~{reference.fasta} \ + --genome-reference ~{referenceFasta} \ ~{"--inclusion-region " + inclusionRegion} \ ~{"--exclusion-region " + exclusionRegion} \ --threads ~{threads} \ single \ - --bam-file ~{bam.file} \ + --bam-file ~{bam} \ ~{"--mutect2-vcf " + mutect2VCF} \ ~{"--varscan-vcf " + varscanVCF} \ ~{"--vardict-vcf " + vardictVCF} \ @@ -252,6 +264,6 @@ task ParallelSingleTrain { runtime { cpu: threads - docker: "lethalfang/somaticseq:3.1.0" + docker: dockerImage } } diff --git a/star.wdl b/star.wdl index edc57155ee89b240e7aed5644fc3294159899406..e518715a82dc3b5adab775d3afba4391ec570c70 100644 --- a/star.wdl +++ b/star.wdl @@ -16,7 +16,7 @@ task Star { Int runThreadN = 4 Int memory = 48 - String dockerTag = "2.6.0c--0" + String dockerImage = "quay.io/biocontainers/star:2.6.0c--0" } #TODO Needs to be extended for all possible output extensions @@ -48,7 +48,7 @@ task Star { # Return memory per CPU here due to SGE backend. # Can also work with slurms mem-per-cpu flag memory: (memory / runThreadN) + 1 - docker: "quay.io/biocontainers/star:" + dockerTag + docker: dockerImage } } diff --git a/strelka.wdl b/strelka.wdl index 398631100824f8586c970cb327346f8886337e6d..f5cd525df88e1569b17c9f304264fc1cb5d202c1 100644 --- a/strelka.wdl +++ b/strelka.wdl @@ -4,10 +4,11 @@ import "common.wdl" as common task Germline { input { - String runDir + String runDir = "./strelka_run" Array[File]+ bams Array[File]+ indexes - Reference reference + File referenceFasta + File referenceFastaFai File? callRegions File? callRegionsIndex Boolean exome = false @@ -15,14 +16,13 @@ task Germline { Int cores = 1 Int memory = 4 - String dockerTag = "2.9.7--0" + String dockerImage = "quay.io/biocontainers/strelka:2.9.7--0" } command { - set -e configureStrelkaGermlineWorkflow.py \ --bam ~{sep=" --bam " bams} \ - --ref ~{reference.fasta} \ + --ref ~{referenceFasta} \ --runDir ~{runDir} \ ~{"--callRegions " + callRegions} \ ~{true="--exome" false="" exome} \ @@ -40,7 +40,7 @@ task Germline { } runtime { - docker: "quay.io/biocontainers/strelka:" + dockerTag + docker: dockerImage cpu: cores memory: memory } @@ -48,35 +48,34 @@ task Germline { task Somatic { input { - String runDir - IndexedBamFile normalBam - IndexedBamFile tumorBam - Reference reference + String runDir = "./strelka_run" + File normalBam + File normalBamIndex + File tumorBam + File tumorBamIndex + File referenceFasta + File referenceFastaFai File? callRegions File? callRegionsIndex - IndexedVcfFile? indelCandidates + File? indelCandidatesVcf + File? indelCandidatesVcfIndex Boolean exome = false Int cores = 1 Int memory = 4 - String dockerTag = "2.9.7--0" + String dockerImage = "quay.io/biocontainers/strelka:2.9.7--0" File? doNotDefineThis #FIXME } - File? indelCandidatesFile = if (defined(indelCandidates)) - then select_first([indelCandidates]).file - else doNotDefineThis - command { - set -e configureStrelkaSomaticWorkflow.py \ - --normalBam ~{normalBam.file} \ - --tumorBam ~{tumorBam.file} \ - --ref ~{reference.fasta} \ + --normalBam ~{normalBam} \ + --tumorBam ~{tumorBam} \ + --ref ~{referenceFasta} \ --runDir ~{runDir} \ ~{"--callRegions " + callRegions} \ - ~{"--indelCandidates " + indelCandidatesFile} \ + ~{"--indelCandidates " + indelCandidatesVcf} \ ~{true="--exome" false="" exome} ~{runDir}/runWorkflow.py \ @@ -93,7 +92,7 @@ task Somatic { } runtime { - docker: "quay.io/biocontainers/strelka:" + dockerTag + docker: dockerImage cpu: cores memory: memory } diff --git a/stringtie.wdl b/stringtie.wdl index a66101d116f3f5fb64c794307b76bb04f61271dc..9c7c1013c124187ba777629099d92508a68483de 100644 --- a/stringtie.wdl +++ b/stringtie.wdl @@ -1,10 +1,9 @@ version 1.0 -import "common.wdl" - task Stringtie { input { - IndexedBamFile bamFile + File bam + File bamIndex File? referenceGtf Boolean skipNovelTranscripts = false String assembledTranscriptsFile @@ -14,7 +13,7 @@ task Stringtie { Int threads = 1 Int memory = 10 - String dockerTag = "1.3.4--py35_0" + String dockerImage = "quay.io/biocontainers/stringtie:1.3.4--py35_0" } command { @@ -28,7 +27,7 @@ task Stringtie { ~{true="--fr" false="" secondStranded} \ -o ~{assembledTranscriptsFile} \ ~{"-A " + geneAbundanceFile} \ - ~{bamFile.file} + ~{bam} } output { @@ -39,7 +38,7 @@ task Stringtie { runtime { cpu: threads memory: memory - docker: "quay.io/biocontainers/stringtie:" + dockerTag + docker: dockerImage } } @@ -57,7 +56,7 @@ task Merge { String? label Int memory = 10 - String dockerTag = "1.3.4--py35_0" + String dockerImage = "quay.io/biocontainers/stringtie:1.3.4--py35_0" } command { @@ -82,6 +81,6 @@ task Merge { runtime { memory: memory - docker: "quay.io/biocontainers/stringtie:" + dockerTag + docker: dockerImage } } diff --git a/vardict.wdl b/vardict.wdl index 05398995ee139420fb40a6dd7983f969c5148a0b..0cbf38acd7a69f22e4b760f7f17932f585a52852 100644 --- a/vardict.wdl +++ b/vardict.wdl @@ -5,10 +5,13 @@ import "common.wdl" task VarDict { input { String tumorSampleName - IndexedBamFile tumorBam + File tumorBam + File tumorBamIndex String? normalSampleName - IndexedBamFile? normalBam - Reference reference + File? normalBam + File? normalBamIndex + File referenceFasta + File referenceFastaFai File bedFile String outputVcf @@ -20,23 +23,18 @@ task VarDict { Int threads = 1 Int memory = 16 Float memoryMultiplier = 2.5 - String dockerTag = "1.5.8--1" + String dockerImage = "quay.io/biocontainers/vardict-java:1.5.8--1" - File? doNotDefineThis #FIXME } - File? normalBamFile = if defined(normalBam) - then select_first([normalBam]).file - else doNotDefineThis - command { set -e -o pipefail export JAVA_OPTS="-Xmx~{memory}G" vardict-java \ ~{"-th " + threads} \ - -G ~{reference.fasta} \ + -G ~{referenceFasta} \ -N ~{tumorSampleName} \ - -b "~{tumorBam.file}~{"|" + normalBamFile}" \ + -b "~{tumorBam}~{"|" + normalBam}" \ ~{true="" false="-z" defined(normalBam)} \ -c ~{chromosomeColumn} \ -S ~{startColumn} \ @@ -57,6 +55,6 @@ task VarDict { runtime { cpu: threads + 2 memory: ceil(memory * memoryMultiplier) - docker: "quay.io/biocontainers/vardict-java:" + dockerTag + docker: dockerImage } }