Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
T
tasks
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
biowdl
tasks
Commits
9b8d8a98
Commit
9b8d8a98
authored
4 years ago
by
Cats
Browse files
Options
Downloads
Patches
Plain Diff
add hmftools.wdl
parent
4a2f3366
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
hmftools.wdl
+433
-0
433 additions, 0 deletions
hmftools.wdl
with
433 additions
and
0 deletions
hmftools.wdl
0 → 100644
+
433
−
0
View file @
9b8d8a98
version 1.0
# Copyright (c) 2020 Leiden University Medical Center
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
task Amber {
input {
String normalName
File normalBam
File normalBamIndex
String tumorName
File tumorBam
File tumorBamIndex
String outputDir = "./amber"
File loci
File referenceFasta
File referenceFastaFai
File referenceFastaDict
Int threads = 2
String memory = = "33G"
String javaXmx = "32G"
Int timeMinutes = 60
String dockerImage = "quay.io/biocontainers/hmftools-amber:3.5--0"
}
command {
AMBER -Xmx~{javaXmx} \
-reference ~{normalName} \
-reference_bam ~{normalBam} \
-tumor ~{tumorName} \
-tumor_bam ~{tumorBam} \
-output_dir ~{outputDir} \
-threads ~{threads} \
-ref_genome ~{referenceFasta} \
-loci ~{loci}
}
output {
File version = "amber.version"
File tumorBafPcf = "~{outputDir}/~{tumorName}.amber.baf.pcf"
File tumorBafTsv = "~{outputDir}/~{tumorName}.amber.baf.tsv"
File tumorBafVcf = "~{outputDir}/~{tumorName}.amber.baf.vcf.gz"
File tumorBafVcfIndex = "~{outputDir}/~{tumorName}.amber.baf.vcf.gz.tbi"
File tumorContaminationVcf = "~{outputDir}/~{tumorName}.amber.contamination.vcf.gz"
File tumorContaminationVcfIndex = "~{outputDir}/~{tumorName}.amber.contamination.vcf.gz.tbi"
File tumorContaminationTsv = "~{outputDir}/~{tumorName}.amber.contamination.tsv"
File tumorQc = "~{outputDir}/~{tumorName}.amber.qc"
File normalSnpVcf = "~{outputDir}/~{normalName}.amber.snp.vcf.gz"
File normalSnpVcfIndex = "~{outputDir}/~{normalName}.amber.snp.vcf.gz.tbi"
Array[File] outputs = [version, tumorBafPcf, tumorBafTsv, tumorBafVcf, tumorBafVcfIndex,
tumorContaminationVcf, tumorContaminationVcfIndex, tumorContaminationTsv, tumorQc,
normalSnpVcf, normalSnpVcfIndex]
}
runtime {
memory: memory
time_minutes: timeMinutes # !UnknownRuntimeKey
docker: dockerImage
cpu: threads
}
parameter_meta {
normalName: {description: "the name of the normal sample.", category: "required"}
normalBam: {description: "The normal BAM file.", category: "required"}
normalBamIndex: {description: "The index for the normal BAM file.", category: "required"}
tumorName: {description: "The name of the tumor sample.", category: "required"}
tumorBam: {description: "The tumor BAM file.", category: "required"}
tumorBamIndex: {description: "The index for the tumor BAM file.", category: "required"}
outputDir: {description: "The path to the output directory.", category: "common"}
loci: {description: "A VCF file containing likely heterozygous sites.", 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"}
threads: {description: "The number of threads the program will use.", 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"}
}
}
task Cobalt {
input {
String normalName
File normalBam
File normalBamIndex
String tumorName
File tumorBam
File tumorBamIndex
String outputDir = "./cobalt"
File gcProfile
Int threads = 1
String memory = = "9G"
String javaXmx = "8G"
Int timeMinutes = 60
String dockerImage = "quay.io/biocontainers/hmftools-cobalt:1.10--0"
}
command {
COBALT -Xmx~{javaXmx} \
-reference ~{normalName} \
-reference_bam ~{normalBam} \
-tumor ~{tumorName} \
-tumor_bam ~{tumorBam} \
-output_dir ~{outputDir}\
-threads ~{threads} \
-gc_profile ~{gcProfile}
}
output {
File version = "cobalt.version"
File normalGcMedianTsv = "~{outputDir}/~{normalName}.cobalt.gc.median.tsv"
File normalRationMedianTsv = "~{outputDir}/~{normalName}.cobalt.ratio.median.tsv"
File normalRationPcf = "~{outputDir}/~{normalName}.cobalt.ratio.pcf"
File tumorGcMedianTsv = "~{outputDir}/~{tumorName}.cobalt.gc.median.tsv"
File tumorRatioPcf = "~{outputDir}/~{tumorName}.cobalt.ratio.pcf"
File tumorRatioTsv = "~{outputDir}/~{tumorName}.cobalt.ratio.tsv"
File tumorChrLen = "~{outputDir}/~{tumorName}.chr.len"
Array[File] outputs = [version, normalGcMedianTsv, normalRationMedianTsv,
normalRationPcf, tumorGcMedianTsv, tumorRatioPcf, tumorRatioTsv, tumorChrLen]
}
runtime {
memory: memory
time_minutes: timeMinutes # !UnknownRuntimeKey
docker: dockerImage
cpu: threads
}
parameter_meta {
normalName: {description: "the name of the normal sample.", category: "required"}
normalBam: {description: "The normal BAM file.", category: "required"}
normalBamIndex: {description: "The index for the normal BAM file.", category: "required"}
tumorName: {description: "The name of the tumor sample.", category: "required"}
tumorBam: {description: "The tumor BAM file.", category: "required"}
tumorBamIndex: {description: "The index for the tumor BAM file.", category: "required"}
outputDir: {description: "The path to the output directory.", category: "common"}
gcProfile: {description: "A file describing the GC profile of the reference genome.", category: "required"}
threads: {description: "The number of threads the program will use.", 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"}
}
}
task GripssApplicationKt {
input {
File inputVcf
String outputPath = "gripss.vcf.gz"
File referenceFasta
File referenceFastaFai
File referenceFastaDict
File breakpointHotspot
File breakendPon
File breakpointPon
String memory = "25G"
String javaXmx = "24G"
Int timeMinutes = 60
String dockerImage = "quay.io/biocontainers/hmftools-gripss:1.8--0"
}
command {
java -Xmx~{javaXmx} -XX:ParallelGCThreads=1 \
-cp /usr/local/share/hmftools-gripss-1.8-0/gripss.jar \
com.hartwig.hmftools.gripss.GripssApplicationKt \
-ref_genome ~{referenceFasta} \
-breakpoint_hotspot ~{breakpointHotspot} \
-breakend_pon ~{breakendPon} \
-breakpoint_pon ~{breakpointPon} \
-input_vcf ~{inputVcf} \
-output_vcf ~{outputPath}
}
output {
File outputVcf = outputPath
File outputVcfIndex = outputPath + ".tbi"
}
runtime {
memory: memory
time_minutes: timeMinutes # !UnknownRuntimeKey
docker: dockerImage
}
parameter_meta {
inputVcf: {description: "The input VCF.", category: "required"}
outputPath: {description: "The path where th eoutput VCF will be written.", category: "common"}
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"}
breakpointHotspot: {description: "Equivalent to the `-breakpoint_hotspot` option.", category: "required"}
breakendPon: {description: "Equivalent to the `-breakend_pon` option.", category: "required"}
breakpointPon: {description: "Equivalent to the `breakpoint_pon` option.", category: "required"}
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"}
}
}
task GripssHardFilterApplicationKt {
input {
File inputVcf
String outputPath = "gripss_hard_filter.vcf.gz"
String memory = "25G"
String javaXmx = "24G"
Int timeMinutes = 60
String dockerImage = "quay.io/biocontainers/hmftools-gripss:1.8--0"
}
command {
java -Xmx~{javaXmx} -XX:ParallelGCThreads=1 \
-cp /usr/local/share/hmftools-gripss-1.8-0/gripss.jar \
com.hartwig.hmftools.gripss.GripssHardFilterApplicationKt \
-input_vcf ~{inputVcf} \
-output_vcf ~{outputPath}
}
output {
File outputVcf = outputPath
File outputVcfIndex = outputPath + ".tbi"
}
runtime {
memory: memory
time_minutes: timeMinutes # !UnknownRuntimeKey
docker: dockerImage
}
parameter_meta {
inputVcf: {description: "The input VCF.", category: "required"}
outputPath: {description: "The path where th eoutput VCF will be written.", category: "common"}
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"}
}
}
task Purple {
input {
String normalName
String tumorName
String outputDir = "./purple"
Array[File]+ amberOutput
Array[File]+ cobaltOutput
File gcProfile
File somaticVcf
File filteredSvVcf
File fullSvVcf
File referenceFasta
File referenceFastaFai
File referenceFastaDict
File hotspots
Int threads = 1
Int time_minutes = 60
String memory = "13G"
String javaXmx = "12G"
String docker = "quay.io/biocontainers/hmftools-purple:2.51--1"
}
command {
PURPLE -Xmx~{javaXmx} \
-reference ~{normalName} \
-tumor ~{tumorName} \
-output_dir ~{outputDir} \
-amber ~{sub(amberOutput, basename(amberOutput[0]), "")} \
-cobalt ~{sub(cobaltOutput, basename(cobaltOutput[0]), "")} \
-gc_profile ~{gcProfile} \
-somatic_vcf ~{somaticVcf} \
-structural_vcf ~{filteredSvVcf} \
-sv_recovery_vcf ~{fullSvVcf} \
-circos /usr/local/bin/circos \
-ref_genome ~{referenceFasta} \
-driver_catalog \
-hotspots ~{hotspots} \
-threads ~{threads}
# TODO if shallow also the following:
#-highly_diploid_percentage 0.88 \
#-somatic_min_total 100 \
#-somatic_min_purity_spread 0.1
}
output {
#TODO
}
runtime {
time_minutes: timeMinutes # !UnknownRuntimeKey
cpu: threads
docker: dockerImage
memory: memory
}
parameter_meta {
normalName: {description: "the name of the normal sample.", category: "required"}
tumorName: {description: "The name of the tumor sample.", category: "required"}
outputDir: {description: "The path to the output directory.", category: "common"}
amberOutput: {description: "The output files of hmftools amber.", category: "required"}
cobaltOutput: {description: "The output files of hmftools cobalt", category: "required"}
gcProfile: {description: "A file describing the GC profile of the reference genome.", category: "required"}
somaticVcf: {description: "The somatic variant calling results.", category: "required"}
filteredSvVcf: {description: "The filtered structural variant calling results.", category: "required"}
fullSvVcf: {description: "The unfiltered structural variant calling results.", 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"}
hotspots: {description: "A vcf file with hotspot variant sites.", category: "required"}
threads: {description: "The number of threads the program will use.", 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"}
}
}
task Sage {
input {
String tumorName
File tumorBam
File tumorBamIndex
File referenceFasta
File referenceFastaDict
File referenceFastaFai
File hotspots
File panelBed
File highConfidenceBed
Boolean hg38 = false
String outputPath = "./sage.vcf.gz"
String? normalName
File? normalBam
File? normalBamIndex
Int threads = 2
String javaXmx = "32G"
String memory = "33G"
Int timeMinutes = 1 + ceil(size(select_all([tumorBam, normalBam]), "G") * 10 / threads) #FIXME make sure this is enough
String dockerImage = "quay.io/biocontainers/hmftools-sage:2.2--2"
}
command {
java -Xmx~{javaXmx} -XX:ParallelGCThreads=1 \
-cp /usr/local/share/hmftools-sage-2.2-2/sage.jar \
com.hartwig.hmftools.sage.SageApplication \
-tumor ~{tumorName} \
-tumor_bam ~{tumorBam} \
~{"-reference " + normalName} \
~{"-reference_bam " + normalBam} \
-ref_genome ~{referenceFasta} \
-hotspots ~{hotspots} \
-panel_bed ~{panelBed} \
-high_confidence_bed ~{highConfidenceBed} \
-assembly ~{true="hg38" false="hg19" hg38} \
-threads ~{threads} \
-out ~{outputPath}
}
output {
File outputVcf = outputPath
File outputVcfIndex = outputPath + ".tbi"
# There is some plots as well, but in the current container the labels in the plots are just series of `□`s.
# This seems to be a systemic issue with R generated plots in biocontainers...
}
runtime {
time_minutes: timeMinutes # !UnknownRuntimeKey
cpu: threads
docker: dockerImage
memory: memory
}
parameter_meta {
tumorName: {description: "The name of the tumor sample.", category: "required"}
tumorBam: {description: "The BAM file for the tumor sample.", category: "required"}
tumorBamIndex: {description: "The index of the BAM file for the tumor sample.", category: "required"}
normalName: {description: "The name of the normal/reference sample.", category: "common"}
normalBam: {description: "The BAM file for the normal sample.", category: "common"}
normalBamIndex: {description: "The index of the BAM file for the normal sample.", category: "common"}
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"}
hotspots: {description: "A vcf file with hotspot variant sites.", category: "required"}
panelBed: {description: "A bed file describing coding regions to search for in frame indels.", category: "required"}
highConfidenceBed: {description: "A bed files describing high confidence mapping regions.", category: "required"}
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"}
}
}
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment