diff --git a/CPAT.wdl b/CPAT.wdl index 098d9ca61cc84de480f0a407868541937def3650..8d212b074fe7896ea8eee03b389825a00a4904a1 100644 --- a/CPAT.wdl +++ b/CPAT.wdl @@ -31,6 +31,7 @@ task CPAT { # CPAT should not index the reference genome. Array[String]? startCodons Array[String]? stopCodons + Int timeMinutes = 1 + ceil(size(gene, "G") * 30) String dockerImage = "biocontainers/cpat:v1.2.4_cv1" } @@ -55,6 +56,7 @@ task CPAT { runtime { docker: dockerImage + time_minutes: timeMinutes } parameter_meta { @@ -67,6 +69,7 @@ task CPAT { category: "advanced"} startCodons: {description: "Equivalent to CPAT's `--start` option.", category: "advanced"} stopCodons: {description: "Equivalent to CPAT's `--stop` option.", category: "advanced"} + timeMinutes: {description: "The maximum amount of time the job will run in minutes.", category: "advanced"} dockerImage: {description: "The docker image used for this task. Changing this may result in errors which the developers may choose not to address.", category: "advanced"} } diff --git a/bcftools.wdl b/bcftools.wdl index d923885db5bf3cc1c07099fe29fba605d4690083..53165c6be2118579bc1705a11577b52e80c8591e 100644 --- a/bcftools.wdl +++ b/bcftools.wdl @@ -27,7 +27,7 @@ task Bcf2Vcf { File bcf String outputPath = "./bcftools/SV.vcf" String memory = "2G" - Int timeMinutes = ceil(size(bcf, "G")) + Int timeMinutes = 1 + ceil(size(bcf, "G")) String dockerImage = "quay.io/biocontainers/bcftools:1.9--ha228f0b_3" } diff --git a/bedtools.wdl b/bedtools.wdl index 4f39e2a8907b3b8a713373a562e466905f727587..99bb351edce2583eb0835fac39a98ffcf654343f 100644 --- a/bedtools.wdl +++ b/bedtools.wdl @@ -24,8 +24,10 @@ task Complement { input { File faidx File inputBed - String dockerImage = "quay.io/biocontainers/bedtools:2.23.0--hdbcaa40_3" String outputBed = basename(inputBed, "\.bed") + ".complement.bed" + String memory = "2G" + Int timeMinutes = 1 + ceil(size([inputBed, faidx], "G")) + String dockerImage = "quay.io/biocontainers/bedtools:2.23.0--hdbcaa40_3" } # Use a fasta index file to get the genome sizes. And convert that to the @@ -44,20 +46,19 @@ task Complement { } runtime { + memory: memory + time_minutes: timeMinutes docker: dockerImage } parameter_meta { - faidx: {description: "The fasta index (.fai) file from which to extract the genome sizes", - category: "required"} - inputBed: {description: "The inputBed to complement", - category: "required"} - outputBed: {description: "The path to write the output to", - category: "advanced"} - dockerImage: { - description: "The docker image used for this task. Changing this may result in errors which the developers may choose not to address.", - category: "advanced" - } + faidx: {description: "The fasta index (.fai) file from which to extract the genome sizes.", category: "required"} + inputBed: {description: "The inputBed to complement.", category: "required"} + outputBed: {description: "The path to write the output to.", category: "advanced"} + memory: {description: "The amount of memory needed for the job.", category: "advanced"} + timeMinutes: {description: "The maximum amount of time the job will run in minutes.", category: "advanced"} + dockerImage: {description: "The docker image used for this task. Changing this may result in errors which the developers may choose not to address.", + category: "advanced"} } } @@ -97,6 +98,8 @@ task MergeBedFiles { input { Array[File]+ bedFiles String outputBed = "merged.bed" + String memory = "2G" + Int timeMinutes = 1 + ceil(size(bedFiles, "G")) String dockerImage = "quay.io/biocontainers/bedtools:2.23.0--hdbcaa40_3" } @@ -111,17 +114,17 @@ task MergeBedFiles { } runtime { + memory: memory + time_minutes: timeMinutes docker: dockerImage } parameter_meta { - bedFiles: {description: "The bed files to merge", - category: "required"} - outputBed: {description: "The path to write the output to", - category: "advanced"} - dockerImage: { - description: "The docker image used for this task. Changing this may result in errors which the developers may choose not to address.", - category: "advanced" - } + bedFiles: {description: "The bed files to merge.", category: "required"} + outputBed: {description: "The path to write the output to.", category: "advanced"} + memory: {description: "The amount of memory needed for the job.", category: "advanced"} + timeMinutes: {description: "The maximum amount of time the job will run in minutes.", category: "advanced"} + dockerImage: {description: "The docker image used for this task. Changing this may result in errors which the developers may choose not to address.", + category: "advanced"} } } @@ -172,6 +175,8 @@ task Intersect { # Giving a faidx file will set the sorted option. File? faidx String outputBed = "intersect.bed" + String memory = "2G" + Int timeMinutes = 1 + ceil([regionsA, regionsB], "G")) String dockerImage = "quay.io/biocontainers/bedtools:2.23.0--hdbcaa40_3" } Boolean sorted = defined(faidx) @@ -192,21 +197,20 @@ task Intersect { } runtime { + memory: memory + time_minutes: timeMinutes docker: dockerImage } parameter_meta { faidx: {description: "The fasta index (.fai) file that is used to create the genome file required for sorted output. Implies sorted option.", category: "common"} - regionsA: {description: "Region file a to intersect", - category: "required"} - regionsB: {description: "Region file b to intersect", - category: "required"} - outputBed: {description: "The path to write the output to", - category: "advanced"} - dockerImage: { - description: "The docker image used for this task. Changing this may result in errors which the developers may choose not to address.", - category: "advanced" - } + regionsA: {description: "Region file a to intersect", category: "required"} + regionsB: {description: "Region file b to intersect", category: "required"} + outputBed: {description: "The path to write the output to", category: "advanced"} + memory: {description: "The amount of memory needed for the job.", category: "advanced"} + timeMinutes: {description: "The maximum amount of time the job will run in minutes.", category: "advanced"} + dockerImage: {description: "The docker image used for this task. Changing this may result in errors which the developers may choose not to address.", + category: "advanced"} } } diff --git a/bowtie.wdl b/bowtie.wdl index 94a809fa6787d85eb355c38f969f02285b74a004..87427e7dc1261aff0473bd353958719710761ff0 100644 --- a/bowtie.wdl +++ b/bowtie.wdl @@ -37,7 +37,7 @@ task Bowtie { String? samRG Int threads = 1 - Int timeMinutes = ceil(size(flatten([readsUpstream, readsDownstream]), "G") * 300 / threads) + Int timeMinutes = 1 + ceil(size(flatten([readsUpstream, readsDownstream]), "G") * 300 / threads) String memory = "10G" String picardXmx = "4G" # Image contains bowtie=1.2.2 and picard=2.9.2 diff --git a/bwa.wdl b/bwa.wdl index 247386d87c8df17d2ec5d161d2323d7f280ece01..a39eb3e9ffc3b4ddb2180c2a4a2d712f00efe56d 100644 --- a/bwa.wdl +++ b/bwa.wdl @@ -31,7 +31,7 @@ task Mem { Int threads = 4 String memory = "20G" String picardXmx = "4G" - Int timeMinutes = ceil(size([read1, read2], "G") * 200 / threads) + Int timeMinutes = 1 + ceil(size([read1, read2], "G") * 200 / threads) # 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" @@ -100,7 +100,7 @@ task Kit { String sortMemoryPerThread = "4G" Int compressionLevel = 1 String memory = "20G" - Int timeMinutes = ceil(size([read1, read2], "G") * 220 / threads) + Int timeMinutes = 1 + ceil(size([read1, read2], "G") * 220 / threads) String dockerImage = "biocontainers/bwakit:v0.7.15_cv1" } diff --git a/clever.wdl b/clever.wdl index 2da9f4d2922435698f25f8580a1727b7a24fc141..7e1eac4686b72263de74c457831b03152742836d 100644 --- a/clever.wdl +++ b/clever.wdl @@ -78,6 +78,7 @@ task Mateclever { outputPath: {description: "The location the output VCF file should be written.", category: "common"} threads: {description: "The the number of threads required to run a program", category: "advanced"} memory: {description: "The memory required to run the programs", category: "advanced"} + timeMinutes: {description: "The maximum amount of time the job will run in minutes.", category: "advanced"} dockerImage: {description: "The docker image used for this task. Changing this may result in errors which the developers may choose not to address.", category: "advanced"} } } diff --git a/cutadapt.wdl b/cutadapt.wdl index 421259d9bf28b5a54e33d929c2f4e3b39977f5bd..ad32ff21aff4958f9955628753a7b68468a855cd 100644 --- a/cutadapt.wdl +++ b/cutadapt.wdl @@ -173,227 +173,70 @@ task Cutadapt { } parameter_meta { - read1: { - description: "The first or single end fastq file to be run through cutadapt.", - category: "required" - } - read2: { - description: "An optional second end fastq file to be run through cutadapt.", - category: "common" - } - read1output: { - description: "The name of the resulting first or single end fastq file.", - category: "common" - } - read2output: { - description: "The name of the resulting second end fastq file.", - category: "common" - } - adapter: { - description: "A list of 3' ligated adapter sequences to be cut from the given first or single end fastq file.", - category: "common" - } - front: { - description: "A list of 5' ligated adapter sequences to be cut from the given first or single end fastq file.", - category: "advanced" - } - anywhere: { - description: "A list of 3' or 5' ligated adapter sequences to be cut from the given first or single end fastq file.", - category: "advanced" - } - adapterRead2: { - description: "A list of 3' ligated adapter sequences to be cut from the given second end fastq file.", - category: "common" - } - frontRead2: { - description: "A list of 5' ligated adapter sequences to be cut from the given second end fastq file.", - category: "advanced" - } - anywhereRead2: { - description: "A list of 3' or 5' ligated adapter sequences to be cut from the given second end fastq file.", - category: "advanced" - } - interleaved: { - description: "Equivalent to cutadapt's --interleaved flag.", - category: "advanced" - } - pairFilter: { - description: "Equivalent to cutadapt's --pair-filter option.", - category: "advanced" - } - errorRate: { - description: "Equivalent to cutadapt's --error-rate option.", - category: "advanced" - } - noIndels: { - description: "Equivalent to cutadapt's --no-indels flag.", - category: "advanced" - } - times: { - description: "Equivalent to cutadapt's --times option.", - category: "advanced" - } - overlap: { - description: "Equivalent to cutadapt's --overlap option.", - category: "advanced" - } - matchReadWildcards: { - description: "Equivalent to cutadapt's --match-read-wildcards flag.", - category: "advanced" - } - noMatchAdapterWildcards: { - description: "Equivalent to cutadapt's --no-match-adapter-wildcards flag.", - category: "advanced" - } - noTrim: { - description: "Equivalent to cutadapt's --no-trim flag.", - category: "advanced" - } - maskAdapter: { - description: "Equivalent to cutadapt's --mask-adapter flag.", - category: "advanced" - } - cut: { - description: "Equivalent to cutadapt's --cut option.", - category: "advanced" - } - nextseqTrim: { - description: "Equivalent to cutadapt's --nextseq-trim option.", - category: "advanced" - } - qualityCutoff: { - description: "Equivalent to cutadapt's --quality-cutoff option.", - category: "advanced" - } - qualityBase: { - description: "Equivalent to cutadapt's --quality-base option.", - category: "advanced" - } - length: { - description: "Equivalent to cutadapt's --length option.", - category: "advanced" - } - trimN: { - description: "Equivalent to cutadapt's --trim-n flag.", - category: "advanced" - } - lengthTag: { - description: "Equivalent to cutadapt's --length-tag option.", - category: "advanced" - } - stripSuffix: { - description: "Equivalent to cutadapt's --strip-suffix option.", - category: "advanced" - } - prefix: { - description: "Equivalent to cutadapt's --prefix option.", - category: "advanced" - } - suffix: { - description: "Equivalent to cutadapt's --suffix option.", - category: "advanced" - } - minimumLength: { - description: "Equivalent to cutadapt's --minimum-length option.", - category: "advanced" - } - maximumLength: { - description: "Equivalent to cutadapt's --maximum-length option.", - category: "advanced" - } - maxN: { - description: "Equivalent to cutadapt's --max-n option.", - category: "advanced" - } - discardTrimmed: { - description: "Equivalent to cutadapt's --quality-cutoff option.", - category: "advanced" - } - discardUntrimmed: { - description: "Equivalent to cutadapt's --discard-untrimmed option.", - category: "advanced" - } - infoFilePath: { - description: "Equivalent to cutadapt's --info-file option.", - category: "advanced" - } - restFilePath: { - description: "Equivalent to cutadapt's --rest-file option.", - category: "advanced" - } - wildcardFilePath: { - description: "Equivalent to cutadapt's --wildcard-file option.", - category: "advanced" - } - tooShortOutputPath: { - description: "Equivalent to cutadapt's --too-short-output option.", - category: "advanced" - } - tooLongOutputPath: { - description: "Equivalent to cutadapt's --too-long-output option.", - category: "advanced" - } - untrimmedOutputPath: { - description: "Equivalent to cutadapt's --untrimmed-output option.", - category: "advanced" - } - tooShortPairedOutputPath: { - description: "Equivalent to cutadapt's --too-short-paired-output option.", - category: "advanced" - } - tooLongPairedOutputPath: { - description: "Equivalent to cutadapt's --too-long-paired-output option.", - category: "advanced" - } - untrimmedPairedOutputPath: { - description: "Equivalent to cutadapt's --untrimmed-paired-output option.", - category: "advanced" - } - colorspace: { - description: "Equivalent to cutadapt's --colorspace flag.", - category: "advanced" - } - doubleEncode: { - description: "Equivalent to cutadapt's --double-encode flag.", - category: "advanced" - } - stripF3: { - description: "Equivalent to cutadapt's --strip-f3 flag.", - category: "advanced" - } - maq: { - description: "Equivalent to cutadapt's --maq flag.", - category: "advanced" - } - bwa: { - description: "Equivalent to cutadapt's --bwa flag.", - category: "advanced" - } - zeroCap: { - description: "Equivalent to cutadapt's --zero-cap flag.", - category: "advanced" - } - noZeroCap: { - description: "Equivalent to cutadapt's --no-zero-cap flag.", - category: "advanced" - } - reportPath: { - description: "The name of the file to write cutadapts's stdout to, this contains some metrics.", - category: "common" - } - compressionLevel: {description: "The compression level if gzipped output is used.", - category: "advanced"} - cores: { - description: "The number of cores to use.", - category: "advanced" - } - memory: { - description: "The amount of memory this job will use.", - category: "advanced" - } - dockerImage: { - description: "The docker image used for this task. Changing this may result in errors which the developers may choose not to address.", - category: "advanced" - } + read1: {description: "The first or single end fastq file to be run through cutadapt.", category: "required"} + read2: {description: "An optional second end fastq file to be run through cutadapt.", category: "common"} + read1output: {description: "The name of the resulting first or single end fastq file.", category: "common"} + read2output: {description: "The name of the resulting second end fastq file.", category: "common"} + adapter: {description: "A list of 3' ligated adapter sequences to be cut from the given first or single end fastq file.", + category: "common"} + front: {description: "A list of 5' ligated adapter sequences to be cut from the given first or single end fastq file.", + category: "advanced"} + anywhere: {description: "A list of 3' or 5' ligated adapter sequences to be cut from the given first or single end fastq file.", + category: "advanced"} + adapterRead2: {description: "A list of 3' ligated adapter sequences to be cut from the given second end fastq file.", + category: "common"} + frontRead2: {description: "A list of 5' ligated adapter sequences to be cut from the given second end fastq file.", + category: "advanced"} + anywhereRead2: {description: "A list of 3' or 5' ligated adapter sequences to be cut from the given second end fastq file.", + category: "advanced"} + interleaved: {description: "Equivalent to cutadapt's --interleaved flag.", category: "advanced"} + pairFilter: {description: "Equivalent to cutadapt's --pair-filter option.", category: "advanced"} + errorRate: {description: "Equivalent to cutadapt's --error-rate option.", category: "advanced"} + noIndels: {description: "Equivalent to cutadapt's --no-indels flag.", category: "advanced"} + times: {description: "Equivalent to cutadapt's --times option.", category: "advanced"} + overlap: {description: "Equivalent to cutadapt's --overlap option.", category: "advanced"} + matchReadWildcards: {description: "Equivalent to cutadapt's --match-read-wildcards flag.", category: "advanced"} + noMatchAdapterWildcards: {description: "Equivalent to cutadapt's --no-match-adapter-wildcards flag.", category: "advanced"} + noTrim: {description: "Equivalent to cutadapt's --no-trim flag.", category: "advanced"} + maskAdapter: {description: "Equivalent to cutadapt's --mask-adapter flag.", category: "advanced"} + cut: {description: "Equivalent to cutadapt's --cut option.", category: "advanced"} + nextseqTrim: {description: "Equivalent to cutadapt's --nextseq-trim option.", category: "advanced"} + qualityCutoff: {description: "Equivalent to cutadapt's --quality-cutoff option.", category: "advanced"} + qualityBase: {description: "Equivalent to cutadapt's --quality-base option.", category: "advanced"} + length: {description: "Equivalent to cutadapt's --length option.", category: "advanced"} + trimN: {description: "Equivalent to cutadapt's --trim-n flag.", category: "advanced"} + lengthTag: {description: "Equivalent to cutadapt's --length-tag option.", category: "advanced"} + stripSuffix: {description: "Equivalent to cutadapt's --strip-suffix option.", category: "advanced"} + prefix: {description: "Equivalent to cutadapt's --prefix option.", category: "advanced"} + suffix: {description: "Equivalent to cutadapt's --suffix option.", category: "advanced"} + minimumLength: {description: "Equivalent to cutadapt's --minimum-length option.", category: "advanced"} + maximumLength: {description: "Equivalent to cutadapt's --maximum-length option.", category: "advanced"} + maxN: {description: "Equivalent to cutadapt's --max-n option.", category: "advanced"} + discardTrimmed: {description: "Equivalent to cutadapt's --quality-cutoff option.", category: "advanced"} + discardUntrimmed: {description: "Equivalent to cutadapt's --discard-untrimmed option.", category: "advanced"} + infoFilePath: {description: "Equivalent to cutadapt's --info-file option.", category: "advanced"} + restFilePath: {description: "Equivalent to cutadapt's --rest-file option.", category: "advanced"} + wildcardFilePath: {description: "Equivalent to cutadapt's --wildcard-file option.", category: "advanced"} + tooShortOutputPath: {description: "Equivalent to cutadapt's --too-short-output option.", category: "advanced"} + tooLongOutputPath: {description: "Equivalent to cutadapt's --too-long-output option.", category: "advanced"} + untrimmedOutputPath: {description: "Equivalent to cutadapt's --untrimmed-output option.", category: "advanced"} + tooShortPairedOutputPath: {description: "Equivalent to cutadapt's --too-short-paired-output option.", category: "advanced"} + tooLongPairedOutputPath: {description: "Equivalent to cutadapt's --too-long-paired-output option.", category: "advanced"} + untrimmedPairedOutputPath: {description: "Equivalent to cutadapt's --untrimmed-paired-output option.", category: "advanced"} + colorspace: {description: "Equivalent to cutadapt's --colorspace flag.", category: "advanced"} + doubleEncode: {description: "Equivalent to cutadapt's --double-encode flag.", category: "advanced"} + stripF3: {description: "Equivalent to cutadapt's --strip-f3 flag.", category: "advanced"} + maq: {description: "Equivalent to cutadapt's --maq flag.", category: "advanced"} + bwa: {description: "Equivalent to cutadapt's --bwa flag.", category: "advanced"} + zeroCap: {description: "Equivalent to cutadapt's --zero-cap flag.", category: "advanced"} + noZeroCap: {description: "Equivalent to cutadapt's --no-zero-cap flag.", category: "advanced"} + reportPath: {description: "The name of the file to write cutadapts's stdout to, this contains some metrics.", + category: "common"} + compressionLevel: {description: "The compression level if gzipped output is used.", category: "advanced"} + cores: {description: "The number of cores to use.", category: "advanced"} + memory: {description: "The amount of memory this job will use.", category: "advanced"} + timeMinutes: {description: "The maximum amount of time the job will run in minutes.", category: "advanced"} + dockerImage: {description: "The docker image used for this task. Changing this may result in errors which the developers may choose not to address.", + category: "advanced"} } } diff --git a/fastqc.wdl b/fastqc.wdl index 6708a6bc5a26407cbf6718e6fb7ba45836c6fab2..606c1bd4207c42c38f745a4f437d4d85e2008857 100644 --- a/fastqc.wdl +++ b/fastqc.wdl @@ -40,7 +40,7 @@ task Fastqc { Int threads = 1 # Fastqc uses 250MB per thread in its wrapper. String memory = "~{250 + 250 * threads}M" - Int? timeMinutes = 1 + ceil(size(seqFile, "G")) * 4 + Int timeMinutes = 1 + ceil(size(seqFile, "G")) * 4 String dockerImage = "quay.io/biocontainers/fastqc:0.11.9--0" Array[File]? NoneArray File? NoneFile @@ -106,6 +106,7 @@ task Fastqc { dir: {description: "Equivalent to fastqc's --dir option.", category: "advanced"} threads: {description: "The number of cores to use.", category: "advanced"} memory: {description: "The amount of memory this job will use.", category: "advanced"} + timeMinutes: {description: "The maximum amount of time the job will run in minutes.", category: "advanced"} dockerImage: {description: "The docker image used for this task. Changing this may result in errors which the developers may choose not to address.", category: "advanced"} } diff --git a/gatk.wdl b/gatk.wdl index cb26ca7511e1f1fb628208e84dea4185f52fa190..366b32ddb166a9f3de730804ae8d58cbad19cda4 100644 --- a/gatk.wdl +++ b/gatk.wdl @@ -416,7 +416,7 @@ task CombineGVCFs { String memory = "5G" String javaXmx = "4G" - Int timeMinutes = ceil(size(gvcfFiles, "G") * 8) + Int timeMinutes = 1 + ceil(size(gvcfFiles, "G") * 8) String dockerImage = "quay.io/biocontainers/gatk4:4.1.0.0--0" } diff --git a/gffcompare.wdl b/gffcompare.wdl index ca2b1669d64c2fe95c7068df00a8445fa9f6e21a..197dd9ade74cade9b67bb77bbd1eee2492a7924e 100644 --- a/gffcompare.wdl +++ b/gffcompare.wdl @@ -44,6 +44,7 @@ task GffCompare { Boolean verbose = false Boolean debugMode = false + Int timeMinutes = 1 + ceil(size(inputGtfFiles, "G") * 30) String dockerImage = "quay.io/biocontainers/gffcompare:0.10.6--h2d50403_0" # This workaround only works in the input section. @@ -110,6 +111,7 @@ task GffCompare { } runtime { + time_minutes: timeMinutes docker: dockerImage } @@ -134,6 +136,7 @@ task GffCompare { noTmap: {description: "Equivalent to gffcompare's `-T` flag.", category: "advanced"} verbose: {description: "Equivalent to gffcompare's `-V` flag.", category: "advanced"} debugMode: {description: "Equivalent to gffcompare's `-D` flag.", category: "advanced"} + timeMinutes: {description: "The maximum amount of time the job will run in minutes.", category: "advanced"} dockerImage: {description: "The docker image used for this task. Changing this may result in errors which the developers may choose not to address.", category: "advanced"} } diff --git a/gffread.wdl b/gffread.wdl index 6b23785c7ee37c0fb112ed59d45424d2bced07d0..d83e4d76564411d1edd8b3ef5a17ac208f8bad67 100644 --- a/gffread.wdl +++ b/gffread.wdl @@ -30,6 +30,7 @@ task GffRead { String? proteinFastaPath String? filteredGffPath Boolean outputGtfFormat = false + Int timeMinutes = 1 + ceil(size(inputGff) * 10) String dockerImage = "quay.io/biocontainers/gffread:0.9.12--0" } @@ -62,6 +63,7 @@ task GffRead { runtime { docker: dockerImage + time_minutes: timeMinutes } parameter_meta { @@ -73,6 +75,7 @@ task GffRead { proteinFastaPath: {description: "The location the protein fasta should be written to.", category: "advanced"} filteredGffPath: {description: "The location the filtered GFF should be written to.", category: "advanced"} outputGtfFormat: {description: "Equivalent to gffread's `-T` flag.", category: "advanced"} + timeMinutes: {description: "The maximum amount of time the job will run in minutes.", category: "advanced"} dockerImage: {description: "The docker image used for this task. Changing this may result in errors which the developers may choose not to address.", category: "advanced"} } diff --git a/hisat2.wdl b/hisat2.wdl index bc6be2e84315d05a05f9d14da75cbe4c0507bbd4..3ea18ee8a8d272e0af04ec59f3e79e6352538eba 100644 --- a/hisat2.wdl +++ b/hisat2.wdl @@ -32,8 +32,9 @@ task Hisat2 { String platform = "illumina" Boolean downstreamTranscriptomeAssembly = true - Int threads = 1 + Int threads = 4 String memory = "48G" + Int timeMinutes = 1 + ceil(size([inputR1, inputR2], "G") * 180 / threads) # quay.io/biocontainers/mulled-v2-a97e90b3b802d1da3d6958e0867610c718cb5eb1 # is a combination of hisat2 and samtools # hisat2=2.1.0, samtools=1.8 @@ -67,6 +68,7 @@ task Hisat2 { runtime { memory: memory cpu: threads + 1 + time_minutes: timeMinutes docker: dockerImage } @@ -82,6 +84,7 @@ task Hisat2 { downstreamTranscriptomeAssembly: {description: "Equivalent to hisat2's `--dta` flag.", category: "advanced"} threads: {description: "The number of threads to use.", category: "advanced"} memory: {description: "The amount of memory this job will use.", category: "advanced"} + timeMinutes: {description: "The maximum amount of time the job will run in minutes.", category: "advanced"} dockerImage: {description: "The docker image used for this task. Changing this may result in errors which the developers may choose not to address.", category: "advanced"} } diff --git a/htseq.wdl b/htseq.wdl index 900a88a79b96fab968b1244d0b3d6e090db70df5..9fad1714a69edc988ed16aba5e4ff231185ff0ed 100644 --- a/htseq.wdl +++ b/htseq.wdl @@ -33,6 +33,7 @@ task HTSeqCount { Array[String] additionalAttributes = [] String memory = "40G" + Int timeMinutes = 1 + ceil(size(inputBams, "G") * 60) String dockerImage = "quay.io/biocontainers/htseq:0.11.2--py37h637b7d7_1" } @@ -56,54 +57,24 @@ task HTSeqCount { } runtime { + time_minutes: timeMinutes memory: memory docker: dockerImage } parameter_meta { - inputBams: { - description: "The input BAM files.", - category: "required" - } - gtfFile: { - description: "A GTF/GFF file containing the features of interest.", - category: "required" - } - outputTable: { - description: "The path to which the output table should be written.", - category: "common" - } - format: { - description: "Equivalent to the -f option of htseq-count.", - category: "advanced" - } - order: { - description: "Equivalent to the -r option of htseq-count.", - category: "advanced" - } - stranded: { - description: "Equivalent to the -s option of htseq-count.", - category: "common" - } - featureType: { - description: "Equivalent to the --type option of htseq-count.", - category: "advanced" - } - idattr: { - description: "Equivalent to the --idattr option of htseq-count.", - category: "advanced" - } - additionalAttributes: { - description: "Equivalent to the --additional-attr option of htseq-count.", - category: "advanced" - } - memory: { - description: "The amount of memory the job requires in GB.", - category: "advanced" - } - dockerImage: { - description: "The docker image used for this task. Changing this may result in errors which the developers may choose not to address.", - category: "advanced" - } + inputBams: {description: "The input BAM files.", category: "required"} + gtfFile: {description: "A GTF/GFF file containing the features of interest.", category: "required"} + outputTable: {description: "The path to which the output table should be written.", category: "common"} + format: {description: "Equivalent to the -f option of htseq-count.", category: "advanced"} + order: {description: "Equivalent to the -r option of htseq-count.", category: "advanced"} + stranded: {description: "Equivalent to the -s option of htseq-count.", category: "common"} + featureType: {description: "Equivalent to the --type option of htseq-count.", category: "advanced"} + idattr: {description: "Equivalent to the --idattr option of htseq-count.", category: "advanced"} + additionalAttributes: {description: "Equivalent to the --additional-attr option of htseq-count.", category: "advanced"} + memory: {description: "The amount of memory the job requires in GB.", category: "advanced"} + timeMinutes: {description: "The maximum amount of time the job will run in minutes.", category: "advanced"} + dockerImage: {description: "The docker image used for this task. Changing this may result in errors which the developers may choose not to address.", + category: "advanced"} } } diff --git a/picard.wdl b/picard.wdl index 2eb9d410e9be3248264c091bc8f5ce816a44a44b..d19e3ac41e17370eec001a8df0f1c2a44e8c7c7e 100644 --- a/picard.wdl +++ b/picard.wdl @@ -87,7 +87,7 @@ task CollectMultipleMetrics { String memory = "10G" String javaXmx = "8G" - Int timeMinutes = ceil(size(inputBam, "G") * 6) + Int timeMinutes = 1 + ceil(size(inputBam, "G") * 6) String dockerImage = "quay.io/biocontainers/picard:2.20.5--0" } @@ -208,7 +208,7 @@ task CollectRnaSeqMetrics { String memory = "10G" String javaXmx = "8G" - Int timeMinutes = ceil(size(inputBam, "G") * 6) + Int timeMinutes = 1 + ceil(size(inputBam, "G") * 6) String dockerImage = "quay.io/biocontainers/picard:2.20.5--0" } @@ -268,7 +268,7 @@ task CollectTargetedPcrMetrics { String memory = "5G" String javaXmx = "4G" - Int timeMinutes = ceil(size(inputBam, "G") * 6) + Int timeMinutes = 1 + ceil(size(inputBam, "G") * 6) String dockerImage = "quay.io/biocontainers/picard:2.20.5--0" } @@ -333,7 +333,7 @@ task GatherBamFiles { String memory = "5G" String javaXmx = "4G" - Int timeMinutes = ceil(size(inputBams, "G") * 0.5) + Int timeMinutes = 1 + ceil(size(inputBams, "G") * 0.5) String dockerImage = "quay.io/biocontainers/picard:2.20.5--0" } @@ -428,7 +428,7 @@ task MarkDuplicates { String memory = "10G" String javaXmx = "8G" - Int timeMinutes = ceil(size(inputBams, "G")* 8) + Int timeMinutes = 1 + ceil(size(inputBams, "G")* 8) String dockerImage = "quay.io/biocontainers/picard:2.20.5--0" # The program default for READ_NAME_REGEX is appropriate in nearly every case. @@ -499,7 +499,7 @@ task MergeVCFs { String memory = "5G" String javaXmx = "4G" - Int timeMinutes = ceil(size(inputVCFs, "G")) + Int timeMinutes = 1 + ceil(size(inputVCFs, "G")) String dockerImage = "quay.io/biocontainers/picard:2.20.5--0" } diff --git a/samtools.wdl b/samtools.wdl index dc462f824e5ea23878794c532c1aeb13b9ac8598..5ffebc9ced931a1edba9022e2bb9df2fafb8d1c2 100644 --- a/samtools.wdl +++ b/samtools.wdl @@ -61,6 +61,8 @@ task Index { input { File bamFile String? outputBamPath + String memory = "2G" + Int timeMinutes = 1 + ceil(size(bamFile, "G") * 4) String dockerImage = "quay.io/biocontainers/samtools:1.8--h46bd0b3_5" } @@ -87,6 +89,8 @@ task Index { } runtime { + memory: memory + time_minutes: timeMinutes docker: dockerImage } @@ -95,6 +99,8 @@ task Index { bamFile: {description: "The BAM file for which an index should be made.", category: "required"} outputBamPath: {description: "The location where the BAM file should be written to. The index will appear alongside this link to the BAM file.", category: "common"} + memory: {description: "The amount of memory needed for the job.", category: "advanced"} + timeMinutes: {description: "The maximum amount of time the job will run in minutes.", category: "advanced"} dockerImage: {description: "The docker image used for this task. Changing this may result in errors which the developers may choose not to address.", category: "advanced"} } @@ -203,7 +209,7 @@ task FilterShortReadsBam { File bamFile String outputPathBam String memory = "1G" - Int timeMinutes = ceil(size(bamFile, "G") * 8) + Int timeMinutes = 1 + ceil(size(bamFile, "G") * 8) String dockerImage = "quay.io/biocontainers/samtools:1.8--h46bd0b3_5" } @@ -244,7 +250,7 @@ task Flagstat { String outputPath String memory = "1G" - Int timeMinutes = ceil(size(inputBam, "G")) + Int timeMinutes = 1 + ceil(size(inputBam, "G")) String dockerImage = "quay.io/biocontainers/samtools:1.8--h46bd0b3_5" } @@ -268,6 +274,7 @@ task Flagstat { # inputs inputBam: {description: "The BAM file for which statistics should be retrieved.", category: "required"} outputPath: {description: "The location the ouput should be written to.", category: "required"} + memory: {description: "The amount of memory needed for the job.", category: "advanced"} timeMinutes: {description: "The maximum amount of time the job will run in minutes.", category: "advanced"} dockerImage: {description: "The docker image used for this task. Changing this may result in errors which the developers may choose not to address.", category: "advanced"} diff --git a/star.wdl b/star.wdl index e1e55a262388f7f22a9c800ce558a24dbb447c73..94cdfa80bf12b0ca1a9141c34d06e2935f721473 100644 --- a/star.wdl +++ b/star.wdl @@ -36,6 +36,7 @@ task Star { Int runThreadN = 4 String memory = "48G" + Int timeMinutes = 1 + ceil(size([inputR1, inputR2], "G") * 180 / runThreadN) String dockerImage = "quay.io/biocontainers/star:2.7.3a--0" } @@ -66,6 +67,7 @@ task Star { runtime { cpu: runThreadN memory: memory + time_minutes: timeMinutes docker: dockerImage } @@ -83,6 +85,7 @@ task Star { limitBAMsortRAM: {description: "Equivalent to star's `--limitBAMsortRAM` option.", category: "advanced"} runThreadN: {description: "The number of threads to use.", category: "advanced"} memory: {description: "The amount of memory this job will use.", category: "advanced"} + timeMinutes: {description: "The maximum amount of time the job will run in minutes.", category: "advanced"} dockerImage: {description: "The docker image used for this task. Changing this may result in errors which the developers may choose not to address.", category: "advanced"} } diff --git a/stringtie.wdl b/stringtie.wdl index cfaccc92f80d1ab9d489e37e31ea2dd3e28c0584..f1d994b3d4600817af4b605a27a913a1e85944fc 100644 --- a/stringtie.wdl +++ b/stringtie.wdl @@ -33,6 +33,7 @@ task Stringtie { Int threads = 1 String memory = "10G" + Int timeMinutes = 1 + ceil(size(bam, "G") * 60 / threads) String dockerImage = "quay.io/biocontainers/stringtie:1.3.4--py35_0" } @@ -58,54 +59,24 @@ task Stringtie { runtime { cpu: threads memory: memory + time_minutes: timeMinutes docker: dockerImage } parameter_meta { - bam: { - description: "The input BAM file.", - category: "required" - } - bamIndex: { - description: "The input BAM file's index.", - category: "required" - } - referenceGtf: { - description: "A reference GTF file to be used as guide.", - category: "common" - } - skipNovelTranscripts: { - description: "Whether new transcripts should be assembled or not.", - category: "common" - } - assembledTranscriptsFile: { - description: "Where the output of the assembly should be written.", - category: "required" - } - firstStranded: { - description: "Equivalent to the --rf flag of stringtie.", - category: "required" - } - secondStranded: { - description: "Equivalent to the --fr flag of stringtie.", - category: "required" - } - geneAbundanceFile: { - description: "Where the abundance file should be written.", - category: "common" - } - threads: { - description: "The number of threads to use.", - category: "advanced" - } - memory: { - description: "The amount of memory needed for this task in GB.", - category: "advanced" - } - dockerImage: { - description: "The docker image used for this task. Changing this may result in errors which the developers may choose not to address.", - category: "advanced" - } + bam: {description: "The input BAM file.", category: "required"} + bamIndex: {description: "The input BAM file's index.", category: "required"} + referenceGtf: {description: "A reference GTF file to be used as guide.", category: "common"} + skipNovelTranscripts: {description: "Whether new transcripts should be assembled or not.", category: "common"} + assembledTranscriptsFile: {description: "Where the output of the assembly should be written.", category: "required"} + firstStranded: {description: "Equivalent to the --rf flag of stringtie.", category: "required"} + secondStranded: {description: "Equivalent to the --fr flag of stringtie.", category: "required"} + geneAbundanceFile: {description: "Where the abundance file should be written.", category: "common"} + threads: {description: "The number of threads to use.", category: "advanced"} + memory: {description: "The amount of memory needed for this task in GB.", category: "advanced"} + timeMinutes: {description: "The maximum amount of time the job will run in minutes.", category: "advanced"} + dockerImage: {description: "The docker image used for this task. Changing this may result in errors which the developers may choose not to address.", + category: "advanced"} } } @@ -123,6 +94,7 @@ task Merge { String? label String memory = "10G" + Int timeMinutes = 1 + ceil(size(gtfFiles, "G") * 20) String dockerImage = "quay.io/biocontainers/stringtie:1.3.4--py35_0" } @@ -148,57 +120,24 @@ task Merge { runtime { memory: memory + time_minutes: timeMinutes docker: dockerImage } parameter_meta { - gtfFiles: { - description: "The GTF files produced by stringtie.", - category: "required" - } - outputGtfPath: { - description: "Where the output should be written.", - category: "required" - } - guideGtf: { - description: "Equivalent to the -G option of 'stringtie --merge'.", - category: "advanced" - } - minimumLength: { - description: "Equivalent to the -m option of 'stringtie --merge'.", - category: "advanced" - } - minimumCoverage: { - description: "Equivalent to the -c option of 'stringtie --merge'.", - category: "advanced" - } - minimumFPKM: { - description: "Equivalent to the -F option of 'stringtie --merge'.", - category: "advanced" - } - minimumTPM: { - description: "Equivalent to the -T option of 'stringtie --merge'.", - category: "advanced" - } - minimumIsoformFraction: { - description: "Equivalent to the -f option of 'stringtie --merge'.", - category: "advanced" - } - keepMergedTranscriptsWithRetainedIntrons: { - description: "Equivalent to the -i flag of 'stringtie --merge'.", - category: "advanced" - } - label: { - description: "Equivalent to the -l option of 'stringtie --merge'.", - category: "advanced" - } - memory: { - description: "The amount of memory needed for this task in GB.", - category: "advanced" - } - dockerImage: { - description: "The docker image used for this task. Changing this may result in errors which the developers may choose not to address.", - category: "advanced" - } + gtfFiles: {description: "The GTF files produced by stringtie.", category: "required"} + outputGtfPath: {description: "Where the output should be written.", category: "required"} + guideGtf: {description: "Equivalent to the -G option of 'stringtie --merge'.", category: "advanced"} + minimumLength: {description: "Equivalent to the -m option of 'stringtie --merge'.", category: "advanced"} + minimumCoverage: {description: "Equivalent to the -c option of 'stringtie --merge'.", category: "advanced"} + minimumFPKM: {description: "Equivalent to the -F option of 'stringtie --merge'.", category: "advanced"} + minimumTPM: {description: "Equivalent to the -T option of 'stringtie --merge'.", category: "advanced"} + minimumIsoformFraction: {description: "Equivalent to the -f option of 'stringtie --merge'.", category: "advanced"} + keepMergedTranscriptsWithRetainedIntrons: {description: "Equivalent to the -i flag of 'stringtie --merge'.", category: "advanced"} + label: {description: "Equivalent to the -l option of 'stringtie --merge'.", category: "advanced"} + memory: {description: "The amount of memory needed for this task in GB.", category: "advanced"} + timeMinutes: {description: "The maximum amount of time the job will run in minutes.", category: "advanced"} + dockerImage: {description: "The docker image used for this task. Changing this may result in errors which the developers may choose not to address.", + category: "advanced"} } } diff --git a/umi-tools.wdl b/umi-tools.wdl index c44635ce0ef7d3cab9d3c9023a64989bb0259d11..608924f3fdd8dc7f5592e54f9cddadc7044c9039 100644 --- a/umi-tools.wdl +++ b/umi-tools.wdl @@ -76,7 +76,7 @@ task Dedup { Boolean paired = true String memory = "5G" - Int timeMinutes = ceil(size(inputBam, "G") * 18) + Int timeMinutes = 1 + ceil(size(inputBam, "G") * 18) # Use a multi-package-container which includes umi_tools (0.5.5) and samtools (1.9) String dockerImage = "quay.io/biocontainers/mulled-v2-509311a44630c01d9cb7d2ac5727725f51ea43af:6089936aca6219b5bb5f54210ac5eb456c7503f2-0"