diff --git a/bam2fastx.wdl b/bam2fastx.wdl index e8884ab01a0b82f1829dd4223fe30a60f0c6129d..1b911dbbcc45b4b50d0c7f866088841c46c43b10 100644 --- a/bam2fastx.wdl +++ b/bam2fastx.wdl @@ -37,18 +37,18 @@ task Bam2Fasta { command { set -e - mkdir -p "$(dirname ~{outputPrefix})"' + mkdir -p "$(dirname ~{outputPrefix})" # Localise the bam and pbi files so they are next to each other in the # current folder. bamFiles="" - for bamFile in ~{sep=" " bam}; + for bamFile in ~{sep=" " bam} do ln ${bamFile} . bamFiles=${bamFiles}" $(basename ${bamFile})" done - for index in ~{sep=" " bamIndex}; + for index in ~{sep=" " bamIndex} do ln ${index} . done @@ -110,13 +110,13 @@ task Bam2Fastq { # Localise the bam and pbi files so they are next to each other in the # current folder. bamFiles="" - for bamFile in ~{sep=" " bam}; + for bamFile in ~{sep=" " bam} do ln ${bamFile} . bamFiles=${bamFiles}" $(basename ${bamFile})" done - for index in ~{sep=" " bamIndex}; + for index in ~{sep=" " bamIndex} do ln ${index} . done diff --git a/delly.wdl b/delly.wdl index f708f4949fa74743e3655ab8d8c0e292ac0050c9..ffe9023a6221c24f0cfd0ba5b880d345269bc32a 100644 --- a/delly.wdl +++ b/delly.wdl @@ -1,7 +1,5 @@ version 1.0 -# MIT License -# # Copyright (c) 2018 Leiden University Medical Center # # Permission is hereby granted, free of charge, to any person obtaining a copy @@ -59,9 +57,9 @@ task CallSV { bamFile: {description: "The bam file to process.", category: "required"} bamIndex: {description: "The index bam file.", category: "required"} referenceFasta: {description: "The reference fasta file also used for mapping.", category: "required"} - referenceFastaFai: {description: "Fasta index (.fai) file of the reference", category: "required" } + referenceFastaFai: {description: "Fasta index (.fai) file of the reference.", category: "required" } outputPath: {description: "The location the output VCF file should be written.", category: "common"} - memory: {description: "The memory required to run the programs", 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/fastqc.wdl b/fastqc.wdl index 04b6813f3369c02debab54464e2627fea3a3ba42..dd3dfc2ea1cce232b0912afd75ac927336ea12a6 100644 --- a/fastqc.wdl +++ b/fastqc.wdl @@ -29,6 +29,7 @@ task Fastqc { Boolean noFilter = false Boolean extract = false Boolean nogroup = false + Int? minLength String? format File? contaminants @@ -37,32 +38,35 @@ task Fastqc { Int? kmers String? dir - Int threads = 1 # Set javaXmx a little high. Equal to fastqc default with 7 threads. # This is because some fastq files need more memory. 2G per core # is a nice cluster default, so we use all the rest of the memory for # fastqc so we should have as little OOM crashes as possible even with # weird edge case fastq's. - String javaXmx="1750M" + String javaXmx="1750M" + Int threads = 1 String memory = "2G" Int timeMinutes = 1 + ceil(size(seqFile, "G")) * 4 - String dockerImage = "quay.io/biocontainers/fastqc:0.11.9--0" - Array[File]? NoneArray - File? NoneFile + String dockerImage = "quay.io/biocontainers/fastqc:0.11.9--0 + + Array[File]? noneArray + File? noneFile } # Chops of the .gz extension if present. - # The Basename needs to be taken here. Otherwise paths might differ between similar jobs. + # The Basename needs to be taken here. Otherwise paths might differ + # between similar jobs. String name = basename(sub(seqFile, "\.gz$","")) - # This regex chops of the extension and replaces it with _fastqc for the reportdir. + # This regex chops of the extension and replaces it with _fastqc for + # the reportdir. # Just as fastqc does it. String reportDir = outdirPath + "/" + sub(name, "\.[^\.]*$", "_fastqc") - # We reimplement the perl wrapper here. This has the advantage that it gives - # us more control over the amount of memory used. + # We reimplement the perl wrapper here. This has the advantage that it + # gives us more control over the amount of memory used. command <<< set -e - mkdir -p ~{outdirPath} + mkdir -p "~{outdirPath}" FASTQC_DIR="/usr/local/opt/fastqc-0.11.9" export CLASSPATH="$FASTQC_DIR:$FASTQC_DIR/sam-1.103.jar:$FASTQC_DIR/jbzip2-0.9.jar:$FASTQC_DIR/cisd-jhdf5.jar" java -Djava.awt.headless=true -XX:ParallelGCThreads=1 \ @@ -86,23 +90,24 @@ task Fastqc { >>> output { - File? rawReport = if extract then reportDir + "/fastqc_data.txt" else NoneFile File htmlReport = reportDir + ".html" File reportZip = reportDir + ".zip" - File? summary = if extract then reportDir + "/summary.txt" else NoneFile - Array[File]? images = if extract then glob(reportDir + "/Images/*.png") else NoneArray + File? summary = if extract then reportDir + "/summary.txt" else noneFile + File? rawReport = if extract then reportDir + "/fastqc_data.txt" else noneFile + Array[File]? images = if extract then glob(reportDir + "/Images/*.png") else noneArray } runtime { cpu: threads memory: memory - docker: dockerImage time_minutes: timeMinutes + docker: dockerImage } parameter_meta { + # inputs seqFile: {description: "A fastq file.", category: "required"} - outdirPath: {description: "The path to write the output to", catgory: "required"} + outdirPath: {description: "The path to write the output to.", catgory: "required"} casava: {description: "Equivalent to fastqc's --casava flag.", category: "advanced"} nano: {description: "Equivalent to fastqc's --nano flag.", category: "advanced"} noFilter: {description: "Equivalent to fastqc's --nofilter flag.", category: "advanced"} @@ -115,18 +120,16 @@ task Fastqc { limits: {description: "Equivalent to fastqc's --limits option.", category: "advanced"} kmers: {description: "Equivalent to fastqc's --kmers option.", category: "advanced"} dir: {description: "Equivalent to fastqc's --dir option.", category: "advanced"} + javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", category: "advanced"} threads: {description: "The number of cores to use.", category: "advanced"} - javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", - 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"} + 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"} } meta { WDL_AID: { - exclude: ["NoneFile", "NoneArray"] + exclude: ["noneFile", "noneArray"] } } } @@ -155,14 +158,14 @@ task GetConfiguration { } runtime { - memory: "2G" # Needs more than 1 to pull the docker image + memory: "2G" # Needs more than 1 to pull the docker image. time_minute: timeMinutes docker: dockerImage } parameter_meta { + # inputs 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"} + 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/fastqsplitter.wdl b/fastqsplitter.wdl index c523cf8a7dd4e86e65cc768daa3c98f98854b39f..25a50954323974554925a8ca1305aba63a1e49ee 100644 --- a/fastqsplitter.wdl +++ b/fastqsplitter.wdl @@ -1,7 +1,5 @@ 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 @@ -26,19 +24,24 @@ task Fastqsplitter { input { File inputFastq Array[String]+ outputPaths - String dockerImage = "quay.io/biocontainers/fastqsplitter:1.1.0--py37h516909a_1" + 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. + + # 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)) + String dockerImage = "quay.io/biocontainers/fastqsplitter:1.1.0--py37h516909a_1" } # Busybox mkdir does not accept multiple paths. command <<< set -e for FILE in ~{sep=' ' outputPaths} - do mkdir -p "$(dirname $FILE)" + do + mkdir -p "$(dirname ${FILE})" done fastqsplitter \ ~{"-c " + compressionLevel} \ @@ -51,15 +54,16 @@ task Fastqsplitter { Array[File] chunks = outputPaths } - # Using very safe margins here. 10MB/300MB per outputfile is used for single-threaded/multi-threaded compression. + # 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 + # Make sure a minimum of 2 GB is present to pull the singularity image. Int memory = if fastqsplitterMemory <= 2 then 2 else fastqsplitterMemory runtime { + cpu: cores memory: "~{memory}G" docker: dockerImage - cpu: cores } } diff --git a/flash.wdl b/flash.wdl index 6e704921590264bf1477088a8944db729f0eaedd..c4554c50ff95b1c4d09258906ba5bfd26bdf8b03 100644 --- a/flash.wdl +++ b/flash.wdl @@ -24,13 +24,14 @@ import "common.wdl" as common task Flash { input { - String? preCommand FastqPair inputFastq String outdirPath String outPrefix = "flash" + Boolean compress = true + + String? preCommand Int? minOverlap Int? maxOverlap - Boolean compress = true Int threads = 2 String memory = "2G" @@ -55,8 +56,8 @@ task Flash { File notCombined1 = outdirPath + "/" + outPrefix + ".notCombined_1.fastq.gz" File notCombined2 = outdirPath + "/" + outPrefix + ".notCombined_2.fastq.gz" FastqPair notCombined = object { - R1: notCombined1, - R2: notCombined2 + R1: notCombined1, + R2: notCombined2 } File hist = outdirPath + "/" + outPrefix + ".hist" File histogram = outdirPath + "/" + outPrefix + ".histogram" @@ -66,5 +67,4 @@ task Flash { cpu: threads memory: memory } - -} \ No newline at end of file +} diff --git a/gatk.wdl b/gatk.wdl index 12416dda147265aff574110d075f34f2897fdae7..cc5d1de5771d6c52b5fe8e3e0a9d33ea12c97623 100644 --- a/gatk.wdl +++ b/gatk.wdl @@ -28,12 +28,13 @@ task AnnotateIntervals { String annotatedIntervalsPath = "intervals.annotated.tsv" File intervals String intervalMergingRule = "OVERLAPPING_ONLY" + Int featureQueryLookahead = 1000000 + File? mappabilityTrack File? segmentalDuplicationTrack - Int featureQueryLookahead = 1000000 - String memory = "3G" String javaXmx = "2G" + String memory = "3G" Int timeMinutes = 5 String dockerImage = "quay.io/biocontainers/gatk4:4.1.8.0--py38h37ae868_0" } @@ -57,9 +58,9 @@ task AnnotateIntervals { } runtime { - docker: dockerImage - time_minutes: timeMinutes memory: memory + time_minutes: timeMinutes + docker: dockerImage } parameter_meta { @@ -71,17 +72,15 @@ task AnnotateIntervals { intervalMergingRule: {description: "Equivalent to gatk AnnotateIntervals' `--interval-merging-rule` option.", category: "advanced"} mappabilityTrack: {description: "Equivalent to gatk AnnotateIntervals' `--mappability-track` option.", category: "common"} segmentalDuplicationTrack: {description: "Equivalent to gatk AnnotateIntervals' `--segmenta-duplicarion-track` option.", category: "common"} - featureQueryLookahead: {description: "Equivalent to gatk AnnotateIntervals' `--feature-query-lookahead` option", category: "advanced"} + featureQueryLookahead: {description: "Equivalent to gatk AnnotateIntervals' `--feature-query-lookahead` option.", category: "advanced"} memory: {description: "The amount of memory this job will use.", category: "advanced"} - javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", - category: "advanced"} + javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", 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"} + 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"} } } -# Apply Base Quality Score Recalibration (BQSR) model +# Apply Base Quality Score Recalibration (BQSR) model. task ApplyBQSR { input { File inputBam @@ -93,9 +92,11 @@ task ApplyBQSR { File referenceFastaDict File referenceFastaFai - Int memoryMb = javaXmxMb + 512 Int javaXmxMb = 2048 - Int timeMinutes = 120 # This will likely be used with intervals, as such size based estimation can't be used. + Int memoryMb = javaXmxMb + 512 + # This will likely be used with intervals, as such size based + # estimation can't be used. + Int timeMinutes = 120 String dockerImage = "quay.io/biocontainers/gatk4:4.1.8.0--py38h37ae868_0" } @@ -124,33 +125,29 @@ task ApplyBQSR { } runtime { - docker: dockerImage - time_minutes: timeMinutes memory: "~{memoryMb}M" + time_minutes: timeMinutes + docker: dockerImage } parameter_meta { + # inputs inputBam: {description: "The BAM file which should be recalibrated.", category: "required"} inputBamIndex: {description: "The input BAM file's index.", category: "required"} outputBamPath: {description: "The location the resulting BAM file should be written.", category: "required"} recalibrationReport: {description: "The BQSR report the be used for recalibration.", category: "required"} sequenceGroupInterval: {description: "Bed files describing the regions to operate on.", category: "advanced"} - referenceFasta: {description: "The reference fasta file which was also used for mapping.", - category: "required"} - referenceFastaDict: {description: "The sequence dictionary associated with the reference fasta file.", - category: "required"} + referenceFasta: {description: "The reference fasta file which was also used for mapping.", category: "required"} + referenceFastaDict: {description: "The sequence dictionary associated with the reference fasta file.", category: "required"} referenceFastaFai: {description: "The index for the reference fasta file.", category: "required"} - + javaXmxMb: {description: "The maximum memory available to the program in megabytes. Should be lower than `memoryMb` to accommodate JVM overhead.", category: "advanced"} memoryMb: {description: "The amount of memory this job will use in megabytes.", category: "advanced"} - javaXmxMb: {description: "The maximum memory available to the program in megabytes. Should be lower than `memoryMb` to accommodate JVM overhead.", - 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"} + 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"} } } -# Generate Base Quality Score Recalibration (BQSR) model +# Generate Base Quality Score Recalibration (BQSR) model. task BaseRecalibrator { input { File inputBam @@ -159,14 +156,15 @@ task BaseRecalibrator { Array[File] sequenceGroupInterval = [] Array[File] knownIndelsSitesVCFs = [] Array[File] knownIndelsSitesVCFIndexes = [] - File? dbsnpVCF - File? dbsnpVCFIndex File referenceFasta File referenceFastaDict File referenceFastaFai - Int memoryMb = javaXmxMb + 512 + File? dbsnpVCF + File? dbsnpVCFIndex + Int javaXmxMb = 1024 + Int memoryMb = javaXmxMb + 512 Int timeMinutes = 120 # This will likely be used with intervals, as such size based estimation can't be used. String dockerImage = "quay.io/biocontainers/gatk4:4.1.8.0--py38h37ae868_0" } @@ -190,42 +188,39 @@ task BaseRecalibrator { } runtime { - docker: dockerImage - time_minutes: timeMinutes memory: "~{memoryMb}M" + time_minutes: timeMinutes + docker: dockerImage } parameter_meta { + # inputs inputBam: {description: "The BAM file to generate a BQSR report for.", category: "required"} inputBamIndex: {description: "The index of the input BAM file.", category: "required"} recalibrationReportPath: {description: "The location to write the BQSR report to.", category: "required"} sequenceGroupInterval: {description: "Bed files describing the regions to operate on.", category: "advanced"} knownIndelsSitesVCFs: {description: "VCF files with known indels.", category: "advanced"} knownIndelsSitesVCFIndexes: {description: "The indexed for the known variant VCFs.", category: "advanced"} + referenceFasta: {description: "The reference fasta file which was also used for mapping.", category: "required"} + referenceFastaDict: {description: "The sequence dictionary associated with the reference fasta file.", category: "required"} + referenceFastaFai: {description: "The index for the reference fasta file.", category: "required"} dbsnpVCF: {description: "A dbSNP VCF.", category: "common"} dbsnpVCFIndex: {description: "The index for the dbSNP VCF.", category: "common"} - referenceFasta: {description: "The reference fasta file which was also used for mapping.", - category: "required"} - referenceFastaDict: {description: "The sequence dictionary associated with the reference fasta file.", - category: "required"} - referenceFastaFai: {description: "The index for the reference fasta file.", category: "required"} - + javaXmxMb: {description: "The maximum memory available to the program in megabytes. Should be lower than `memoryMb` to accommodate JVM overhead.", category: "advanced"} memoryMb: {description: "The amount of memory this job will use in megabytes.", category: "advanced"} - javaXmxMb: {description: "The maximum memory available to the program in megabytes. Should be lower than `memoryMb` to accommodate JVM overhead.", - 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"} + 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"} } } task CalculateContamination { input { File tumorPileups + File? normalPileups - String memory = "13G" String javaXmx = "12G" + String memory = "13G" Int timeMinutes = 180 String dockerImage = "quay.io/biocontainers/gatk4:4.1.8.0--py38h37ae868_0" } @@ -246,20 +241,19 @@ task CalculateContamination { } runtime { - docker: dockerImage - time_minutes: timeMinutes memory: memory + time_minutes: timeMinutes + docker: dockerImage } parameter_meta { + # inputs tumorPileups: {description: "The pileup summary of a tumor/case sample.", category: "required"} normalPileups: {description: "The pileup summary of the normal/control sample.", category: "common"} + javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", category: "advanced"} memory: {description: "The amount of memory this job will use.", category: "advanced"} - javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", - 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"} + 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"} } } @@ -268,8 +262,8 @@ task CallCopyRatioSegments { String outputPrefix File copyRatioSegments - String memory = "3G" String javaXmx = "2G" + String memory = "3G" Int timeMinutes = 2 String dockerImage = "quay.io/biocontainers/gatk4:4.1.8.0--py38h37ae868_0" } @@ -289,20 +283,19 @@ task CallCopyRatioSegments { } runtime { - docker: dockerImage - time_minutes: timeMinutes memory: memory + time_minutes: timeMinutes + docker: dockerImage } parameter_meta { + # inputs outputPrefix: {description: "The prefix for the output files.", category: "required"} copyRatioSegments: {description: "The copy ratios file generated by gatk ModelSegments.", category: "required"} + javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", category: "advanced"} memory: {description: "The amount of memory this job will use.", category: "advanced"} - javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", - 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"} + 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"} } } @@ -310,15 +303,16 @@ task CollectAllelicCounts { input { String allelicCountsPath = "allelic_counts.tsv" File commonVariantSites - File? commonVariantSitesIndex File inputBam File inputBamIndex File referenceFasta File referenceFastaDict File referenceFastaFai - String memory = "11G" + File? commonVariantSitesIndex + String javaXmx = "10G" + String memory = "11G" Int timeMinutes = 120 String dockerImage = "quay.io/biocontainers/gatk4:4.1.8.0--py38h37ae868_0" } @@ -339,26 +333,25 @@ task CollectAllelicCounts { } runtime { - docker: dockerImage - time_minutes: timeMinutes memory: memory + time_minutes: timeMinutes + docker: dockerImage } parameter_meta { + # inputs allelicCountsPath: {description: "The path the output should be written to.", category: "advanced"} commonVariantSites: {description: "Interval list or vcf of common variant sites (to retrieve the allelic counts for).", category: "required"} - commonVariantSitesIndex: {description: "The index for commonVariantSites.", category: "common"} inputBam: {description: "The BAM file to generate counts for.", category: "required"} inputBamIndex: {description: "The index of the input BAM file.", category: "required"} referenceFasta: {description: "The reference fasta file.", category: "required"} referenceFastaDict: {description: "The sequence dictionary associated with the reference fasta file.", category: "required"} referenceFastaFai: {description: "The index for the reference fasta file.", category: "required"} + commonVariantSitesIndex: {description: "The index for commonVariantSites.", category: "common"} + javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", category: "advanced"} memory: {description: "The amount of memory this job will use.", category: "advanced"} - javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", - 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"} + 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"} } } @@ -373,8 +366,8 @@ task CollectReadCounts { File referenceFastaFai String intervalMergingRule = "OVERLAPPING_ONLY" - String memory = "8G" String javaXmx = "7G" + String memory = "8G" Int timeMinutes = 1 + ceil(size(inputBam, "G") * 5) String dockerImage = "quay.io/biocontainers/gatk4:4.1.8.0--py38h37ae868_0" } @@ -397,12 +390,13 @@ task CollectReadCounts { } runtime { - docker: dockerImage - time_minutes: timeMinutes memory: memory + time_minutes: timeMinutes + docker: dockerImage } parameter_meta { + # inputs countsPath: {description: "The location the output should be written to.", category: "advanced"} intervals: {description: "The intervals to collect counts for.", category: "required"} inputBam: {description: "The BAM file to determine the coverage for.", category: "required"} @@ -411,12 +405,10 @@ task CollectReadCounts { referenceFastaDict: {description: "The sequence dictionary associated with the reference fasta file.", category: "required"} referenceFastaFai: {description: "The index for the reference fasta file.", category: "required"} intervalMergingRule: {description: "Equivalent to gatk CollectReadCounts' `--interval-merging-rule` option.", category: "advanced"} + javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", category: "advanced"} memory: {description: "The amount of memory this job will use.", category: "advanced"} - javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", - 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"} + 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"} } } @@ -430,8 +422,8 @@ task CombineGVCFs { File referenceFastaDict File referenceFastaFai - String memory = "5G" String javaXmx = "4G" + String memory = "5G" Int timeMinutes = 1 + ceil(size(gvcfFiles, "G") * 8) String dockerImage = "quay.io/biocontainers/gatk4:4.1.8.0--py38h37ae868_0" } @@ -453,28 +445,24 @@ task CombineGVCFs { } runtime { - docker: dockerImage - time_minutes: timeMinutes memory: memory + time_minutes: timeMinutes + docker: dockerImage } parameter_meta { + # inputs gvcfFiles: {description: "The GVCF files to be combined.", category: "required"} gvcfFilesIndex: {description: "The indexes for the GVCF files.", caregory: "required"} intervals: {description: "Bed files or interval lists describing the regions to operate on.", category: "advanced"} outputPath: {description: "The location the combined GVCF should be written to.", category: "required"} - referenceFasta: {description: "The reference fasta file which was also used for mapping.", - category: "required"} - referenceFastaDict: {description: "The sequence dictionary associated with the reference fasta file.", - category: "required"} + referenceFasta: {description: "The reference fasta file which was also used for mapping.", category: "required"} + referenceFastaDict: {description: "The sequence dictionary associated with the reference fasta file.", category: "required"} referenceFastaFai: {description: "The index for the reference fasta file.", category: "required"} - + javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", category: "advanced"} memory: {description: "The amount of memory this job will use.", category: "advanced"} - javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", - 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"} + 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"} } } @@ -486,12 +474,12 @@ task CombineVariants { String genotypeMergeOption = "UNIQUIFY" String filteredRecordsMergeType = "KEEP_IF_ANY_UNFILTERED" Array[String]+ identifiers - Array[File]+ variantVcfs # follow "identifiers" array order + Array[File]+ variantVcfs # Follow "identifiers" array order. Array[File]+ variantIndexes String outputPath - String memory = "13G" String javaXmx = "12G" + String memory = "13G" Int timeMinutes = 180 String dockerImage = "broadinstitute/gatk3:3.8-1" } @@ -499,17 +487,17 @@ task CombineVariants { command <<< set -e mkdir -p "$(dirname ~{outputPath})" - - # build "-V:<ID> <file.vcf>" arguments according to IDs and VCFs to merge - # Make sure commands are run in bash + # Build "-V:<ID> <file.vcf>" arguments according to IDs + # and VCFs to merge. + # Make sure commands are run in bash. V_args=$(bash -c ' set -eu ids=(~{sep=" " identifiers}) vars=(~{sep=" " variantVcfs}) for (( i = 0; i < ${#ids[@]}; ++i )) - do + do printf -- "-V:%s %s " "${ids[i]}" "${vars[i]}" - done + done ') java -Xmx~{javaXmx} -XX:ParallelGCThreads=1 -jar /usr/GenomeAnalysisTK.jar \ -T CombineVariants \ @@ -526,12 +514,13 @@ task CombineVariants { } runtime { - docker: dockerImage - time_minutes: timeMinutes memory: memory + time_minutes: timeMinutes + docker: dockerImage } parameter_meta { + # inputs referenceFasta: {description: "The reference fasta file which was also used for mapping.", category: "required"} referenceFastaDict: {description: "The sequence dictionary associated with the reference fasta file.", category: "required"} referenceFastaFai: {description: "The index for the reference fasta file.", category: "required"} @@ -540,14 +529,11 @@ task CombineVariants { identifiers: {description: "The sample identifiers in the same order as variantVcfs.", category: "required"} variantVcfs: {description: "The input VCF files in the same order as identifiers.", category: "required"} variantIndexes: {description: "The indexes of the input VCF files.", category: "required"} - outputPath: {description: "The location the output should be written to", category: "required"} - + outputPath: {description: "The location the output should be written to.", category: "required"} + javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", category: "advanced"} memory: {description: "The amount of memory this job will use.", category: "advanced"} - javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", - 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"} + 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"} } } @@ -555,10 +541,11 @@ task CreateReadCountPanelOfNormals { input { String PONpath = "PON.hdf5" Array[File]+ readCountsFiles + File? annotatedIntervals - String memory = "8G" String javaXmx = "7G" + String memory = "8G" Int timeMinutes = 5 String dockerImage = "broadinstitute/gatk:4.1.8.0" # The biocontainer causes a spark related error for some reason... } @@ -578,34 +565,33 @@ task CreateReadCountPanelOfNormals { } runtime { - docker: dockerImage - time_minutes: timeMinutes memory: memory + time_minutes: timeMinutes + docker: dockerImage } parameter_meta { + # inputs PONpath: {description: "The location the PON should be written to.", category: "common"} readCountsFiles: {description: "The read counts files as generated by CollectReadCounts.", category: "required"} - annotatedIntervals: {description: "An annotation set of intervals as generated by AnnotateIntervals. If provided, explicit GC correction will be performed.", - category: "advanced"} + annotatedIntervals: {description: "An annotation set of intervals as generated by AnnotateIntervals. If provided, explicit GC correction will be performed.", category: "advanced"} + javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", category: "advanced"} memory: {description: "The amount of memory this job will use.", category: "advanced"} - javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", - 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"} + 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"} } } task DenoiseReadCounts { input { - File? PON - File? annotatedIntervals File readCounts String outputPrefix - String memory = "5G" + File? PON + File? annotatedIntervals + String javaXmx = "4G" + String memory = "5G" Int timeMinutes = 5 String dockerImage = "quay.io/biocontainers/gatk4:4.1.8.0--py38h37ae868_0" } @@ -628,23 +614,21 @@ task DenoiseReadCounts { } runtime { - docker: dockerImage - time_minutes: timeMinutes memory: memory + time_minutes: timeMinutes + docker: dockerImage } parameter_meta { - PON: {description: "A panel of normals as generated by CreateReadCountPanelOfNormals.", category: "advanced"} - annotatedIntervals: {description: "An annotated set of intervals as generated by AnnotateIntervals. Will be ignored if PON is provided.", - category: "advanced"} + # inputs readCounts: {description: "The read counts file as generated by CollectReadCounts.", category: "required"} outputPrefix: {description: "The prefix for the output files.", category: "required"} + PON: {description: "A panel of normals as generated by CreateReadCountPanelOfNormals.", category: "advanced"} + annotatedIntervals: {description: "An annotated set of intervals as generated by AnnotateIntervals. Will be ignored if PON is provided.", category: "advanced"} + javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", category: "advanced"} memory: {description: "The amount of memory this job will use.", category: "advanced"} - javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", - 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"} + 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"} } } @@ -656,14 +640,15 @@ task FilterMutectCalls { File unfilteredVcf File unfilteredVcfIndex String outputVcf + Int uniqueAltReadCount = 4 + File mutect2Stats + File? contaminationTable File? mafTumorSegments File? artifactPriors - Int uniqueAltReadCount = 4 - File mutect2Stats - String memory = "13G" String javaXmx = "12G" + String memory = "13G" Int timeMinutes = 60 String dockerImage = "quay.io/biocontainers/gatk4:4.1.8.0--py38h37ae868_0" } @@ -692,41 +677,39 @@ task FilterMutectCalls { } runtime { - docker: dockerImage - time_minutes: timeMinutes memory: memory + time_minutes: timeMinutes + docker: dockerImage } parameter_meta { + # inputs referenceFasta: {description: "The reference fasta file which was also used for mapping.", category: "required"} referenceFastaDict: {description: "The sequence dictionary associated with the reference fasta file.", category: "required"} referenceFastaFai: {description: "The index for the reference fasta file.", category: "required"} unfilteredVcf: {description: "An unfiltered VCF file as produced by Mutect2.", category: "required"} unfilteredVcfIndex: {description: "The index of the unfiltered VCF file.", category: "required"} outputVcf: {description: "The location the filtered VCF file should be written.", category: "required"} + uniqueAltReadCount: {description: "Equivalent to FilterMutectCalls' `--unique-alt-read-count` option.", category: "advanced"} + mutect2Stats: {description: "Equivalent to FilterMutectCalls' `-stats` option.", category: "advanced"} contaminationTable: {description: "Equivalent to FilterMutectCalls' `--contamination-table` option.", category: "advanced"} mafTumorSegments: {description: "Equivalent to FilterMutectCalls' `--tumor-segmentation` option.", category: "advanced"} artifactPriors: {description: "Equivalent to FilterMutectCalls' `--ob-priors` option.", category: "advanced"} - uniqueAltReadCount: {description: "Equivalent to FilterMutectCalls' `--unique-alt-read-count` option.", category: "advanced"} - mutect2Stats: {description: "Equivalent to FilterMutectCalls' `-stats` option.", category: "advanced"} - + javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", category: "advanced"} memory: {description: "The amount of memory this job will use.", category: "advanced"} - javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", - 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"} + 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"} } } -# Combine multiple recalibration tables from scattered BaseRecalibrator runs +# Combine multiple recalibration tables from scattered BaseRecalibrator runs. task GatherBqsrReports { input { Array[File] inputBQSRreports String outputReportPath - Int memoryMb = 256 + javaXmxMb Int javaXmxMb = 256 + Int memoryMb = 256 + javaXmxMb Int timeMinutes = 1 String dockerImage = "quay.io/biocontainers/gatk4:4.1.8.0--py38h37ae868_0" } @@ -745,21 +728,19 @@ task GatherBqsrReports { } runtime { - docker: dockerImage - time_minutes: timeMinutes memory: "~{memoryMb}M" + time_minutes: timeMinutes + docker: dockerImage } parameter_meta { + # inputs inputBQSRreports: {description: "The BQSR reports to be merged.", category: "required"} outputReportPath: {description: "The location of the combined BQSR report.", category: "required"} - + javaXmxMb: {description: "The maximum memory available to the program in megabytes. Should be lower than `memory` to accommodate JVM overhead.", category: "advanced"} memoryMb: {description: "The amount of memory this job will use in megabytes.", category: "advanced"} - javaXmxMb: {description: "The maximum memory available to the program in megabytes. Should be lower than `memory` to accommodate JVM overhead.", - 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"} + 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"} } } @@ -770,9 +751,11 @@ task GenomicsDBImport { Array[File]+ intervals String genomicsDBWorkspacePath = "genomics_db" String genomicsDBTarFile = "genomics_db.tar.gz" + String? tmpDir - String memory = "5G" + String javaXmx = "4G" + String memory = "5G" Int timeMinutes = 180 String dockerImage = "quay.io/biocontainers/gatk4:4.1.8.0--py38h37ae868_0" } @@ -794,25 +777,23 @@ task GenomicsDBImport { } runtime { - docker: dockerImage - time_minutes: timeMinutes memory: memory + time_minutes: timeMinutes + docker: dockerImage } parameter_meta { + # inputs gvcfFiles: {description: "The gvcfFiles to be merged.", category: "required"} gvcfFilesIndex: {description: "Indexes for the gvcfFiles.", category: "required"} intervals: {description: "intervals over which to operate.", category: "required"} - genomicsDBWorkspacePath: {description: "Where the genomicsDB files should be stored", category: "advanced"} - genomicsDBTarFile: {description: "Where the .tar file containing the genomicsDB should be stored", category: "advanced"} - tmpDir: {description: "Alternate temporary directory in case there is not enough space. Must be mounted when using containers", - category: "advanced"} + genomicsDBWorkspacePath: {description: "Where the genomicsDB files should be stored.", category: "advanced"} + genomicsDBTarFile: {description: "Where the .tar file containing the genomicsDB should be stored.", category: "advanced"} + tmpDir: {description: "Alternate temporary directory in case there is not enough space. Must be mounted when using containers.", category: "advanced"} + javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", category: "advanced"} memory: {description: "The amount of memory this job will use.", category: "advanced"} - javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", - 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"} + 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"} } } @@ -820,18 +801,19 @@ task GenotypeGVCFs { input { File gvcfFile File gvcfFileIndex - Array[File]? intervals String outputPath File referenceFasta File referenceFastaDict File referenceFastaFai Array[String] annotationGroups = ["StandardAnnotation"] + + Array[File]? intervals File? dbsnpVCF File? dbsnpVCFIndex File? pedigree - String memory = "7G" String javaXmx = "6G" + String memory = "7G" Int timeMinutes = 120 # This will likely be used with intervals, as such size based estimation can't be used. String dockerImage = "quay.io/biocontainers/gatk4:4.1.8.0--py38h37ae868_0" } @@ -854,35 +836,31 @@ task GenotypeGVCFs { output { File outputVCF = outputPath File outputVCFIndex = outputPath + ".tbi" - } runtime { - docker: dockerImage - time_minutes: timeMinutes memory: memory + time_minutes: timeMinutes + docker: dockerImage } parameter_meta { + # inputs gvcfFile: {description: "The GVCF file to be genotyped.", category: "required"} gvcfFileIndex: {description: "The index of the input GVCF file.", category: "required"} - intervals: {description: "Bed files or interval lists describing the regions to operate on.", category: "optional"} outputPath: {description: "The location to write the output VCF file to.", category: "required"} - referenceFasta: {description: "The reference fasta file which was also used for mapping.", - category: "required"} - referenceFastaDict: {description: "The sequence dictionary associated with the reference fasta file.", - category: "required"} + referenceFasta: {description: "The reference fasta file which was also used for mapping.", category: "required"} + referenceFastaDict: {description: "The sequence dictionary associated with the reference fasta file.", category: "required"} referenceFastaFai: {description: "The index for the reference fasta file.", category: "required"} - annotationGroups: {description: "Which annotation groups will be used for the annotation", category: "advanced"} + annotationGroups: {description: "Which annotation groups will be used for the annotation.", category: "advanced"} + intervals: {description: "Bed files or interval lists describing the regions to operate on.", category: "optional"} dbsnpVCF: {description: "A dbSNP VCF.", category: "common"} dbsnpVCFIndex: {description: "The index for the dbSNP VCF.", category: "common"} - pedigree: {description: "Pedigree file for determining the population \"founders\"", category: "common"} + pedigree: {description: "Pedigree file for determining the population \"founders\".", category: "common"} + javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", category: "advanced"} memory: {description: "The amount of memory this job will use.", category: "advanced"} - javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", - 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"} + 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"} } } @@ -896,8 +874,8 @@ task GetPileupSummaries { File sitesForContaminationIndex String outputPrefix - String memory = "13G" String javaXmx = "12G" + String memory = "13G" Int timeMinutes = 120 String dockerImage = "quay.io/biocontainers/gatk4:4.1.8.0--py38h37ae868_0" } @@ -917,12 +895,13 @@ task GetPileupSummaries { } runtime { - docker: dockerImage - time_minutes: timeMinutes memory: memory + time_minutes: timeMinutes + docker: dockerImage } parameter_meta { + # inputs sampleBam: {description: "A BAM file for which a pileup should be created.", category: "required"} sampleBamIndex: {description: "The index of the input BAM file.", category: "required"} variantsForContamination: {description: "A VCF file with common variants.", category: "required"} @@ -930,13 +909,10 @@ task GetPileupSummaries { sitesForContamination: {description: "A bed file describing regions to operate on.", category: "required"} sitesForContaminationIndex: {description: "The index for the bed file.", category: "required"} outputPrefix: {description: "The prefix for the ouput.", category: "required"} - + javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", category: "advanced"} memory: {description: "The amount of memory this job will use.", category: "advanced"} - javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", - 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"} + 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"} } } @@ -945,26 +921,27 @@ task HaplotypeCaller { input { Array[File]+ inputBams Array[File]+ inputBamsIndex - Array[File]+? intervalList - Array[File]+? excludeIntervalList String outputPath File referenceFasta File referenceFastaIndex File referenceFastaDict + Boolean gvcf = false + String emitRefConfidence = if gvcf then "GVCF" else "NONE" + Boolean dontUseSoftClippedBases = false + + Array[File]+? intervalList + Array[File]+? excludeIntervalList Float? contamination File? dbsnpVCF File? dbsnpVCFIndex File? pedigree Int? ploidy String? outputMode - Boolean gvcf = false - String emitRefConfidence = if gvcf then "GVCF" else "NONE" - Boolean dontUseSoftClippedBases = false Float? standardMinConfidenceThresholdForCalling - Int memoryMb = javaXmxMb + 512 - # Memory increases with time used. 4G should cover most use cases. Int javaXmxMb = 4096 + # Memory increases with time used. 4G should cover most use cases. + Int memoryMb = javaXmxMb + 512 Int timeMinutes = 400 # This will likely be used with intervals, as such size based estimation can't be used. String dockerImage = "quay.io/biocontainers/gatk4:4.1.8.0--py38h37ae868_0" } @@ -995,50 +972,44 @@ task HaplotypeCaller { } runtime { - docker: dockerImage - time_minutes: timeMinutes memory: "~{memoryMb}M" + time_minutes: timeMinutes + docker: dockerImage } parameter_meta { + # inputs inputBams: {description: "The BAM files on which to perform variant calling.", category: "required"} inputBamsIndex: {description: "The indexes for the input BAM files.", category: "required"} - intervalList: {description: "Bed files or interval lists describing the regions to operate on.", category: "common"} - excludeIntervalList: {description: "Bed files or interval lists describing the regions to NOT operate on.", category: "common"} outputPath: {description: "The location to write the output to.", category: "required"} - ploidy: {description: "The ploidy with which the variants should be called.", category: "common"} - gvcf: {description: "Whether the output should be a gvcf", category: "common"} - referenceFasta: {description: "The reference fasta file which was also used for mapping.", - category: "required"} - referenceFastaDict: {description: "The sequence dictionary associated with the reference fasta file.", - category: "required"} + referenceFasta: {description: "The reference fasta file which was also used for mapping.", category: "required"} + referenceFastaDict: {description: "The sequence dictionary associated with the reference fasta file.", category: "required"} referenceFastaIndex: {description: "The index for the reference fasta file.", category: "required"} - contamination: {description: "Equivalent to HaplotypeCaller's `-contamination` option.", category: "advanced"} - outputMode: {description: "Specifies which type of calls we should output. Same as HaplotypeCaller's `--output-mode` option.", - category: "advanced"} - emitRefConfidence: {description: "Whether to include reference calls. Three modes: 'NONE', 'BP_RESOLUTION' and 'GVCF'", - category: "advanced"} + gvcf: {description: "Whether the output should be a gvcf.", category: "common"} + emitRefConfidence: {description: "Whether to include reference calls. Three modes: 'NONE', 'BP_RESOLUTION' and 'GVCF'.", category: "advanced"} dontUseSoftClippedBases: {description: "Do not use soft-clipped bases. Should be 'true' for RNA variant calling.", category: "common"} - standardMinConfidenceThresholdForCalling: {description: "Confidence threshold used for calling variants.", category: "advanced"} + intervalList: {description: "Bed files or interval lists describing the regions to operate on.", category: "common"} + excludeIntervalList: {description: "Bed files or interval lists describing the regions to NOT operate on.", category: "common"} + contamination: {description: "Equivalent to HaplotypeCaller's `-contamination` option.", category: "advanced"} dbsnpVCF: {description: "A dbSNP VCF.", category: "common"} dbsnpVCFIndex: {description: "The index for the dbSNP VCF.", category: "common"} - pedigree: {description: "Pedigree file for determining the population \"founders\"", category: "common"} + pedigree: {description: "Pedigree file for determining the population \"founders\".", category: "common"} + ploidy: {description: "The ploidy with which the variants should be called.", category: "common"} + outputMode: {description: "Specifies which type of calls we should output. Same as HaplotypeCaller's `--output-mode` option.", category: "advanced"} + standardMinConfidenceThresholdForCalling: {description: "Confidence threshold used for calling variants.", category: "advanced"} + javaXmxMb: {description: "The maximum memory available to the program in megabytes. Should be lower than `memoryMb` to accommodate JVM overhead.", category: "advanced"} memoryMb: {description: "The amount of memory this job will use in megabytes.", category: "advanced"} - javaXmxMb: {description: "The maximum memory available to the program in megabytes. Should be lower than `memoryMb` to accommodate JVM overhead.", - 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"} + 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"} } } - task LearnReadOrientationModel { input { Array[File]+ f1r2TarGz - String memory = "13G" String javaXmx = "12G" + String memory = "13G" Int timeMinutes = 120 String dockerImage = "quay.io/biocontainers/gatk4:4.1.8.0--py38h37ae868_0" } @@ -1056,19 +1027,18 @@ task LearnReadOrientationModel { } runtime { - docker: dockerImage - time_minutes: timeMinutes memory: memory + time_minutes: timeMinutes + docker: dockerImage } parameter_meta { + # inputs f1r2TarGz: {description: "A f1r2TarGz file outputed by mutect2.", category: "required"} + javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", category: "advanced"} memory: {description: "The amount of memory this job will use.", category: "advanced"} - javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", - 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"} + 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"} } } @@ -1076,8 +1046,8 @@ task MergeStats { input { Array[File]+ stats - String memory = "15G" String javaXmx = "14G" + String memory = "15G" Int timeMinutes = 30 String dockerImage = "quay.io/biocontainers/gatk4:4.1.8.0--py38h37ae868_0" } @@ -1095,19 +1065,18 @@ task MergeStats { } runtime { - docker: dockerImage - time_minutes: timeMinutes memory: memory + time_minutes: timeMinutes + docker: dockerImage } parameter_meta { + # inputs stats: {description: "Statistics files to be merged.", category: "required"} + javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", category: "advanced"} memory: {description: "The amount of memory this job will use.", category: "advanced"} - javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", - 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"} + 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"} } } @@ -1117,14 +1086,13 @@ task ModelSegments { String outputPrefix File denoisedCopyRatios File allelicCounts - File? normalAllelicCounts - Int minimumTotalAlleleCountCase = if defined(normalAllelicCounts) - then 0 - else 30 + Int minimumTotalAlleleCountCase = if defined(normalAllelicCounts) then 0 else 30 Int maximumNumberOfSmoothingIterations = 10 - String memory = "11G" + File? normalAllelicCounts + String javaXmx = "10G" + String memory = "11G" Int timeMinutes = 60 String dockerImage = "quay.io/biocontainers/gatk4:4.1.8.0--py38h37ae868_0" } @@ -1145,7 +1113,6 @@ task ModelSegments { output { File hetrozygousAllelicCounts = outputDir + "/" + outputPrefix + ".hets.tsv" - File? normalHetrozygousAllelicCounts = outputDir + "/" + outputPrefix + ".hets.normal.tsv" File copyRatioSegments = outputDir + "/" + outputPrefix + ".cr.seg" File copyRatioCBS = outputDir + "/" + outputPrefix + ".cr.igv.seg" File alleleFractionCBS = outputDir + "/" + outputPrefix + ".af.igv.seg" @@ -1155,29 +1122,28 @@ task ModelSegments { File modeledSegments = outputDir + "/" + outputPrefix + ".modelFinal.seg" File copyRatioParameters = outputDir + "/" + outputPrefix + ".modelFinal.cr.param" File alleleFractionParameters = outputDir + "/" + outputPrefix + ".modelFinal.af.param" + File? normalHetrozygousAllelicCounts = outputDir + "/" + outputPrefix + ".hets.normal.tsv" } runtime { - docker: dockerImage - time_minute: timeMinutes memory: memory + time_minute: timeMinutes + docker: dockerImage } parameter_meta { + # inputs outputDir: {description: "The directory to write the ouput to.", category: "common"} outputPrefix: {description: "The prefix of the output files. Should not include directories.", category: "required"} denoisedCopyRatios: {description: "The denoised copy ratios as generated by DenoiseReadCounts.", category: "required"} allelicCounts: {description: "The allelicCounts as generate by CollectAllelicCounts.", category: "required" } - normalAllelicCounts: {description: "The allelicCounts as generate by CollectAllelicCounts for a matched normal.", category: "common"} minimumTotalAlleleCountCase: {description: "Equivalent to gatk ModelSeqments' `--minimum-total-allele-count-case` option.", category: "advanced"} maximumNumberOfSmoothingIterations: {description: "Equivalent to gatk ModelSeqments' `--maximum-number-of-smoothing-iterations` option.", category: "advanced"} - + normalAllelicCounts: {description: "The allelicCounts as generate by CollectAllelicCounts for a matched normal.", category: "common"} + javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", category: "advanced"} memory: {description: "The amount of memory this job will use.", category: "advanced"} - javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", - 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"} + 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"} } } @@ -1190,17 +1156,18 @@ task MuTect2 { File referenceFastaFai String outputVcf String tumorSample + String f1r2TarGz = "f1r2.tar.gz" + Array[File]+ intervals + String outputStats = outputVcf + ".stats" + String? normalSample File? germlineResource File? germlineResourceIndex File? panelOfNormals File? panelOfNormalsIndex - String f1r2TarGz = "f1r2.tar.gz" - Array[File]+ intervals - String outputStats = outputVcf + ".stats" - String memory = "5G" String javaXmx = "4G" + String memory = "5G" Int timeMinutes = 240 String dockerImage = "quay.io/biocontainers/gatk4:4.1.8.0--py38h37ae868_0" } @@ -1229,12 +1196,13 @@ task MuTect2 { } runtime { - docker: dockerImage - time_minutes: timeMinutes memory: memory + time_minutes: timeMinutes + docker: dockerImage } parameter_meta { + # inputs inputBams: {description: "The BAM files on which to perform variant calling.", category: "required"} inputBamsIndex: {description: "The indexes for the input BAM files.", category: "required"} referenceFasta: {description: "The reference fasta file which was also used for mapping.", category: "required"} @@ -1242,20 +1210,18 @@ task MuTect2 { referenceFastaFai: {description: "The index for the reference fasta file.", category: "required"} outputVcf: {description: "The location to write the output VCF file to.", category: "required"} tumorSample: {description: "The name of the tumor/case sample.", category: "required"} + f1r2TarGz: {description: "Equivalent to Mutect2's `--f1r2-tar-gz` option.", category: "advanced"} + intervals: {description: "Bed files describing the regiosn to operate on.", category: "required"} + outputStats: {description: "The location the output statistics should be written to.", category: "advanced"} normalSample: {description: "The name of the normal/control sample.", category: "common"} germlineResource: {description: "Equivalent to Mutect2's `--germline-resource` option.", category: "advanced"} germlineResourceIndex: {description: "The index for the germline resource.", category: "advanced"} panelOfNormals: {description: "Equivalent to Mutect2's `--panel-of-normals` option.", category: "advanced"} panelOfNormalsIndex: {description: "The index for the panel of normals.", category: "advanced"} - f1r2TarGz: {description: "Equivalent to Mutect2's `--f1r2-tar-gz` option.", category: "advanced"} - intervals: {description: "Bed files describing the regiosn to operate on.", category: "required"} - outputStats: {description: "The location the output statistics should be written to.", category: "advanced"} + javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", category: "advanced"} memory: {description: "The amount of memory this job will use.", category: "advanced"} - javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", - 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"} + 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"} } } @@ -1266,10 +1232,11 @@ task PlotDenoisedCopyRatios { String outputPrefix File standardizedCopyRatios File denoisedCopyRatios + Int? minimumContigLength - String memory = "4G" String javaXmx = "3G" + String memory = "4G" Int timeMinutes = 2 String dockerImage = "broadinstitute/gatk:4.1.8.0" } @@ -1289,32 +1256,31 @@ task PlotDenoisedCopyRatios { output { File denoisedCopyRatiosPlot = outputDir + "/" + outputPrefix + ".denoised.png" - File? denoisedCopyRatiosLimitedPlot = outputDir + "/" + outputPrefix + ".denoisedLimit4.png" File standardizedMedianAbsoluteDeviation = outputDir + "/" + outputPrefix + ".standardizedMAD.txt" File denoisedMedianAbsoluteDeviation = outputDir + "/" + outputPrefix + ".denoisedMAD.txt" File deltaMedianAbsoluteDeviation = outputDir + "/" + outputPrefix + ".deltaMAD.txt" File deltaScaledMedianAbsoluteDeviation = outputDir + "/" + outputPrefix + ".scaledDeltaMAD.txt" + File? denoisedCopyRatiosLimitedPlot = outputDir + "/" + outputPrefix + ".denoisedLimit4.png" } runtime { - docker: dockerImage - time_minutes: timeMinutes memory: memory + time_minutes: timeMinutes + docker: dockerImage } parameter_meta { + # inputs referenceFastaDict: {description: "The sequence dictionary associated with the reference fasta file used for the analyses.", category: "required"} outputDir: {description: "The directory to write the ouput to.", category: "common"} outputPrefix: {description: "The prefix of the output files. Should not include directories.", category: "required"} - denoisedCopyRatios: {description: "The denoised copy ratios as generated by DenoiseReadCounts.", category: "required"} standardizedCopyRatios: {description: "The standardized copy ratios as generated by DenoiseReadCounts.", category: "required"} + denoisedCopyRatios: {description: "The denoised copy ratios as generated by DenoiseReadCounts.", category: "required"} minimumContigLength: {description: "The minimum length for a contig to be included in the plots.", category: "advanced"} + javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", category: "advanced"} memory: {description: "The amount of memory this job will use.", category: "advanced"} - javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", - 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"} + 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"} } } @@ -1326,10 +1292,11 @@ task PlotModeledSegments { File denoisedCopyRatios File segments File allelicCounts + Int? minimumContigLength - String memory = "4G" String javaXmx = "3G" + String memory = "4G" Int timeMinutes = 2 String dockerImage = "broadinstitute/gatk:4.1.8.0" } @@ -1353,12 +1320,13 @@ task PlotModeledSegments { } runtime { - docker: dockerImage - time_minutes: timeMinutes memory: memory + time_minutes: timeMinutes + docker: dockerImage } parameter_meta { + # inputs referenceFastaDict: {description: "The sequence dictionary associated with the reference fasta file used for the analyses.", category: "required"} outputDir: {description: "The directory to write the ouput to.", category: "common"} outputPrefix: {description: "The prefix of the output files. Should not include directories.", category: "required"} @@ -1366,12 +1334,10 @@ task PlotModeledSegments { segments: {description: "The modeled segments as generated by ModelSegments.", category: "required"} allelicCounts: {description: "The hetrozygous allelic counts as generated by ModelSegments.", category: "required"} minimumContigLength: {description: "The minimum length for a contig to be included in the plots.", category: "advanced"} + javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", category: "advanced"} memory: {description: "The amount of memory this job will use.", category: "advanced"} - javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", - 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"} + 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"} } } @@ -1380,14 +1346,15 @@ task PreprocessIntervals { File referenceFasta File referenceFastaDict File referenceFastaFai - File? intervals String outputIntervalList = "bins.interval_list" Int binLength = if defined(intervals) then 0 else 1000 Int padding = if defined(intervals) then 250 else 0 String intervalMergingRule = "OVERLAPPING_ONLY" - String memory = "4G" + File? intervals + String javaXmx = "3G" + String memory = "4G" Int timeMinutes = 1 + ceil(size(referenceFasta, "G") * 6) String dockerImage = "quay.io/biocontainers/gatk4:4.1.8.0--py38h37ae868_0" } @@ -1411,41 +1378,42 @@ task PreprocessIntervals { } runtime { - docker: dockerImage - time_minutes: timeMinutes memory: memory + time_minutes: timeMinutes + docker: dockerImage } parameter_meta { - referenceFasta: {description: "The reference fasta file..", category: "required"} + # inputs + referenceFasta: {description: "The reference fasta file.", category: "required"} referenceFastaDict: {description: "The sequence dictionary associated with the reference fasta file.", category: "required"} referenceFastaFai: {description: "The index for the reference fasta file.", category: "required"} - intervals: {description: "Bed files describing the regiosn to operate on.", category: "common"} outputIntervalList: {description: "The location the output should be written to.", category: "advanced"} binLength: {description: "The size of the bins to be created. Should be 0 for targeted/exome sequencing.", category: "advanced"} padding: {description: "The padding to be added to the bins. Should be 0 if contiguos binning is used, eg with WGS.", category: "advanced"} intervalMergingRule: {description: "Equivalent to gatk PreprocessIntervals' `--interval-merging-rule` option.", category: "advanced"} + intervals: {description: "Bed files describing the regiosn to operate on.", category: "common"} + javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", category: "advanced"} memory: {description: "The amount of memory this job will use.", category: "advanced"} - javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", - 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"} + 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"} } } task SelectVariants { input { + File inputVcf + File inputVcfIndex File referenceFasta File referenceFastaDict File referenceFastaFai - File inputVcf - File inputVcfIndex String outputPath = "output.vcf.gz" - String? selectTypeToInclude Array[File] intervals = [] - String memory = "5G" + + String? selectTypeToInclude + String javaXmx = "4G" + String memory = "5G" Int timeMinutes = 60 String dockerImage = "quay.io/biocontainers/gatk4:4.1.8.0--py38h37ae868_0" } @@ -1468,29 +1436,25 @@ task SelectVariants { } runtime { - docker: dockerImage - time_minute: timeMinutes memory: memory + time_minute: timeMinutes + docker: dockerImage } parameter_meta { + # inputs inputVcf: {description: "The VCF input file.", category: "required"} inputVcfIndex: {description: "The input VCF file's index.", category: "required"} - referenceFasta: {description: "The reference fasta file which was also used for mapping.", - category: "required"} - referenceFastaDict: {description: "The sequence dictionary associated with the reference fasta file.", - category: "required"} + referenceFasta: {description: "The reference fasta file which was also used for mapping.", category: "required"} + referenceFastaDict: {description: "The sequence dictionary associated with the reference fasta file.", category: "required"} referenceFastaFai: {description: "The index for the reference fasta file.", category: "required"} - selectTypeToInclude: {description: "Select only a certain type of variants from the input file", category: "common"} outputPath: {description: "The location the output VCF file should be written.", category: "advanced"} intervals: {description: "Bed files or interval lists describing the regions to operate on.", category: "common"} - + selectTypeToInclude: {description: "Select only a certain type of variants from the input file.", category: "common"} + javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", category: "advanced"} memory: {description: "The amount of memory this job will use.", category: "advanced"} - javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", - 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"} + 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"} } } @@ -1504,8 +1468,8 @@ task SplitNCigarReads { String outputBam Array[File] intervals = [] - String memory = "5G" String javaXmx = "4G" + String memory = "5G" Int timeMinutes = 120 # This will likely be used with intervals, as such size based estimation can't be used. String dockerImage = "quay.io/biocontainers/gatk4:4.1.8.0--py38h37ae868_0" } @@ -1527,28 +1491,24 @@ task SplitNCigarReads { } runtime { - docker: dockerImage - time_minutes: timeMinutes memory: memory + time_minutes: timeMinutes + docker: dockerImage } parameter_meta { + # inputs inputBam: {description: "The BAM file for which spliced reads should be split.", category: "required"} inputBamIndex: {description: "The input BAM file's index.", category: "required"} - referenceFasta: {description: "The reference fasta file which was also used for mapping.", - category: "required"} - referenceFastaDict: {description: "The sequence dictionary associated with the reference fasta file.", - category: "required"} + referenceFasta: {description: "The reference fasta file which was also used for mapping.", category: "required"} + referenceFastaDict: {description: "The sequence dictionary associated with the reference fasta file.", category: "required"} referenceFastaFai: {description: "The index for the reference fasta file.", category: "required"} outputBam: {description: "The location the output BAM file should be written.", category: "required"} intervals: {description: "Bed files or interval lists describing the regions to operate on.", category: "advanced"} - + javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", category: "advanced"} memory: {description: "The amount of memory this job will use.", category: "advanced"} - javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", - 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"} + 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"} } } @@ -1558,11 +1518,6 @@ task VariantEval { Array[File] evalVcfsIndex Array[File] comparisonVcfs = [] Array[File] comparisonVcfsIndex = [] - File? referenceFasta - File? referenceFastaDict - File? referenceFastaFai - File? dbsnpVCF - File? dbsnpVCFIndex Array[File] intervals = [] String outputPath = "eval.table" Boolean doNotUseAllStandardModules = false @@ -1572,8 +1527,14 @@ task VariantEval { Array[String] samples = [] Boolean mergeEvals = false - String memory = "5G" + File? referenceFasta + File? referenceFastaDict + File? referenceFastaFai + File? dbsnpVCF + File? dbsnpVCFIndex + String javaXmx = "4G" + String memory = "5G" # TODO: Refine estimate. For now 4 minutes per GB of input. Int timeMinutes = ceil(size(flatten([evalVcfs, comparisonVcfs, select_all([referenceFasta, dbsnpVCF])]), "G") * 20) String dockerImage = "quay.io/biocontainers/gatk4:4.1.8.0--py38h37ae868_0" @@ -1604,35 +1565,37 @@ task VariantEval { runtime { cpu: 1 - docker: dockerImage memory: memory time_minutes: timeMinutes + docker: dockerImage } + parameter_meta { + # inputs evalVcfs: {description: "Variant sets to evaluate.", category: "required"} evalVcfsIndex: {description: "Indexes for the variant sets.", category: "required"} comparisonVcfs: {description: "Compare set vcfs.", category: "advanced"} comparisonVcfsIndex: {description: "Indexes for the compare sets.", category: "advanced"} - evalModules: {description: "One or more specific eval modules to apply to the eval track(s) (in addition to the standard modules, unless doNotUseAllStandardModules=true)", category: "common"} - stratificationModules: {description: "One or more specific stratification modules to apply to the eval track(s) (in addition to the standard stratifications, unless doNotUseAllStandardStratifications=true)", category: "common"} - samples: {description: "Derive eval and comp contexts using only these sample genotypes, when genotypes are available in the original context." , category: "advanced"} # Advanced because this description is impossible to understand... - mergeEvals: {description: "If provided, all evalVcf tracks will be merged into a single eval track", category: "common"} + intervals: {description: "Bed files or interval lists describing the regions to operate on.", category: "advanced"} + outputPath: {description: "The location the output table should be written.", category: "advanced"} doNotUseAllStandardModules: {description: "Do not use the standard modules by default (instead, only those that are specified with the evalModules option).", category: "common"} doNotUseAllStandardStratifications: {description: "Do not use the standard stratification modules by default (instead, only those that are specified with the stratificationModules option).", category: "common"} + evalModules: {description: "One or more specific eval modules to apply to the eval track(s) (in addition to the standard modules, unless doNotUseAllStandardModules=true).", category: "common"} + stratificationModules: {description: "One or more specific stratification modules to apply to the eval track(s) (in addition to the standard stratifications, unless doNotUseAllStandardStratifications=true).", category: "common"} + samples: {description: "Derive eval and comp contexts using only these sample genotypes, when genotypes are available in the original context." , category: "advanced"} + mergeEvals: {description: "If provided, all evalVcf tracks will be merged into a single eval track.", category: "common"} referenceFasta: {description: "The reference fasta file which was also used for mapping.", category: "common"} referenceFastaDict: {description: "The sequence dictionary associated with the reference fasta file.", category: "common"} referenceFastaFai: {description: "The index for the reference fasta file.", category: "common"} dbsnpVCF: {description: "A dbSNP VCF.", category: "common"} dbsnpVCFIndex: {description: "The index for the dbSNP VCF.", category: "common"} - outputPath: {description: "The location the output table should be written.", category: "advanced"} + javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", category: "advanced"} memory: {description: "The amount of memory this job will use.", category: "advanced"} - javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", - 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"} + 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"} } } + task VariantFiltration { input { File inputVcf @@ -1644,8 +1607,8 @@ task VariantFiltration { Array[String]+ filterArguments Array[File] intervals = [] - String memory = "5G" String javaXmx = "4G" + String memory = "5G" Int timeMinutes = 120 String dockerImage = "quay.io/biocontainers/gatk4:4.1.8.0--py38h37ae868_0" } @@ -1668,29 +1631,24 @@ task VariantFiltration { } runtime { - docker: dockerImage - time_minutes: timeMinutes memory: memory + time_minutes: timeMinutes + docker: dockerImage } parameter_meta { + # inputs inputVcf: {description: "The VCF to be filtered.", category: "required"} inputVcfIndex: {description: "The input VCF file's index.", category: "required"} - referenceFasta: {description: "The reference fasta file which was also used for mapping.", - category: "required"} - referenceFastaDict: {description: "The sequence dictionary associated with the reference fasta file.", - category: "required"} + referenceFasta: {description: "The reference fasta file which was also used for mapping.", category: "required"} + referenceFastaDict: {description: "The sequence dictionary associated with the reference fasta file.", category: "required"} referenceFastaFai: {description: "The index for the reference fasta file.", category: "required"} outputPath: {description: "The location the output VCF file should be written.", category: "common"} + filterArguments: {description: "Arguments that should be used for the filter. For example: ['--filter-name', 'my_filter', '--filter-expression', 'AB<0.2'].", category: "required"} intervals: {description: "Bed files or interval lists describing the regions to operate on.", category: "advanced"} - filterArguments: {description: "Arguments that should be used for the filter. For example: ['--filter-name', 'my_filter', '--filter-expression', 'AB<0.2']", - category: "required"} + javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", category: "advanced"} memory: {description: "The amount of memory this job will use.", category: "advanced"} - javaXmx: {description: "The maximum memory available to the program. Should be lower than `memory` to accommodate JVM overhead.", - 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"} + 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/gffcompare.wdl b/gffcompare.wdl index e5f62b5ec557ef05afbfcee0bb24d175a2b316b6..5d80f61994d4359555a16ee13e510c1d122ce0b0 100644 --- a/gffcompare.wdl +++ b/gffcompare.wdl @@ -147,4 +147,4 @@ task GffCompare { exclude: ["noneFile"] } } -} \ No newline at end of file +}